Está en la página 1de 77

Qu es la Ingeniera de Software?

Cuntos tipos de sistemas conoce?


Cul es el mbito del software?
Qu es el Software?
Cul es el ciclo de vida del software?
Cuntos tipos de software existen?
Cul es la diferencia entre el software
comercial y el hecho a la medida?
Por qu se gasta tanto tiempo y
esfuerzo en el mantenimiento de los
programas existentes?

Ingeniera de Software
Introduccin
1.1 Evolucin histrica de la ingeniera de software.
1.2 El software como producto y proceso.
1.3 Factores que intervienen en la ingeniera de software.
1.4 El ciclo de vida de desarrollo de sistemas.
1.5 El mbito de la ingeniera de software.

Introduccin
Segn la definicin del IEEE, citada por [
Lewis 1994] "software es la suma total de
los programas de computadora,
procedimientos, reglas, la documentacin
asociada y los datos que pertenecen a un
sistema de cmputo". Segn el mismo
autor, "un producto de software es un
producto diseado para un usuario".
4

Introduccin
"la Ingeniera de Software es la rama de
la ingeniera que aplica los principios de la
ciencia de la computacin y las
matemticas para lograr soluciones costoefectivas (eficaces en costo o econmicas)
a los problemas de desarrollo de
software", es decir, "permite elaborar
consistentemente productos correctos,
utilizables y costo-efectivos" [Cota 1994].
5

Introduccin: Tipos de software


Software de Sistemas
Es una coleccin de programas escritos para servir a
otros programas (compiladores, editores, y utileras para
la administracin de archivos)

Software de Aplicacin
Consiste en programas independientes que resuelven
una necesidad de negocios especfica (adems del
procesamiento de datos convencional, se utiliza para
controlar las funciones de los negocios en tiempo real)

Introduccin: Tipos de software


Software cientfico y de ingeniera
Se caracterizaba por algoritmos devoradores de
nmeros, abarca desde la astronoma hasta la
vulcanologa, desde del anlisis de la tensin automotriz
hasta la dinmica orbital de los transbordadores
espaciales, etc..

Software emportado
Reside dentro de la memoria de slo lectura del sistema
y con l se implementan y controlan caractersticas y
funciones para el usuario final y el sistema mismo
(control de combustible, teclado de microondas,
sistemas de frenado, etc..)
7

Introduccin: Tipos de software


Software de lnea de productos
Diseado para proporcionar una capacidad especfica y la
utilizacin de muchos clientes diferentes, se puede enfocar en un
nicho de mercado limitado (productos para el control de inventarios)
o masivo (multimedia, manejo de bases de datos, etc..)

Aplicaciones basadas en Web


Las WebApps, evolucionan hacia ambientes computacionales
sofisticados que no slo proporcionan caractersticas , funciones de
cmputo y contenido independientes al usuario final, sino que estn
integradas a bases de datos corporativas y aplicaciones de
negocios.
8

Introduccin: Tipos de software


Software de inteligencia artificial
Utiliza algoritmos no numricos en la resolucin de
problemas complejos que es imposible abordar por
medio de un anlisis directo. Sus aplicaciones incluyen
la robtica, los sistemas expertos, redes neuronales
artificiales, la comprobacin de teoremas y los juegos de
computadora.

Computacin Ubicua
El crecimiento rpido de las redes inalmbricas podra
conducir pronto a la verdadera computacin distribuida.
9

Introduccin: Tipos de software


Alimentacin de la red
La World Wide Web se convierte con rapidez en un distribuidor
computacional, as como en un proveedor de contenido.

Fuente Abierta
Existe la tendencia creciente que impulsa la distribucin del cdigo
fuente para aplicaciones de sistemas, de forma que los clientes
hagan modificaciones locales.

La nueva economa
El reto para los ingenieros de software es construir aplicaciones que
faciliten la comunicacin y la distribucin de productos en masa
mediante productos en formacin
10

1.1 Evolucin histrica de la ingeniera de


software
La Ingeniera de Software es relativamente
nueva ya que aparece a finales de los aos
sesenta y principios de los setenta, comenzando
con las Tcnicas de Programacin Estructurada,
incorporndolas a las fases del ciclo vital de
software.

11

1.1 Evolucin histrica de la ingeniera de software:

Significados

Orgenes
La Ingeniera del Software, trmino utilizado por
primera vez por Fritz Bauer en la primera
conferencia sobre desarrollo de software
patrocinada por el Comit de Ciencia de la
OTAN celebrada en Garmish, Alemania, en
octubre de 1968, puede definirse segn Alan
Davis como "la aplicacin inteligente de
principios probados, tcnicas, lenguajes y
herramientas para la creacin y mantenimiento,
dentro de un coste razonable, de software que
satisfaga las necesidades de los usuarios"...
12

1.1 Evolucin histrica de la ingeniera de


software
La ingeniera de software en nuestros das

Econmicamente
En los EEUU, el software contribuy a 1/4 de todo el
incremento del PIB durante los 90's (alrededor de
90,000 millones de dlares por ao), y 1/6 de todo el
crecimiento de productividad durante los ltimos aos de
la dcada (alrededor de 33,000 millones de dlares por
ao). La ingeniera de software contribuy a $1 billn de
crecimiento econmico y productividad en esa dcada.
Alrededor del globo, el software contribuye al
crecimiento econmico en formas similares, aunque es
difcil de encontrar estadsticas fiables.
13

1.1 Evolucin histrica de la ingeniera de


software
La ingeniera de software en nuestros das

Socialmente
La ingeniera de software cambia la cultura del mundo
debido al extendido uso de la computadora. El correo
electrnico (E-mail), la WWW y la mensajera
instantnea permiten a la gente interactuar en nuevas
formas. El software baja el costo y mejora la calidad de
los servicios de salud, los departamentos de bomberos,
las dependencias gubernamentales y otros servicios
sociales. Los proyectos exitosos donde se han usado
mtodos de ingeniera de software incluyen a Linux, el
software del transbordador espacial, los cajeros
automticos y muchos otros.
14

1.1 Evolucin histrica de la ingeniera de


software

La Ingeniera de software es la rama de


la ingeniera que crea y mantiene las
aplicaciones de software aplicando
tecnologas y prcticas de las ciencias
computacionales, manejo de proyectos,
ingeniera, el mbito de la aplicacin, y
otros campos
15

1.1 Evolucin histrica de la ingeniera de software:

Significados
Como el trmino usual contemporneo de un amplio
rango de actividades que se sola llamar programacin y
anlisis de sistemas;
Como un trmino amplio de todos los aspectos de la
prctica de la programacin de computadoras, en
oposicin a la teora, que es llamada ciencia
computacional o computacin;
La ingeniera de software es "(1) la aplicacin de un
mtodo sistemtico, disciplinado y cuantificable al
desarrollo, operacin y mantenimiento de software, esto
es, la aplicacin de la ingeniera al software" y "(2) el
estudio de los mtodos de (1)", estndar IEEE 610.12.
16

1.1 Evolucin histrica de la ingeniera de software:

Significados
Como el trmino usual contemporneo de un amplio
rango de actividades que se sola llamar programacin y
anlisis de sistemas;
Como un trmino amplio de todos los aspectos de la
prctica de la programacin de computadoras, en
oposicin a la teora, que es llamada ciencia
computacional o computacin;
La ingeniera de software es "(1) la aplicacin de un
mtodo sistemtico, disciplinado y cuantificable al
desarrollo, operacin y mantenimiento de software, esto
es, la aplicacin de la ingeniera al software" y "(2) el
estudio de los mtodos de (1)", estndar IEEE 610.12
17

1.1 Evolucin histrica de la ingeniera de


software
La Programacin Estructurada fue seguida por
otros mtodos estructurados de anlisis y
tambin mtodos estructurados de diseo.
Adems, comenzaron a usarse tecnologas
orientadas a objetos.
En un principio la programacin era la tarea de
oro de la Ingeniera de Software pero ahora la
ingeniera y el diseo de requisitos son ms
importantes.
18

1.1 Evolucin histrica de la ingeniera de


software
En los aos noventa la gerencia de proyecto
gan inters y lleg a ser un componente
importante en la Ingeniera de Software.
En la dcada pasada, los estndares de la
Ingeniera de Software y la madurez de proceso
han caracterizado la industria del software como
una disciplina madura.

19

1.1 Evolucin histrica de la ingeniera de


software
En un nivel ms tcnico, la Ingeniera de Software
comienza con una serie de tareas que hacen modelos y
que resultan en una especificacin completa de
requisitos y una representacin comprensiva de diseo
del software que ser construido.
Se han desarrollado muchos mtodos para hacer
modelos de sistemas de informacin. Sin embargo, los
mtodos Orientados a Objeto (OO) van a llegar a ser el
estndar.

20

1.1 Evolucin histrica de la ingeniera de


software
Para ciertos sistemas de informacin crticos, el
uso de mtodos formales es recomendado en el
ciclo de vida del software, para producir
sistemas con la integridad ms alta.
Los mtodos formales confan en las tcnicas
matemticas que expresan y modelan los
requisitos de cualquier producto en el ciclo vital
del software.

21

1.1 Evolucin histrica de la ingeniera de


software

El Desarrollo de Software Orientado a


Objetos comenz en los aos ochenta
como una etapa natural de los mtodos
estructurados.
UML (Unified Modeling Language) ha
emergido como una unificacin de los
diversos mtodos orientados a objetos y
se est convirtiendo en un estndar.
22

1.1 Evolucin histrica de la ingeniera de


software
Actualmente, la tecnologa de componente es un
mtodo para desarrollar sistemas de informacin que
est creciendo.
A diferencia de los mtodos tradicionales, la tecnologa
de componente los ensambla para formar una solucin
de software.
Actualmente, hay dos estndares de componentes en
competencia: JavaBeans por Sun y DCOM por
Microsoft. Los componentes de software son materiales
reusables para construir sistemas de software.

23

1.1 Evolucin histrica de la ingeniera de


software

La tecnologa Component-Base (Basada


en Componentes) es un mtodo poderoso
para la empresa de la ingeniera de
sistemas de informacin porque es una
tecnologa que est reduciendo el
conflicto
entre
sistemas
de
alta
complejidad y de la bsqueda para la alta
calidad y la productividad.
24

1.1 Evolucin histrica de la ingeniera de


software
En la Direccin de Sistemas se desarrolla Ingeniera de
Software
mediante
la
deteccin,
evaluacin,
construccin y asesora de sistemas de informacin y
servicios de red,
promoviendo adems, una alta participacin del cliente y
usuario para lograr la ms alta calidad de nuestros
servicios, contribuyendo as al mejoramiento informtico
de las organizaciones, a travs de la utilizacin de
herramientas con tendencia tecnolgica estratgica para
el desarrollo de la informtica en el pas.

25

El software como producto y proceso


Cuando se presta un servicio o se crea un
producto, ya sea el desarrollo de software,
la preparacin de un informe escrito o al
realizar un viaje de negocios, siempre se
sigue una secuencia de pasos para lograr
una serie de tareas. Las tareas se
realizan por lo general en el mismo orden
todas las veces.
26

El software como producto y proceso


Un
proceso
es
un
conjunto
de
procedimientos organizado de tal modo
que los productos se construyen para
satisfacer un conjunto de metas o
estndares. De hecho, el proceso puede
sugerir que se seleccione entre varios
procedimientos, con tal de que se cumpla
la meta propuesta.
27

El software como producto y proceso

Podemos pensar al conjunto de tareas


como un proceso; una serie de pasos
que
involucran
actividades,
restricciones
y
recursos
que
producen una determinada salida de
esperada.
Un proceso por lo comn, involucra un
conjunto de herramientas y tcnicas.
28

El software como producto y proceso


Cualquier proceso tiene las siguientes caractersticas:

El proceso establece a todas las principales actividades del proceso


El proceso utiliza recursos, est sujeto a una serie de restricciones (tal
como un calendario) y genera productos intermedios y finales.
El proceso puede estar compuesto por subprocesos que se encadenan de
alguna manera. El proceso puede definirse como una jerarqua de procesos
organizada de modo que cada subproceso tenga su propio modelo de
proceso.
Cada actividad del proceso tiene criterios de entrada y de salida, de modo
que se conoce cundo comienza y cundo termina una actividad.
Las actividades se organizan en una secuencia de modo que resulta claro
cuando una actividad se realiza en orden relativo a otras actividades.
Todo proceso tiene un conjunto de principios orientadores que explican las
metas de cada actividad.
Las restricciones o controles pueden ser de aplicacin a una actividad,
recurso o producto. Por ejemplo, el presupuesto o la agenda pueden
restringir la extensin del tiempo que puede tomar una actividad, o una
actividad, o una herramienta puede limitar la manera en que puede
utilizarse un recurso.
29

El software como producto y proceso


El desarrollo del software involucra las siguientes etapas:

Anlisis y definicin de los requerimientos


Diseo del sistema
Diseo de programas
Escritura de los programas (implementacin de programas)
Prueba unitaria
Pruebas de integracin prueba de sistema
Entrega del sistema
Mantenimiento.

Cada etapa es en s misma un proceso ( o una coleccin de procesos)


que puede ser descrito como un conjunto de actividades. Y cada
actividad comprende restricciones, salidas y recursos.
30

El software como producto y proceso

Herramientas

Mtodos

Proceso

Un enfoque de calidad

La ingeniera de software es una tecnologa estratificada, como se


muestra en la figura, cualquier enfoque de ingeniera debe estar
sustentado en la calidad. (gestin de calidad total, Seis Sigma y
enfoques similares)

31

El software como producto y proceso

La base de la ingeniera de software es el


estrato del proceso. El proceso de la
ingeniera de software es el elemento que
mantiene juntos los estratos de la
tecnologa y que permite el desarrollo
racional y a tiempo del software de
computadora
EL proceso define un marco de trabajo que
debe establecerse para la entrega efectiva
de la tecnologa de la ingeniera del
software.
32

El software como producto y proceso


Los mtodos de la ingeniera de software proporcionan los cmo
tcnicos para construir software. Los mtodos abarcan un amplio
espectro de tareas que incluyen la comunicacin el anlisis de
requisitos, el modelado de diseo, la construccin del programa la
realizacin de pruebas y soporte.
Las herramientas de ingeniera de software proporcionan el soporte
automatizado o semiautomatizado para el proceso y los mtodos.
Cuando las herramientas se integran de forma que la informacin
que cree una de ellas puede usarla otra, se dice que se ha
establecido un sistema para el soporte del desarrollo del software,
que con frecuencia se denomina ingeniera del software asistida por
computadora.

33

El software como producto y proceso


Marco del trabajo para el
proceso:

Un marco de trabajo establece la base para


un proceso de software completo al
identificar un nmero pequeo de
actividades del marco de trabajo
aplicables a todos los proyectos de
software, sin importar su tamao o
complejidad. Adems, el marco de trabajo
del proceso abarca un conjunto de
actividades sombrilla aplicables a lo largo
del proceso del software.
34

El software como producto y proceso Marco del trabajo para el


proceso:

Proceso del Software

Marco de trabajo del proceso


Actividades sombrilla

35

Actividades sombrilla

Actividad del marco de trabajo # 1


Accin de la ingeniera de software #1.1
Conjunto de
Tareas del trabajo
tareas
Productos del trabajo
.
Puntos de aseguramiento de la calidad
.
Fundamentos del proyecto
.
accin de la ingeniera de software #1.k
Conjunto de
tareas

Tareas del trabajo


Productos del trabajo
Puntos de aseguramiento de la calidad
Fundamentos del proyecto

Actividad del marco de trabajo # n


Accin de la ingeniera de software #n.1
Conjunto de
Tareas del trabajo
tareas
Productos del trabajo
.
Puntos de aseguramiento de la calidad
.
Fundamentos del proyecto
.
accin de la ingeniera de software #n.m
Conjunto de
tareas

Tareas del trabajo


Productos del trabajo
Puntos de aseguramiento de la calidad
Fundamentos del proyecto

36

El software como producto y proceso


El siguiente marco genrico del proceso se puede aplicar en la inmensa
mayora de los productos del software:
Comunicacin

Implica una intensa colaboracin y comunicacin con los


clientes; adems, abarca la investigacin de requisitos y otras
actividades relacionadas.

Planeacin

Establece un plan para el trabajo de la ingeniera del software.


Describe las tareas tcnicas que deben realizarse, los riesgos
probables, los recursos que sern requeridos, los productos
del trabajo que han de producirse y un programa de trabajo.

Modelado

Esta actividad abarca la creacin de modelos que permiten al


desarrollador y al cliente entender mejor los requisitos de
software y el diseo que lograra satisfacerlos.

Construccin Esta actividad combina la generacin del cdigo (ya sea


manual o automatizado) y la realizacin de pruebas
necesarias para descubrir errores en el cdigo.
Despliegue

El software (como una entidad completa o un incremento


completado de manera parcial) se entrega al cliente, quien
evala el producto recibido y proporciona informacin basada
37
en su evaluacin.

El software como producto y proceso


Evaluacin del proceso
La existencia de un proceso de software no es
garanta de que este ser entregado a tiempo,
de que satisfar las necesidades del cliente,
o de que mostrar las caractersticas
tcnicas que conducirn a caractersticas de
calidad a largo plazo.
Los
patrones
de
proceso
deben
ir
acompaados de una prctica slida de la
ingeniera de software
38

El software como producto y proceso


Evaluacin del proceso
Proceso del software

Identifica
modificaciones a

Es examinado por

Identifica capacidades y
riesgos de

Evaluacin del
proceso de software

Conduce a

Mejoramiento del
proceso de software

Conduce a

Motiva

Determinacin
de la calidad

39

El software como producto y proceso

Si el proceso es dbil, sin duda el


producto
final
sufrir
las
consecuencias.
Asimismo,
una
confianza excesiva en el proceso es
peligrosa

40

El software como producto y proceso


La gente obtiene tanta (o ms) satisfaccin
del proceso creativo que del producto final.
El trabajo que realiza la gente de software
cambiar en los aos que siguen. La
dualidad del producto y el proceso es un
elemento importante para mantener a la
gente creativa comprometida mientras
finaliza la transicin desde la programacin
hasta la ingeniera de software.

41

Factores humanos que intervienen en la ingeniera de


software
El mbito del software

Describe las funciones y caractersticas


que se entregarn a los usuarios finales,
los datos que son entrada y salida, el
contenido que se presenta a los usuarios
como consecuencia de emplear software,
as como el desempeo, las restricciones,
las interfaces y la confiabilidad que acotan
el sistema. El mbito se define al usar una
de las dos tcnicas siguientes:
42

Factores humanos que intervienen en la ingeniera de


software
El mbito del software

Despus de una comunicacin con todos


los participantes se desarrolla una
descripcin narrativa del mbito de
software.
Los usuarios finales desarrollan un
conjunto de casos de uso.

43

Factores humanos que intervienen en la ingeniera de


software
El mbito del software

Una vez identificado el mbito (con la


participacin del cliente) es razonable
preguntar:
Es posible construir software para
satisfacer este mbito?
El proyecto es factible?
Con mucha frecuencia los ingenieros de software soslayan estas preguntas (o gestores o
clientes impacientes presionan para hacerlo), solo para verse enredados en un proyecto
condenado al fracaso
44

Factores humanos que intervienen en la ingeniera de software

Recursos

La segunda tarea de la planificacin es la


estimacin de los recursos necesarios
para completar el esfuerzo de desarrollo
del software
La siguiente figura, muestra las tres grandes categoras de los recursos de ingeniera del
software: personal, componentes de software reutilizables y el entorno de desarrollo
(hardware y herramientas de software)

45

Factores humanos que intervienen en la ingeniera de software

Recursos
Herramientas
de software

Nmero
Habilidades

Hardware

Entorno

Personal
Ubicacin

Recursos
de red

Proyecto

Componentes
OTS

Software
reutilizable

Componentes de
Experiencia
completa

Nuevos
componentes

Componentes de
experiencia
parcial

Cada recurso se especifica con


cuatro caractersticas:
descripcin del recurso;
un informe de disponibilidad;
cuando se requerir el recurso;
tiempo durante el cual el
recurso se aplicar.
46

Factores humanos que intervienen en la ingeniera de software


Recursos Humanos

El planificador comienza evaluando el


mbito del software y seleccionando las
habilidades requeridas para completar el
desarrollo. Se especifican tanto la
posicin organizacional
Por ejemplo, telecomunicaciones, base de datos, cliente/servidor)

47

Factores humanos que intervienen en la ingeniera de software


Recursos Humanos

En proyectos relativamente pequeos (unos


pocos persona-meses) un solo individuo puede
realizar todas las tareas de ingeniera del
software y consultar con especialistas conforme
se requiera.
En proyectos mayores el equipo de software
puede estar geogrficamente disperso en varios
sitios. Aqu se especifica la ubicacin de cada
recurso humano
48

Factores humanos que intervienen en la ingeniera de software


Recursos de software reutilizables

La ingeniera de software basada en


componentes enfatiza la reutilizacin; es
decir, la creacin y reutilizacin de
bloques de construccin de software.
Tales bloques, deben catalogarse para
consultarlos con facilidad, estandarizarse
para facilitar su aplicacin y validarse para
integrarlos fcilmente
49

Factores humanos que intervienen en la ingeniera de software

Componentes ya desarrollados

El software existente se puede adquirir de un


tercero o se desarrollo internamente en un
recurso previo.
Componentes experimentados

Especificaciones, diseos, cdigo o datos de


prueba existentes que se desarrollaron para
proyectos previos son similares al software que
se construir para el proyecto actual.
50

Factores humanos que intervienen en la ingeniera de software

Componentes de experiencia parcial


Especificaciones, diseos, cdigo o datos de prueba existentes que
se desarrollaron para proyectos previos estn relacionados con el
software que se construir para el proyecto actual pero requerirn
modificaciones sustanciales

Componentes experimentados

El equipo de software debe construir los


componentes de software especficamente para
las necesidades del proyecto actual

51

Factores humanos que intervienen en la ingeniera de software


Recursos del entorno

El entorno que soporta un proyecto de


software, con frecuencia denominado
entorno de ingeniera del software (EIS),
incorpora hardware y software.
El hardware proporciona una plataforma
que soporta las herramientas (software)
con que se producen los productos de
trabajo basados en una buena prctica de
la ingeniera de software.
52

1.4 El ciclo de vida de desarrollo de sistemas.


Como se vio en el software como producto y proceso el desarrollo del
software involucra las siguientes etapas:

Anlisis y definicin de los requerimientos


Diseo del sistema
Diseo de programas
Escritura de los programas (implementacin
programas)
Prueba unitaria
Pruebas de integracin prueba de sistema
Entrega del sistema
Mantenimiento.

de

53

1.4 El ciclo de vida de desarrollo de sistemas.


La construccin de un modelo de proceso y la discusin de los subprocesos
ayuda al equipo a entender la brecha entre lo que debe ser y lo que es.
Existen varias razones para el modelado de un proceso:
Cuando un grupo pone por escrito una descripcin de su
proceso de desarrollo, da forma a una comprensin comn
de actividades, recursos y restricciones comprometidas con
el desarrollo del software.
La creacin de un modelo de proceso ayuda al equipo de
desarrollo a encontrar las inconsistencias, las redundancias
y las omisiones en el proceso y en las partes que lo
constituyen.
El modelo debe reflejar las metas de desarrollo, como la
construccin de software de alta calidad, la localizacin
temprana de los defectos en el desarrollo y el cumplimiento
de las restricciones del cronograma y del presupuesto.
54

1.4 El ciclo de vida de desarrollo de sistemas.

Todo proceso debe adaptarse a la situacin en


que ser utilizado. La construccin de un modelo
del proceso ayuda al equipo de desarrollo a
comprender dnde debe hacerse la adaptacin.
Todo modelo del proceso de desarrollo del
software incluye los requerimientos del sistema
como entrada y un producto entregado como
salida.

55

1.4 El ciclo de vida de desarrollo de sistemas.


Modelo en Cascada
En este modelo las etapas se representan cayendo en cascada,
desde una etapa hacia la siguiente, como se observa una etapa de
desarrollo debe completarse antes de dar comienzo a la siguiente.
Anlisis de
requerimientos
Diseo del
sistema
Diseo del
programa
Codificacin
Pruebas Unitarias
Y de integracin
Prueba
del sistema
Prueba
de aceptacin
Operacin y
mantenimiento

56

1.4 El ciclo de vida de desarrollo de sistemas.

El modelo en cascada puede ser muy til,


ayudando a los desarrolladores a diagramar lo que
necesitan hacer. Su simplicidad hace que sea fcil
explicarlo a los clientes que no estn familiarizados
con el desarrollo de software: es ms explicito en
los productos intermedios que son necesarios a fin
de comenzar la siguiente etapa de desarrollo

57

1.4 El ciclo de vida de desarrollo de sistemas.


El mayor problema con el modelo en cascada es que no refleja la manera en que
realmente se hace el desarrollo del cdigo. Excepto para los problemas
perfectamente comprendidos, el software se desarrolla normalmente con un alto
grado de repeticin. De esta manera, si no se controlara el proceso real del
software, este se vera como el de la figura.
Anlisis de
requerimientos
Diseo del
sistema

Operacin y
mantenimiento

Diseo del
programa

Prueba
de aceptacin
Prueba
del sistema

Codificacin
Pruebas Unitarias
Y de integracin

58

1.4 El ciclo de vida de desarrollo de sistemas.


El proceso de desarrollo del software puede ayudar
a controlar los saltos de una tarea a otra
incorporando actividades y subprocesos que
refuercen la comprensin. El prototipado es un
subproceso:
Prototipo: es un producto parcialmente desarrollado
que permite que clientes y desarrolladores
examinen algunos aspectos del sistema propuesto
y decidan si este es adecuado o correcto para el
producto terminado.
59

1.4 El ciclo de vida de desarrollo de sistemas.


Anlisis de
requerimientos

Validar

Diseo del
sistema
Diseo del
programa

Verificar

Codificacin

Prototipado

Pruebas Unitarias
Y de integracin
Prueba
del sistema
Prueba
de aceptacin
Operacin y
mantenimiento
60

1.4 El ciclo de vida de desarrollo de sistemas.


La interfaz de usuario se construye y se prueba como un prototipo,
de modo que los usuarios comprendan qu aspecto tendr el nuevo
sistema y los diseadores se orientan correctamente sobre la forma
en que el usuario quiere interactuar con el sistema

Validacin. Asegura que el sistema implantado todos los


requerimientos, de tal modo que cada funcin del sistema
puede ser rastreada hacia atrs hasta un requerimiento
particular en la especificacin.

Verificacin. Asegura que cada funcin trabaja correctamente;


asegura que el desarrollador est construyendo el producto
correcto y la verificacin comprueba la calidad de la
implementacin.
61

1.4 El ciclo de vida de desarrollo de sistemas.


El modelo V
Es una variacin del modelo en cascada que demuestra cmo se
relacionan las actividades de prueba con las de anlisis y diseo.

La codificacin forma la punta de la V , con el anlisis y el diseo a la


izquierda y la prueba y el mantenimiento a la derecha.
La prueba unitaria y de integracin se ocupan de la exactitud de los
programas .
La vinculacin entre los lados derecho e izquierdo del modelo V
implica que, si se encuentran problemas durante la verificacin y la
validacin, entonces el lado izquierdo de la V puede ser ejecutado
nuevamente, para solucionar el problema y mejorar los
requerimientos, el diseo y el cdigo antes de retomar los pasos de
prueba sobre el lado derecho.
62

1.4 El ciclo de vida de desarrollo de sistemas.

Operacin y
mantenimiento
Validar los requerimientos

Anlisis de
requerimientos

Prueba
de aceptacin

Diseo del
sistema

Verificar el diseo

Prueba
del sistema
Pruebas Unitarias
Y de integracin

Diseo del
programa

Codificacin
63

1.4 El ciclo de vida de desarrollo de sistemas.


Modelo de Prototipos
El modelo de prototipo permite que todo el
sistema , o algunas de sus partes se
construyan rpidamente para comprender o
aclarar aspectos , tiene el mismo objetivo que
un prototipo de ingeniera , donde los
requerimientos o el diseo requieren la
investigacin repetida para asegurar que el
desarrollador, el usuario y el cliente tengan una
comprensin tanto de lo que se necesita como
de lo que se propone como solucin
64

1.4 El ciclo de vida de desarrollo de sistemas.

LISTA DE
REVISIONES

Revisar
prototipo

LISTA DE
REVISIONES

LISTA DE
REVISIONES

PROTOTIPAR
EL DISEO

PROTOTIPAR
EL SISTEMA

Revisin del
usuario/cliente

PROTOTIPAR LOS
REQUERIMIENTOS

REQUERIMIENTOS
DEL SISTEMA
(a veces informal
o incompleto)

PROBAR

SISTEMA
ENTREGADO

65

1.5 El mbito de la ingeniera de software.


Que es un proyecto de Sistema o Software?
Es el Proceso de gestin para la creacin de un Sistema o software, la cual encierra un
conjunto de actividades, una de las cuales es la estimacin, estimar es echar un vistazo al
futuro y aceptamos resignados cierto grado de incertidumbre.
Aunque la estimacin, es mas un arte que una Ciencia, es una actividad importante que
no debe llevarse a cabo de forma descuidada. Existen tcnicas tiles para la estimacin
de costes de tiempo. Y dado que la estimacin es la base de todas las dems actividades
de planificacin del proyecto y sirve como gua para una buena Ingeniera Sistemas y
Software
Al estimar tomamos en cuenta no solo del procedimiento tcnico a utilizar en el
proyecto, sino que se toma en cuenta los recursos, costos y planificacin.
El Tamao del proyecto es otro factor importante que puede afectar la precisin de las
estimaciones. A medida que el tamao aumenta, crece rpidamente la interdependencia
entre varios elementos del Software.

66

Objetivos de la Planificacin del Proyecto

El objetivo de la Planificacin del proyecto de


Software es proporcionar un marco de trabajo que
permita al gestor hacer estimaciones razonables de
recursos costos y planificacin temporal.
Estas estimaciones se hacen dentro de un marco de
tiempo limitado al comienzo de un proyecto de
software, y deberan actualizarse regularmente medida
que progresa el proyecto.
Adems las estimaciones deberan definir los
escenarios del mejor caso, y peor caso, de modo que
los resultados del proyecto pueden limitarse.

67

Actividades asociadas al proyecto de software.


mbito del Software
Es la primera actividad llevada a cabo durante la planificacin del proyecto
de Software.
En esta etapa se deben evaluar la funcin y el rendimiento que se
asignaron al Software durante la Ingeniera del Sistema de Computadora
para establecer un mbito de proyecto que no sea ambiguo, e
incomprensible para directivos y tcnicos
Describe la funcin, el rendimiento, las restricciones, las interfaces y la
fiabilidad, se evalan las funciones del mbito y en algunos casos se
refinan para dar mas detalles antes del comienzo de la estimacin.

68

Las restricciones de rendimiento abarcan los requisitos de tiempo de


respuesta y procesamiento, identifican los limites del software
originados por el hardware externo, por la memoria disponible y por
otros sistemas existentes.

El mbito se define como un pre-requisito para la estimacin y existen


algunos elementos que se debe tomar en cuenta como es:
La Obtencin de la Informacin necesaria para el software. Para
esto el analista y el cliente se renen sobre las expectativas del
proyecto y se ponen de acuerdo en los puntos de inters para su
desarrollo.

69

Recursos de entorno.

El entorno es donde se apoya el proyecto de Software, llamado a


menudo entorno de Ingeniera de Software, incorpora Hardware y
Software.
El Hardware proporciona una plataforma con las herramientas
(Software) requeridas para producir los productos que son el resultado
de la buena practica de la Ingeniera del Software, un planificador de
proyectos debe determinar la ventana temporal requerida para el
Hardware y el Software, y verificar que estos recursos estn
disponibles.
Muchas veces el desarrollo de las pruebas de validacin de un
proyecto de software para la composicin automatizada puede
necesitar un compositor de fotografas en algn punto durante el
desarrollo.
Cada elemento de hardware debe ser especificado por el planificador
del Proyecto de Software.
70

Estimacin del proyecto de Software.

En el principio el costo del Software constitua un pequeo porcentaje


del costo total de los sistemas basados en Computadoras. Hoy en da
el Software es el elemento ms caro de la mayora de los sistemas
informticos.

Para realizar estimaciones seguras de costos y esfuerzos tienen varias


opciones posibles:
Base las estimaciones en proyectos similares ya terminados.
Utilice tcnicas de descomposicin relativamente sencillas para generar
las estimaciones de costos y esfuerzo del proyecto.
Desarrolle un modelo emprico para l calculo de costos y esfuerzos del
Software.

71

La primera opcin, aunque atractiva no es practica.

La Segunda opcin puede funcionar razonablemente bien si el proyecto


actual es bastante similar a los esfuerzos pasados y si otras influencias del
proyecto son similares.
Las opciones restantes son mtodos viables para la estimacin del
proyecto de software.
Desde el punto de vista ideal, se deben aplicar conjuntamente las tcnicas
indicadas usando cada una de ellas como comprobacin de las otras.

72

Estimacin basada en el Proceso

Es la tcnica ms comn para estimar un proyecto es basar la estimacin


en el proceso que se va a utilizar, es decir, el proceso se descompone en
un conjunto relativamente pequeo de actividades o tareas, y en el
esfuerzo requerido para llevar a cabo la estimacin de cada tarea.

Al igual que las tcnicas basadas en problemas, la estimacin basada en


el proceso comienza en una delineacin de las funciones del software
obtenidas a partir del mbito del proyecto.
Se mezclan las funciones del problema y las actividades del proceso.
Como ultimo paso se calculan los costos y el esfuerzo de cada funcin y
la actividad del proceso de software

73

Diferentes modelos de estimacin

1 Los Modelos Empricos:


Donde los datos que soportan la mayora de los
modelos de estimacin obtienen una muestra limitada
de proyectos.
Por esta razn, el modelo de estimacin no es
adecuado para todas las clases de software y en
todos los entornos de desarrollo.
Por lo tanto los resultados obtenidos de dichos
modelos se deben utilizar con prudencia.
74

El Modelo COCOMO.

Barry Boehm, en su libro clsico sobre


economa de la Ingeniera del Software,
introduce una jerarqua de modelos de
estimacin de Software con el nombre de
COCOMO, por su nombre en Ingles
(Constructive, Cost, Model) modelo constructivo
de costos.
La jerarqua de modelos de Boehm esta
constituida por los siguientes:
75

Modelo I. El Modelo COCOMO bsico calcula el esfuerzo y el


costo del desarrollo de Software en funcin del tamao del
programa, expresado en las lneas estimadas.
Modelo II. El Modelo COCOMO intermedio calcula el esfuerzo del
desarrollo de software en funcin del tamao del programa y de
un conjunto de conductores de costos que incluyen la evaluacin
subjetiva del producto, del hardware, del personal y de los
atributos del proyecto.
Modelo III. El modelo COCOMO avanzado incorpora todas las
caractersticas de la versin intermedia y lleva a cabo una
evaluacin del impacto de los conductores de costos en cada
caso (anlisis, diseo, etc.) del proceso de ingeniera de Software.

76

Herramientas Automticas De Estimacin.

Las herramientas automticas de estimacin permiten al


planificador estimar costos y esfuerzos, as como llevar a
cabo anlisis del tipo, que pasa si, con importantes
variables del proyecto, tales como la fecha de entrega o
la seleccin del personal.
Aunque existen muchas herramientas automticas de
estimacin, todas exhiben las mismas caractersticas
generales y todas requieren de una o ms clases de
datos.

77

A partir de estos datos, el modelo implementado por la herramienta


automtica de estimacin proporciona estimaciones del esfuerzo
requerido para llevar a cabo el proyecto, los costos, la carga de
personal, la duracin, y en algunos casos la planificacin temporal
de desarrollo y riesgos asociados.
En resumen el planificador del Proyecto de Software tiene que
estimar tres cosas antes de que comience el proyecto:
cuanto durara,
cuanto esfuerzo requerir y
cuanta gente estar implicada.

Adems el planificador debe predecir los recursos de hardware y


software que va a requerir y el riesgo implicado.
78