Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sesion - 1 - ISW
Sesion - 1 - ISW
Fundamentos y Requerimientos de la
Ingeniería de Software
Fundamentos de Ingeniería de software
MC. Yesenia Hernández Velázquez
yesenia.hernandez@lania.edu.mx
Mayo 2020
▪¿Qué es Ingeniería de
Software?
3
Conceptos importantes
Software
Es el conjunto de los programas de cómputo, procedimientos,
reglas, documentación y datos asociados, que forman parte de
las operaciones de un sistema de computación [IEEE-610]
4
Conceptos Importantes
Del sistema
De tiempo
I.A real
Software
Web De gestión
De ingeniería
Incrustado o científico
5
Características que diferencian a un software
de otro.
▪Complejidad
▪Compartir recursos
6
EL PAPEL EVOLUTIVO DEL
SOFTWARE
9
Segunda era 1965- 1972
▪Se busca simplificar código
▪Aparición de Multiprogramación y Sistemas
Multiusuarios
▪Sistemas de Tiempo Real apoyan la toma de decisiones
▪Aparición de Software como producto. (Casas de
Software)
▪INICIO DE LA CRISIS DEL SOFTWARE
▪Se buscan procedimientos para el desarrollo del
Software.
10
Tercera era 1972 - 1985
▪Nuevo Concepto: Sistemas Distribuidos
11
Cuarta era 1985- 1995
▪Impacto Colectivo de Software
12
Quinta era
▪Utiliza algunos requisitos de las eras anteriores solo que
aumenta la omnipresencia de la web, la reutilización de
información y componentes de software
13
Quinta era
▪ Microprocesador: Es la parte más importante del ordenador, se
encarga de realizar todos los cálculos y controla su funcionamiento.
La velocidad de este "cerebro" determina la del ordenador
15
Ingeniería de Software
▪ Se ocupa de todos los aspectos de producción de Software
Ingenieriles
Administrativos
16
Ingeniería de Software
Ingeniería de
software
Aplicación y
Gestión de Gestión de la
desarrollo del
proyectos calidad
software
Definición de
Planeación Planeación
requisitos
Introducción y
Entrega Validación
uso
17
Mitos en el desarrollo de software
▪MITO
Una declaración general de los objetivos es suficiente para
comenzar a escribir los programas. Podemos dar los detalles más
adelante
▪REALIDAD
Una mala definición inicial es la principal causa del trabajo inútil
en software
18
Mitos en el desarrollo de software
▪MITO
Si fallamos en la planificación,
podemos añadir más
programadores y adelantar el
tiempo perdido
▪REALIDAD
El desarrollo de software no es un
proceso mecánico como la
fabricación. «...añadir gente a un
proyecto de software retrasado lo
retrasa aún más»
19
Mitos en el desarrollo de software
▪MITO
Hasta que el programa está «ejecutándose», realmente no existe
una forma de comprobar su calidad
▪REALIDAD
Desde el principio del proyecto se pueden aplicar mecanismos
efectivos para garantizar la calidad del software
20
Atributos de un buen software
▪ Funcionalidad
El software debe desarrollar los servicios para los que fue creado
▪ Mantenibilidad
El software debe poder evolucionar para cumplir con las
necesidades de cambio de los clientes
▪ Confiabilidad
El software debe ser fiable, seguro, no debe causar daños físicos o
económicos en el caso de una falla del sistema
▪ Eficiencia
El software debe aprovechar al máximo los recursos del sistema
▪ Usabilidad
El software debe ser fácil de utilizar.
21
PROCESO DE DESARROLLO DE SOFTWARE
Requisitos, necesidades
23
Ciclo de vida de un sistema
Planear
Implementar Analizar
Diseñar
24
El proceso del ciclo de vida
▪ El proceso consiste de cuatro fases, en las que:
• Consiste de una serie de pasos
• Tiene un conjunto de entregables
25
Preguntas a resolver
▪Fase: Planeación
• ¿Por qué debería construirse el sistema?
• ¿Qué valor o beneficio se obtendrá?
• ¿En que tiempo se construirá?
▪Fase: Análisis
• ¿Quién usará el Sistema?
• ¿Quién hará el Sistema?
• ¿Dónde y cuándo será utilizado?
▪ Fase: Diseño
• ¿Cómo se construirá?
• ¿Qué arquitectura?
• ¿Cómo y donde se administraran los datos?
26
Fase: Planeación
1. Comienzo del proyecto
• Desarrollar/recibir el requerimiento de desarrollo de software
• Realizar un análisis de factibilidad
Factibilidad técnica
Factibilidad económica
Factibilidad organizacional
2. Administrar el proyecto
• Desarrollar un plan de trabajo
• Asignar recursos humanos al proyecto
• Monitorear y controlar el proyecto
27
Fase: Análisis
1. Desarrollar una estrategia de análisis
• Modelar el Sistema actual
• Proponer el nuevo sistema
2. Recopilar requerimientos
• Desarrollar el concepto del sistema
• Crear un modelo de negocio para representar:
Datos del negocio
Procesos de negocio
3. Desarrollar una propuesta del sistema
28
Fase: Diseño
1. Desarrollar una estrategia de diseño
2. Desarrollar arquitectura e interfaces
3. Desarrollar base de datos y especificaciones de
archivos
4. Desarrollar el diseño especifico de programas:
• ¿Qué programas deben escribirse?
• ¿Qué es lo que hará cada programa?
29
Fase: Implementación
1. Construir el sistema
• Escribir código
• Realizar pruebas
2. Instalar el sistema
• Capacitar usuarios
3. Realizar mantenimiento al sistema
30
El proceso de desarrollo
▪Es un conjunto de actividades cuya meta es el desarrollo o
evolución de software.
32
El proceso de desarrollo de software
Calidad
Proceso
Métodos
Herramientas
33
Modelos de desarrollo
▪ Definen un conjunto de actividades, acciones, tareas, puntos de
control, y productos de trabajo que son requeridos para producir
software de calidad.
34
Modelos de desarrollo
▪Una organización podría variar su modelo de proceso
para cada proyecto, según:
• La naturaleza de la aplicación
35
Modelos de desarrollo
Modelos de
desarrollo
Modelo Modelo
Modelo en Modelo en
incremental Evolutivo:
cascada espiral
(RAD) Prototipado
36
Modelo de cascada
• Inicio de proyecto
Comunicación
• Identificación de requerimientos
• Estimación
Planeación • Calendarización
• Seguimiento
• Análisis
Modelado
• Diseño
• Codificación
Construcción
• Pruebas
• Entrega
Despliegue • Soporte
• Retroalimentación
37
Modelo en cascada
▪Propuesto por Winston Royce en 1970
38
Modelo Incremental
Análisis
Funcionalidad y características
Diseño
Iteración # n
Implementación
Pruebas
Despliegue
Iteración # 2
Iteración # 1
Tiempo
39
Modelo Incremental
▪ Combina elementos del modelo en cascada aplicado en forma iterativa
▪ Desarrollo paso a paso donde las partes de algunas etapas se
posponen
▪ Permite construir el proyecto en etapas incrementales en donde cada
etapa agrega funcionalidad
▪ Cada etapa consiste en
• Requerimientos
• Diseño
• Codificación
• Pruebas
• Entrega
40
Modelo Incremental (RAD)
Rapid Application Development
Modelado
Construcción
Comunicación
Modelado
Despliegue
Planeación Construcción
Modelado
Construcción
60 a 90 días
Modelo de desarrollo rápido de aplicaciones
(RAD)
▪Es una adaptación a "alta velocidad" del modelo en
cascada
▪Modelo secuencial lineal con tiempos cortos de desarrollo
▪Varios equipos participando en el desarrollo
▪Cada equipo maneja una parte del sistema
▪Uso de herramientas de pruebas automatizadas
▪En cada etapa de liberación, los productos parciales son
integrados, probados y liberados
42
Modelo de desarrollo rápido de aplicaciones
(RAD)
El modelado incluye tres grandes fases
▪Modelado de negocios,
▪Modelado de datos y
▪Modelado del proceso
La construcción resalta:
▪El empleo de componentes de software existente y
▪La aplicación de la generación automática de código
43
Modelo evolutivo prototipado
Comunicación
Planeación
Despliegue
rápida
Construcción Modelado
de prototipo rápido
44
Modelo prototipado
▪¿Qué es un prototipo?
• Versión preliminar de un sistema de información con fines de
demostración o evaluación.
45
Modelo Evolutivo en Espiral
46
Modelo en Espiral
▪Propuesto por Barry Boehm en 1988
▪Desarrollo en ciclos
47
Actividad
•Para cada uno de los modelos mencionados
previamente, elabora una tabla presentando
ventajas y desventajas.
48
¿Qué modelo utilizar?
▪Dado que cada proyecto es único, no existe un modelo
que se aplique al 100% a todos los proyectos de una
organización.
49
¿Qué modelo utilizar?
▪ ¿Qué tanto el cliente y nosotros conocemos el sistema?
▪ ¿Qué tan claros están los requerimientos?
▪ ¿Se conoce bien la tecnología a utilizar?
▪ ¿Qué tantos son los riesgos del proyecto?
▪ ¿Qué tan bien conocemos la arquitectura?
▪ Visibilidad que requiere el cliente del proyecto
▪ Visibilidad que requiere el proyecto hacia la gerencia
▪ ¿Qué tanta planeación hacia adelante es requerida?
▪ ¿Qué restricciones se tienen?
50
METODOLOGÍAS DE DESARROLLO DE
SOFTWARE
Metodologías de desarrollo de software
▪Una metodología de desarrollo de software se
denominará como tal cuando responda a las
preguntas:
52
Metodologías de desarrollo de software
▪Tradicionales:
• uso exhaustivo de diferentes artefactos durante todo el ciclo del
proyecto
53
Metodologías de desarrollo de software
▪Ágiles:
• Importancia en la capacidad de respuesta a los cambios
Requerimientos Ejecución
Planteamiento
priorizados
54
Metodologías tradicionales
▪Diseño Estructurado [Yourdon, Constantine, 1979]
• Revisión de fundamentos por medio de la representación a través de un
diagrama de contexto
• Revisión y refinamiento a través de diagramas de flujo de datos
(Representación del movimiento de datos entre unidades externas,
procesos y BD dentro de un sistema)
• Determinación de transacciones en un DFD
• Especificación de entradas y salidas para cada transacción
• Refactorización de DFD en dos niveles
• Refinamiento aplicando heurísticas de diseño
55
Diagrama de contexto
▪Sirve para representar los límites del sistema, es
decir permite distinguir lo que es el sistema y su
entorno.
56
Ejemplo de un diagrama de contexto
57
Metodologías tradicionales
▪Proceso Unificado de Desarrollo de Software
[Jacobson, Booch, Rumbaugh, 1999]
58
Proceso unificado
• Su meta es asegurar la producción de software de muy alta
calidad que satisfaga las necesidades de los usuarios finales,
dentro de un calendario y presupuesto predecible
• Tiene dos dimensiones:
59
Proceso unificado
60
Proceso unificado
▪Usa el Lenguaje de Modelado Unificado (UML) en la
preparación de todos los planos del sistema. De hecho,
UML es una parte integral del Proceso Unificado, fueron
desarrollados a la par.
Aspectos distintivos:
▪Es dirigido por casos de uso (use-case driven)
▪Iterativo e incremental
61
Proceso unificado
▪Un caso de uso es una pieza en la funcionalidad del
sistema que le da al usuario un resultado de valor. Los
casos de uso capturan los requerimientos funcionales.
▪El concepto de arquitectura de software involucra los
aspectos estáticos y dinámicos más significativos del
sistema.
▪En cada iteración, los desarrolladores identifican y
especifican los casos de uso relevantes, crean el diseño
usando la arquitectura como guía, implementan el diseño
en componentes y verifican que los componentes
satisfacen los casos de uso.
62
Metodologías agiles
63
Metodologías agiles
▪La ingeniería de software ágil combina una filosofía con
un conjunto de lineamientos
• La satisfacción del cliente
• Entrega rápida de software incremental
• Equipos pequeños y muy motivados para efectuar el proyecto
• Métodos informales
• Los productos del trabajo con mínima ingeniería de software y
• La sencillez general en el desarrollo
• Enfatizan la entrega sobre el análisis y el diseño
• Comunicación activa y continua
64
Proceso Ágil
▪Un proceso ágil debe ser adaptable incrementalmente
▪Debe haber retroalimentación con el cliente
▪Se usa el prototipo como incrementos de software
65
El espíritu ágil
▪La alianza ágil define 12 principios a seguir para
todos aquellos equipos que deseen alcanzar agilidad
en sus procesos de desarrollo.
66
Principios para alcanzar agilidad
1. Satisfacer al cliente mediante la entrega temprana y continua de
software útil.
2. Aceptar los cambios de requerimientos, incluso en fases avanzadas
del desarrollo.
3. Entregar software funcional frecuentemente.
4. Los ejecutivos y los desarrolladores deben trabajar juntos
diariamente.
5. Proporcionar a los individuos el ambiente y los medios para que se
sientan motivados.
6. Las conversaciones cara a cara son el medio más efectivo para
transmitir información.
67
Principios para alcanzar agilidad
7. El software funcional es la principal medida de progreso.
12. Regularmente el equipo reflexiona sobre cómo ser más eficaz, con lo
que afina y ajusta su comportamiento.
68
Factores humanos
▪El proceso ágil se debe amoldar a las necesidades de
la gente y del equipo, no al contrario.
▪Características del equipo que adapta o amolda el
proceso ágil:
• Capacidad.
• Enfoque común.
• Colaboración.
• Habilidad de toma de decisión.
• Habilidad para resolver problemas confusos.
• Confianza y respeto mutuos.
• Auto-organización.
69
Extreme Programing
•Historias de usuario (el cliente asigna
prioridad a cada historia)
•Valores de aceptación
•Criterios de prueba
Liberación Planeación •Plan de iteraciones
70
71
Tareas de Ingeniería
72
Pruebas de aceptación
73
Tarjetas CRC
74
Algunos Roles
▪Programador
▪Cliente
▪Encargado de pruebas
▪Encargado de Seguimiento
▪Entrenador
▪Consultor
▪Gestor
75
Adaptive Software Development
•Ciclo de planeación adaptativo
•Identificación de misión
•Restricciones del proyecto
Especulación •Requerimientos base
• Plan de liberaciones ajustado a
Liberación tiempo
Aprendizaje Colaboración
• Levantamiento de requerimientos
• Pruebas e implementación de componentes
• Sesiones JAD
• Focalización en retroalimentación
• Mini especificaciones
• RTF , postmortems
76
Otras metodologías agiles
• Kanban
• Scrum
• Scrumban
• Crystal
• Feature Driven Development
• Agile Unified Process
• Desarrollo ligero (Lean)
• Dynamic System Development Method (DSMD)
77
¿Qué metodología utilizar?
Útil para Cascada Paralela Escalonada Prototipado Sketch* XP
78
Actividad 2
• Investiga las características clave de una de las 8
metodologías ágiles indicadas previamente y realiza un
diagrama que las ilustre. Expón tu trabajo al grupo.
1. Kanban
2. Scrum
3. Scrumban
4. Crystal (2 personas)
5. Feature Driven Development
6. Agile Unified Process
7. Desarrollo ligero (Lean)
8. Dynamic System Development Method (DSMD)
79
Comparando
Metodologías Tradicionales Metodologías Ágiles
Basadas en normas provenientes de estándares seguidos Basadas en heurísticas provenientes de prácticas de
por el entorno de desarrollo producción de código
Cierta resistencia a los cambios Especialmente preparados para cambios durante el
proyecto
Impuestas externamente Impuestas internamente (por el equipo)
Proceso mucho más controlado, con numerosas Proceso menos controlado, con pocos principios.
políticas/normas
El cliente interactúa con el equipo de desarrollo mediante El cliente es parte del equipo de desarrollo
reuniones
Más artefactos Pocos artefactos
Más roles Pocos roles
Grupos grandes y posiblemente distribuidos Grupos pequeños (<10 integrantes) y trabajando en el
mismo sitio
La arquitectura del software es esencial y se Menos énfasis en la arquitectura del software
expresa mediante modelos
Existe un contrato prefijado No existe contrato tradicional o al menos es bastante
flexible
80
Herramientas CASE y de soporte al proceso
de desarrollo
Herramientas CASE
▪CASE: Ingeniería de software Asistida por Computadora
82
Herramientas CASE
▪ Repositorio integrado. En el repositorio se almacena toda la
información de uno o varios sistemas de información
83
Objetivos
▪Aumentar la productividad de las áreas de desarrollo y
mantenimiento de los sistemas informáticos
▪Mejorar la calidad del software desarrollado
▪Reducir tiempos y costos de desarrollo y mantenimiento del
software
▪ Mejorar la gestión y dominio sobre el proyecto en cuanto a su
planificación, ejecución y control
▪Mejorar el archivo de datos (enciclopedia) de conocimientos
(know-how) y sus facilidades de uso, reduciendo la
dependencia de analistas y programadores.
84
Herramientas CASE
▪Automatizar :
• El desarrollo del software
• La documentación
• La generación del código
• El chequeo de errores
• La gestión del proyecto
▪Permitir:
• La reutilización (reusabilidad) del software
• La portabilidad del software
• La estandarización de la documentación
• Integrar las Mejorar el archivo de datos (enciclopedia) de conocimientos
.
• Facilitar la utilización de las distintas metodologías que desarrollan la
propia ingeniería del software.
85
Clasificación
▪Existen diferentes clasificaciones, pero para fines
prácticos considera la propuesta por Ian Sommerville
(2008)
86
Clasificación
1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado):
abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son
llamadas también CASE workbench.
2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-
end, orientadas a la automatización y soporte de las actividades
desarrolladas durante las primeras fases del desarrollo: análisis y diseño.
3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-
end, dirigidas a las últimas fases del desarrollo: construcción e
implantación.
4. Juegos de herramientas o Tools-Case, son el tipo más simple de
herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro
de este grupo se encontrarían las herramientas de reingeniería,
orientadas a la fase de mantenimiento.
87
Herramientas CASE
88
Clasificación - Funcional
89
Ejemplos y costos
▪ Con soporte a modelado utilizando UML
• http://www.objectsbydesign.com/tools/umltools_byProduct.html
• http://www.uml.org/
90
Evolución de las herramientas CASE
▪Editores y procesadores de texto: Usados para
escribir programas y su documentación
91
Tendencias
▪1990’s Integración empresarial
• Métodos agiles
• Arquitecturas de software especificas de un dominio
• Desarrollo de Open source
92
¿Qué no se resuelve con una herramienta?
▪Definición incorrecta o incompleta de requerimientos:
considerando la naturaleza dinámica de un dominio de
negocio, en donde los cambios se darán en todo
momento. Esto es particularmente notorio en proyectos
grandes
▪La ingeniería de Software es una actividad de diseño de
soluciones basada en la creatividad. Una herramienta
automatiza actividades rutinarias.
▪Comunicación. En todo equipo de desarrollo de software
la comunicación es un elemento crucial. Las herramientas
pueden apoyar la comunicación de no la resuelven.
93
Actividad
▪Realiza una presentación general de las
herramientas indicadas a continuación
• Rational Rose
http://www-
01.ibm.com/software/awdtools/developer/rose/java/index.html
• ArgoUML –
http://argouml.tigris.org/
• Enterprise Architech
http://www.sparxsystems.com/products/ea/index.html
• Startuml
http://staruml.io/
94
Actividad
95