Software
Engineering
Process
José Onofre Montesa Andrés
Universidad Politécnica de
Valencia
Escuela Superior de
Informática Aplicada
2003-2004
Software as a human work.
• Some authors compare software with
writing books.
– A production of our brains,
– A description of realities and fictions.
• When software is big, it’s like a novel
with a lot of books.
– Personalities of actors,
– Facts in the history.
GPII-P1B. Software Engineering Process
1
A Software Definition.
• The set of information that:
– Produces in a machine the desired behavior
in an efficient and effective manner,
– (Code)
– Make users use the system in an efficient
manner.
– (manuals and helps)
– Can be maintained in an efficient and
effective manner by developers.
– (development documentation)
GPII-P1B. Software Engineering Process
2
Why we said that software
development isn't easy?
• There are same reasons, we will see ….
• But it’s true that a lot of projects fail.
• We will see that with an example:
– First some statistics, about 8 USA
projects.
– Software Characteristics.
GPII-P1B. Software Engineering Process
3
statistics, about 8 USA
projects.
Área: Sistemas de Defensa en Tiempo Real
Pagado pero no entregado
Entregado pero no utilizado
abandonado o rechazado
Utilizado después de cambios
Utilizado como se entrego
0
0.5
1
1.5
2
2.5
3
3.5
Millones de dolares
GPII-P1B. Software Engineering Process
4
Software Characteristic’s.
• It is immaterial and not visible
• The buyer can evaluate it only when it
has been developed.
• Software is developed.
• It is complex. Present systems are
conformed by thousands of functions
with complex interfaces among them.
• It is excessively malleable.
GPII-P1B. Software Engineering Process
5
Software is developed.
• In any production system we can
observe two phases: Development and
production.
• Development usually is slow and expensive
• Mass production has stable cost.
• With Software we have the same but…
• A lot of applications are developed specifically,
without using preexistent components.
• Production is not considered.
GPII-P1B. Software Engineering Process
6
software is excessively
malleable.
• Every body ask for changes even not
really necessaries.
• “One of the things I don’t understand is
why a software application seems to
become more troublesome as it ages”:
– Failure curve for Hardware.
– Failure curve for Software (idealized).
– Actual failure curve for Software.
GPII-P1B. Software Engineering Process
7
Failure curve for Hardware..
Wear out
Infant mortality
Failure rate
Obsolesce
Time
GPII-P1B. Software Engineering Process
8
Failure rate
Failure curve for Software
(idealized)..
Obsolescence
Continues at same rate
until obsolescence
Time
GPII-P1B. Software Engineering Process
9
Actual failure curve for
Software.
Change
Change
Failure rate
Change
Obsolescence
Idealized curve
Time
GPII-P1B. Software Engineering Process
10
Lots of critical factors in
different environments.
•
•
•
•
Real time Software,
Internet,
Transactional,
PC.
GPII-P1B. Software Engineering Process
11
What do we mean with
“Development Process”?
Desires, needs,
Specifications, …
Software
GPII-P1B. Software Engineering Process
12
Introduction:
Which is the usual process?
• When we develop any project usually we
evolve from abstract ideas forward
other more concert and more fulfitment.
– We want to develop an accounting system,
» We develop an specification.
– With PHP y MySQL,
» We develop the design.
– And then we code the system.
GPII-P1B. Software Engineering Process
13
Depending on the degree of
accuracy we work in each step we
will arrive to a better end.
•
•
•
•
•
•
¿Me podrías indicar, por favor, hacia
dónde tengo que ir?
Eso depende de adónde quieras llegar,
contesto el gato.
A mí no me importa demasiado adónde...empezó a explicar Alicia.
En ese caso, da igual cualquier dirección interrumpió el Gato.
...Siempre que llegue a alguna parte terminó Alicia a modo de explicación.
Basta que empieces a andar - le aseguro el
Gato-, dando un paso tras otro.
– Alicia en el país de las maravillas
GPII-P1B. Software Engineering Process
14
Engineering and Software
Engineering
•
•
•
•
Were we are?
What an engineer does?
Definitions about Software Engineering
Basic Techniques used by engineers
GPII-P1B. Software Engineering Process
15
Were we are?
• With Problems, we need:
– Development Techniques
• In order to minimize the complexity
– Methods and concepts
• Enabling producers and users explore, as soon as
possible the software system nature.
– Techniques
• To reduce the effects of modifications in the
development and use.
GPII-P1B. Software Engineering Process
16
What an engineer does?
• Build artifacts with same limitations in
expenses, using the knowledge and
theories of a science around the artifact
function.
GPII-P1B. Software Engineering Process
17
Software Engineering
Definition (NATO ‘68)
• Software engineering is the
establishment and use of reasonable
engineering bases with the objective of
obtaining software in an economical way,
of trustable and works efficiently in the
actual machines.
GPII-P1B. Software Engineering Process
18
Definición
(R.E. Fairley 1985)
• We have defined software as the
technological discipline concerned with
systematic production and maintenance of
software products that are developed and
modified on time and within cost estimates...
• In adition, software engineering is concerned
with managerial issues that lie outside the
domain of traditional programming.
GPII-P1B. Software Engineering Process
19
Software engineering
characteristics (Van Vliet 1993)
•
•
•
•
•
•
Construction of big systems
complexity control
Cooperation between implied people
Software evolution
Development efficiency
Real users support.
GPII-P1B. Software Engineering Process
20
Structure of Software
Engineering (Thayer 1988)
S o ftw a re E n g in e e rin g
S o ftw a re
D e ve lo p m e n t
A n a lizin g
D e sig n in g
C o d in g
T e stin g
P ro je ct
M angem ent
P la n n in g
O rg a n iza tio n
S ta ffin g
D ire ctin g
C o n tro llin g
S o ftw a re
M e trics
S o ftw a re
M a in te n a n ce
R e lia vility
E rro r co rre ctio n
U sa b ility
M o d ifica tio n
F le xib ility
M a in ta in a b ility
R e u sa b ility
E tc .
GPII-P1B. Software Engineering Process
21
Basic Techniques used by
engineers
• Historically people use this techniques:
– Modeling
– Product Division
– Process Division
• We must use this techniques in the
software development.
GPII-P1B. Software Engineering Process
22
Modeling.
• It is a simplification of the object in the
real world,
– Its enough real to obtain information of the
behavior
– And use as a base to the development.
GPII-P1B. Software Engineering Process
23
Product Division.
• We divide the product and each part can
be done by one member of the
development group.
GPII-P1B. Software Engineering Process
24
Process Division.
• It implies dividing the development in
steps. Usually we talk about specification,
design and`production.
What?
How?
Buiding
Test
GPII-P1B. Software Engineering Process
25
We found this situation in the software
development.
SOFTWARE
life cycle
SOFTWARE
methodologies
GPII-P1B. Software Engineering Process
26
Software life cycle
• Concrete:
– The productive steps in the project
– Objectives in each step, and
– Deliverables obtained in each step, and it’s
characteristics.
GPII-P1B. Software Engineering Process
27
Software Life Cycles
– The more representatives are:
–
–
–
–
–
–
–
–
Put the tail to the horse.
Classical or Waterfall.
Prototyping (Discard)
Incremental
Evolutionary Prototyping
Software Reuse
Spiral.
...
GPII-P1B. Software Engineering Process
28
Poner la cola al burro
• Se coge a uno o varios
informáticos,
• Se les muestra más o
menos el problema,
• Se les deja solos en un
cuarto a oscuras,
• Transcurrido un tiempo se
abre la puerta.
GPII-P1B. Software Engineering Process
29
La Versión Ideal
Requerimientos
del Sistema
Requerimientos
del Software
A alguien se le ha ocurrido la Brillante idea de Informatizar
¿?
Investigación Inicial, Identificación de
Necesidades, Encuesta, etc.
Estudio de Viabilidad
Análisis
Especificación
Diseño Preliminar y
Detallado
Diseño
Codificación y
Depuración
Especificación de diseño
Codificación
Test y pruebas previas a la
OPERACIÓN
Aplicación
Validación
Instalación, Explotación
OPERACIÓN Y MANTENIMIENTO
GPII-P1B. Software Engineering Process
30
El Helado de Cucurucho
USUARIOS
Identificación
de Necesidades
Explotación
Especificación
Esencial
CLIENTES
Especificación
Física
ANALISTA Empaquetado
Diseño
DISEÑADORES Y
CODIFICADORES
Validación
Integración
Codificación
GPII-P1B. Software Engineering Process
31
Construcción Rápida de
Prototipos Desechables
• Al igual que otras ingenierías se utilizan
los prototipos para que el cliente
observe, confirme y mejore el producto
– Este enfoque es apropiado cuando:
• El cliente no tiene claro lo que quiere,
• Al cliente le gustaría ver algo similar para poder
hacerse una idea de lo que obtendrá
GPII-P1B. Software Engineering Process
32
El ciclo de vida de Prototipos
Desechables es el siguiente:
Obtención
Especificación
Construcción
Prototipo
Aceptado
Evaluación
Cliente
Mejora de la
Especificación
NO Aceptado
GPII-P1B. Software Engineering Process
Ciclo de
Vida
Clásico
33
Incremental
Bloque 1
R equeri
m ientos
D iseño
Im plem e
ntación
P ruebas
R e q ue r i
m ie ntos
Bloque N
D ise ño
Im p le m e
nta c ión
P r ue b a s
o
Requerimientos
D iseño
Bloque 1
Permite el
desarrollo
concurrente
R e q u e r im ie n to s
Im plem e
ntación
P ruebas
D is e ñ o
Bloque N
I m p le m e
n ta c ión
GPII-P1B. Software Engineering Process
P ruebas
34
Evolución de Prototipos
Observación
Requerimientos
Abstracción
Validación
Especificación
Verificación
Empezamos por los
requerimientos más claros,
menos complejos y más
necesarios.
Prototipo
Verificación
Prototipo rápido
GPII-P1B. Software Engineering Process
Experimentar
Validación
35
Reutilización de Software
• Tiene como objetivos:
– Reducir el coste del software.
– Producir sistemas de mayor calidad.
• Se basa en reutilizar Diseños,
programas, módulos y datos.
• Es compatible con el prototipo evolutivo.
GPII-P1B. Software Engineering Process
36
En espiral.
Determinar objetivos,
alternativas, restricciones
Evaluar alternativas,
identificar y resolver
riesgos
Acuerdo
REVISIÓN
Planificar las próximas
fases
Desarrollar, verificar
GPII-P1B. Software Engineering Process
37
Metodologías de Desarrollo del
Software
• Métodos informales
• Métodos Semiformales
• Métodos Formales
GPII-P1B. Software Engineering Process
38
Métodos informales
• Joaquín Lucio-Villegas los clasifica como:
– Quick & Dirty (USA)
– Match stick box (Europa)
– Balones p'alante y maricón el último
GPII-P1B. Software Engineering Process
39
Métodos Semiformales
• Métodos Estructurados
– SA/SD (structured analysis & structured
design)
– Métrica
• Métodos Orientados a Objetos
– OMT
– UML
GPII-P1B. Software Engineering Process
40
Métodos Estructurados
• Métodos Orientados a la Estructura de
los Datos
• Métodos de flujo de datos
PROCESOS
DATOS
GPII-P1B. Software Engineering Process
41
Métodos Orientados a Objetos
• Los métodos orientados a objeto
describen e implementan los sistemas de
información desde un punto de vista
ontológico.
GPII-P1B. Software Engineering Process
42
Métodos Formales
– Los métodos formales permiten al ingeniero de
software especificar, desarrollar y verificar un
sistema informático mediante la aplicación de una
notación matemática rigurosa.
– Utilizando un lenguaje de especificación formal, un
método formal proporciona los medios de
especificar un sistema de forma que se aseguren,
de forma sistemática, la consistencia, la
completitud y la corrección.
– Se suelen basar en notaciones matemáticas
similares a las del álgebra de conjuntos y la lógica
GPII-P1B. Software Engineering Process
43
Madurez del proceso en la
organización de desarrollo
• La misma industria, diferentes niveles de
madurez.
GPII-P1B. Software Engineering Process
44
Madurez del proceso en la
organización de desarrollo
• Hay factores que no quedan claramente
reflejados en el ciclo de vida ni en las
técnicas de desarrollo.
• Los factores no estudiados son:
– El cumplimiento de los plazos de entrega.
– La calidad (número de errores en el
Software).
– El coste del proyecto.
GPII-P1B. Software Engineering Process
45
CMM (Capability Maturity
Model)
• Proporciona una Guía sobre como:
– controlar los procesos:
• de desarrollo del software.
• de mantenimiento.
– Hacer evolucionar hacia una cultura de:
• Ingeniería del software.
• Gestión eficiente.
GPII-P1B. Software Engineering Process
46
Evolución de las organizaciones
según el CMM
Control
del
Proceso
Medición
del
Proceso
Definición
del
Proceso
Control
Básico
Optimización
Gestionado
Definido
Repetible
Inicial
GPII-P1B. Software Engineering Process
47
Correlación entre estimaciones y
niveles de madurez
GPII-P1B. Software Engineering Process
48
Nivel Inicial.
• Según las circunstancias utilizamos un
proceso distinto. (algunos caóticos)
• A medida,
• Poco formalizado,
• Uso de herramientas informales.
• Pocos procesos definidos.
• El éxito depende del esfuerzo individual.
GPII-P1B. Software Engineering Process
49
Nivel de Repetición.
• Se tiene procesos estables de
desarrollo, con control estadístico.
• Uso de datos históricos
• Establecimiento de procesos de gestión
de proyecto, para hacer seguimiento de:
– Coste.
– Planificación.
– Funcionalidad.
GPII-P1B. Software Engineering Process
50
Nivel de Definición.
• Proceso de desarrollo perfectamente
definido y estandarizado.
• Integrado en la organización.
• Bien documentado.
• Todos los proyectos utilizan una versión
documentada y aprobada de proceso.
GPII-P1B. Software Engineering Process
51
Nivel de Gestión.
• Mejoras de calidad sustanciales.
• Control cuantitativo de productos y
proceso a través de
– Mediciones del proceso comprensibles.
– Mediciones de la calidad
GPII-P1B. Software Engineering Process
52
Nivel de Optimización.
• A través de mediciones del proceso
utilizando ideas y tecnologías
innovadoras obtenemos:
– Mejoras en calidad y cantidad.
GPII-P1B. Software Engineering Process
53
Resumen
• Hemos visto:
–
–
–
–
–
Como trabajan los ingenieros,
Definiciones de ingeniería del software,
El ciclo de vida del software,
Metodológicas de desarrollo
Madurez del proceso de desarrollo.
GPII-P1B. Software Engineering Process
54
Bibliografía
• Ince, D.C., Ingeniería del Software,
Addison-Wesley, 1993.
• Pressman, R.S., Ingeniería del software
un enfoque práctico, McGrawHill, 1997.
• Thayer, R.H., Software Engineering
Project Management. IEEE Computer
Press 1997.
GPII-P1B. Software Engineering Process
55
Descargar

El Proceso de Desarrollo del Software