
1. 3. Modelo de diseño
1.1. Complementa el modelo de análisis teniendo en cuenta los efectos del ambiente de implementación
1.2. Define estrategias de diseño sobre:
1.2.1. Arquitectura
1.2.1.1. Organización de las clases dentro del sistema, de una manera dinámica distribuyendo la inteligencia de clases según el enfoque más práctico
1.2.2. Robustez
1.2.2.1. Protección contra errores y facil ientificación de fallas
1.2.3. Reuso
1.2.3.1. Entre mas se puedan reutilizar los objetos del sistema, su control sera más fácil
1.2.4. Extensibilidad
1.2.4.1. Normlamnet extendidos de manera imprevista, sin embargo se debe evitar que sea de manera innecesaria
1.3. Tipos de diseño
1.3.1. Diseño de objetos
1.3.1.1. Tarjéta de clases
1.3.1.1.1. Define la clase de manera idependiente y detallada
1.3.1.2. Responsabilidades
1.3.1.2.1. Rol de cada clase dentro del sistema
1.3.1.3. Colaboraciones
1.3.1.3.1. Determinar la colaboración de los objetos del programa evitabndo la creación de programas independientes
1.3.1.4. Jerarquías
1.3.1.4.1. Determina la herencia entre objetos logrando programas compactos
1.3.1.5. Contratos
1.3.1.5.1. Sirve como agrupación de los roles y responsabilidades de cada objeto
1.3.1.6. Subsistemas
1.3.1.6.1. Son necesarios para dividir el sistema principal y disminuir su complejidad
1.3.1.7. Protocolos
1.3.1.7.1. Se determinan las responsabilidades públicas o líneamientos de arquitectura
1.3.1.8. Atributos
1.3.1.8.1. Aspectos estructurales de los objetos, varias según cada lenguaje
1.3.1.9. Algoritmos
1.3.1.9.1. Definne la lógica de cda unción o responsabilidad atribuida a cada objeto del sistema
1.3.2. Diseño de sistema
1.3.2.1. Selección del lenguaje a utilizar incluyendo estrcuturados
1.3.2.1.1. Se deben contemplar aspectos como encapsulamiento, refrencias y herencia múltiple
1.3.2.2. Incorporación de bibliotecas
1.3.2.2.1. Especificamente al definición de interfaces gráficas
1.3.2.3. Elección de la estructura base de datos
1.3.2.3.1. Relacional
1.3.2.3.2. Relacional extendido
1.3.2.3.3. Orientado a objetos
1.3.2.4. Inclusión de archivos
1.3.2.4.1. En caso que la especificación lo requiera, como una extensión de la base de datos
1.3.2.5. Consideración de situaciones de procesamiento, como concurrencia y paralelismo
1.4. Revisión del diseño
1.4.1. Incluir objetos adicionales según las definiciones realizadas
1.5. Diagrama de secuencia del diseño
1.5.1. Diseño completo del sistema buscando que quede terminado bajo la lógica estructurada
2. Entornos de programación orientada a objetos
2.1. Conjunto de procedimientos y herramientas que se utilizan para desarrollar un código fuente o programa
2.1.1. Presenta tres niveles
2.1.1.1. Servidor de desarrollo
2.1.1.1.1. El desarrollador prueba el código y comprueba si la aplicación se ejecuta correctamente con ese código
2.1.1.2. Servidor de integración
2.1.1.2.1. Espejo del servidor de producción que permite validar los requisitos en ambiente controlado
2.1.1.3. Servidor de producción
2.1.1.3.1. Despliegue final de la aplicación
2.1.2. Caracteristicas
2.1.2.1. Multiplataforma
2.1.2.2. Interfaz visual agradable favoreciendo la experiencia de usuario
2.1.2.3. Facilitar el proceso integral de programación
2.1.2.4. Permitir guardar la documentación necesaria en repositorios
2.1.2.5. Facilitar la comunicación transversal
2.1.3. Clases de entornos
2.1.3.1. Editor de texto
2.1.3.1.1. Permite la escritura de código en general
2.1.3.2. Compilador
2.1.3.2.1. Traduce cada fichero de código fuente a código objeto
2.1.3.3. Combinador
2.1.3.3.1. Combina varios ficheros objeto para generar un fichero ejecutable
2.1.3.4. Depurador
2.1.3.4.1. Maneja información en términos de lenguaje de máquina
2.1.4. Principales entornos
2.1.4.1. Netbeans
2.1.4.1.1. Es un entorno de desarrollo integrado libre y de código abierto para el lenguaje de programación Java
2.1.4.2. Eclipse
2.1.4.2.1. Programa informático compuesto por un conjunto de herramientas de programación de código abierto multiplataforma fundamentalmente ha sido utilizada para entornos de desarrollo integrados (IDE)
3. Lenguajes de programación oriantados a objetos
3.1. Java
3.1.1. Lenguaje compilado e interpretado al mismo tiempo; convierte automáticamente el código en instrucciones de máquina.
3.1.1.1. Caracteristicas
3.1.1.1.1. Simple, distribuido, robusto, arquitectura neutral, seguro, portable, interpretado, multihilvanado, dinámico
3.1.1.2. Funcionalidades
3.1.1.2.1. Desarrollo de aplicaciones móviles Inteligencia Artificial Big Data Desarrollo de software Blockchain Internet de las cosas Desarrollo web
3.2. JavaScript
3.2.1. Un lenguaje de programación, de secuencias de comandos,
3.2.1.1. Caracteristicas
3.2.1.1.1. Simplicidad, Velocidad, Versatilidad, Popularidad, Carga del servidor. Actualización contínua
3.2.1.2. Funcionalidades
3.2.1.2.1. Desarrollo de sitios web del lado del cliente (front end, en el navegador). Desarrollo de aplicaciones para dispositivos móviles, híbridas o que compilan a nativo. Construcción de servidores web y aplicaciones de servidor. Desarrollo de aplicaciones de escritorio para sistemas Windows, Linux y Mac. Desarrollo de juegos.
3.3. Python
3.3.1. Lenguaje de programación ampliamente utilizado en las aplicaciones web, el desarrollo de software, la ciencia de datos y el machine learning (ML)
3.3.1.1. Caracteristicas
3.3.1.1.1. Interpretado, facil de utilizar, tipeado dinámicamente, de alto nivel
3.3.1.2. Funcionalidades
3.3.1.2.1. Desarrollo web del lado del servidor Automatización con scripts de Python Realizar tareas de ciencia de datos y machine learning Desarrollo de software Automatización de pruebas de software
3.4. C++
3.4.1. Es una extensión del lenguaje C, por lo tanto, su nombre hace referencia a un lenguaje C incrementado.
3.4.1.1. Caracteristicas
3.4.1.1.1. Es compatible con otras bibliotecas, rapidez en la ejecución de programas, es obligatorio compilar el código, facilita el aprendizaje de otros lenguajes como C#, Java, JavaScript.
3.4.1.2. Funcionalidades
3.4.1.2.1. Sistemas para el almacenamiento y procesamiento de datos a gran escala. Es ideal para el desarrollo de videojuegos. Compilación de lenguajes de programación. Sistemas operativos como Windows, macOS y Linux.
3.5. Visual Basic .NET
3.5.1. Lenguaje de proramación para las aplicaciones de Microsoft Windows
3.5.1.1. Caracteristicas
3.5.1.1.1. Separación de la creación de la interfaz gráfica y el código, barra de herramientas de control, explorador de proyectos y panel de propiedades, programación orientada a eventos
3.5.1.2. Funcionalidades
3.5.1.2.1. Framework integral que permite la programación de páginas simples orientadas a objetos
3.6. Ruby
3.6.1. Lenguaje de programación dinámico y de código abierto, principalmente orientado a objetos, pero que también aborda la programación funcional.
3.6.1.1. Caracteristicas
3.6.1.1.1. Interpretado, Dinámico y flexible, De alto nivel, Open source y multiplataforma
3.6.1.2. Funcionalidades
3.6.1.2.1. Princupalmente utilizado para desarrollo de aplicaciones: aplicaciones de servicio web, clientes de correo electrónico, procesamiento de datos y aplicaciones de red.
3.7. Scala
3.7.1. Lenguaje de programación de propósito general y código abierto, diseñado para el desarrollo utilizando patrones de una forma concisa y tipos
3.7.1.1. Caracteristicas
3.7.1.1.1. Encapsulamiento. Herencia. Polimorfismo. Todos los tipos predefinidos son objetos. Las operaciones se realizan enviando mensajes a objetos. Todos los tipos definidos por usuarios son objetos.
3.7.1.2. Funcionalidades
3.7.1.2.1. Funciones, valores de primera clase u objetos que pueden asignarse a diferentes variables. Comparte esta característica con Java, con la que tiene una buena interoperabilidad. Por esto, es muy usado en Big Data y aplicaciones como Spark.
3.8. PHP
3.8.1. Acrónimo de Hypertext Preprocessor, es un lenguaje de programación orientado a objetos, de código abierto muy popular para el desarrollo web que puede ajustarse en HTML.
3.8.1.1. Caracteristicas
3.8.1.1.1. Código abierto y gratuito, Permite la separación de códigos, código limpio y estable, desarrollo de páginas web complejas y dinámicas, puede ejecutarse en cualquier servidor o sistema operativo , versátil
3.8.1.2. Funcionalidades
3.8.1.2.1. Programación del lado del servidor Programación a través de la línea de comandos Aplicaciones de escritorio
4. 1. Modelo de requisitos
4.1. Su objetivo es delimitar el alcance y funcionalidad del sistema frente al usuario, basado en el modelo de casos de uso
4.2. Consta de tres modelos principales
4.2.1. Modelo de comportamiento
4.2.1.1. Funcionalidad desde el punto de vista del usuario
4.2.2. Modelo de interfaces
4.2.2.1. Interacción del sistema con actores externos
4.2.3. Modelo de información
4.2.3.1. Estructura del software en terminos de objetos (Bases de datos, clases, funciones, etc)
4.3. Ciclo inicial
4.3.1. Descripción del problema
4.3.1.1. Su propósito es comprender el problema en su totalidad y sus implicaciones
4.3.1.1.1. Resumen preliminar de las necesidades que permiten delimitar el alcance del proyecto, traduciendo los requisitos en terminos funcionales
4.3.2. Modelo de casos de uso
4.3.2.1. Describe un sistema en función de sus diferentes posibilidades de utilización
4.3.2.1.1. Actores
4.3.2.1.2. Casos de uso
4.3.3. Modelo de interfaces
4.3.3.1. Se basa en principios gráficos para determinar las vistas que vera el usuario
4.3.4. Modelo del dominio del problema
4.3.4.1. Modelo comun que incluye los stakeholders de negocio, debe ser entendido a nivel transversal
4.3.4.1.1. Identificación de clases o funciones en el área de aplicación del negocio relacionado
5. 2. Modelo de análisis
5.1. Generar una arquitectura del sistema con base en el modelo de requisitos - casos de uso
5.1.1. Arquitectura de Objetos
5.1.1.1. Clases con Estereotipos o fncionalidad de cada objeto (Entidad, borde y control)
5.1.2. Asignación de objetos a cada caso de uso
5.1.3. Diagrama de secuencias definiendo la interacción entre clases
5.1.4. Se debe organizar el diagrama de clases por modulos
6. 4. Modelo de Implementación
6.1. Su misión es generar el código final a partir del modelo de diseño
6.2. Se realiza la programación previamente estructurada en el lenguaje escogido, muchas veces temprana
6.3. Se generan los diagramas de clase para el sistema completo
7. 5. Modelo de pruebas
7.1. Certificación de calidad del producto no definitiva, el modelo de pruebas se escogera según cada caso.
7.2. Bugs o situaciones no previstas
7.2.1. Falla
7.2.1.1. El programa no se comporta de manera adecuada
7.2.2. Falta
7.2.2.1. El código del programa tienen algun imprevisto, que puede o no causar una falla
7.2.3. Error
7.2.3.1. Acción humana que ocasiona fallas en el programa
7.3. Tipos de pruebas
7.3.1. Verificación
7.3.1.1. Resultado esperado del sistema
7.3.2. Validación
7.3.2.1. Necesidad cumplida del cliente o usuario
7.4. Técnicas de prueba
7.4.1. Regresión
7.4.1.1. Verificación del sistema luego de cambios adicionales
7.4.2. Operación
7.4.2.1. Verificación del sistema en largos periodos con condiciones normales de uso
7.4.3. Escala completa
7.4.3.1. Se intenta una carga máxima del sistema
7.4.4. Rendimiento
7.4.4.1. Mide la capacidad del procesamiento del sistema
7.4.5. Sobrecarga
7.4.5.1. Funcionamiento del sistema despues de niveles de escala completa.
7.4.6. Negativa
7.4.6.1. Mide el estres del sistema en situaciones inesperadas
7.4.7. Casos de uso
7.4.7.1. Pruebas relacionadas direcatmente con la definición inicial de requisitos
7.4.8. Ergonómicas
7.4.8.1. Prueba la relación hombre - maquina
7.4.9. Documentación
7.4.9.1. Se prueban las documentaciones relacionales como manuales y guias
7.4.10. Aceptación
7.4.10.1. Revisión final del cliente o usuario real.
7.5. Nivel de pruebas
7.5.1. Unidad
7.5.1.1. Un objeto del sistema se prueba de manera unitaria
7.5.1.1.1. Caja negra, de estado y estructural
7.5.2. Integración
7.5.2.1. Se prueba que las unidades trabajen juntas
7.5.3. Sistema
7.5.3.1. Se valida el sistema completo
7.6. Proceso
7.6.1. Definición de estratégia de pruebas
7.6.1.1. Ordén
7.6.1.1.1. Momento y secuencia de aplicación de las pruebas
7.6.1.2. Alcance
7.6.1.2.1. Identificar el tipo, número y casos de pruebas
7.6.1.3. Automatización
7.6.1.3.1. Aumentar las pruebas medienta programas especializados en repetir acciones y analizar datos.
7.6.2. Planeación
7.6.2.1. Permite estimar los recursos necesarios para ejecutar la estratégia definida
7.6.3. Construcción
7.6.3.1. Documentación funcional de cada prueba especificando cada aspecto técnico y funcional relaiconado para eventualmente replicar el caso
7.6.4. Ejecución
7.6.4.1. Se realizan las pruebas y se doeumnatn sus resultados