Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Is
1 Is
Autores: Address: Version: Simon Pickin Marisol Garca Valls Departamento de Ingeniera Telemtica Universidad Carlos III de Madrid 1.0
ndice
1. Visin General / Definicin de trminos 2. Los modelos de ciclo de vida 3. La captura, anlisis y especificacin de requisitos 4. El diseo del software 5. La calidad del software 6. La Prueba del software 7. Algunos novedades en el campo
Software de Comunicaciones 2009-2010
Los autores
El establecimiento y uso de principios de ingeniera robustos, orientados a obtener econmicamente software que sea fiable y funcione eficientemente sobre mquinas reales. F.L. Bauer. Software Engineering. Information Processing 71., 1972
Software de Comunicaciones 2009-2010
Los autores
La disciplina tecnolgica y de gestin que concierne a la produccin y el mantenimiento sistemtico de productos software desarrollados y modificados dentro de unos plazos estipulados y costes estimados. R. Fairley. Software Engineering Concepts. New York: McGraw-Hill, 1985.
Software de Comunicaciones 2009-2010
Los autores
Ingeniera del software. (1) La aplicacin de un enfoque sistemtico, disciplinado y cuantificable del desarrollo, la operacin y el mantenimiento del software; esto es, la aplicacin de la ingeniera al software. (2) El estudio de enfoques tales como (1). IEEE Std 610-1990
Software de Comunicaciones 2009-2010
Los autores
Ingeniera es la aplicacin sistemtica de conocimiento cientfico en la creacin y construccin de soluciones, que satisfacen una buena relacin efectividad/precio, de problemas prcticos al servicio de la humanidad. La ingeniera del software es la forma de ingeniera que aplica los principios de las ciencias de la computacin y las matemticas en la obtencin de soluciones de los problemas del software que satisfacen una buena relacin efectividad/precio.
Software de Comunicaciones 2009-2010
Los autores
Para qu la ingeniera del software? (1/4)? El trmino ingeniera del software se populariz al final de los aos 60 Respuesta a la llamada crisis del software
las prestaciones del hardware aumentaban mucho ms rpido que las del software. el desarrollo de sistemas de software grandes resultaba muy insatisfactorio:
entrega habitualmente retrasada (a veces por mucho) presupuesto habitualmente excedido (a veces masivamente) calidad del producto final habitualmente baja: productos poco fiables y difciles de mantener
10
Para qu la ingeniera del software? (2/4)? Las tcnicas utilizadas para software unidesarrollador no escalan
proyectos grandes necesitan un equipo la calidad de comunicacin entre los miembros es un problema serio documentacin
11
12
Para qu la ingeniera del software? (4/4)? Necesidad de estimar el dinero, tiempo y esfuerzo requeridos
las estimaciones se basan principalmente en el modelado del proyecto actual y su comparacin con proyectos anteriores Queremos el trabajo? Cunto cobramos? Constructive Cost Model COCOMO Constructive Systems Engineering Cost Model COSYSMO
Software de Comunicaciones 2009-2010
Los autores
The mythical man month, Brooks, 1975: aadir recursos humanos a un proyecto de software atrasado lo atrasa ms
13
Proceso:
Una serie de acciones u operaciones que conducen a un fin (Websters) conjunto de las fases sucesivas de un fenmeno natural o de una operacin artificial (RAE)
14
consideracin de herramientas y equipamiento consideracin de personal y de su organizacin restricciones sobre las actividades, los artefactos, las herramientas, el personal etc.
19
Anlisis de sistema
Desarrollo
Operacin y Mantenimiento
Requisitos de usuario
Sistema software
20
Anlisis de requisitos
Diseo
Operacin y mantenimiento
Software de Comunicaciones 2009-2010
Los autores
21
Anlisis de requisitos
Diseo
Componentes implementados
Sistema integrado
Operacin y mantenimiento
Software de Comunicaciones 2009-2010
Los autores
22
Operacin y Mantenim. Prueba de aceptacin Integracin de sistema Integracin de subsistemas Prueba unitaria
Sistema
verificacin
Subsistemas
verificacin
Componentes
verifcacin
Codificacin de componentes
Software de Comunicaciones 2009-2010
Los autores
23
Prototipado:
cada iteracin puede tratarse como un prototipo
24
Se empieza con los requisitos bien entendidos y se aaden elementos nuevos tal como los propone el cliente a partir de la iteracin anterior El objectivo de cada iteracin es entender los requisitos del sistema Prototipado:
cada iteracin puede tratarse como un prototipo
Software de Comunicaciones 2009-2010
Los autores
25
Source: A Spiral Model of Software Development and Enhancement Barry Boehm, IEEE Computer, May 1988
27
28
Ingeniera de requisitos
Uso sistemtico de principios contrastados, tcnicas, lenguajes y herramientas para obtener el anlisis efectivo en coste y documentacin de las necesidades en continua evolucin del usuario, y la especificacin del comportamiento externo del sistema requerido para satisfacer dichas necesidades. Donald Reifer (ver Pressman) La tarea de capturar, estructurar y representar con precisin los requisitos del usuario de modo que puedan ser correctemente encarnados en sistemas que verifican tales requisitos. FOLDOC (http://foldoc.org/)
29
Qu Qu
Captura y desarrollo de requisitos Anlisis y especificacin de requisitos Diseo software
Cmo
Anlisis estructurado
sc De
da to
n ci rip
cr ipc
in
Diagramas entidad-relacin
de
l na io nc fu
De s
Diccionario de datos
Diagramas de transicin de estados
Descripcin de control
Software de Comunicaciones 2009-2010
Los autores
31
Modelos estructurales
a travs de anlisis de dominio
Modelos comportamentales
modelado de casos de uso es la tcnica ms popular uso de otros modelos comportamentales puede ser problemtico
cmo refinar en modelo de diseo?
32
33
34
Notas histricas breves (2/2) 1970s: diseo orientado a estructuras de datos (extensin de Structured Programming)
la estructura del cdigo del programa refleja la estructura de los datos p.e. Jackson Structured Programming
35
La organizacin fundamental de un sistema, encarnada en sus componentes, las relaciones entre ellos y con su entorno, y los principios que gobiernan su diseo y evolucin. ANSI/IEEE Std 1471-2000, Prcticas recomendadas para la descripcin arquitectural de sistemas mayoritariamente software
Software de Comunicaciones 2009-2010
Los autores
36
Arquitecturas de software
Sistema
Diseo ascendente
Mdulo
Unidad de compilacin
Datos
Funciones
37
Conexiones
cmo los componentes se comunican
Topologa
cmo los components y conexiones se organizan
Restricciones
sobre componentes, conexiones, topologa, evolucin,
Software de Comunicaciones 2009-2010
Los autores
38
Estilos de arquitectura software Restringen la manera en la que pueden conectarse los componentes Promocionan principios fundamentales
separacin de intereses, generalidad, incrementalidad, acoplamiento dbil, cohesin fuerte,...
Ej: pipe-and-filter, capas, bus de software, cliente-servidor, P2P, jerrquica, control centralizado, cliente-servidor 3-tier, etc. 39
Diseo arquitectural
Diseo detallado
Subsistemas
Interfaces
Componentes Modelo de
Interfaces Mdulos Datos Procedimientos Algoritmos
diseo: componentes
40
42
Legibilidad / comprensibilidad
esquema de nombramiento documentacin actualizada y completa simplicidad / elegancia
Adaptabilidad
evolutividad y generalidad automatizacin del acceso a la documentacin automatizacin del control de versiones
Software de Comunicaciones 2009-2010
Los autores
44
Mtricas de software
45
46
Mtodo formal: mtodo utilizado en el desarrollo de software/hardware que implica el uso y manipulacin de especificaciones formales, p.e.:
demostracin de propiedades de especificaciones formales derivacin de implementaciones, u otros artefactos software (p.e. casos de prueba), a partir de especificaciones formales demostracin de propiedades de una implementacin a partir de una interpretacin abstracta del cdigo
47
Tambin para sistemas seguros Puede ser interesante para sistemas baratos pero producidos en cantidades muy grandes Frecuentemente introducidos despus de la ocurrencia de un problema grave, p.e.:
Software de Comunicaciones 2009-2010
Los autores
model-checking en Intel despus del descubrimiento del error de divisin de nmeros flotantes del Pentium
48
Aumento de la comprensin del sistema modelado Automatizacin de actividades comunes del desarrollo del software
generacin de cdigo generacin de pruebas / sntesis de pruebas
50
6. La Prueba de Software
51
Visin general
La prueba de software implica la ejecucin de la implementacin de una manera controlada y utilizando datos de entrada cuidadosamente seleccionados para luego observar el resultado. La prueba de software es un aspecto de la garanta de la calidad de software (Software Quality Assurance o SQA).
52
Un caso de prueba se disea para ejercer una ejecucin particular o para verificar la conformidad con un requisito especfico.
Software de Comunicaciones 2009-2010
Los autores
53
No se puede ejecutar ninguna prueba hasta que est terminado el cdigo de toda la aplicacin.
p.e. la prueba de unidad
No se pueden escribir casos de prueba antes de que est disponible el cdigo que se quiere probar.
No siempre (p.e. JUnit)
54
Despus de reparar unos errores encontrados en la fase de pruebas, se debera probar de nuevo el software.
es posible que no se hayan reparado los errores o que la reparacin de los errores haya introducido nuevos errores
La fase de pruebas de un ciclo de vida de desarrollo software tpico termina cuando el software que se est desarrollando ya no contiene errores.
nunca se puede estar seguro de que no hay errores
Si un mdulo de un producto de software bien probado se reutiliza en otro producto de la misma lnea de productos, no hace falta probarlo de nuevo.
p.e. Ariane 5
55
Todos los errores encontrados en un producto de software en desarrollo deberan repararse antes de su publicacin
se trata siempre de un compromiso entre severidad del error y coste de su reparacin
Cuando se modifica un software, los casos de prueba que se utilizaron para probar la versin anterior deberan ejecutarse de nuevo sobre la versin modificada.
Software de Comunicaciones 2009-2010
Los autores
eso es la prueba de regresin; por supuesto, tambin se pueden 56 necesitar casos de prueba nuevos
Fases
Software de Comunicaciones 2009-2010
Los autores
57
58
59
proceso de desarrollo software para un conjunto de productos relacionados generalmente usan armazones software
60
estilo de arquitectura cuyo fin es conseguir un acoplamiento dbil entre agentes software interactuando y desempeando 61 papeles de productor o consumidor
tipo de aplicaciones actualmente muy populares se dan caractersticas de desarrollo particulares? o es 62 solo marketing?