Está en la página 1de 40

Ingeniería de Software.

El Proceso de Desarrollo de
Software con Metodología Orientada
a Objetos y el Lenguaje de
Modelado UML.

Ingeniería de Software. Proceso de Desarrollo de Software Página 0


Metodología de Desarrollo de Software Orientado
a Objetos.
• En el proceso de desarrollo de software, metodología se refiere al
nivel más alto de organización de un proyecto de desarrrollo.

• Esta organización se descompone normalmente en fases.

• Las fases se descomponen en disciplinas (workflows ).

• Las disciplinas se descomponen en actividades.

• Las actividades transforman los artefactos de una disciplina a otra.

• La salida de una disciplina se convierte en la entrada de la siguiente.

• El artefacto final es un sistema de software operable que satisface el


artefacto inicial: los requerimientos del sistema.

Ingeniería de Software. Proceso de Desarrollo de Software Página 1


Jerarquía del Proceso de Desarrollo de Software
Orientado a Objetos.

Ingeniería de Software. Proceso de Desarrollo de Software Página 2


Las 4 fases principales.

• Iniciación o concepción (Inception).


• Elaboración (Elaboration).
• Construcción (Construction).
• Transición (Transition).

Ingeniería de Software. Proceso de Desarrollo de Software Página 3


Las 7 principales disciplinas.
• Determinación de requerimientos.
• Análisis de requerimientos (o simplemente Análisis).
• Definición de la Arquitectura.
• Diseño.
• Construcción (Implementación).
• Pruebas.
• Implantación (Deployment).
Nota. En ocasiones se considera el Mantenimiento como una
octava disciplina.

Ingeniería de Software. Proceso de Desarrollo de Software Página 4


La disciplina de Determinación de Requerimientos.

Disciplina Propósito Descripción.

Determinación de Determinar o entender que Determinar:


Requerimientos. debe hacer el sistema. • Con quiénes debe
interactuar el sistema
(actores).
• Que conductas (use
cases) debe soportar el
sistema.
• El detalle de los
requerimientos
funcionales de cada caso
de uso (use case).

Ingeniería de Software. Proceso de Desarrollo de Software Página 5


Actividades y artefactos de la disciplina de Determinación
de Requerimientos.

FR: Functional req's. NFR: Non-functional req's. SRS: System Requirements Specification.

Ingeniería de Software. Proceso de Desarrollo de Software Página 6


La disciplina de Análisis de Requerimientos.

Disciplina Propósito Descripción.

Análisis de Modelar los procesos Determinar:


Requerimientos. existentes. • Casos de Uso (use
cases) detallados y
elaborados.
• Que abstracciones clave
existen en el ámbito del
sistema.

Ingeniería de Software. Proceso de Desarrollo de Software Página 7


Actividades y artefactos de la disciplina de Análisis de
Requerimientos.

CRC: Class Responsibility Collaboration: UC: Use Cases.

Ingeniería de Software. Proceso de Desarrollo de Software Página 8


La disciplina de Arquitectura.

Disciplina Propósito Descripción.

Arquitectura. Modelar la estructura de • Desarrollar la estructura


alto nivel del sistema para de más alto nivel de la
satisfacer los NFRs: solución de hardware y
requerimientos no software.
funcionales. • Identificar las tecnologías
que soportan el modelo
arquitectónico.
• Elaborar el modelo
arquitectónico usando
patrones de diseño
arquitectónico para
satisfacer los NFRs.

Ingeniería de Software. Proceso de Desarrollo de Software Página 9


Actividades y artefactos de la disciplina de Arquitectura.

Ingeniería de Software. Proceso de Desarrollo de Software Página 10


La disciplina de Diseño.

Disciplina Propósito Descripción.

Diseño. Modelar como soportará el • Crear un modelo de


sistema todos los casos de diseño para cada caso de
uso uso.
• Crear un modelo de
solución.
• Refinar el modelo de
diseño del sistema.
• Aplicar patrones de
diseño a los modelos.
• Modelar los estados de
objetos complejos.

Ingeniería de Software. Proceso de Desarrollo de Software Página 11


Actividades y artefactos de la disciplina de Diseño

Ingeniería de Software. Proceso de Desarrollo de Software Página 12


Las disciplinas de Construcción, Pruebas y Deployment.

Disciplina Propósito Descripción.

Construcción. Construir (codificar), • Implementar (codificar)


Pruebas. probar e implantar el cada uno de los
Deployment. sistema. componentes del sistema.
• Llevar a cabo las pruebas
unitarias, de sistema y de
stress.
• Hacer el deployment del
sistema.

Ingeniería de Software. Proceso de Desarrollo de Software Página 13


Actividades y artefactos de las disciplinas de
Construcción, Pruebas y Deployment.

Ingeniería de Software. Proceso de Desarrollo de Software Página 14


Roles de los Involucrados.
Equipo del Cliente Equipo de desarrollo

Propietario o accionista. Gerente del Proyecto.

Gerente. Analista.

Usuario. Arquitectos.

Diseñador.

Programador.

Probador.

Deployer.

Ingeniería de Software. Proceso de Desarrollo de Software Página 15


Modelado de Software.

• La concepción o idea original de un proyecto de


software empieza como una idea en la mente de
alguien.

• Para construir algo concreto a partir de esa idea, el


equipo de desarrollo debe crear una serie de
modelos conceptuales, que transformen la idea en
un sistema de producción.

Ingeniería de Software. Proceso de Desarrollo de Software Página 16


Modelado de Software (2).
• ¿Qué es un modelo?
• Una conceptualización abstracta simplificada
de una entidad (e.g. un edificio) o un sistema
(e.g. software).
• Diferentes vistas muestran el modelo en
diferentes perspectivas.

Ingeniería de Software. Proceso de Desarrollo de Software Página 17


¿Por qué modelar el Software?

Específicamente, el modelado nos permite:


• Visualizar sistemas nuevos o existentes.

• Comunicar decisiones a los involucrados en el proyecto.

• Documentar las decisiones tomadas en cada disciplina del


proceso.

• Especificar la estructura (modelo estático) y el comportamiento


(modelo dinámico) de los elementos del sistema.

• Utilizar patrones conocidos para construir la solución del software.

Ingeniería de Software. Proceso de Desarrollo de Software Página 18


Transformaciones del modelo.

El proceso de desarrollo de Software se puede concebir


como una serie de transformaciones del modelo mental
del patrocinador (stakeholder) al código real.

FR: Functional requirements. NFR: Non-functional requirements.

Ingeniería de Software. Proceso de Desarrollo de Software Página 19


¿Qué es el UML?

“The Unified Modeling Language (UML) is a graphical


language for visualizing, specifying, constructing, and
documenting the artifacts of a software-intensive system.”

Utilizando el UML, se generan modelos compuestos de:

• Elementos: nodos «cosas» y relaciones.


• Diagramas (construidos a partir de los elementos).
• Vistas (diagramas que muestran diferentes perspectivas
del modelo).

Ingeniería de Software. Proceso de Desarrollo de Software Página 20


Historia del UML

US D. O. D. Programación OO Booch
Ada
Bell Labs Eiffel Wirfs-Brock
XEROX PARC Smalltalk
Simula
Jacobson:OOSE UML
Etc. Etc... C++

Shlaer/Mellor

Coad/Yourdon
Métodos estructurados Rumbaugh: OMT
Modelado de Entidades
Modelado de Eventos
Martin/Odell

Ingeniería de Software. Proceso de Desarrollo de Software Página 21


Principales Contribuidores
(Los Tres Amigos)

JAMES “Diseño y Modelado Orientado


a Objetos” (1991)
RUMBAUGH

GRADY “Aplicaciones con Diseño


BOOCH Orientado a Objetos” (1993)

“Ingeniería de Software Orientada a


IVAR Objetos:
Un acercamiento conducido en un Caso de
JACOBSON Uso” (1992)

Ingeniería de Software. Proceso de Desarrollo de Software Página 22


Evolución del UML

Entrega a OMG: junio 1996


UML 2.0
Primera revisión de OMG, enero 1997
Ultima revisión de OMG, sept. 1997
Aceptada por OMG, Nov 1997
UML 1.1

UML 0.9

Unified Method 0.8

Otros métodos Método Booch OMT Rumbaugh OOSE Jacobson

Ingeniería de Software. Proceso de Desarrollo de Software Página 23


¿Por qué es importante el UML?

• Convergencia de Ideas
• Fin a la “Guerra de los Métodos”
• Estandarización del Modelado en la Industria
• Semántica
• Definición
• Notación

UML – El lenguaje de modelado “Standard de la


Industria”

Ingeniería de Software. Proceso de Desarrollo de Software Página 24


UML nos da...

Elementos a Modelar

• Elementos y conceptos fundamentales del


modelado

Notación

• Entrega visual de los elementos del modelo en


diagramas gráficos.

Ingeniería de Software. Proceso de Desarrollo de Software Página 25


Elementos del UML.

Ingeniería de Software. Proceso de Desarrollo de Software Página 26


Diagramas de UML.

Ingeniería de Software. Proceso de Desarrollo de Software Página 27


Vistas de UML.

Ingeniería de Software. Proceso de Desarrollo de Software Página 28


Nuevos Diagramas del UML 2.0
• Dentro de la vista estructural:

- Composite structure.
- muestra la estructura interna de una clase y las
colaboraciones entre sus elementos.

• Dentro de la vista dinámica:

- Timing.
- forma horizontal de un diagrama de secuencia.
- Interaction Overview.
- tipo de diagrama de actividades en donde los nodos
pueden ser diagramas de colaboración, de secuencia o de
timing.

Nota. Al diagrama de colaboración se le llama de comunicación en UML 2.


Ingeniería de Software. Proceso de Desarrollo de Software Página 29
¿Qué es y qué NO es UML?

UML NO ES: PERO ES:

Un lenguaje de programación. Un lenguaje visual de modelado.


Tiene características que permiten
representar las construcciones de los
lenguajes de programación
Una metodología. Un lenguaje que se puede usar para
representar las actividades de una
metodología.

Utilizado para crear un modelo Un lenguaje que se puede usar para


ejecutable. generar esqueletos de código real de
programación.

Ingeniería de Software. Proceso de Desarrollo de Software Página 30


Herramientas de UML.

UML en sí no es una herramienta. Los diagramas de UML se


pueden hacer en papel, sin embargo, hay herramientas de
software para:

• Dibujar los diagramas UML.


• Validar la semántica de los diagramas.
• Dar soporte a una metodología específica.
• Generar esqueletos de código a partir de los diagramas UML.
• Organizar todos los diagramas de un proyecto.
• Generar automáticamente elementos de modelado de patrones de
diseño, componentes de una arquitectura específica como Java EE o
Microsoft .net.

Ingeniería de Software. Proceso de Desarrollo de Software Página 31


Ejercicio 1: Disciplinas.
¿A qué definición corresponden los términos mencionados?

Término Definición

1 Determinación de A Identificar y mitigar riesgos, modelando la estructura de mayor nivel del


requerimientos D sistema.
2 Análisis. G B Instalar la implementación del sistema en un ambiente producción.

3 Arquitectura. A C Construir los componentes de software definidos en el modelo de diseño.

4 Diseño. F D Determinar los requerimientos del sistema mediante entrevistas con los
propietarios, accionistas y usuarios del sistema propuesto.
5 Construcción. C E Asegurarse de que la implementación cumple las expectativas definidas en los
requerimientos.
6 Pruebas. E F Crear un modelo de la solución del sistema que satisfaga los requerimientos
funcionales.
7 Deployment. B G Analizar, refinar y modelar los requerimientos del sistema.

Ingeniería de Software. Proceso de Desarrollo de Software Página 32


Ejercicio 2: Beneficios del modelaje.

Marque las descripciones que representan beneficios del modelaje.

√ Descripción.
Los modelos proporcionan el punto de partida para un nuevo sistema.

Los modelos ayudan a entender lo que se ha desarrollado.

√ Los modelos ayudan a visualizar sistemas nuevos o existentes.

Los modelos son realizaciones concretas de un sistema.

√ Los modelos ayudan a comunicar decisiones a los involucrados (stakeholders)


del proyecto.

Ingeniería de Software. Proceso de Desarrollo de Software Página 33


Ejercicio 3: Tipos de diagramas UML.
¿A qué diagrama corresponden las descripciones?

Diagrama Descripción
1 Use Cases. D A Fotografía de objetos de software y sus relaciones.
2 Clases. F B Flujo de tareas que lleva a cabo un actor o sistema.

3 Objetos. A C Colección de componentes y su distribución a través de elementos de


hardware.
4 C olaboración. E D Conjunto de conductas de alto nivel que lleva a cabo el sistema para un
actor en particular.
5 Secuencia. J E Colección de objetos que trabajan juntos para soportar alguna conducta del
sistema.
6 Actividades. B F Colección de clases de software y sus relaciones
7 Estado.I G Colección de otros elementos y diagramas.

8 Componentes. H H Colección de componentes de software y sus relaciones.

9 Deployment. C I Conjunto de estados que puede tener un objeto y las transciones de un


estado a otro.
10 Paquetes. G J Perspectiva en el tiempo de las acciones de un objeto.

Ingeniería de Software. Proceso de Desarrollo de Software Página 34


Ejercicio 4: Características de la disciplina de
Determinación de Requerimientos.

Marque las descripciones que representan características de esta


disciplina.

√ Descripción.
√ Esta disciplina empieza con entrevistas con el dueño o accionista del negocio.

Esta disciplina requiere modelar la estructura de alto nivel del sistema para
satisfacer los requerimientos no funcionales.

√ El propósito de esta disciplina es determinar que debe hacer el sistema en


términos generales.
Se debe crear el modelo de diseño durante esta disciplina.

√ Se deben crear los diagramas de Casos de Uso iniciales durante esta


disciplina.

Ingeniería de Software. Proceso de Desarrollo de Software Página 35


Ejercicio 5: Características de la disciplina de Análisis de
Requerimientos.

Marque las descripciones que representan características de esta


disciplina.

√ Descripción.
√ El propósito de esta disciplina es determinar que debe hacer el sistema.

√ Esta disciplina incluye el registro de los detalles de los Casos de Uso.

El propósito de esta disciplina es modelar como soportará el sistema los Casos


de Uso.
Durante esta disciplina se crea el modelo de Diseño.

Durante esta disciplina se crea el diagrama de Deployment.

Ingeniería de Software. Proceso de Desarrollo de Software Página 36


Ejercicio 6: Características de la disciplina de
Arquitectura.
Marque las descripciones que representan características de esta
disciplina.

√ Descripción.
Durante esta disciplina se usa el diagrama de Actividades para verificar los
Casos de Uso.
Durante esta disciplina se analizan los Casos de Uso para determinar detalles
adicionales.
√ Durante esta disciplina se determina la estructura de alto nivel del sistema
(hardware y software), que satisface los requerimientos no funcionales.
Durante esta disciplina se podrían crear diagramas de estado.

El propósito de esta disciplina es modelar como soportará el sistema los Casos


de Uso.

Ingeniería de Software. Proceso de Desarrollo de Software Página 37


Ejercicio 7: Características de la disciplina de
Diseño.
Marque las descripciones que representan características de esta
disciplina.

√ Descripción.
Durante esta disciplina se crea el diagrama de Deployment.

El propósito de esta disciplina es modelar la estructura de alto nivel del Sistema


para satisfacer los requerimientos no funcionales.
Durante esta disciplina se crea el diagrama de capas y estratos.

√ El propósito de esta disciplina es modelar la estructura de alto nivel del Sistema


para satisfacer los requerimientos funcionales.
√ Durante esta disciplina se refina el modelo de Diseño.

Ingeniería de Software. Proceso de Desarrollo de Software Página 38


Ejercicio 8: Características de las disciplinas de
Construcción, Pruebas y Deployment.

Marque las descripciones que representan características de estas


disciplinas.

√ Descripción.
√ Durante esta disciplina se crea un plan de Deployment.

√ Durante esta disciplina se crean diagramas de paquetes.

Durante esta disciplina se crea el modelo de Solución.

√ El propósito de esta disciplina es implementar, probar e implantar el sistema.

El foco de esta disciplina es descubrir los requerimientos funcionales y no


funcionales.

Ingeniería de Software. Proceso de Desarrollo de Software Página 39