Beruflich Dokumente
Kultur Dokumente
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
+
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
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)
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
Origen: desconocido
4. Como lo desarrolla el
programador.
5. Como se ha realizado la
instalacin.
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.
Mayoritariamente cerrado:
tradicionalmente, usado todo o nada
tradicionalmente, poco ensamblaje de componentes
Dcada 1960-70:
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
Patrones y frameworks
Tecnologa CASE (2 generacin)
Popularizacin de Internet
Dcada 2000-10
(Thayer 2002)
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.
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
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
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
3/4
Mantenimiento
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)
www.telefonica.es/sociedaddelainformacion/pdf/informes/espana_2007/SIE_2007.pdf
TIC
TI
En Espaa (II)
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
Algunas soluciones...
No existe bala de plata!
mtodos de anlisis,
diseo, prueba...
Modelado del
negocio
reutilizacin
(Brooks 87)
ingeniera de
requisitos
POO
Prototipado
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)
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).
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.
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?
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
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,
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
DESARROLLO
Fallos de definicin
MANTENIMIENTO
Errores
Modificaciones y adaptaciones
(Pressman)
60-100x
1x
Definicin
1,5-6x
Desarrollo
Mantenimiento
7. Responsabilidad tica y
profesional en ISW
(Sommerville 2004)
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
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.