Fundamentos de Ingeniera del Software
Captulo 1. Introduccin
Captulo 1. IntroduccinEstructura
1. Motivacin.2. El software.3. Factores de calidad del software.4. Problemas en el desarrollo de software.4. Problemas en el desarrollo de software.5. La ingeniera del software.6. Visin general del proceso de ingeniera del software.7. Responsabilidad tica y profesional en ingeniera del
software.
Captulo 1. IntroduccinBibliografa
(Pressman 2006), (Pressman 2001) o (Pressman 1998) Cap.1 y Cap. 2 (aptdo. 2.1)
1. Motivacin. Hacia un proyecto software
SISTEMA SOFTWARE
+ Requisitos + Arquitectura + Interfaces e integracin + Algoritmos y estructuras de datos +
PRODUCTO SOFTWARE
PROGRAMA PROYECTO SOFTWARE
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 presionescalidad,
Desarrollo artesanal suficiente?
Disciplina de ingeniera(sw. fiable, econmico y eficiente)
calidad, productividad
Gestin de calidad
Mtodos (tcnicas, procesos, herramientas)
Gestin de proyectos
Motivacin. Un smil con la industria de la construccin
INDUSTRIA de la CONSTRUCCION INDUSTRIA del SOFTWARE PEQUEOS PROYECTOS
(pintar dormitorio de los nios) 1 da x 1 hombre (autodidacta)
(pequeo programa) 1 da x 1 hombre (autodidacta)
GRANDES PROYECTOS (El Nido, Pekn) Varios aos x
Contratistas, constructores,
(Gran proyecto sw) Varios aos x
Contratistas, factora software, constructores,
arquitectos, delineantes, obreros, albailes, auditores, aficionados al arte
factora software, ingenieros software, analistas, operadores, programadores, auditores, usuarios
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?
Motivacin. Comunicacin compleja en el desarrollo
1. Lo que el director desea. 2. Como lo define el director deproyecto.
3. Como se disea el Sistema.
4. Como lo desarrolla elprogramador.
5. Como se ha realizado lainstalacin.
6. Lo que el usuario quera.
Origen: desconocido(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 datospertenecientes a las operaciones de un sistema de computacin" Instrucciones que, cuando se ejecutan, proporcionan la 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! No se estropea, pero se deteriora!deterioro por cambios
Mayoritariamente cerrado: tradicionalmente, usado todo o nadatradicionalmente, 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 1960-70: Software como producto Primeras aplicaciones complejas
Dcada 1990-00 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) Primeras aplicaciones complejas
Dcada lenguajes y compilacin Crisis del software
Dcada 1970-80: Programacin estructurada Ocultacin de informacin Modelo relacional Primeras etapas Ingeniera del Software Primeros mtodos estructurados Modelado de datos
Dcada 1980-90: Programacin OO 4GLs C/S Tecnologa de SGBDs, SOs Mtodos estructurados y primeros mtodos OO Tecnologa CASE (1 generacin)
UML (Unified Modeling Language, 1997) Patrones y frameworks 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 Lneas de producto 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 Se ajusta a las especificaciones
dadas por el usuario. Fiable
Capacidad de ofrecer los mismos resultados bajo las mismas condiciones.
Portable Capaz de integrarse en entornos
distintos con el mnimo esfuerzo.
Adaptable (extensible) Modificar alguna funcin sin que
afecte a sus actividades.condiciones. No Errneo
No existe diferencia entre los valores reales y los calculados
Eficiente Utilizacin ptima de los recursos
de la mquina. Robusto
No poseer un comportamiento catastrfico ante situaciones excepcionales (tolerante a fallos).
afecte a sus actividades.
Inteligible Diseo claro, bien estructurado y
documentado.
Reutilizable El software puede ser usado con
facilidad en nuevos desarrollos.
Factores de calidad del software (II) (Sommerville 2004)
Facilidad de mantenimientoConfiabilidad
FiabilidadFiabilidadSeguridadProteccin
EficienciaFacilidad 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/softwarecoste 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.
80
100
Hardware
Porcentaje del coste total del sistema
0
20
40
60
60 70 80
Hardware
Software
aos
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 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 despues19%
Usado despus de cambios~ 3%
Usado tal como
Entregadopero nuncausado47%
Pagado pero nunca entregado29.7%
Usado tal como se entreg~ 2%
Ao 1979Total: $6.8 millonesOrigen: desconocido
Coste del software
1/4Desarrollo inicial
3/4Mantenimiento
1/6codificacin
1/2 Validacin y puesta a punto
1/3Anlisis y diseo
Desarrollo Desarrollo Desarrollo Desarrollo inicialinicialinicialinicial
TOTALTOTALTOTALTOTAL
puesta a punto (V/PP)
3/4Mantenimiento
1/8V/PP
1/12 A/D
VALIDACIN + PP + MANT. = 7/8 (88%)
CODIFICACIN = 1/24 (4%)
ANLISIS + DISEO = 1/12 (8%) TOTALTOTALTOTALTOTAL
Codif.1/24
En Espaa
GASTO EN TENCOLOGAS DE LA INFORMACIN COMO PORCENTAJE DEL PIB (MUNDO)Fuente: La Sociedad de la Informacin en Espaa 2007. Fundacin Telefnica. pg. 237www.telefonica.es/sociedaddelainformacion/pdf/informes/espana_2007/SIE_2007.pdf
2
,
3
4
%
2
,
8
6
%
1
,
9
5
%
2
,
1
3
%
3
,
4
5
%
2
,
5
8
%
3
,
2
0
%
2
,
4
9
%
4
,
4
3
%
2
,
4
8
%
1
,
7
6
%
3
,
6
9
%
3
,
5
2
%
3
,
3
2
%
1
,
8
1
%
3
,
2
0
%
3
,
2
0
%
2
,
7
8
%
2
,
7
6
%
2
,
9
1
%
2
,
1
8
%
2
,
7
1
%
2
,
7
2
%
3
,
0
8
%
3
,
2
7
%
1
,
7
1
%
1
,
4
0
%
1
,
0
9
%
2
,
3
7
%
1
,
5
2
%
7
,
5
5
%
6
,
8
0
%
7
,
1
2
%
6
,
2
5
%
4
,
2
0
%
5
,
0
4
%
4
,
3
8
%
4
,
9
9
%
2
,
8
2
%
4
,
2
5
%
4
,
9
6
% 2
,
9
5
%
3
,
0
5
%
3
,
0
4
%
4
,
2
9
%
2
,
8
3
%
2
,
8
3
%
3
,
1
1
%
3
,
0
4
%
2
,
8
5
%
3
,
5
7
%
3
,
0
3
%
2
,
9
2
%
2
,
3
5
%
2
,
1
4
%
3
,
0
6
%
3
,
2
1
%
3
,
2
0
%
1
,
5
6
%
2
,
2
7
%
Leton
iaEs
tonia
Bulga
riaRu
man
a
Jap
n
Polon
iaRe
p.Che
ca
Hung
raSu
ecia
Eslov
aquia
Litua
nia
Suiza
Reino
Unido
Holan
daPo
rtuga
lFin
landia
Dina
mar
ca
Blgi
ca/Lu
xem
burgo
Austr
iaAl
eman
iaEs
loven
ia
UE-
25
UE-
15Fr
ancia
EE.
UU.
Italia
Espa
a
Grec
iaNo
rueg
a
Irland
a
TICTI
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.
Fuente: AETICAo: 2007www.aetic.es
integrados. Vigente la situacin
general.
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 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! (Brooks 87)
INGENIERA DEL SOFTWARE
reutilizaciningeniera de
requisitos
mtodos de anlisis, diseo, prueba...
POOPrototipado
Modelado del negocio
INGENIERA DEL SOFTWAREmtodos 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 BDsgeneradores 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. 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 EngineeringBrooks, 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: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 slidosde ingeniera, orientados a obtener software econmicoque sea fiable y trabaje de manera eficiente enmquinas reales (Fritz Bauer).
ISW: (1) La aplicacin de un enfoque sistemtico, ISW: (1) La aplicacin de un enfoque sistemtico,disciplinado y cuantificable para el desarrollo, laoperacin y el mantenimiento del software; es decir, laaplicacin de la ingeniera al software; (2) El estudio deenfoques como en (1) (Glosario Estndar de Trminosde Ingeniera del Software de IEEE, 1998).
Una disciplina que comprende todos los aspectos de laproduccin de software desde las etapas iniciales de laespecificacin del sistema, hasta el mantenimiento deste 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
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 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)
Durante la evolucin de la ISW la reutilizacin, los estndares y la automatizacin son tcnicas que han permitido avanzar en el objetivo de la industrializacin del software: productos de calidad a bajo coste
objetivo todava no conseguido En muchas reas sigue sin existir un conjunto de estndares que se 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 o no
est suficientemente difundida.
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).(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 en loscomienzos del siglo XXI (Sommerville 2004): El reto de lo heredado. El reto de la heterogeneidad. 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 porhacer.
Muchos autores comienzan a renegar de la vigenciade la crisis del software, aunque la disciplinatodava 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.
Encapsulamiento u Ocultacin de la informacin
Localizacin Deben estar agrupados todos
aquellos elementos que estn afectados por un mismo hecho.
Uniformidad Tdos los mdulos deben tener
una notacin similar.de la informacin Esconder todos los detalles que
no afecten a otros mdulos, definiendo interfaces estrictos que sirvan de interaccin entre los distintos modelos.
Modularidad Sirve para parcelar la solucin en
mdulos independientes con fuerte cohesin interna.
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?
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 encontrar al menos en uno de los siguientes procesos genricos:
Definicin ~ anlisis (del sistema, del sw.)Desarrollo ~ diseo, codificacin y pruebaMantenimiento
Definicin
Qu debe hacer el sistema? funcionalidad del sistema
informacin que ha de manejar
necesidades de rendimiento 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 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 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 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.) 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)
DEFINICIN
DESARROLLO
Visin general del proceso de ISW (II)
DESARROLLO
MANTENIMIENTO
Fallos de definicin
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)
Coste
del cam
bio
Definicin Desarrollo Mantenimiento
1x1,5-6x
60-100x
Coste
del cam
bio
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. 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. 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.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 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.
Top Related