Documentacion Arquitectura de Software - paolaPosada/DocumentacionArqiSw GitHub Wiki

Integración continua

El una práctica donde los desarrolladores combinan los cambios en el código en un repositorio central de forma periódica, lo que permite en encontrar y arreglar errores con mayor rapidez, mejorar la calidad del software y reducir el tiempo que se tarda en validar y publicar nuevas actualizaciones de software.

La integración continua se da, ya que anteriormente solo se unían los cambios en la versión maestra una vez que habían completado el trabajo. Como consecuencia, la combinación de los cambios en el código resultaba difícil y ardua, además de dar lugar a la acumulación de errores durante mucho tiempo que no se corregía. Estos factores hacían que resultase más difícil proporcionar las actualizaciones a los clientes con rapidez.

Amazon Web Services, Inc. (2019). Integración continua del software | Pruebas automatizadas | AWS. [online] Available at: https://aws.amazon.com/es/devops/continuous-integration/ [Accessed 10 Dec. 2019].

Herramientas de integración continua

Jenkins: es un servidor de integración continua, open-source, escrito en java, el cual nos permite automatizar todos los procesos de integración y entrega mediante tareas. Las tareas podemos monitorear cambios sobre un control de versiones, compilar código y ejecutar pruebas. Si en algún momento alguna tarea falla, Jenkins podrá notificar al equipo de desarrollo, al product Manager o cualquier persona responsable del error, de tal forma que se tomen cartas en el asunto y se llegue a una solución lo más pronto posible.

Travis CI: esta herramienta de integración continua trabaja en estrecha relación con GitHub de control de versiones. Por lo que puede configurarse con un sencillo archivo YAML que se guarda en el directorio raíz del proyecto. GitHub informa a Travis CI de todos los cambios efectuados en el repositorio y mantiene el proyecto actualizado.

IONOS Digitalguide. (2019). Herramientas de integración continua. [online] Available at: https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/herramientas-de-integracion-continua/ [Accessed 10 Dec. 2019].


Testing continuo

Las pruebas continuas se basan en la automatización de pruebas integradas, como parte de un proceso de implementación en el que el software se valida en entornos de pruebas realistas. El testing se realiza continuamente junto con el desarrollo de software y demás actividades.

Pruebas Continuas (Continuous Testing). (2018, 14 mayo). Recuperado 11 diciembre, 2019, de http://todosqa.com/pruebas-continuas-continuous-testing-a-que-se-refiere/

Pmoinformatica. (s.f.-a). Que es el Agile Testing y cuáles son sus principios y estrategias. Recuperado 11 diciembre, 2019, de http://www.pmoinformatica.com/2015/03/que-es-el-agile-testing.html

Pmoinformatica. (s.f.-b). Test Driven Development (TDD): Desarrollo de software guiado por pruebas. Recuperado 11 diciembre, 2019, de http://www.pmoinformatica.com/2012/09/test-driven-development-scrum.html


Cuatro mas una vista


Estandares de nomenclatura

Son un conjunto de normas para un lenguaje de programación específico y se recomiendan como buena práctica para facilitar la lectura del código y que este sea más entendible y mantenible.

CamelCase: Esta convención es muy usada en lenguajes de programación como PHP, Java, C#. Existen dos tipos de CamelCase:

  • UpperCamelCase: cuando la primera letra de cada una de las palabras es mayúscula. Ejemplo: MiBlogDeDesarrollo.
  • lowerCamelCase: igual que la anterior con la excepción de que la primera letra es minúscula. Ejemplo: miBlogDeDesarrollo.

Snake_case: Compone las palabras separadas por barra baja y con la primera letra de cada palabra en minúscula. Por ejemplo mi_blog_de_desarrollo. Algunos lenguajes que adoptan esta convención son Ruby y Python.

Kebab-case: Las palabras son unidas con guiones. Por ejemplo mi-blog-de-desarrollo. Este tipo de sintaxis se utiliza para las urls.

Train-Case: Es una variedad del kebab-case, pero cada palabra con la primera letra en mayúsculas. Por ejemplo, Mi-Blog-De-Desarrollo.

Vega, A. (2018, 18 abril). Convención de nombres: desde el CamelCase hasta el kebab-case. Recuperado 11 diciembre, 2019, de https://adrianalonso.es/cajon-desatre/convencion-de-nombres-desde-el-camelcase-hasta-el-kebab-case/


Herramientas CASE

El uso de Herramientas CASE acelera el desarrollo del proyecto con tal de producir los resultados deseados y ayuda a encontrar imperfecciones antes de proseguir con la siguiente etapa del desarrollo de Software.

Herramientas Upper CASE: se usan en las etapas de planificación, análisis y diseño del ciclo de vida de desarrollo de sistemas.

Herramientas Lower CASE: se usan en la implementación, las pruebas y en el mantenimiento.

Herramientas Integrated CASE: son de utilidad en todas las fases del ciclo de vida de desarrollo de sistemas, desde la educción de requisitos y las pruebas hasta la documentación.

Tipos de Herramientas CASE

Herramienta CASE Diagrama: Estas herramientas se usan para representar componentes del sistema, datos, y a controlar la fluidez de varios componentes y estructura del software de manera gráfica. Por ejemplo, la herramienta 'Flow Chart Maker'

Herramientas para modelado de procesos: Ayudan a los Directores a escoger un modelo de proceso o para modificarlo según los requerimientos del producto software. Por ejemplo, el 'EPF Composer'

Herramientas de administración de procesos: Estas herramientas se usan para la planificación del proyecto, el coste y esfuerzo estimados, la temporalización y la organización de los recursos.Se encargan de almacenar y a compartir información sobre el proyecto en tiempo real durante su organización. Ejemplos de este tipo de herramienta son 'Creative Pro Office', 'Trac Project', o 'Basecamp'.

Herramientas de documentación: Generan documentos tanto para el consumidor final (describe el funcionamiento e instrucciones del sistema) como para consumidores de soporte técnico (consultan manuales de sistemas, manuales de referencia, manuales de formación, de instalación) Ejemplos de este tipo de herramientas son: Doxygen, DrExplain, Adobe RoboHelp.

Herramientas de análisis: Estas herramientas ayudan a cumplir con los requisitos de manera automática, examinan si hay alguna inconsistencia en los diagramas y buscan posibles redundancias u omisiones. Ejemplos de este tipo de herramienta son Accept 360, Accompa, CaseComplete para análisis de requisitos, y Visible Analysts para análisis total.

Herramientas de diseño: Estas herramientas ayudan a los diseñadores de software a crear la estructura de los programas. Estas herramientas aportan los detalles de cada módulo y la interconexión entre estos. Un ejemplo de herramienta puede ser el diseño animado de software

Herramientas para la gestión de la Configuración: Se ocupan del control de versiones, línea base y gestión del control de cambios. Las herramientas CASE ayudan en esto usando un rastreo automático, control de versiones y gestión de versiones. Por ejemplo, Fossil, Git, Accu REV.

Herramientas de programación: Estas herramientas proporcionan una ayuda integral en la creación de productos de software e incluyen características para simulación y pruebas. Por ejemplo, Cscope para buscar código en C, Eclipse.

Herramientas de desarrollo de software: Es una versión simulada del producto software que se intenta conseguir. Este prototipo da una idea inicial del producto y simula algunos aspectos del producto real. Por ejemplo, Serena prototype composer, Mockup Builder.

Herramientas de desarrollo Web: Estas herramientas ayudan en el diseño de páginas Web con todos los elementos relacionados como impresos, textos, gráficos y demás. Las herramientas Web también producen una vista preliminar en directo de lo que se está desarrollando y cómo será una vez terminado. Por ejemplo Fontello, Adobe Edge Inspect, Foundation 3, Brackets.

Herramientas de Aseguramiento de la calidad: Constan de herramientas de control de cambios y configuración y de herramientas para pruebas de software. Por ejemplo, SoapTest, AppsWatch, JMeter.

Herramientas de mantenimiento: El mantenimiento del Software incluye modificaciones en el producto software después de ser distribuido. Algunas Herramientas CASE para ello son las técnicas de inicio automático y de reporte de error, producción automática de etiqueta de error y de Análisis de Causa Raíz. Por ejemplo, Bugzilla para seguimiento de defectos, HP Quality Center.

Tutorialspoint. (s.f.). Software - CASE Herramientas. Recuperado 11 diciembre, 2019, de https://www.tutorialspoint.com/es/software_engineering/case_tools_overview.htm