Conceptos Fundamentales en Ingeniería de Software y Desarrollo

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,2 KB

Conceptos Fundamentales en Ingeniería de Software

Caso de Uso:
Representa un requisito funcional de un sistema. Especifica un conjunto de secuencias de acciones, incluyendo variantes que el sistema puede ejecutar y que produce un resultado observable de valor para un particular actor.
Escenario de un Caso de Uso:
Instancia de un caso de uso. Secuencia concreta de interacciones entre los actores y el sistema.
Actor de un Caso de Uso:
Representa un conjunto coherente de roles que juegan los usuarios de los casos de uso al interaccionar con el sistema.
Colaboración:
"Sociedad de clases y otros elementos que colaborarán para realizar el comportamiento expresado en un caso de uso".

Modelado de Datos

¿Qué se modela en un modelo conceptual de datos?:
Modela los requisitos de datos de un sistema.
¿Qué es una clase asociativa?:
Una asociación modelada como clase (con atributos y operaciones).

Relaciones entre Casos de Uso

Include:
Un caso de uso base incorpora explícitamente el comportamiento de otro en algún lugar de su secuencia.
Extend:
Un caso de uso base incorpora implícitamente el comportamiento de otro caso de uso en el lugar especificado indirectamente por este otro caso de uso.

Diagramas y Eventos del Sistema

Diagrama de Secuencia del Sistema:
Muestra para un escenario particular de un caso de uso, la secuencia de eventos generados por los actores externos y las operaciones del sistema que resultan de su invocación.
Evento del Sistema:
Evento externo generado por un actor que desencadena un comportamiento en el sistema.
Operación del Sistema:
Operación interna que se ejecuta como respuesta a la comunicación del evento.

La comunicación de un evento del sistema provoca la ejecución de una operación del sistema con el mismo nombre y los mismos parámetros.

Otros Conceptos

Clasificación:
Los objetos del lado "muchos" de una asociación tienen un orden explícito.

Patrones de Diseño

Patrón de Diseño:
Un patrón de diseño propone una solución a un problema de diseño concreto que puede aparecer en un determinado contexto.
GRASP:
Los patrones GRASP son principios generales para asignar responsabilidades a objetos. Incluyen: Experto en Información, Creador, Controlador, Bajo Acoplamiento, Alta Cohesión.

Patrón GRASP: Controlador

Contexto: Una vez recibido un evento en la capa de presentación, algún objeto de la capa de dominio ha de recibir este evento y ejecutar las acciones correspondientes.

Problema: ¿Qué objeto es el responsable de tratar un evento externo?

Solución: Asignar esta responsabilidad a un controlador que es un objeto de la capa de dominio. Tipos de Controlador: Controlador Fachada (clase que representa todo el sistema) y Controlador Caso de Uso (clase que representa una instancia de un caso de uso).

Arquitectura de Software

Arquitectura en Tres Capas

Contexto: Descomponer un sistema en grupos de subtareas de manera que cada subgrupo esté en un determinado nivel de abstracción.

Problema: Diseñar un sistema de manera que las tareas de alto nivel se basen en las tareas de bajo nivel.

Fuerzas a equilibrar:

  • Sistema mantenible
  • Reusabilidad
  • Separación de interfaz e implementación
  • Cohesión
  • Portabilidad

Solución: Estructurar el sistema en tres capas colocadas verticalmente. Todos los componentes de una capa tienen que trabajar al mismo nivel de abstracción. Los servicios que proporciona la capa j utilizan servicios proporcionados por la capa j-1. Al mismo tiempo, los servicios de la capa j pueden depender de otros servicios de la misma capa.

Procesos de Desarrollo de Software

UML:
Cualquier proceso software OO debe utilizarlo como notación.
UP:
Proceso OO genérico ampliamente aceptado (estándar). Cualquier proceso basado en UML debe ser compatible con UP.
RUP:
Materialización particular de UP.

Gestión de Proyectos de Software

Actividades de Gestión de Proyectos:

  • Planificación de proyectos
  • Estimación de costes y plazos
  • Seguimiento y supervisión del proyecto
  • Gestión de riesgos del software

Planificar un Proyecto:

Cubre todos los aspectos de la realización de un proyecto por parte del director o jefe de proyecto y la gestión de compromisos.

Técnicas de planificación:

  • Diagrama de hitos
  • Diagramas de Gantt
  • Programas de tiempos "full wall"
  • Redes de precedencia

Entradas relacionadas: