Sie sind auf Seite 1von 47

Fundamentos de Ingeniera del Software

Captulo 1. Introduccin

Captulo 1. Introduccin Estructura


1. 2. 3. 4. 5. 6. 7. Motivacin. 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 2006), (Pressman 2001) o (Pressman 1998)
Cap.1 y Cap. 2 (aptdo. 2.1)

1. Motivacin. Hacia un proyecto software

SISTEMA SOFTWARE

PROGRAMA

PROYECTO SOFTWARE
PRODUCTO SOFTWARE + Requisitos + Arquitectura + Interfaces e integracin + Algoritmos y estructuras de datos +

Ing. en Informtica 1er / 2o curso

Carrera profesional

Motivacin. Un par de preguntas


Con las herramientas actuales, la programacin en s es un reto? Como futuro ingeniero/a de software, qu crees que te debera distinguir en el mercado laboral?

Motivacin. Necesaria aproximacin disciplinada


Informacin = Ppal. activo de las empresas desarrollo de SI fuertes presiones calidad, productividad Desarrollo artesanal suficiente? Disciplina de ingeniera
(sw. fiable, econmico y eficiente)

Gestin de calidad Mtodos (tcnicas, procesos, herramientas) Gestin de proyectos

Motivacin. Un smil con la industria de la construccin


INDUSTRIA de la CONSTRUCCION (pintar dormitorio de los nios) 1 da x 1 hombre (autodidacta) (El Nido, Pekn) GRANDES PROYECTOS (Gran proyecto sw) Varios aos x Varios aos x Contratistas, Contratistas, factora software, constructores, ingenieros software, arquitectos, analistas, delineantes, operadores, obreros, programadores, albailes, auditores, auditores, usuarios aficionados al arte Los proyectos ms pequeos (de uso personal) se parecen a los pequeos programas: puede desarrollarlo el propio interesado, en un tiempo mnimo. Los proyectos ms grandes se parecen a los grandes proyectos software: gran cantidad de personal y usuarios, personas distintas desarrollan, usan y mantienen, importancia fundamental: tareas relacionadas con aspectos administrativos, de planificacin, estimacin y control. Planos en la industria de la construccin: bien establecidos tenemos planos en la industria del software? INDUSTRIA del SOFTWARE (pequeo programa) 1 da x 1 hombre (autodidacta) PEQUEOS PROYECTOS

Motivacin. Comunicacin compleja en el desarrollo

1. Lo que el director desea.

2. Como lo define el director de proyecto.

3. Como se disea el Sistema.

Origen: desconocido

4. Como lo desarrolla el programador.

5. Como se ha realizado la instalacin.

6. Lo que el usuario quera.

(finales aos sesenta)

Problemas de comunicacin con el cliente Problemas de comunicacin en el equipo

2. El software
Programas de computador, procedimientos, y, posiblemente, la documentacin asociada y los datos pertenecientes a las operaciones de un sistema de computacin"
Instrucciones que, cuando se ejecutan, proporcionan la funcionalidad deseada. Estructuras de datos, que facilitan a las instrucciones manipular adecuadamente la informacin. Base de datos, que registra la informacin que maneja el sistema. Documentos, que describen el desarrollo, uso, instalacin y mantenimiento de los programas.

Incluye: entrenamiento, soporte al consumidor e instalacin.

Caractersticas del software (frente al hardware)


Ms difcil de medir, validar, verificar:
Elemento lgico, no fsico. Desarrollado, no fabricado.

No se estropea, pero se deteriora!


deterioro por cambios

Mayoritariamente cerrado:
tradicionalmente, usado todo o nada tradicionalmente, poco ensamblaje de componentes

Perspectiva histrica del desarrollo de software


Dcada 1950-60:
Software como un aadido Aplicaciones sencillas Desarrollo artesanal, a medida Lenguajes de bajo nivel Software como producto Primeras aplicaciones complejas Dcada lenguajes y compilacin Crisis del software Programacin estructurada Modelo relacional Primeras etapas Ingeniera del Software Primeros mtodos estructurados Modelado de datos Programacin OO 4GLs C/S Tecnologa de SGBDs, SOs Mtodos estructurados Primeros mtodos OO Tecnologa CASE (1 generacin)

Dcada 1990-00

Dcada 1960-70:

Generalizacin POO Programacin visual Tecnologa de componentes Interoperabilidad (CORBA) Nuevas plataformas (Java, .NET) Anlisis/Diseo OO

Fin Guerra de los mtodos UML (Unified Modeling Language, 1997)

Dcada 1970-80:

Patrones Tecnologa CASE (2 generacin) Popularizacin de Internet

Dcada 2000-10

Dcada 1980-90:

Generalizacin comercio electrnico Web 2.0 Desarrollo web Seguridad Arquitecturas basadas en servicios (SOA) Mtodos giles GSD: Global Software Development Desarrollo open source MDE: Model-Driven Engineering

Actualmente, con frecuencia, el sw es la parte ms compleja

(Thayer 2002)

3. Factores de calidad del sw. (internos y externos) (Bell 2000)


Correcto Fiable
Se ajusta a las especificaciones dadas por el usuario. Capacidad de ofrecer los mismos resultados bajo las mismas condiciones. No existe diferencia entre los valores reales y los calculados Utilizacin ptima de los recursos de la mquina. No poseer un comportamiento catastrfico ante situaciones excepcionales (tolerante a fallos).

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

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

No Errneo

Inteligible
Diseo claro, bien estructurado y documentado.

Eficiente Robusto

Reutilizable
El software puede ser usado con facilidad en nuevos desarrollos.

Factores de calidad del software (II) (Sommerville 2004)


Facilidad de mantenimiento Confiabilidad
Fiabilidad Seguridad Proteccin

Eficiencia Facilidad de uso

4. Problemas en el desarrollo de software


Con el avance del hardware, necesidad de aplicaciones ms complejas Se produjo un cambio en la relacin entre el coste hardware/software Son problemas tradicionales:
Incapacidad para estimar tiempo, coste y esfuerzo para el desarrollo de un producto software. Falta de calidad del producto software.

Relacin coste hw./sw.


Porcentaje del coste total del sistema

100 80 60 40 20 0
60 70 80
aos

Hardware

Software

Problemas en el desarrollo de software (II) (Pressman)


Por qu lleva tanto tiempo terminar los programas? Por qu es tan elevado su coste? Por qu no podemos encontrar todos los errores antes de entregar el software a nuestros clientes? Por qu 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% Ao 1979 Total: $6.8 millones Origen: desconocido

Pagado pero nunca entregado 29.7%

Entregado pero nunca usado 47%

Coste del software


TOTAL
1/4

Desarrollo inicial

Desarrollo inicial
3/4

1/3
Anlisis y diseo

1/6
codificacin

Mantenimiento

1/2
Validacin y puesta a punto (V/PP)

Codif. 1/24 1/12

1/8
V/PP

A/D

3/4
Mantenimiento

VALIDACIN + PP + MANT. = 7/8 (88%) CODIFICACIN = 1/24 (4%) ANLISIS + DISEO = 1/12 (8%)

TOTAL

Le to n ia

23% ,4 28% ,6 19% ,5 21% ,3 34% ,5 25% ,8 32% ,0 24% ,9 44% ,3 24% ,8 17% ,6 36% ,9 35% ,2 33% ,2 18% ,1 32% ,0 32% ,0 27% ,8 27% ,6 29% ,1 21% ,8 27% ,1 27% ,2 30% ,8 32% ,7 28% ,3 28% ,3 31% ,1 30% ,4 28% ,5 35% ,7 30% ,3 29% ,2 23% ,5 21% ,4 42% ,9 30% ,4 30% ,5 29% ,5 49% ,6 42% ,5 28% ,2 49% ,9 43% ,8 50% ,4 42% ,0 62% ,5 71% ,2 68% ,0

E st on ia B ul ga ria R um a n a Ja p n P ol on ia R e p. C he ca H u ng ra S ue ci a E sl ov aq u ia Li tu an ia S ui R za e in o U ni do H ol an da P or tu ga l F in la nd ia B D l in gi am ca ar /L c ux em a b ur go A us tri a A le m an ia E sl ov en ia U E -2 5 U E -1 5 Fr a nc ia E E. U U . Ita lia E sp a a

75% ,5

En Espaa

17% ,1 14% ,0
G re ci a N o ru eg a Ir la nd a

30% ,6 32% ,1 10% ,9 23% ,7 15% ,2 32% ,0 15% ,6 22% ,7

www.telefonica.es/sociedaddelainformacion/pdf/informes/espana_2007/SIE_2007.pdf

Fuente: La Sociedad de la Informacin en Espaa 2007. Fundacin Telefnica. pg. 237

GASTO EN TENCOLOGAS DE LA INFORMACIN COMO PORCENTAJE DEL PIB (MUNDO)

TIC TI

En Espaa (II)

Fuente: AETIC (Asociacin de Empresas de Electrnica, Tecnologas de la Informacin y Telecomunicaciones de Espaa) www.aetic.es

En Espaa (III)
Software de aplicacin a medida. Poco software de base, paquetes integrados. Vigente la situacin general.

Fuente: AETIC Ao: 2007 www.aetic.es

Algunas causas
Naturaleza no fsica de la programacin. El sw es la parte ms maleable del sistema Problemas de comunicacin con los clientes. Problemas derivados de la intervencin de grupos. Problemas de gestin.
Planificaciones optimistas, plantillas poco cualificadas...

Poco esfuerzo en anlisis y diseo. Difusin limitada de las nuevas tcnicas, mtodos y herramientas.

Algunas soluciones... No existe bala de plata!


mtodos de anlisis, diseo, prueba... Prototipado Modelado del negocio reutilizacin

(Brooks 87)

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

Algunas soluciones... No existe bala de plata! (II)


Aproximaciones realmente prometedoras (se dirigen a la complejidad esencial en el desarrollo de software): Comprar en lugar de construir. Refinamiento de requisitos y prototipado rpido. Desarrollo incremental hacer crecer el software, no construirlo. Contar con grandes diseadores.
Ms informacin: No Silver Bullet - Essence and Accidents of Software Engineering Brooks, F., IEEE Computer, 20, 4, April 1987 (http://en.wikipedia.org/wiki/No_Silver_Bullet)

5. 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, etc.

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)


(Sommerville 2004)

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)


(Sommerville 2004)

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 isw. Comits CSAB (Computer Science Accreditation Board) y ABET (Accreditation Board for Engineering and Technology). CMMI (Capability Maturity Model Integration) del SEI (Software Engineering Institute) y la familia de estndares ISO 9000 son usados para valorar la capacidad de una organizacin de isw. 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.

6. Visin general del proceso de ingeniera del software


Con independencia del rea de aplicacin, tamao o complejidad del proyecto, el desarrollo de cualquier sistema se encontrar al menos en uno de los siguientes procesos genricos:
Definicin ~ anlisis (del sistema, del sw.) Desarrollo ~ diseo, codificacin y prueba Mantenimiento

Definicin
Qu debe hacer el sistema?
funcionalidad del sistema informacin que ha de manejar necesidades de rendimiento restricciones de diseo interfaces del sistema con los usuarios y con otros sistemas criterios de validacin

Documentos de requisitos del sistema (SyRS, System Requirements Specification) (en su caso) y del software (SRS, Software Requirements Specification)

Desarrollo
Cmo construir el sistema?
Se disean las estructuras de 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.

Mantenimiento
Comienza una vez construido el sistema, cuando se pone en explotacin. 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.

Mantenimiento (II)
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
correctamente la aplicacin para la que ha sido diseado, y, por tanto, debe ser modificado

Correctivo: un programa no realiza

Perfectivo: modificaciones a los programas

para conseguir mayor adecuacin a los requisitos, mayor eficiencia, o simplemente recoger nuevas funcionalidades no expresadas en la fase de definicin del sistema

Tipos de mantenimiento (II)


acomodarlos a los cambios de su entorno externo (modificaciones en la legislacin, CPU, SO, las reglas de negocio, etc.)

Adaptativo: Adaptar los programas para

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, no es secuencial: ha de ser iterativo e incremental (procesos, no fases)

Impacto del cambio (efecto bola de nieve)


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

(Pressman)

60-100x

Mantenimiento

7. Responsabilidad tica y profesional en ISW


(Sommerville 2004)

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 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.

Confidencialidad. Se debera respetar la

Responsabilidad tica y profesional en ISW (III)


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).

Derechos de la propiedad intelectual. El ingeniero de

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.

Responsabilidad tica y profesional en ISW (V)


VERSIN CORTA (http://www.acm.org/serving/se/code_s.html) Los ingenieros de software debern comprometerse a convertir el anlisis, especificacin, diseo, implementacin, pruebas y mantenimiento de software en una profesin respetada y benfica. De acuerdo a su compromiso con la salud, seguridad y bienestar social, los ingenieros de software debern sujetarse a los ocho principios siguientes:
Sociedad. Los ingenieros de software actuarn en forma congruente con el inters social. Cliente y empresario. Los ingenieros de software actuarn de manera que se concilien los mejores intereses de sus clientes y empresarios, congruentemente con el inters social. Producto. Los ingenieros de software asegurarn que sus productos y modificaciones correspondientes cumplen los estndares profesionales ms altos posibles. Juicio. Los ingenieros de software mantendrn integridad e independencia en su juicio profesional. Administracin. Los ingenieros de software gerentes y lderes promovern y se suscribirn a un enfoque tico en la administracin del desarrollo y mantenimiento de software. Profesin. Los ingenieros de software incrementarn la integridad y reputacin de la profesin congruentemente con el inters social. Colegas. Los ingenieros de software apoyarn y sern justos con sus colegas. Personal. Los ingenieros de software participarn toda su vida en el aprendizaje relacionado con la prctica de su profesin y promovern un enfoque tico en la prctica de la profesin.

Das könnte Ihnen auch gefallen