Vous êtes sur la page 1sur 37

Ingeniería del Software

Tema 1. Introducción
Tema 1. Introducción
Estructura
 El software.
 Factores de calidad del software.
 Problemas en el desarrollo de software.
 La Ingeniería del Software.
 Visión general del proceso de Ingeniería del Software.
Tema 1. Introducción
Bibliografía

(Pressman 2001) o (Pressman 1998)


Cap.1 y Cap. 2 (aptdo. 2.1).
Motivación
(Interfaces + Integración)

UN
PROGRAMA
UN
SISTEMA
(Algoritmos y SOFTWARE
estructuras de
datos)

UN
PRODUCTO
UN PROYECTO
SOFTWARE SOFTWARE

(Ingeniería del Software)


Motivación (II)
Información = Ppal. activo de las empresas

desarrollo de SI  fuertes presiones


(calidad,
productividad)

Artesanal Calidad
Disciplina de Herramientas
ingeniería
Gestión de proyectos
Desarrollo del software.
Un símil.
INDUSTRIA de la CONSTRUCCION INDUSTRIA del SOFTWARE
- PEQUEÑOS PROYECTOS
(armario empotrado) (pequeño programa)
1 día x 1 hombre 1 día x 1 hombre
+ GRANDES PROYECTOS
(La Défense, Opera House) (Gran proyecto Sw)
Varios años x Varios años x
Contratistas, Contratistas,
constructores, empresa software,
arquitectos, ingenieros software,
delineantes, analistas,
obreros, operadores,
albañiles, programadores,
auditores, auditores,
aficionados al arte usuarios

 Los proyectos más pequeños (los de uso personal) se ‘parecen’ a los pequeños
programas:
puede desarrollarlo el propio interesado, y en un tiempo mínimo.
 Los proyectos más grandes se ‘parecen’ a los grandes proyectos software:
gran cantidad de personal y usuarios,
son personas distintas los que desarrollan, usan y mantienen,
cobran importancia fundamental las tareas relacionadas con aspectos
administrativos, de planificación, estimación y control.

 pero, ¿tenemos “planos” en la industria del software?


Desarrollo del software.
Comunicación compleja

1. Lo que el director desea. 2. Como lo define el director de 3. Como se diseña el Sistema.


proyecto.

4. Como lo desarrolla el 5. Como se ha realizado la 6. Lo que el usuario quería.


programador. instalación.

Origen: desconocido
El Software

 El Software:
 Instrucciones que, cuando se ejecutan, proporcionan la
funcionalidad deseada.
 Estructuras de datos que facilitan a las instrucciones
manipular adecuadamente la información.
 Documentos que describen el desarrollo, uso, instalación y
mantenimiento de los programas.
 Software: "programas de computador, procedimientos,
y, posiblemente, la documentación asociada y los
datos pertenecientes a las operaciones de un sistema
de computación".
 Incluye: entrenamiento, soporte al consumidor e
instalación.
Características del software

Elemento lógico, no físico.


Desarrollado, no ‘fabricado’.
No se ‘estropea’, ¡se deteriora!
(deterioro por ‘cambios’)
Mayoritariamente cerrado:
usar todo o nada
(poco ensamblaje de componentes:
reutilización--)
Atributos de Calidad del
Software (Bell 2000)

 Fiable  Portable
 Capacidad de ofrecer los mismos  Capaz de integrarse en entornos
resultados bajo las mismas distintos con el mismo esfuerzo.
condiciones.
 Adaptable
 Eficiente (extensibilidad)
 Utilización óptima de los recursos
 Modificar alguna función sin que
de la máquina.
afecte a sus actividades.
 Robusto  Inteligible
 No poseer un comportamiento
 Diseño claro, bien estructurado y
catastrófico ante situaciones
documentado.
excepcionales
(Tolerante a fallos).  No Erróneo
 Correcto  No exista diferencia entre los
valores reales y los calculados
 Se ajusta a las especificaciones
dadas por el usuario.  Reutilizable (reusabilidad)
Atributos de Calidad del
Software (Sommerville 2002)

Mantenibilidad
Confiabilidad
 fiabilidad
 seguridad
 protección
Eficiencia
Usabilidad
Perspectiva histórica del
desarrollo de software
 Década 50-60:  Década 80-90:
 “Software como un añadido”.  Tecnología de SGBDs, SOs...
 Desarrollo artesanal, a medida.  Nuevos paradigmas de
 Lenguajes de bajo nivel. programación y de producción de
programas:
 Década 60-70:  OO
 C/S
 Software como producto.
 Década lenguajes y compilación.  90’s - actualidad:
 “Crisis del software”.
 Análisis/Diseño OO.
 Década 70-80:  Tecnología CASE
 Programación estructurada.  Componentes y reutilización
 Ingeniería del Software.  Interoperabilidad (CORBA, .NET...)
 Primeros métodos estructurados.  Internet
 ISw. distribuida
 repositorios de componentes
reutilizables
 e-business; e-commerce
 ...
Frecuentemente, el sw es la
parte más compleja (Thayer 2002)
La problemática actual
del software

Incapacidad para estimar tiempo, coste y


esfuerzo para el desarrollo de un producto
software.
Falta de calidad del producto software.
Avance del hardware y necesidad de
aplicaciones más complejas.
 Cambio en la relación entre el coste
hardware/software.
Relación coste hw./sw.

Porcentaje del coste


total del sistema

100

80
Hardware
60
Software
40

20

0
60 70 80 años
Problemas del software (II)

 ¿Porqué lleva tanto tiempo terminar los


programas?
 ¿Porqué es tan elevado su coste?
 ¿Porqué no podemos encontrar todos los
errores antes de entregar el software a
nuestros clientes?
 ¿Porqué nos resulta difícil constatar el
progreso conforme se desarrolla el sw.?
INVERSION EN DESARROLLO DE
SISTEMAS SOFTWARE

Usado después
Usado pero con
trabajo extra o de cambios
abandonado ~ 3%
despues
19%
Usado tal como
Pagado pero se entregó
nunca Entregado ~ 2%
entregado pero nunca
29.7% usado
47%

Año 1979
Total: $6.8 millones
Coste del software

TOTAL Desarrollo
1/4 inicial 1/3
Desarrollo Análisis 1/6
inicial y diseño codificación
3/4 (A/D)
Mantenimiento 1/2
Validación y
puesta a punto
(V/PP)
Codif.
1/24 1/12
A/D
1/8
VALIDACIÓN + PP + MANT. = 7/8 (88%)
V/PP

3/4
Mantenimiento CODIFICACIÓN = 1/24 (4%)
ANÁLISIS + DISEÑO = 1/12 (8%)
TOTAL
En España

 Se produce poco software de base.


 No se producen paquetes integrados.
 Sí software de aplicación a medida.
 Es vigente la situación general.
Indicador B.1.1.1. Mercado de las TI/PIB
Porcentajes
España Alemania Francia Irlanda Italia Portugal R. Unido UE EE.UU. Japón
1995 1,5 2,8 3,7 2,3 1,9 1,5 4,8 3,1 4,7 3,2
1996 1,6 3,0 3,7 2,2 1,8 1,5 4,9 3,2 4,9 3,6
1997 1,7 3,3 4,1 2,0 1,9 1,5 4,9 3,4 5,0 3,8
1998 1,8 3,6 4,1 2,4 2,0 1,7 4,8 3,6 5,2 3,9
1999 1,9 4,0 4,3 2,5 2,2 1,9 5,2 3,9 5,3 3,6
2000 2,0 4,3 4,7 2,4 2,4 2,0 5,6 4,2 5,5 3,8
2001 1,9 4,2 4,8 2,3 2,5 1,9 5,6 4,2 5,3 4,0
Fuente: OCDE/Eurostat, Indicadores estructurales

Definición: Valor monetario del mercado interior de productos y servicios de TI, como porcentaje del PIB (ambos a precios
corrientes).
En España (II)
Principales variables del mercado
español de Tecnologías de la 2001 2002 %
información en 2002 (en millones Sistemas
de euros) Operativos
Herramientas de
315,01 330,79 5,01

Desarrollo 126,68 135,17 6,7


2001 2002 % SW Bases de
Mdo. Int. Neto Datos 156,03 166,25 6,55
Hardware 3.499,22 2.938,99 -16,01 SW
Mdo. Int. Neto Comunicaciones 177,55 205,83 15,93
Software 1.139,84 1.218,94 6,94 Aplicaciones
Mdo. Int. Neto Verticales 130,57 116,65 -10,66
Servicios Inf. 3.967,39 3.844,25 -3,1 Aplicaciones
Mdo. Int. Neto Horizontales 217,06 237,18 9,27
Servicios de Aplicaciones
Telecomunicación 2.836,97 3.098,46 9,22 Multimedia 16,94 27,07 59,8
Mdo. Int. Neto Total Software 1.139,84 1.218,94 6,94
Consumibles 330,03 338,61 2,6 Consultoría 628,75 588,07 -6,47
Explotación 709,94 750,26 5,68
Desarrollo e
Fuente: "Las Tecnologías de la Información Implantación 1.523,39 1.398,63 -8,19
en España 2002" MCyT (Ministerio Español Soporte 1.029,27 1.032,46 0,31
Formación 20,16 17,85 -11,48
de Ciencia y Tecnología) / SEDISI
Otros 55,88 56,98 1,97
(Asociación Española de Empresas de Total Servicios
Tecnologías de la Información). Disponible Informáticos 3.967,39 3.844,25 -3,1
en www.sedisi.es.
Algunas causas

 Naturaleza “no física” de la programación.


 Problemas derivados de la intervención de grupos.
 Problemas de comunicación con los clientes.
 Poco esfuerzo en el análisis y el diseño.
 Herramientas comerciales poco adecuadas.
 Problemas de gestión
Planificaciones optimistas, plantillas poco cualificadas...
 Difusión limitada de las nuevas técnicas, métodos y
herramientas.
...industria pendiente de su ‘revolución industrial’.
Algunas soluciones...
¡No existe bala de plata!
(Brooks 87)

Modelado del
métodos de análisis, negocio ingeniería de
diseño, prueba...
requisitos
reutilización
Prototipado POO

INGENIERÍA DEL SOFTWARE

métodos formales
herramientas 4ª gen.
lenguajes no
herramientas CASE: procedimentales para
editores dirigidos por la sintaxis,
consulta a BD’s
entornos integrados de
generadores de pantallas,
desarrollo,
generadores de código,
herramientas para la gestión de
generadores de informes
proyectos,
herramientas de prototipado, etc.
Objetivos de la Ingeniería del
Software

 Término que aparece en 1968


 La producción de programas debe abordarse como una
ingeniería más.
 (Boehm) La Ingeniería del Software es la aplicación
práctica y sistemática del conocimiento científico a:
 la producción de programas correctos, que se desarrollan a
tiempo y dentro de las estimaciones de presupuesto,
 y a la correspondiente documentación para desarrollarlos, usarlos
y mantenerlos.
 La Ingeniería del Software se fundamenta en técnicas
relacionadas con:
 ciencia de la computación, programación, ingeniería,
administración, matemáticas, economía,...
 Forma parte de la “Ingeniería de Sistemas”
Más definiciones de ISw...
 “La ISw es el establecimiento y uso de principios sólidos
de ingeniería, orientados a obtener software económico
que sea fiable y trabaje de manera eficiente en
máquinas reales” (Fritz Bauer).
 “Isw: (1) La aplicación de un enfoque sistemático,
disciplinado y cuantificable para el desarrollo, la
operación y el mantenimiento del software; es decir, la
aplicación de la ingeniería al software; (2) El estudio de
enfoques como en (1)” (Glosario Estándar de Términos
de Ingeniería del Software de IEEE, 1998).
 “Una disciplina que comprende todos los aspectos de la
producción de software desde las etapas iniciales de la
especificación del sistema, hasta el mantenimiento de
éste después de que se utiliza” (Sommerville 2002).
Situación actual de la ISw

 Fragmentación e inmadurez de la disciplina.


 Carencia de un conjunto de estándares (que se
usen ampliamente).
 Terminología inconsistente.
 Escepticismo e inercia en el sector.
 Insuficiencia de datos - guía (estadísticas).
 Carencia y poca difusión de base formal.
Situación actual de la ISw
(II)
 Hay también aproximaciones prometedoras. Por ejemplo:
(Además de nuevas técnicas, métodos y herramientas...)
 SWEBOK (Guide to the Software Engineering Body of Knowledge)
(2001)
 Algunas universidades han comenzado a ofrecer un título en ingeniería
del software
 Comités CSAB (Computer Science Accreditation Board) y ABET
(Accreditation Board for Engineering and Technology).
 El CMM (Capability Maturity Model) del SEI (Software Engineering
Institute) y la familia de estándares ISO 9000 son usados para valorar
la capacidad de una organización de ingeniería del software.
 En EE UU, el Colegio de Ingenieros Profesionales de Texas (Texas Board
of Professionals Engineers) ha comenzado a licenciar ingenieros del
software.
 ACM e IEEE-CS han desarrollado y adoptado conjuntamente un Código
de Ética para Profesionales en Ingeniería del Software.
Situación actual de la ISw
(III)

 Tres problemas esenciales en los comienzos del siglo XXI


(Sommerville 2002):
 El reto de lo heredado
 El reto de la heterogeneidad
 El reto de la entrega
 Hoy día,
 existe un consenso en la importancia de la ISw
 muchos autores comienzan a renegar del término
“crisis del software”
Principios de la Ingeniería del
Software

 Abstracción  Localización
 Permite parcelar la complejidad.  Deben estar agrupados todos
Por ello se olvidan aspectos aquellos elementos que están
irrelevantes del sistema y se afectados por un mismo hecho.
potencian los fundamentales.  Uniformidad
 Encapsulamiento u Ocultación  Tódos los módulos deben tener
de la información una notación similar.
 Esconder todos los detalles que  Completitud
no afecten a otros módulos,
 Deben estar desarrollados todos
definiendo interfaces estrictos que
los aspectos del sistema.
sirvan de interacción entre los
distintos modelos.  Validación y Verificabilidad
 Modularidad  El producto final debe ser
fácilmente validable y verificable:
 Sirve para parcelar la solución en
 ¿Estamos desarrollando el
módulos independientes con programa correcto?
fuerte cohesión interna.
 ¿Estamos desarrollando
correctamente el programa?
Visión general del proceso
de ISw

Con independencia del área de aplicación,


tamaño o complejidad del proyecto,
cualquier sistema se encontrará al menos
en una de las siguientes fases genéricas:

 Definición ~ Análisis (del sistema, del sw.)


 desarrollo ~ Diseño, codificación, prueba
 mantenimiento.
Fase de definición

 ¿Qué debe hacer el sistema?


 información que ha de manejar el sistema
 necesidades de rendimiento
 restricciones de diseño
 interfaces del sistema con los usuarios y con otros sistemas
 criterios de validación

 Se elaboran los documentos de requisitos del


sistema (SyRS) y del software (SRS)
Fase de desarrollo

 ¿Cómo construir el sistema?


 Se diseñan las estructuras de los datos y los
programas
 cómo se caracterizan las interfaces,
 cómo realizar el paso del diseño al lenguaje de
programación,
 cómo ha de realizarse la prueba,
 se escriben y documentan los programas,
 y se prueba el software construido.
Fase de mantenimiento

 Comienza una vez construido el sistema, cuando


se empieza a utilizar.
 Se centra en el cambio.
 El software es sometido a reparaciones y
modificaciones cada vez que se detecta un fallo
o se necesita cubrir una nueva necesidad de los
usuarios.
 En esta fase recae el mayor porcentaje del coste
de un sistema.
Fase de mantenimiento

Un buen sistema no es sólo un conjunto


de programas que funcionan.

Debe ser fácil de mantener

Documentación esencial
(CASE, Computer Assisted
Software Engineering)
Tipos de mantenimiento

 Correctivo: un programa no realiza


correctamente la aplicación para la que ha sido
diseñado, y, por tanto, debe ser modificado.
 Perfectivo: modificaciones a los programas
para conseguir mayor adecuación a los
requisitos, mayor eficiencia, o simplemente
recoger nuevas funcionalidades no expresadas
en la fase de definición del sistema.
Tipos de mantenimiento (II)

 Adaptativo: Adaptar los programas para


acomodarlos a los cambios de su entorno
externo (modificaciones en la legislación, CPU,
SO, las reglas de negocio, etc.)
 Preventivo: El software se deteriora con los
cambios, y este tipo de mantenimiento hace
cambios en los programas para que se puedan
corregir, adaptar y mejorar más fácilmente
(Reingeniería del software).
Visión general del proceso
de ISw (II)

DEFINICIÓN

DESARROLLO
Fallos de definición

MANTENIMIENTO
Errores

Modificaciones y adaptaciones

(no es totalmente secuencial)


Actualmente: iterativo e incremental
Impacto del cambio
Coste del cambio

60-100x

1,5-6x
1x
Definición Desarrollo Mantenimiento

Vous aimerez peut-être aussi