Está en la página 1de 51

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.

caractersticas y evolucin del software

un poco de historia
primeras dcadas:

desarrollar el hardware reducir costes de procesamiento y almacenamiento desarrollo de la microelectrnica mayor potencia de clculo y reduccin de costes

dcada de los ochenta:


1959 - 1965
Orientacin por lotes Distribucin limitada Software a medida

objetivo actual: mejorar la calidad de las soluciones software. 1965 - 1975


Multiusuario Tiempo real Bases de datos Software como producto Mayores gastos de mantenimiento

1975 - 1989
Sistemas distribuidos Inteligencia Artificial Hardware de bajo coste Impacto en el consumo Redes area local y global Gran demanda

1989 Potentes sistemas de sobremesa Tecnologa de objetos Sistemas expertos Redes neuronales Cliente/servidor Tecnologas de Internet.

AUMENTAN los problemas del desarrollo de software:

Subexplotacin del potencial del hardware Incapacidad de atender a la demanda Incapacidad de mantener el software existente

naturaleza y problemas del desarrollo de software


El software como elemento lgico.
Se desarrolla, no se fabrica:
Calidad del diseo. Costes ms importantes en la ingeniera Gestin especial de los proyectos

Se deteriora con el mantenimiento Desarrollo a medida (ausencia de componentes)

La crisis del software: problemas que aparecen en el desarrollo del software al


desarrollar, mantener y atender la demanda de nuevas aplicaciones.

Sin tiempo para recoger datos histricos Planificacin y estimaciones imprecisas Insatisfaccin del cliente Calidad Dificultad de mantener el software existente Baja productividad

escuela superior de ingeniera informtica ingeniera del software de gestin

naturaleza y problemas del desarrollo de software


Causas de la crisis del software
Naturaleza lgica del software Mala gestin de los proyectos ( ausencia de datos, deficiente comunicacin, ...) Ausencia de entrenamiento formal en nuevas tcnicas (programadores vs. ingenieros de software) MITOS DE GESTIN Resistencia al cambio - Uso de estndares Mitos del software: - Uso de herramientas

- Mala planificacin: aumento de programadores

MITOS DE LOS DESARROLLADORES - Programa funcionando = fin del trabajo - Calidad = el programa se ejecuta sin errores - Entrega al cliente: programa funcionando

MITOS DEL CLIENTE - Requisitos establecidos como una declaracin general de objetivos - Flexibilidad del software ante los cambios

la ingeniera del software

definiciones establecimiento y uso de principios de ingeniera robustos, orientados a obtener software econmico, fiable, eficiente y que satisfaga las necesidades del usuario disciplina que comprende todos los aspectos de la produccin de software, desde las etapas iniciales hasta el mantenimiento:

disciplina de ingeniera : aplicacin de teoras, mtodos y herramientas para solucionar problemas, y teniendo en cuenta restricciones financieras y organizativas todos los aspectos de produccin : comprende procesos tcnicos del desarrollo y actividades como la administracin de proyectos, desarrollo de herramientas, mtodos y teoras modelado solucin de problemas adquisicin de conocimiento dirigida por una fundamentacin

actividad de

la ingeniera del software


trata de ser la respuesta a la crisis del software combinacin de elementos:
mtodos completos para todas las fases

mejores tcnicas de control de calidad

mejores elementos de programacin

herramientas para automatizar los mtodos filosofa de coordinacin, control y buena gestin

modelado

modelado: mtodo bsico de la ciencia modelo


representacin abstracta de un sistema que da respuesta a preguntas sobre el sistema tiles cuando se manejan sistemas grandes, pequeos, complicados o caros para tener una experiencia de primera mano permiten visualizar y comprender sistemas que no existen o que slo se supone que existen ejemplos:

biologa: modelos de dinosaurios a partir de restos fsica: modelos que representan cmo se renen materia y energa en los niveles subatmicos ms bajos el sistema en el mundo real seran dinosaurios o partculas subatmicas

modelos

1. Motivacin. Hacia un proyecto software

SISTEMA SOFTWARE

PROGRAMA

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

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?

1. Lo que el director desea.

2. Como lo define el Director del 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.

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

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

Dcada 1960-70:
Software como producto Primeras aplicaciones complejas Dcada lenguajes y compilacin  Crisis del software

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

Dcada 1970-80:
Programacin estructurada Modelo relacional Primeras etapas Ingeniera del Software Primeros mtodos estructurados Modelado de datos

Patrones Tecnologa CASE (2 generacin) Popularizacin de Internet

Dcada 2000-10
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

Dcada 1980-90:
Programacin OO  4GLs C/S Tecnologa de SGBDs, SOs Mtodos estructurados Primeros mtodos OO Tecnologa CASE (1 generacin)

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

(Thayer 2002)

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


Correcto
Se ajusta a las especificaciones dadas por el usuario.

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

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

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

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

Inteligible
Diseo claro, bien estructurado y documentado.

Eficiente
Utilizacin ptima de los recursos de la mquina.

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

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

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

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!


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

(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 (V)


Resumiendo, tres problemas esenciales en los
comienzos del siglo XXI (Sommerville 2004): El reto de lo heredado. El reto de la heterogeneidad. El reto de la entrega. 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.

Situacin actual de la ISW (V)


Resumiendo, tres problemas esenciales en los
comienzos del siglo XXI (Sommerville 2004): El reto de lo heredado. El reto de la heterogeneidad. El reto de la entrega. 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:

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

Estamos desarrollando el programa correcto? Estamos desarrollando correctamente el programa?

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
Correctivo: un programa no realiza
correctamente la aplicacin para la que ha sido diseado, y, por tanto, debe ser modificado

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)


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

Impacto del cambio (efecto bola de nieve)

(Pressman)

60-100x 1,5-6x 1x Definicin Desarrollo 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. 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.

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.

También podría gustarte