2. Contenido
El software y sus aplicaciones
El proceso de desarrollo de software
Métodos, técnicas y herramientas
Los modelos y su importancia
El modelado de un sistema software
El Modelado en el Desarrollo de Software
2
3. El software y sus aplicaciones
Definición de software
Software =
Programas + Datos + Documentación
Líneas de Estructura Manual de usuario,
Código de datos Documentación de
construcción
Desarrollo + Mantenimiento
El Modelado en el Desarrollo de Software
3
4. El software y sus aplicaciones
Definición de software
Aquellos programas, procedimientos, reglas, y
documentación posible asociadas con la
computación, así como los datos persistentes a la
operación de un sistema de computo.
Hoy en día, el software ha superado al HW, y se
dice: “El SW marca la diferencia de un Negocio”
El principal desafío es mejorar la calidad y reducir
los costos (construcción / adaptación, y
mantenimiento ) de las soluciones con software.
El Modelado en el Desarrollo de Software
4
5. El software y sus aplicaciones
Producto de software
Conjunto de elementos de software (programas,
tablas, reportes, documentación, etc.) que tienen un
propósito específico y completo desde el punto de
vista del usuario, de tal manera que la sustracción de
cualquiera de los elementos del conjunto daría como
resultado que el propósito no se cumpliera.
El Modelado en el Desarrollo de Software
5
6. El software y sus aplicaciones
Tipos de Productos Software
Productos genéricos (sw de
mostrador)
Desarrollados por una organización para ser
vendidos al mercado.
Productos hechos a medida
Desarrollados bajo pedido a una empresa
desarrolladora de software.
La mayor parte del gasto del software es en productos
genéricos, pero hay más esfuerzo en el desarrollo de los
sistemas hechos a medida.
El Modelado en el Desarrollo de Software
6
7. El software y sus aplicaciones
Aplicaciones del Software
Software de Sistemas (de base)
Software de Tiempo Real
Software de Negocios o gestión
Software de Ingeniería y
científico
Software Empotrado
(Embebido)
Software de PC´s
Software de Inteligencia artificial
Software de Aplicaciones Web.
El Modelado en el Desarrollo de Software
7
8. El proceso de desarrollo de
software
Desarrollo de software
Crear e Implantar un sistema software, por ejemplo,
software de tipo aplicación que automatice el trabajo
en una organización.
Analista Diseñador Programador
¿Como?
¿Que? Hacerlo
Servicio de Aplicación
Usuario
El Modelado en el Desarrollo de Software
8
9. El proceso de desarrollo de
software
El Proceso
Marco de trabajo de tareas a realizar para desarrollar
SW de alta calidad.
Ing. Sistemas
Definición
Planificación (QUE)
Análisis de req.
Desarrollo
Diseño (COMO)
G. de Código
Prueba
Mant. Correctivo Soporte
(CAMBIOS)
Mant. Adaptativo
Visión Genérica Mant. Perfectivo
Mant. Preventivo o Reingeniería
del Software
El Modelado en el Desarrollo de Software
9
10. El proceso de desarrollo de
software: RUP
Concepción Elaboración Construcción Transición
Modelado del Negocio
Requerimientos
Análisis y Diseño
Implementación
Prueba
Implantación
Control de Cambios
Gestión Proyecto
Entorno
Iteraciones IT #1 IT # 2 IT # 3 IT # 4 IT # 5 IT # 6 IT # 7 IT # 8
El Modelado en el Desarrollo de Software
10
11. Métodos, técnicas y
herramientas
¿Que hace un Ingeniero?
Construir artefactos dentro de unas
limitaciones de coste, utilizando el
conocimiento y las teorías de la ciencia sobre
la cual se basa el artefacto.
El Modelado en el Desarrollo de Software
11
12. Métodos, técnicas y
herramientas
Los métodos indican los pasos que debemos
seguir para construir un artefacto, ejemplo
software. Abarcan una gran gama de tareas que
incluyen el análisis de los requisitos, el diseño,
la construcción de programas, pruebas y
mantenimiento.
Las técnicas indican como debemos construir
el artefacto, es la forma de realizar las
actividades del metodo. Ejemplo: técnicas de
modelado y otras técnicas descriptivas.
El Modelado en el Desarrollo de Software
12
13. Métodos, técnicas y
herramientas
Históricamente se han utilizado técnicas
como:
El modelado
División del Producto
División del Proceso
En principio se deberían utilizar estas
técnicas, también en informática .
El Modelado en el Desarrollo de Software
13
14. Métodos, técnicas y
herramientas
El modelado
Simplificación del objeto en el mundo real,
pero que es suficientemente realista como
para dar una idea de lo que ocurrirá en la
realidad y usarse como base del desarrollo.
El Modelado en el Desarrollo de Software
14
15. Métodos, técnicas y
herramientas
División del Producto.
Se fracciona el producto de modo que cada
fragmento lo puede realizar un miembro del
grupo de desarrollo.
El Modelado en el Desarrollo de Software
15
16. Métodos, técnicas y
herramientas
División del Proceso
Implica dividir el desarrollo del artefacto por
fases. Normalmente se habla de especificación,
diseño y fabricación.
¿Que? ¿Como? Realización Pruebas
El Modelado en el Desarrollo de Software
16
17. Métodos, técnicas y
herramientas
Las herramientas proporcionan un enfoque
automático o semi-automático para el proceso y para
los métodos. Cuando se integran herramientas para
que la información creada por una herramienta pueda
ser usada por otra, se establece un sistema de soporte
para el desarrollo del software llamado Ingeniería del
Software asistida por computadora (CASE).
El Modelado en el Desarrollo de Software
17
18. Los modelos y su importancia
Construcción de una casa para “fido”
Puede hacerlo una sola persona
Requiere:
Modelado mínimo
Proceso simple
Herramientas simples
El Modelado en el Desarrollo de Software
18
19. Los modelos y su importancia
Construcción de una casa
Construida eficientemente y en un tiempo
razonable por un equipo
Requiere:
Modelado
Proceso bien definido
Herramientas más sofisticadas
El Modelado en el Desarrollo de Software
19
20. Los modelos y su importancia
Construcción de un rascacielos
El Modelado en el Desarrollo de Software
20
21. Los modelos y su importancia
“Modelar consiste en definir Problemas
del Mundo
un mundo abstracto y teorico Real
Abstracción
tal que las conclusiones que
se puedan sacar de él
coinciden con las
manifestaciones aparentes del
mundo real”. M o d e lo E n t id a d - R e la c ió n
IT E M _ F A C T U R A P R O D U C T O
Un modelo es la interpretación F A C T U R A
explicita de lo que uno B a s e D a to s J e r a r q u ic a B a s e D a t o s R e la c io n a l
entiende de una situación, o
F A C T U R A
F A C T U R A
c o d fe c h a id _ t
IT E M 1 IT E M 1
tan solo de las ideas de uno
IT E M P R O D U C T O
c o d c a n t p ro d c o d d e s c s to c k
P R O D U C T O 1 P R O D U C T O 2
acerca de esa situación.
B a s e D a to s R e d
F A C T U R A P R O D 1
P R O D 2
IT E M 1 IT E M 2
El Modelado en el Desarrollo de Software
21
Modelo
22. Los modelos y su importancia
Utilidad de los modelos
Comprender la realidad,
Un modelo es una simplificación de la realidad
Comprender el sistema
Un modelo permite comprender mejor el sistema que
estamos desarrollando: sus elementos y sus relaciones
Reducir la complejidad
Un modelo permite reducir la complejidad de entender
sistemas complejos en su totalidad
Comunicar con otros
Un modelo permite la comunicación entre los
desarrolladores y los clientes.
El Modelado en el Desarrollo de Software
22
23. El modelado de un sistema
software
Un Modelo es un esquema simplificado que
describe un sistema o realidad desde un
determinado punto de vista que facilita su estudio
y compresión
? ? Modelo
? (simplificado)
Sistema Software Los modelos de un sistema
software se expresan visualmente
(complejo) mediante el lenguaje de modelado
UML
El Modelado en el Desarrollo de Software
23
25. El modelado de un sistema
software
Modelo Visual: son modelos que presentan
gráficamente alguna vista del sistema.
Se crean mediante:
Lápiz y Papel
Herramienta Software especifica
(por ej: Rational Rose)
CASE : Computer Aided Software Engineering
El Modelado en el Desarrollo de Software
25
26. El modelado de un sistema
software
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
El código fuente del sistema es el modelo más
detallado del sistema (y además es ejecutable). Sin
embargo, se requieren otros modelos ...
Cada modelo es completo desde su punto de vista
del sistema, sin embargo, existen relaciones de
trazabilidad entre los diferentes modelos
El Modelado en el Desarrollo de Software
26
27. El modelado de un sistema
software
Modelos de alto nivel en etapas tempranas
Destinado a Stakeholders no técnicos
Para exploración conceptual del problema
Modelos de niveles medios
Especificación de Capacidades esenciales del sistema
Históricamente: ERs, DFDs, ,
Recientemente: Escenarios, Patrones de Diseño, etc.
Modelos de nivel Detallados
Modelos Formales
El Modelado en el Desarrollo de Software
27
28. El modelado de un sistema
software
Nota: Paradigma Orientado a Objeto
Desarrollo de un sistema software mediante la
construcción de unidades reusables siguiendo
los principios de :
Abstracción
Encapsulación
Herencia
Polimorfismo
El Modelado en el Desarrollo de Software
28
29. El modelado de un sistema
software
Nota: Paradigma Basado en Componentes
Desarrollo de un sistema software mediante
en el ensamblado de unidades reusables
siguiendo los principios de:
Componentes
Interfaces
Infraestructura
El Modelado en el Desarrollo de Software
29
Hinweis der Redaktion
Veamos ahora cuales son las características genéricas del proceso de desarrollo de software, es decir aquellas características que se encontrarán presentes en cualquiera sea el proceso de desarrollo particular que adoptemos. Más adelante veremos en detalle distintos modelos específicos de procesos de desarrollo. La fase de Definición se ocupa del qué . Es decir, durante la Definición se intenta identificar qué información debe ser procesada, qué funcionalidad se desea, qué interfaces van a ser usadas, qué restricciones de diseño existen. Por lo tanto, se deberán identificar los requerimientos tanto de hardware como de software. Básicamente, durante la fase de Definición tendrán lugar tres actividades: la Ingeniería del Sistema, la captura y análisis de los requerimientos y la planificación del proyecto de software. La fase de Desarrollo se ocupa del cómo . Es decir, acá se debe definir cómo serán las estructuras de datos, cómo será la arquitectura del software, cómo se implementarán los detalles procedimentales, cómo serán las interfaces, cómo traducimos el diseño en código, cómo llevamos a cabo la prueba. Básicamente, tres tareas deberán ocurrir en esta fase: el diseño del software, la generación de código y la prueba del software. La fase de Mantenimiento o Soporte se ocupa de los cambios en el software. En esta fase se podrán llevar a cabo cuatro tipos de mantenimientos diferentes dependiendo del tipo de cambio: Mantenimiento Correctivo: cambiar el software para corregir errores. Mantenimiento Adaptativo: cambiar el software para adaptarlo a su entorno, por ejemplo cambios en la CPU, en el sistema operativo, en las políticas de la empresa, en las características externas del producto, etc.). Mantenimiento Perfectivo: cambiar el software para mejorarlo y obtener nuevos beneficios. Mantenimiento Preventivo: debido al deterioro producido en el software por los sucesivos cambios, se suele llevar a cabo un procesos de Reingeniería para producir un nuevo software con la misma funcionalidad pero de mejor calidad.
Extraída desde la presentación “Software Architecture and UML” de Grady Booch (Rational Software).
Extraída desde la presentación “Software Architecture and UML” de Grady Booch (Rational Software).
Extraída desde la presentación “Software Architecture and UML” de Grady Booch (Rational Software). Obviamente el debe ser el contexto de desarrollo (envergadura del proyecto) el que determine la configuración adecuada del proceso y los recursos necesarios. Existen propuestas radicales que promueven un proceso/modelado más “ligth”, tales como: Extreme Programming (Kent Beck) y Agile Modeling (Scott Ambler). Sin embargo, en muchos proyectos es difícil eludir un proceso y modelado más rigurosos, debido por ejemplo a relaciones contractuales, envergadura del proyecto en tiempo y participantes, etc. Una lectura interesante: Extreme Programming in the Quick-change Era 'Beware of the religion of the code-generating modeling tool.‘by Alexandra Weber Morales About 30 years ago, Barry Boehm theorized that the cost of software change increased exponentially over time; that is, if an error caught in requirements gathering cost $1, an error caught during deployment would cost $1000. "What if," said Robert Martin, a former preacher who now uses his persuasive speaking skills to promote Smalltalk guru Kent Beck's Extreme Programming (XP) methodology, "you took a moment to suspend disbelief and considered that--due to today's technology--the cost of change is essentially flat. When costs don't change over time, up-front speculative work is a liability. Ambiguity and volatility are reasons to delay." In such a world, Martin told a packed room at the UML World conference in New York city on June 14, developers need a process that exploits a flat change/cost curve?and XP is that process. The five-year-old methodology values communication (but not on paper), simplicity, feedback and courage. It's designed for small to medium-sized teams of no more than 12 people who work in a common area, integrate and test their code constantly, pair program on single computers and use whiteboards hung on the periphery to hash out designs. Source code is the preferred archival medium, and cards containing "user stories"(requirements written by customers) and tasks are the "high-density storage mechanism," according to Martin, who runs a training firm called Object Mentor out of Green Oaks, IL. "Where does modeling fit in?“ asked an audience member, reminding Martin that his talk, at this point nearly over, had promised to describe the interaction between the UML and XP. "Paper and pencil or whiteboards are the best CASE tools I know of. In Kent's case, he uses CRC cards, not the UML," said Martin. "But whether it's Booch notation or UML, you do the highest-level map you can, but you don't do all your design up front. Remember, in XP it's not an archival resource, it's a communication device. The only archive I want is the code and a few poignant, incisive documents explaining why I made certain decisions." Does this mean that ever more sophisticated modeling tools have no place in XP? Not exactly, said Martin. "If a code-generating tool works for you, use it. After all, that's what a compiler does. But beware of the religion of modeling tools that spit out executable prototypes. Sometimes getting the code from the tool is more time-consuming than writing it yourself."
Un model o captur a una vista de un sistema del mundo real . Es una abstracción de dicho sistema, considerando un cierto propósito. Así, el modelo describe completamente aquellos aspectos del sistema que son relevantes al propósito del modelo, y a un apropiado nivel de detalle . Diagram a : una representación gráfica de una colección de elementos de modelado, a menudo dibujada como un grafo con vértices conectados por arcos 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 El código fuente del sistema es el modelo más detallado del sistema (y además es ejecutable). Sin embargo, se requieren otros modelos ... Cada modelo es completo desde su punto de vista del sistema, sin embargo, existen relaciones de trazabilidad entre los diferentes modelos