Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería de
Software 6368
UNIDAD 2
2.1.1 Proceso de Desarrollo de SW
2.1.2 Ciclos de Vida
Proceso de IR.
“Software Engineering Body of Knowledge
– SWEBOK” (IEEE Computer Society, 2004)
1. Educción o elicitación de requisitos
Users of a requirements
document
Chapter Description
Preface This should define the expected readership of the document and describe its
version history, including a rationale for the creation of a new version and a
summary of the changes made in each version.
Introduction This should describe the need for the system. It should briefly describe the
system’s functions and explain how it will work with other systems. It should also
describe how the system fits into the overall business or strategic objectives of
the organization commissioning the software.
Glossary This should define the technical terms used in the document. You should not
make assumptions about the experience or expertise of the reader.
User requirements definition Here, you describe the services provided for the user. The nonfunctional system
requirements should also be described in this section. This description may use
natural language, diagrams, or other notations that are understandable to
The
customers. Product and process standards that must be followed should be
specified.
System architecture This chapter should present a high-level overview of the anticipated system
structure
architecture, showing the distribution of functions across system modules.
Architectural components that are reused should be highlighted.
System requirements specification This should describe the functional and nonfunctional requirements in more
detail. If necessary, further detail may also be added to the nonfunctional
of a
requirements. Interfaces to other systems may be defined.
System models This might include graphical system models showing the relationships between
the system components and the system and its environment. Examples of
requireme
possible models are object models, data-flow models, or semantic data models.
System evolution This should describe the fundamental assumptions on which the system is
based, and any anticipated changes due to hardware evolution, changing user
nts
needs, and so on. This section is useful for system designers as it may help
them avoid design decisions that would constrain likely future changes to the
system.
Appendices These should provide detailed, specific information that is related to the
document
application being developed; for example, hardware and database descriptions.
Hardware requirements define the minimal and optimal configurations for the
system. Database requirements define the logical organization of the data used
by the system and the relationships between data.
A Function
Description
Compute insulin dose: safe sugar level.
structured
Computes the dose of insulin to be delivered when the current measured sugar level is in the safe zone between 3
and 7 units.
Inputs Current sugar reading (r2); the previous two readings (r0 and r1).
specificati Source
Outputs
Current sugar reading from sensor. Other readings from memory.
CompDose—the dose in insulin to be delivered.
on of a
Destination Main control loop.
Action
CompDose is zero if the sugar level is stable or falling or if the level is increasing but the rate of increase is
requireme
decreasing. If the level is increasing and the rate of increase is increasing, then CompDose is computed by dividing
the difference between the current sugar level and the previous level by 4 and rounding the result. If the result, is
rounded to zero then CompDose is set to the minimum dose that can be delivered.
nt for an
Requirements
Two previous readings so that the rate of change of sugar level can be computed.
insulin
Pre-condition
The insulin reservoir contains at least the maximum allowed single dose of insulin.
Post-condition r0 is replaced by r1 then r1 is replaced by r2.
Principle Description
Incremental planning Requirements are recorded on story cards and the stories to be included in a release
are determined by the time available and their relative priority. The developers break
these stories into development ‘Tasks’. See Figures 3.5 and 3.6.
Small releases The minimal useful set of functionality that provides business value is developed first.
Releases of the system are frequent and incrementally add functionality to the first
release.
Simple design Enough design is carried out to meet the current requirements and no more.
Test-first development An automated unit test framework is used to write tests for a new piece of functionality
before that functionality itself is implemented.
Refactoring All developers are expected to refactor the code continuously as soon as possible
code improvements are found. This keeps the code simple and maintainable.
Figure 4 Extreme programming practices (b)
Incremental planning Requirements are recorded on story cards and the stories to be included in a
release are determined by the time available and their relative priority. The
developers break these stories into development ‘Tasks’. See Figures 3.5 and
3.6.
Small releases The minimal useful set of functionality that provides business value is developed
first. Releases of the system are frequent and incrementally add functionality to
the first release.
Simple design Enough design is carried out to meet the current requirements and no more.
Test-first development An automated unit test framework is used to write tests for a new piece of
functionality before that functionality itself is implemented.
Refactoring All developers are expected to refactor the code continuously as soon as
possible code improvements are found. This keeps the code simple and
maintainable.
Figure 5 A ‘prescribing medication’ story
Figure 6 Examples of task cards for prescribing medication
Figure 7 Test case description for dose checking
Figure 8 The Scrum process
Figure 8 The Scrum process
GRACIAS POR SU ATENCIÓN
PREGUNTAS
Fundamentos de
Ingeniería de
Software 6368
UNIDAD 2
2.5.3 Técnicas de pruebas
2
Ingeniería de Software I - Metodologías de Ingeniería de Software
DEFINICIÓN DE
METODOLOGÍA
Un proceso para producir software de forma
organizada, empleando una colección de
técnicas y convenciones de notación
predefinidas (Rumbaugh et al., 1991)
3
Ingeniería de Software I - Metodologías de Ingeniería de Software
CONFUSIÓN ENTRE LOS TÉRMINOS
METODOLOGÍA, MÉTODO Y CICLO DE VIDA POR
ABUSO DEL LENGUAJE TÉCNICO
• Una metodología puede seguir uno o varios modelos de ciclo de
vida
• El ciclo de vida indica qué es lo que hay que obtener a lo largo
del desarrollo del proyecto, pero no cómo. Esto sí lo debe
indicar la metodología
• Una metodología es un concepto más amplio que el de método
• Se puede considerar a la metodología como un conjunto de
métodos
4
Ingeniería de Software I - Metodologías de Ingeniería de Software
CARACTERÍSTICAS DESEABLES
EN UNA METODOLOGÍA
Una metodología debe cubrir (Henderson-Sellers y Firesmith, 1999)
• Un proceso de ciclo de vida completo, que comprenda aspectos tanto del
negocio como técnicos
• Un conjunto completo de conceptos y modelos que sean internamente
consistentes
• Una colección de reglas y guías
• Una descripción completa de artefactos a desarrollar
• Una notación con la que trabajar, idealmente soportada por diversas
herramientas CASE y diseñada para una usabilidad óptima
• Un conjunto de técnicas probadas
• Un conjunto de métricas, junto con asesoramiento sobre calidad,
estándares y estrategias de prueba
• Identificación de los roles organizacionales
• Guías para la gestión de proyectos y aseguramiento de la calidad
• Asesoramiento para la gestión de bibliotecas y reutilización
5
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS
ESTRUCTURADAS
• Proponen la creación de modelos del sistema que representan los
procesos, los flujos y la estructura de los datos de una manera
descendente
• Se pasa de una visión general del problema, nivel de abstracción
alto, a un nivel de abstracción sencillo
• Esta visión se puede enfocar
• Hacia un punto de vista funcional del sistema
• Metodologías orientadas a procesos
• Hacia la estructura de datos
• Metodologías orientadas a datos
6
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS ESTRUCTURADAS
ORIENTADAS A PROCESOS
• La Ingeniería del Software se fundamenta en el modelo básico
entrada/proceso/salida de un sistema
• Estas metodologías se enfocan fundamentalmente en la parte de proceso
• Utilizan un enfoque de descomposición descendente para evaluar los
procesos del espacio del problema y los flujos de datos con los que están
conectados
• Este tipo de metodologías se desarrolló a lo largo de los años 70
• Representantes de este grupo son las metodologías de análisis y diseño
estructurado como
• Merise (Tardieu et al., 1986)
• YSM (Yourdon Systems Method) (Yourdon Inc., 1993)
• SSADM (Structured Systems Analysis and Design Method) (Ashworth y Goodland,
1990)
• METRICA v.2.1 (MAP, 1995)
• METRICA v3.0 (Parcialmente) (MAP, 2001)
7
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS ORIENTADAS
A OBJETOS
• Se fundamentan en la integración de los dos aspectos de los
sistemas de información: datos y procesos
• En este paradigma un sistema se concibe como un conjunto de
objetos que se comunican entre sí mediante mensajes
• El objeto encapsula datos y operaciones
• Este enfoque permite un modelado más natural del mundo real y
facilita enormemente la reutilización del software
• Las metodologías orientadas a objetos acortan la distancia existente
entre el espacio de conceptos (lo que los expertos o usuarios
conocen) y el espacio de diseño e implementación
8
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS ORIENTADAS
A OBJETOS
Gran cantidad de representantes
• Metodologías dirigidas por los datos
• OMT (Object Modeling Technique) (Rumbaugh et al., 1991)
• Fusion (Coleman et al., 1994)
• Metodologías dirigidas por las responsabilidades
• RDD (Responsibility Driven Design) (Wirfs-Brock et al., 1990)
• OBA (Object Behavior Analysis) (Rubin y Goldberg, 1992)
• Metodologías dirigidas por los casos de uso
• Objectory (Jacobson et al., 1992)
• Proceso Unificado (Jacobson et al., 1999)
• Metodologías dirigidas por estados
• Metodología de Shlaer y Mellor (Shlaer y Mellor, 1992)
9
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS ORIENTADAS
A OBJETOS
Evolución de las metodologías OO
Metodologías de primera generación
RDD Objectory
OMT Booch (91) Unificación,
Estandarización
UML
Metodologías de
Métricas segunda generación
Metodologías de
tercera generación
OMT 2 Syntropy
Lenguajes OPEN
MEDEA UP
Formales Fusion Moses
Booch (94)
10
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS ORIENTADAS
A OBJETOS
Metodologías estructuradas vs. Metodologías Orientadas a Objetos
STD
DFD PROGRAMA
DATOS
RELACIONAL TABLAS
DER
11
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS ORIENTADAS
A OBJETOS
Metodologías estructuradas vs. Metodologías Orientadas a Objetos
Metodologías Orientadas a Objetos
12
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS ORIENTADAS
A OBJETOS
Metodologías estructuradas vs. Metodologías Orientadas a Objetos
Por Elaboración
O
O
ANÁLISIS DISEÑO
ado
r
ctu
rt u
Es
Por Transformación
13
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS ÁGILES
Las aproximaciones ágiles emplean procesos técnicos y de
gestión que continuamente se adaptan y se ajustan a (Turk et al.,
2002)
• Cambios derivados de las experiencias ganadas durante el
desarrollo
• Cambios en los requisitos
• Cambios en el entorno de desarrollo
La agilidad en el desarrollo del software no significa únicamente
poner en el mercado o en explotación los productos software más
rápidamente
• Esto choca frontalmente con los modelos de procesos tradicionales
que son monolíticos y lentos, centrados en una única iteración o
ciclo de larga duración
14
Ingeniería de Software I - Metodologías de Ingeniería de Software
AGILE MANIFESTO
We are uncovering better ways of developing software by doing it
and helping others do it. Through this work we have come to
value:
• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
While there is value in the items on the right, we value the items
on the left more.
Agile Manifesto
15
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS ÁGILES
La agilidad significa respuesta efectiva al cambio
pero incluye
• Estructuras de equipo y actitudes para facilitar la comunicación entre los
miembros
• Énfasis en la entrega rápida de software funcional, para lo que resta importancia a
los productos intermedios (lo cual siempre no es bueno)
• Adopción del cliente como parte del equipo de desarrollo
• Planificación incierta y, por tanto, flexible
16
Ingeniería de Software I - Metodologías de Ingeniería de Software
EXTREME PROGRAMMING
Controvertido enfoque de desarrollo de software basado en el modelo
incremental
Está indicado para
• Equipos de tamaño mediano o pequeño
• Requisitos imprecisos y cambiantes
Características (Beck, 2000)
• El juego de la planificación
• Versiones pequeñas
• Metáfora
• Diseño sencillo
• Hacer pruebas
• Refactorización
• Programación en parejas
• Propiedad colectiva
• Integración continua
• Cliente in-situ
• Estándares de codificación
17
Ingeniería de Software I - Metodologías de Ingeniería de Software
SCRUM
• Propuesto por Jeff Sutherland y desarrollado por Shwaber y
Beedle (Schwaber, 1995)
• El conjunto de buenas prácticas de Scrum se aplica
esencialmente a la gestión de proyecto
• Es un framework, por lo que es necesaria su adaptación en
cada organización o incluso en cada equipo
• El objetivo es obtener resultados rápidos con adaptación a los
cambios de las necesidades de los clientes
• Las principales características de Scrum
• El desarrollo software mediante iteraciones incrementales
• Las reuniones a lo largo del proyecto
18
Ingeniería de Software I - Metodologías de Ingeniería de Software
SCRUM
Scrum se basa en entregas
parciales priorizadas por el
beneficio que aporta al receptor
final del producto
19
Ingeniería de Software I - Metodologías de Ingeniería de Software
SCRUM
• Actividades estructurales
• Requisitos
• Análisis
• Diseño
• Evolución
• Entrega
• Dentro de cada actividad las tareas se organizan con un
patrón de proceso denominado sprint
• El trabajo del sprint se adapta al problema y se define y
modifica en tiempo real por el equipo Scrum
• Uso de patrones de proceso de demostrada eficacia en
proyectos críticos, con plazos cortos y requisitos cambiantes
20
Ingeniería de Software I - Metodologías de Ingeniería de Software
SCRUM
• Scrum define un ciclo de vida iterativo e incremental, que
mejora la gestión del riesgo y aumenta la comunicación
• Se basa en tres pilares
• Transparencia
• Todos los aspectos del proceso que afectan al resultado son visibles para todos
aquellos que administran dicho resultado
• Inspección
• Se debe controlar con la suficiente frecuencia los diversos aspectos del
proceso para que puedan detectarse variaciones inaceptables en el mismo
• Revisión
• El producto debe estar dentro de los límites aceptables
• En caso de desviación se procederá a una adaptación del proceso y del
material procesado
• Mecanismo de mejora continua, esto es, de control, para adaptarse y mejorar
21
Ingeniería de Software I - Metodologías de Ingeniería de Software
SCRUM
Cada equipo Scrum tiene tres roles
• Scrum Master. Es el responsable de asegurar que el equipo Scrum siga las prácticas de
Scrum. Sus funciones
• Ayudar a que el equipo y la organización adopten Scrum
• Liderar el equipo Scrum para buscar la mejora en la productividad y la calidad de los
entregables
• Ayudar a la autogestión del equipo
• Gestionar e intentar resolver los impedimentos con los que el equipo se encuentra para cumplir
las tareas del proyecto
• Product owner. Es la persona responsable de gestionar las necesidades que se quieren
satisfacer mediante el desarrollo del proyecto. Sus funciones
• Recolectar las necesidades (historias de usuario)
• Gestionar y ordenar las necesidades
• Aceptar el producto software al finalizar cada iteración
• Maximizar el retorno de la inversión del proyecto
• Equipo de desarrollo. Tiene las siguientes características
• Autogestionado. El mismo equipo supervisa su trabajo (no existe el rol clásico de jefe de
proyecto)
• Multifuncional. Cada integrante del equipo debe ser capaz de realizar cualquier función
• No distribuidos. Es conveniente que el equipo se encuentre en el mismo lugar físico
• Tamaño óptimo. Al menos tres personas, máximo nueve, sin contar al scrum master ni al
product owner
22
Ingeniería de Software I - Metodologías de Ingeniería de Software
SCRUM
Acciones de los patrones de proceso
• Retraso (pila de producto o product backlog): priorización de
requisitos. Debe estar detallado de manera adecuada, estimado,
emergente y priorizado
• Sprints: unidades de trabajo requeridas para alcanzar un requisito.
Es cada iteración. Se recomiendan iteraciones cortas (1-4 semanas)
y cuyo resultado será un producto software potencialmente
entregable. El equipo de desarrollo selecciona las historias de
usuario que se van a desarrollar en el sprint para conformar así la
pila de sprint (sprint Backlog). La definición de cómo descomponer,
analizar o desarrollar este sprint backlog queda a criterio del equipo
de desarrollo. Además, la lista de tareas se mantendrá inamovible
durante toda la iteración
• Reuniones Scrum: reuniones breves dirigidas por el maestro
Scrum
• Demostraciones preliminares: entrega de un incremento al cliente
23
Ingeniería de Software I - Metodologías de Ingeniería de Software
SCRUM
Reunión 24 h.
diaria
24
Ingeniería de Software I - Metodologías de Ingeniería de Software
BIBLIOGRAFÍA
• F. J. García-Peñalvo y A. García-Holgado, "Introducción a la
Ingeniería del Software," Recursos docentes de la asignatura
Ingeniería de Software I. Grado en Ingeniería Informática. Curso
2017-2018, F. J. García-Peñalvo y A. García-Holgado, Eds.,
Salamanca, España: Grupo GRIAL, Universidad de Salamanca,
2018. [Online]. Disponible en: https://goo.gl/9bVcWo. doi:
10.5281/zenodo.1182457. (pp. 65-90)
• F. J. García-Peñalvo y A. García-Holgado, "Modelos de proceso,"
Recursos docentes de la asignatura Ingeniería de Software I.
Grado en Ingeniería Informática. Curso 2017-2018, F. J. García-
Peñalvo y A. García-Holgado, Eds., Salamanca, España: Grupo
GRIAL, Universidad de Salamanca, 2018. [Online]. Disponible en:
https://goo.gl/xYYJGM. doi: 10.5281/zenodo.1179286. (pp. 63-71)
25
Ingeniería de Software I - Metodologías de Ingeniería de Software
METODOLOGÍAS
DE INGENIERÍA
DE SOFTWARE
INGENIERÍA DE SOFTWARE I
2º DE GRADO EN INGENIERÍA INFORMÁTICA
CURSO 2017/2018
1. Conocimiento y experiencia
2. Capacidades sociales y de
comunicación
3. Antecedentes culturales
Transformación de la información
1. Generalización
2. Selección
3. Distorsión
1. Generalización
Generalización de le experiencia
Ej en tren siempre llega tarde
Pregunta: ¿El tren llegará un 10%
más tarde?
Pregunta: ¿El tren llegó tarde
todos los días de la semana
pasada?.
2. Selección
• Remodelado de la experiencia
• Todas las formas de trabajo creativo son
distorsiones.
• Todo aquello que no ha existido previamente
es el resultado de un trabajo creativo.
3. Distorsión (2 de 2)
1. Ejemplo 1: debe,
tiene
Documentación en
lenguaje natural
1. Evitar ambigüedad
2. Utilizar glosario
3. Utilizar distintos niveles de detalles
Caracterizar el comportamiento del
sistema
Ser capaz de
Deberá
<< proceso >>
Debe <<Proceso>>
Ser capaz de
Deberá
<<proceso>>
UNIDAD 1
1.1 Metodologías de desarrollo de SW
1. ¿Qué es un modelo?
2. ¿Por qué modelamos?
3. Clasificación de los modelos
Qué es un modelo
1. Es una simplificación de la realidad
2. Un modelo proporciona los planos de un sistema, los
planos pueden ser detallados o generales
3. Un buen modelo incluye aquellos elementos que son
relevantes para el nivel dado de abstracción.
4. Cada modelo es, por tanto, una abstracción
semánticamente cerrada del sistema.
5. Un modelo puede ser estructural, haciendo hincapié en
la organización del sistema, o puede ser de
comportamiento, haciendo hincapié en la dinámica del
sistema
Grady Booch
Cuándo hacer modelos
Dependiendo de la complejidad del problema se
generarán los modelos necesarios, se seleccionarán las
herramientas y equipos de trabajo
Por qué modelar
• Visualiza de manera global
• Aumenta gradualmente el conocimiento
• Proyecta o anticipa la estructura o funcionamiento de
algo
• Simula la manipulación de algo y observar los
resultados.
• Toma decisiones.
• Documenta para revisiones futuras
Los modelos en la
Ingeniería de
Software
Modelos:
1. Conceptuales
2. Orientados a procesos
3. Orientados a datos/objetos
4. Orientados a estados
Modelos Conceptuales
Favorecen la comprensión de los requisitos del
usuario, describen el dominio del discurso
The context of the MHC-PMS
2.3
2.2 (May 2010)
2.0 (Feb 2009)
(Mar 2003)
1.0
(Ene 1997)
Otros métodos
OOSE
Unified Modeling Language
Elementos de UML
• Vistas: Conjunto de diagramas
• Diagramas: 13 tipos de grafos
• Elementos del modelo: Clases, objetos,
mensajes, relaciones…
• Mecanismos generales: Comentarios,
información, semántica, extensiones y
adaptaciones
Diagramas
Diagramas de
comportamiento
Diagramas
estructurales
Diagramas de clases Ej. 1
Diagrama de clases
Representa una colección de
elementos del modelo
estático, tales como clases y
tipos, sus contenidos y sus
relaciones
Diagrama de secuencias
Modela la secuencia lógica, a
través del tiempo, de la
interacción entre los objetos,
a través de mensajes. Order processing
Diagramas de máquina de
estados Ej. 3
Diagrama de máquinas de estados