You are on page 1of 43

Fundamentos de Ingeniera del Software

Captulo 1. Introduccin

Captulo 1. Introduccin Estructura


El software. Factores de calidad del software. Problemas en el desarrollo de software. La ingeniera del software. Visin general del proceso de ingeniera del software. Responsabilidad tica y profesional en ingeniera del software.

Captulo 1. Introduccin Bibliografa


(Pressman 2001) o (Pressman 1998) Cap.1 y Cap. 2 (aptdo. 2.1).

Motivacin
(Interfaces + Integracin) UN PROGRAMA (Algoritmos y estructuras de datos) UN SISTEMA SOFTWARE

UN PRODUCTO SOFTWARE

UN PROYECTO SOFTWARE (Ingeniera del Software)

Motivacin (II)
Informacin = Ppal. activo de las empresas

desarrollo de SI fuertes presiones


(calidad, productividad) Artesanal Disciplina de ingeniera

Calidad
Herramientas Gestin de proyectos

Desarrollo del software.


Un smil.
INDUSTRIA de la CONSTRUCCION - PEQUEOS PROYECTOS (armario empotrado) 1 da x 1 hombre + GRANDES PROYECTOS (La Dfense, Opera House) Varios aos x Contratistas, constructores, arquitectos, delineantes, obreros, albailes, auditores, aficionados al arte (Gran proyecto Sw) Varios aos x Contratistas, empresa software, ingenieros software, analistas, operadores, programadores, auditores, usuarios (pequeo programa) 1 da x 1 hombre INDUSTRIA del SOFTWARE

Los proyectos ms pequeos (los de uso personal) se parecen a los pequeos programas: puede desarrollarlo el propio interesado, y en un tiempo mnimo. Los proyectos ms 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 planificacin, estimacin y control.

pero, tenemos planos en la industria del software?

Desarrollo del software. Comunicacin compleja

1. Lo que el director desea.

2. Como lo define el director de proyecto.

3. Como se disea el Sistema.

4. Como lo desarrolla el programador.

5. Como se ha realizado la instalacin.

6. Lo que el usuario quera.

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 informacin. Documentos que describen el desarrollo, uso, instalacin y mantenimiento de los programas.

Software: "programas de computador, procedimientos,

y, posiblemente, la documentacin asociada y los datos pertenecientes a las operaciones de un sistema de computacin".
instalacin.

Incluye: entrenamiento, soporte al consumidor e

Caractersticas del software


Elemento lgico, no fsico. Desarrollado, no fabricado. No se estropea, pero se deteriora!
(deterioro por cambios)

Mayoritariamente cerrado:
usar todo o nada (poco ensamblaje de componentes: reutilizacin--)

Atributos de Calidad del Software (Bell 2000)


Fiable
Capacidad de ofrecer los mismos resultados bajo las mismas condiciones.

Portable
Capaz de integrarse en entornos distintos con el mismo esfuerzo.

Eficiente
Utilizacin ptima de los recursos de la mquina.

Adaptable (extensibilidad)
Modificar alguna funcin sin que afecte a sus actividades.

Robusto
No poseer un comportamiento catastrfico ante situaciones excepcionales (Tolerante a fallos).

Inteligible
Diseo claro, bien estructurado y documentado.

Correcto
Se ajusta a las especificaciones dadas por el usuario.

No Errneo
No exista diferencia entre los valores reales y los calculados

Reutilizable (reusabilidad)

Atributos de Calidad del Software (Sommerville 2004)


Mantenibilidad Confiabilidad
fiabilidad seguridad proteccin

Eficiencia Usabilidad

Perspectiva histrica del desarrollo de software


Dcada 50-60: Dcada 60-70:
Software como un aadido. Desarrollo artesanal, a medida. Lenguajes de bajo nivel. Software como producto. Dcada lenguajes y compilacin. Crisis del software. Programacin estructurada. Ingeniera del Software. Primeros mtodos estructurados.

Dcada 80-90:
OO C/S

Tecnologa de SGBDs, SOs... Nuevos paradigmas de programacin y de produccin de programas:

90s - actualidad:

Dcada 70-80:

POO, programacin visual Anlisis/Diseo OO.

Tecnologa CASE (2 generacin) Mtodos giles Componentes y reutilizacin Interoperabilidad (CORBA, .NET...) Internet Comercio electrnico

Guerra de los mtodos UML (1997)

Frecuentemente, el sw es la parte ms compleja


(Thayer 2002)

La problemtica 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 ms complejas. Cambio en la relacin entre el coste hardware/software.

Relacin coste hw./sw.


Porcentaje del coste total del sistema

100 80 60 40 20 0
60 70 80
aos

Hardware Software

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 difcil constatar el progreso conforme se desarrolla el sw.?

INVERSION EN DESARROLLO DE SISTEMAS SOFTWARE


Usado pero con trabajo extra o abandonado despues 19%

Usado despus de cambios ~ 3% Usado tal como se entreg ~ 2%

Pagado pero nunca entregado 29.7%

Entregado pero nunca usado 47%

Ao 1979 Total: $6.8 millones

Coste del software


TOTAL
1/4
Desarrollo inicial

Desarrollo inicial
3/4

1/3
Anlisis y diseo (A/D)

1/6
codificacin

Mantenimiento

1/2

Validacin y puesta a punto (V/PP)

Codif. 1/24 1/12

1/8
V/PP

A/D

VALIDACIN + PP + MANT. = 7/8 (88%)

3/4
Mantenimiento

CODIFICACIN = 1/24 (4%) ANLISIS + DISEO = 1/12 (8%)

TOTAL

En Espaa
Se produce poco software de base. No se producen paquetes integrados. S software de aplicacin a medida. Es vigente la situacin general.
Indicador B.1.1.1. Mercado de las TI/PIB Porcentajes
Espaa Alemania 1995 1996 1997 1998 1999 2000 2001 1,5 1,6 1,7 1,8 1,9 2,0 1,9 2,8 3,0 3,3 3,6 4,0 4,3 4,2 Francia 3,7 3,7 4,1 4,1 4,3 4,7 4,8 Irlanda 2,3 2,2 2,0 2,4 2,5 2,4 2,3 Italia 1,9 1,8 1,9 2,0 2,2 2,4 2,5 Portugal 1,5 1,5 1,5 1,7 1,9 2,0 1,9 R. Unido 4,8 4,9 4,9 4,8 5,2 5,6 5,6 UE 3,1 3,2 3,4 3,6 3,9 4,2 4,2 EE.UU. 4,7 4,9 5,0 5,2 5,3 5,5 5,3 Japn 3,2 3,6 3,8 3,9 3,6 3,8 4,0

Fuente: OCDE/Eurostat, Indicadores estructurales

Definicin: Valor monetario del mercado interior de productos y servicios de TI, como porcentaje del PIB (ambos a precios corrientes).

En Espaa (II)
Principales variables del mercado espaol de Tecnologas de la informacin en 2002 (en millones de euros)
2001 Mdo. Int. Neto Hardware Mdo. Int. Neto Software Mdo. Int. Neto Servicios Inf. Mdo. Int. Neto Servicios de Telecomunicacin Mdo. Int. Neto Consumibles 3.499,22 1.139,84 3.967,39 2002 2.938,99 1.218,94 3.844,25 D% -16,01 6,94 -3,1

2001 Sistemas Operativos Herramientas de Desarrollo SW Bases de Datos SW Comunicaciones Aplicaciones Verticales Aplicaciones Horizontales Aplicaciones Multimedia Total Software Consultora Explotacin Desarrollo e Implantacin Soporte Formacin Otros Total Servicios Informticos 315,01 126,68 156,03 177,55 130,57 217,06 16,94 1.139,84 628,75 709,94 1.523,39 1.029,27 20,16 55,88 3.967,39

2002 330,79 135,17 166,25 205,83 116,65 237,18 27,07 1.218,94 588,07 750,26 1.398,63 1.032,46 17,85 56,98 3.844,25

D% 5,01 6,7 6,55 15,93 -10,66 9,27 59,8 6,94 -6,47 5,68 -8,19 0,31 -11,48 1,97 -3,1

2.836,97 330,03

3.098,46 338,61

9,22 2,6

Fuente: "Las Tecnologas de la Informacin en Espaa 2002" MCyT (Ministerio Espaol de Ciencia y Tecnologa) / SEDISI (Asociacin Espaola de Empresas de Tecnologas de la Informacin). Disponible en www.sedisi.es.

Algunas causas
Naturaleza no fsica de la programacin. Problemas derivados de la intervencin de grupos. Problemas de comunicacin con los clientes. Poco esfuerzo en el anlisis y el diseo. Herramientas comerciales poco adecuadas. Problemas de gestin.
Planificaciones optimistas, plantillas poco cualificadas...

A veces, el sw debe solucionar los problemas del sistema global. Difusin limitada de las nuevas tcnicas, mtodos y herramientas. ...industria pendiente de su revolucin industrial.

Algunas soluciones... No existe bala de plata!


(Brooks 87) mtodos de anlisis, diseo, prueba... Prototipado Modelado del negocio reutilizacin

ingeniera de requisitos
POO

INGENIERA DEL SOFTWARE


mtodos formales herramientas CASE:
editores dirigidos por la sintaxis, entornos integrados de desarrollo, herramientas para la gestin de proyectos, herramientas de prototipado, etc.

herramientas 4 gen.
lenguajes no procedimentales para consulta a BDs generadores de pantallas, generadores de cdigo, generadores de informes

Objetivos de la Ingeniera del Software


Trmino que aparece en 1968 La produccin de programas debe abordarse como una ingeniera ms. (Boehm) La Ingeniera del Software es la aplicacin prctica y sistemtica del conocimiento cientfico a:
la produccin de programas correctos, que se desarrollan a tiempo y dentro de las estimaciones de presupuesto, y a la correspondiente documentacin para desarrollarlos, usarlos y mantenerlos.

La Ingeniera del Software se fundamenta en tcnicas relacionadas con:


ciencia de la computacin, programacin, ingeniera, administracin, matemticas, economa,...

Forma parte de la Ingeniera de Sistemas

Ms definiciones de ISW...
La ISW es el establecimiento y uso de principios slidos de ingeniera, orientados a obtener software econmico que sea fiable y trabaje de manera eficiente en mquinas reales (Fritz Bauer). ISW: (1) La aplicacin de un enfoque sistemtico, disciplinado y cuantificable para el desarrollo, la operacin y el mantenimiento del software; es decir, la aplicacin de la ingeniera al software; (2) El estudio de enfoques como en (1) (Glosario Estndar de Trminos de Ingeniera del Software de IEEE, 1998). Una disciplina que comprende todos los aspectos de la produccin de software desde las etapas iniciales de la especificacin del sistema, hasta el mantenimiento de ste despus de que se utiliza (Sommerville 2002).

Situacin actual de la ISW


(Sommerville 2004)

En los ltimos 20 aos,


Los cambios en hardware han sido enormes. Aparentemente, los cambios en software tambin:
P.ej., las grandes infraestructuras energa, comunicaciones, transporte- descansan sobre sistemas muy complejos y en general muy fiables. P.ej., auge de Internet y aplicaciones relacionadas Se dispone de una enorme variedad de tecnologas (p.ej. J2EE, .NET, EJB, SAP, BPEL4WS, SOAP, CBSE) para construir aplicaciones como las aplicaciones web- que pueden ser desplegadas mucho ms rpidamente que en el pasado.

Sin embargo, ms all de las tecnologa, si miramos los procesos de ingeniera del software, desgraciadamente muchas cosas permanecen igual.

Situacin actual de la ISW (II)


El modelo en cascada sigue siendo utilizado por ms del 40% de las empresas (IEEE Software, Dic. 2003), a pesar de que sus serios problemas fueron identificados hace 20 aos. La prueba es la tcnica de validacin predominante, a pesar de que otras tcnicas, como la inspeccin de programas, han sido usados ms eficientemente desde los aos 70. Las herramientas CASE son todava simplemente editores de diagramas con algunas funcionalidades de chequeo y generacin de cdigo. Todava muchos proyectos terminan tarde, exceden el presupuesto o no entregan el software que esperaban los clientes.

Situacin actual de la ISW (III)


En muchas reas sigue sin existir un conjunto de estndares que se use ampliamente. No existen suficientes datos - gua (estadsticas). A diferencia de otras ingenieras, se carece de una base formal. En definitiva, La disciplina no es todava madura Necesario mayor esfuerzo en educacin en ISW

Situacin actual de la ISW (IV)


Pero hay tambin aproximaciones prometedoras. Por ejemplo:
Se ha establecido UML (Lenguaje Unificado de Modelado) como una notacin estndar de anlisis y diseo OO. Aparecen mtodos giles como Extreme Programming. SWEBOK (Guide to the Software Engineering Body of Knowledge) (2001). Algunas universidades han comenzado a ofrecer un ttulo en ingeniera del software. Comits 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 estndares ISO 9000 son usados para valorar la capacidad de una organizacin de ingeniera 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 Cdigo de tica para Profesionales en Ingeniera del Software.

Situacin actual de la ISW (V)


Resumiendo, tres problemas esenciales comienzos del siglo XXI (Sommerville 2004): El reto de lo heredado. El reto de la heterogeneidad. El reto de la entrega. en los

Hoy da, Existe un consenso en la importancia de la ISW. Se ha avanzado mucho, pero queda mucho por hacer. Muchos autores comienzan a renegar de la vigencia de la crisis del software, aunque la disciplina todava no es madura.

Algunos principios de la ISW


Abstraccin
Permite parcelar la complejidad. Por ello se olvidan aspectos irrelevantes del sistema y se potencian los fundamentales.

Localizacin
Deben estar agrupados todos aquellos elementos que estn afectados por un mismo hecho.

Encapsulamiento u Ocultacin de la informacin


Esconder todos los detalles que no afecten a otros mdulos, definiendo interfaces estrictos que sirvan de interaccin entre los distintos modelos.

Uniformidad
Tdos los mdulos deben tener una notacin similar.

Completitud
Deben estar desarrollados todos los aspectos del sistema.

Validacin y Verificacin
El producto final debe ser fcilmente validable y verificable:
Estamos desarrollando el programa correcto? Estamos desarrollando correctamente el programa?

Modularidad
Sirve para parcelar la solucin en mdulos independientes con fuerte cohesin interna.

Visin general del proceso de ISW


Con independencia del rea de aplicacin, tamao o complejidad del proyecto, cualquier sistema se encontrar al menos en una de las siguientes fases genricas:
Definicin ~ Anlisis (del sistema, del sw.) Desarrollo ~ Diseo, codificacin, prueba Mantenimiento.

Fase de definicin
Qu debe hacer el sistema?
informacin que ha de manejar el sistema

necesidades de rendimiento
restricciones de diseo interfaces del sistema con los usuarios y con otros sistemas

criterios de validacin

Se elaboran los documentos de requisitos del sistema (SyRS) y del software (SRS)

Fase de desarrollo
Cmo construir el sistema? Se disean las estructuras de los datos y los programas
cmo se caracterizan las interfaces, cmo realizar el paso del diseo al lenguaje de programacin, cmo 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 slo un conjunto de programas que funcionan.

Debe ser fcil de mantener

Documentacin esencial (CASE, Computer Assisted Software Engineering)

Tipos de mantenimiento
Correctivo: un programa no realiza
correctamente la aplicacin para la que ha sido diseado, y, por tanto, debe ser modificado. para conseguir mayor adecuacin a los requisitos, mayor eficiencia, o simplemente recoger nuevas funcionalidades no expresadas en la fase de definicin del sistema.

Perfectivo: modificaciones a los programas

Tipos de mantenimiento (II)


Adaptativo: Adaptar los programas para
acomodarlos a los cambios de su entorno externo (modificaciones en la legislacin, 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 ms fcilmente

(Reingeniera del software).

Visin general del proceso de ISW (II)


DEFINICIN

DESARROLLO
Fallos de definicin

MANTENIMIENTO
Errores

Modificaciones y adaptaciones

(en la prctica, nunca es totalmente secuencial) Actualmente, se pretende: gil, iterativo e incremental

Impacto del cambio


Coste del cambio 1x Definicin 1,5-6x Desarrollo Mantenimiento

60-100x

Responsabilidad tica y profesional en ISW


Est cobrando ms inters en los ltimos aos. Los ingenieros de software tienen responsabilidades frente a la profesin y la sociedad. Su responsabilidad no es exclusivamente tcnica. Deben comportarse de forma tica y moralmente responsable si quieren ser respetados como profesionales. Un ingeniero de software no debera comportarse de manera deshonesta o de una forma que perjudique a la profesin.

Responsabilidad tica y profesional en ISW (II)


Hay reas donde el concepto de conducta aceptable no est limitada por la ley sino por la nocin ms tenue de responsabilidad profesional. Algunas de ellas son:
Confidencialidad. Se debera respetar la confidencialidad de la empresa empleadora o de los clientes independientemente de que se haya firmado un contrato formal de confidencialidad. Competencia. El ingeniero de software no debera aceptar conscientemente trabajo que est fuera de su competencia.

Responsabilidad tica y profesional en ISW (III)


Derechos de la propiedad intelectual. El ingeniero de software debera conocer las leyes que gobiernan la propiedad intelectual, como patentes y derechos de autor, y debera proteger la propiedad intelectual de clientes y empleadores. Mal uso del ordenador. El ingeniero de software no debera usar sus conocimientos tcnicos para utilizar de forma incorrecta los ordenadores de otras personas. El mal uso va desde lo relativamente trivial (usar el ordenador de la empresa para jugar, p.ej.) hasta lo extremadamente serio (diseminacin de virus).

Responsabilidad tica y profesional en ISW (IV)


ACM (Association for Computer Machinery) e IEEE (Institute of Electrical and Electronic Engineers) publicaron en 1999 un cdigo conjunto de tica y conducta profesional, que establece los estndares de conducta esperados de sus miembros.
http://www.acm.org/serving/se/code_s.html

Es preciso aceptar dicho cdigo para poder ser miembro de estas organizaciones.
El Octavo Principio establece como obligacin el aprendizaje continuo a travs de toda la vida profesional.