1. Requisitos
1.1. Se especifican las necesidades del sistema a desarrollar. La especificación de requisitos sirve como base para la negociación entre los desarrolladores y clientes del sistema y también para planear y controlar el proceso de desarrollo.
1.1.1. especificación de requisitos para capturar los aspectos funcionales del sistema, describiendo cómo interactuaría un usuario con la aplicación.
1.1.2. El desafío en la especificación de requisitos comienza cuando el experto debe comunicar los conceptos importantes para su aplicación. En general, no es posible hacer esto adecuadamente de manera sencilla.
2. Análisis
2.1. Se busca comprender los requisitos del sistema con el propósito de estructurar la arquitectura del sistema. Responde a la pregunta del “qué” del sistema.
2.1.1. teniendo como meta construir una arquitectura capaz de resolver el problema bajo condiciones ideales. Esto significa desarrollar una estructura lógica del sistema que debe ser estable y extensible.
2.1.2. El análisis se enfoca en qué debe hacer el sistema, en lugar de cómo se supone que lo hará.
3. Diseño
3.1. Se transforma la arquitectura obtenida durante el análisis en una arquitectura especializada, donde se considera el ambiente de implantación particular del sistema. Obedece al “cómo” del sistema.
3.1.1. Este aspecto se conoce como el diseño de estructuras o, de manera general, como el diseño de objetos, en el caso de arquitecturas orientadas a objetos. El diseño de objetos incluye la selección de algoritmos y estructuras de datos para satisfacer los objetivos de rendimiento y espacio del proyecto de software.
3.1.2. El modelo de análisis y diseño de objetos tienen bastante en común, incluyendo conceptos, técnicas y notaciones similares.
4. Entornos de programacion orientado a objetos
4.1. C#: fue diseñado por microsoft es una extension de C con orientacion a objetos inspirado en C++ y en particular en java, evita muchos errores de diseño de C++
4.1.1. Java: es sencillo y portátil bastante similar a C++aunque ha tomado ideas de antiguas aplicaciones.
4.1.2. C/C++: C++ es un lenguaje de programación creado, como una extensión del lenguaje C, para hacerlo orientado a objetos. Es capaz de compilar instrucciones, por lo que brinda acceso total al hardware, originando su amplio uso en bases de datos, navegadores web y videojuegos.
4.2. Objective-C: es un lenguaje de programación cimentado en C, orientado a objetos, para crear soluciones sencillas y flexibles a problemas de programación. Fue el lenguaje principal de Apple para crear aplicaciones en iOS y macOS, antes de Swift, pero aún es popular por la gran cantidad de aplicaciones desarrolladas con él.
4.3. Python: es de código abierto, con una sintaxis simple y sencilla de entender, quizá el más fácil de este listado. Es idóneo para iniciarse en el mundo de la programación. Es muy versátil por lo que tiene múltiples áreas de aplicación como: inteligencia artificial, Big Data y desarrollo web.
5. Documentación
5.1. Se describen los aspectos sobresalientes de los requisitos, análisis, diseño, implementación, integración y pruebas. Esto servirá para usuarios externos e internos, aquellos encargados de mantener el sistema y extenderlo.
5.1.1. La documentación se debe hacer durante la elaboración del sistema y no como una etapa final del mismo.
6. Pruebas
6.1. Se verifica y valida el sistema a nivel de componentes individuales y su integración. Éste es uno de los aspectos más críticos del desarrollo y debe desarrollarse de manera concurrente con el resto de las actividades. Se busca descubrir cualquier defecto en los requisitos, análisis, diseño, implementación e integración. Las pruebas se hacen a varios niveles, desde funciones sencillas hasta el sistema completo.
6.1.1. El modelo de pruebas es el responsable de revisar la calidad del sistema. Este modelo consta de la validación del sistema (también conocida como prueba de especificación) y la verificación (también conocida como prueba de resultado). De manera adicional, el modelo de pruebas combina pruebas de unidad y pruebas de integración.
7. Implementación
7.1. Se expresa la arquitectura del sistema en una forma aceptable para la computadora (es decir, el código programado).
7.1.1. El modelo de implementación toma el resultado del modelo de diseño para generar el código final del sistema. Esta traducción debe ser relativamente sencilla y directa, ya que todas las decisiones importantes han sido tomadas en las etapas previas.
7.1.2. Aunque existen muchos tipos de lenguajes de programación, el uso de un lenguaje orientado a objetos facilita la implementación de un diseño orientado a objetos.