Fundamentos de la Ingeniería del Software
La ingeniería del software aplica los principios de la ciencia de la computación y las matemáticas para lograr soluciones económicas a los problemas de desarrollo del software.
Proceso de la Ingeniería del Software
Conjunto de etapas ordenadas para lograr un producto software de calidad.
Análisis y Diseño Orientado a Objetos (OO)
Método de análisis y diseño que examina los requerimientos desde la perspectiva de las clases y objetos encontrados en el vocabulario del dominio del problema.
Metodología de Desarrollo
Conjunto integrado de técnicas y métodos que permiten obtener de forma sistemática y abierta cada fase del ciclo de vida del software.
Ciclo de Vida del Software
Marco de referencia que contiene los procesos, actividades y tareas involucradas en el desarrollo, operación y mantenimiento de un producto software, abarcando la vida del sistema desde la definición de requisitos hasta la finalización de uso.
- Planificación y especificación de requisitos
- Análisis de requisitos
- Especificación funcional
- Diseño del sistema
- Codificación y pruebas
- Implantación y mantenimiento
Planificación, Especificación de Requisitos y Construcción
La construcción del sistema es la que consume la mayor parte del esfuerzo y del tiempo en un proyecto de desarrollo. Se adopta un enfoque iterativo. Se toma en cada iteración un subconjunto de requisitos y se llevan a su análisis y diseño hasta la implementación y pruebas. El sistema crece en cada ciclo y disminuye el grado de complejidad.
Fases de la Construcción
Análisis
Se analiza el problema a resolver desde la perspectiva del usuario y de entidades externas que van a solicitar servicios. Se intenta llegar a una buena comprensión del problema por parte del equipo de desarrollo, sin entrar en cómo va a ser la solución. Trabajamos con los modelos de casos de uso construidos en la fase anterior, ampliándolos y refinándolos. Se construye un Modelo de Objetos Conceptual mediante un diagrama de clases compuesto de clases y relaciones entre las clases. En el Modelo de Objetos Conceptual se tiene una representación de conceptos del mundo real, es la primera aproximación al modelo de diseño. Se deberán identificar los conceptos más importantes del sistema, los atributos y las relaciones existentes.
Diseño
El sistema se especifica al detalle describiendo cómo va a funcionar por dentro para satisfacer lo especificado en el análisis. Se crea una solución a nivel lógico para satisfacer los requisitos, basándose en el conocimiento reunido en el análisis. Las tareas que se realizan son:
- Definir el diagrama de clases.
- Definir las estructuras de datos necesarias para almacenar la información que utiliza el sistema.
- Definir la Interfaz de Usuario e Informes.
Los diagramas de clases se refinan con la especificación de atributos y operaciones para cada una de las clases y las relaciones con otras clases. Con la información obtenida en los casos de uso, se pueden derivar las operaciones y asignarse a las clases existentes.
Implementación
Se lleva lo especificado en el diseño a un lenguaje de programación.
Pruebas
Se llevan a cabo una serie de pruebas para corroborar que el software funciona correctamente y que satisface lo especificado en la etapa de Planificación y Especificación de Requisitos. Es conveniente dividir el trabajo en fases e iteraciones.
Instalación
Puesta en marcha del sistema en el entorno previsto de uso.
Casos de Uso
Secuencia típica de acciones en un sistema, desde el punto de vista del usuario, muestra cómo el sistema interacciona con el exterior y qué se obtiene como resultado. Son descritos en un documento con: Nombre, Actores participantes, Tipo (primario, secundario), descripción. Representan una unidad funcional coherente dada por el sistema que se manifiesta con un intercambio de mensajes entre el sistema y los interlocutores.
Actor
Representa un rol que un usuario puede representar al interactuar con el sistema.
Diagrama de Casos de Uso (CDU)
Muestran la relación entre actores y los casos de uso del sistema, además de expresar relaciones entre casos de uso. Describen bajo la forma de acciones y reacciones el comportamiento de un sistema desde el punto de vista del usuario. Permiten definir límites del sistema y relaciones sistema-entorno.
Unified Modeling Language (UML)
Define un lenguaje de modelado orientado a objetos común para visualizar, especificar, construir y documentar los componentes de un sistema software OO. El UML es una notación que trata de posibilitar el intercambio de modelos de software.
Modelo
Es una simplificación de la realidad creada para comprender mejor un sistema. Un proceso de desarrollo de software debe ofrecer un conjunto de modelos que permitan expresar el producto desde cada una de las perspectivas de interés. Los modelos de UML se utilizan para representar las distintas fases que se plantean en una metodología. UML utiliza modelos OO. UML utiliza diagramas para representación de sistemas. Se utilizan para visualizar un sistema desde diferentes perspectivas.
Interfaces
Conjunto de operaciones que especifican los servicios que puede brindar una clase y no debe especificar sus implementaciones.
Asociaciones
Pueden estar formadas por indeterminadas clases. Las más utilizadas son las binarias, relaciones entre dos clases.
Agregación
Entre clases se expresa mediante un rombo que representa la totalidad.
Composición
Agregación, pero relleno.