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

PROYECTO
SOFTWARE

PROGRAMA

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

INDUSTRIA del SOFTWARE

PEQUEOS PROYECTOS
(pintar dormitorio de los nios)

(pequeo programa)

1 da x 1 hombre (autodidacta)

1 da x 1 hombre (autodidacta)

GRANDES PROYECTOS
(El Nido, Pekn)

(Gran proyecto sw)

Varios aos x
Varios aos x
Contratistas,
Contratistas,
constructores,
factora software,
arquitectos,
ingenieros software,
delineantes,
analistas,
obreros,
operadores,
albailes,
programadores,
auditores,
auditores,
aficionados al arte
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 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.

Problemas de comunicacin con el cliente


Problemas de comunicacin en el equipo

(finales aos sesenta)

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 1960-70:





Software como producto


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)

 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)

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.

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

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

 Adaptable (extensible)
 Modificar alguna funcin sin que
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 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

Hardware

60

Software

40
20
0
60

70

80

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

Pagado pero
nunca
entregado
29.7%

Entregado
pero nunca
usado
47%

Usado despus
de cambios
~ 3%
Usado tal como
se entreg
~ 2%
Ao 1979
Total: $6.8 millones
Origen: desconocido

Coste del software


Desarrollo
inicial

TOTAL
1/4
Desarrollo
inicial

3/4

Mantenimiento

1/3
Anlisis
y diseo

1/6
codificacin

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

Codif.
1/24
1/12

1/8

A/D

V/PP

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

3/4
Mantenimiento

CODIFICACIN = 1/24 (4%)


ANLISIS + DISEO = 1/12 (8%)

TOTAL

Ir
la
nd
a

G
re
ci
a
N
o
ru
eg
a

E
sp
a
a

Ita
lia

F
ra
nc
ia
E
E.
U
U
.

U
E
-1
5

U
E
-2
5

A
us
tr
ia
A
le
m
an
ia
E
sl
ov
en
ia

H
o
la
nd
a
P
or
tu
ga
l
F
in
la
nd
ia
B
D
l
in
gi
a
ca
m
ar
/L
ca
ux
e
m
b
ur
go

S
ui
R
za
ei
no
U
ni
do

Li
tu
an
ia

S
ue
ci
a
E
sl
ov
aq
u
ia

H
u
ng
r
a

P
ol
on
ia
R
e
p.
C
he
ca

Ja
p
n

E
st
on
ia
B
ul
ga
ri
a
R
u
m
a
n
a

Le
to
ni
a

2,85%

2,91%

2,35%
2,14%

3,08%
3,27%

1,52%

2,37%

1,09%

1,40%

2,27%

1,56%

3,20%

3,21%

3,06%

2,92%

2,72%

1,71%

3,03%

2,71%

3,57%

3,04%

2,76%

2,18%

3,11%

2,83%

3,20%
2,78%

2,83%

4,29%

3,20%

1,81%

3,04%

3,05%

3,52%
3,32%

2,95%

4,96%

4,25%

2,82%

4,99%

4,38%

5,04%

4,20%

6,25%

7,12%

6,80%

7,55%

3,69%

1,76%

2,48%

4,43%

2,49%

3,20%

2,58%

3,45%

2,13%

1,95%

2,86%

2,34%

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

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

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

Modelado del
negocio
reutilizacin

(Brooks 87)

ingeniera de
requisitos
POO

Prototipado

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)


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

 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.

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

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

 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?

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)

Coste del cambio

60-100x
1x
Definicin

1,5-6x
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.

Das könnte Ihnen auch gefallen