You are on page 1of 80

Prof.

Yaskelly Yedra

Unidad I. Conceptos Bsicos

I-2012

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Definicin de la Ingeniera de Software


reas de conocimiento
Lneas de investigacin en IS
Disciplinas relacionadas
Evolucin de la Ingeniera de Software
Problemtica del desarrollo de software
Principios en la IS
Software de calidad
Actividades en proceso de DS

Que es la IS ?
Ingeniera del SW: rea de la Ciencia de la
Computacin, que ofrece Mtodos y
Tcnicas para DS, estudia el conjunto de
actividades relacionadas con el ciclo de
desarrollo de SW, en particular se enfoca en
SW de Calidad.

Que es la IS ?
La aplicacin de un enfoque sistemtico,
disciplinado y cuantificable del desarrollo,
la operacin y el mantenimiento del
software; esto es, la aplicacin de la
ingeniera al software.
IEEE Std 610-1990

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Definicin de la Ingeniera de Software


reas de conocimiento
Lneas de investigacin en IS
Disciplinas relacionadas
Evolucin de la Ingeniera de Software
Problemtica del desarrollo de software
Principios en la IS
Software de calidad
Actividades en proceso de DS

reas de conocimiento

Requisitos
Diseo
Construccin
Pruebas
Mantenimiento
Gestin de la Configuracin
Gestin de la Ingeniera Soft.
Procesos
Herramientas y Mtodos
Calidad

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Definicin de la Ingeniera de Software


reas de conocimiento
Lneas de investigacin en IS
Disciplinas relacionadas
Evolucin de la Ingeniera de Software
Problemtica del desarrollo de software
Principios en la IS
Software de calidad
Actividades en proceso de DS

Lneas de investigacin
Metodologa orientado a objeto de
desarrollo de software
Modelos, Mtodos, Tcnicas y
Herramientas de desarrollo de software.
Sistemas de reescritura.
Interacin Humano - Computador
Patrones de diseo
Programacin orientada a aspectos

Lneas de investigacin

Componentes y reutilizacin de software


Construccin de compiladores
Mtricas de IS
Desarrollo de aplicaciones basadas en Internet
Arquitectura de software
Calidad de software
Inteligencia artificial aplicada
Ingeniera orientada a modelos
Otras
Ingeniera orientada a aspectos
Ingeniera orientada a componentes

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Definicin de la Ingeniera de Software


reas de conocimiento
Lneas de investigacin en IS
Disciplinas relacionadas
Evolucin de la Ingeniera de Software
Problemtica del desarrollo de software
Principios en la IS
Software de calidad
Actividades en proceso de DS

Disciplinas relacionadas

Ingeniera de Computadores
Ciencia de la Computacin
Gestin
Matemticas
Gestin de Proyectos
Gestin de la Calidad
Ergonoma del Software
Ingeniera de Sistemas
Sistemas de Informacin

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Definicin de la Ingeniera de Software


reas de conocimiento
Lneas de investigacin en IS
Disciplinas relacionadas
Evolucin de la Ingeniera de Software
Problemtica del desarrollo de software
Principios en la IS
Software de calidad
Actividades en proceso de DS

Hardware: mainframes, cintas magnticas.


Costos altos
Lenguajes: ensambladores, Fortran
Primeros compiladores (segunda mitad)
Interfaces: Bach.

Desarrollo de software = desarrollo de


programas
Actividad individual
Desarrollador = usuario
Aplicaciones con distribucin reducida
Resolver problemas cientficos y de ingeniera

...codificar y depurar...

Hardware: mainframes comerciales,


almacenamiento en discos magnticos,
minicomputadores. Costos altos
Programacin orientada a funcin
Sistemas operativos multiprogramacin
Lenguajes: Cobol, PL/I, Simula 67
Interfaces: Bach.

Actividad de grupo
Desarrollo de software para mercadeo
Resolver problemas complejos en diferentes
dominios, adems de cientficos y de
ingeniera
Programacin orientada a funcin.

Hardware: mainframes, minicomputadores,


microcomputadores, surgen los PC
Lenguajes: COBOL, PL/I, Pascal, Prolog
Mtodos: programacin
estructurada,refinamiento paso a paso,
semnticas formales
Computacin distribuida, Interfaces basadas
en Lenguajes de Comando.

Desarrollo de la tecnologa
Actividad de grupo

Desarrollo de software para mercadeo

Diversidad del dominio de aplicaciones


Programacin orientada a mdulos
Modelo de cascada .

Hardware:
computadores
personales, primeras
estaciones de trabajo,
redes locales
Lenguajes: C, Ada
Paradigma de
programacin:
programacin
estructurada, modular,
tipos de datos
abstractos
Herramientas
interactivas, interfaces
grficas (GUI)

Hardware: Aumento
considerable de la venta y
uso de computadores
personales, estaciones de
trabajo, redes locales y
globales, Internet,
arquitecturas avanzadas
Lenguajes: C++, Standard ML
Paradigma de
programacin: irrumpe la
programacin OO
Computacin clienteservidor
19

El usuario se incorpora al proceso de


desarrollo de software
Relevancia de las interfaces de usuario
Aumento exponencial del nmero y tipo de
usuarios
Demanda creciente de aplicaciones
Resolver problemas en todos los dominios
Inicio de las aplicaciones basadas en la
tecnologa Internet .

Hardware: masificacin del uso de los


computadores personales, arquitecturas
paralelas, multimedia
Redes de computadoras (LAN, WAN..)
Lenguajes: Orientados a objetos, paralelos,
visuales, de scripting (Java, VisualC++, HTML,..)
Paradigma de programacin: OO, patrones y
framework
Crecimiento de Internet y el Web .

Los productos se insertan en la globalizacin


El ciberespacio introduce nuevos tipos de
aplicaciones: comercio electrnico, educacin
a distancia,...
Ambientes colaborativos
El Web como infraestructura de las
aplicaciones corporativas (Intranets) .

Hardware: dispositivos moviles, computacin


ubicua
Redes de computadoras (inalambricas..)
Paradigma de programacin: modelos
basados en componentes
Crecimiento de Internet y la Web .

Programacin orientada a aspectos


Ingenieria orientada a modelos
Arquitecturas orientadas a modelos

Resumen

un poco de historia
primeras dcadas:

desarrollar el hardware

reducir costes de procesamiento y almacenamiento

dcada de los ochenta:

desarrollo de la microelectrnica

mayor potencia de clculo y reduccin de costes

objetivo actual: mejorar la calidad de las soluciones software.


1959 - 1965
Orientacin
por lotes
Distribucin
limitada
Software a
medida

1965 - 1975

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

1975 - 1989

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

AUMENTAN los problemas del desarrollo de software:


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

1989 -

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

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Definicin de la Ingeniera de Software


reas de conocimiento
Lneas de investigacin en IS
Disciplinas relacionadas
Evolucin de la Ingeniera de Software
Problemtica del desarrollo de software
Principios en la IS
Software de calidad
Actividades en proceso de DS

Desde la dcada 70

Crecimiento de la demanda de nuevos


productos
Incumplimiento en los tiempos de
entrega de los productos de software
Incumplimiento de los presupuestos
asignados a los proyectos
Falta de mtodos para la produccin de
software complejo

Desde la dcada 70

Dificultad y altos costos para el


mantenimiento del software existente
Carencia de buenas especificaciones
de requisitos
Los requisitos no son estables
El mercado cambia - constantemente.
La tecnologa cambia
Las metas de los usuarios cambian

Software libre

Tecnologas
Emergentes

Masificacin y variedad de los


microcomputadores y accesorios
Costos

Redes de
Computadores

Interfaces de usuario.
Tiempo de desarrollo

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Definicin de la Ingeniera de Software


reas de conocimiento
Lneas de investigacin en IS
Disciplinas relacionadas
Evolucin de la Ingeniera de Software
Problemtica del desarrollo de software
Principios en la IS
Software de calidad
Actividades en proceso de DS

Los principios forman la base de mtodos,


tcnicas, metodologas y herramientas
Seis principios que pueden ser usados en
todas las fases del desarrollo de software
Modularidad es el principio clave que
soporta el diseo del software

herramientas

Methodologies
metodologas
mtodos
y tcnicas
Principles
principios

1.
2.
3.
4.
5.
6.

Rigor y formalidad
Abstraccin
Modularidad
Anticipacin al cambio
Generalidad
Incrementalidad.

GHEZZI, C., JAZAYERI,


M., MANDRIOLI, D.
"Fundamentals of
Software Engineering".
Prentice-Hall
International Editions.
2da ed. Nov. 2002

Principios aplica al proceso y al producto

Significa ...
seguir procesos sistemticos y verificables
en el proceso de desarrollo de software

IMPLICACIONES:
La formalidad es la base de
automatizacin de procesos
Principio esencial para obtener
productos reusables

Producto
Analisis matemtico de correctitud de
programas
Test sistemtico y riguroso
Proceso
Rigurosa documentacin ayuda a la gestin
del proyecto y asegura los tiempos de
respuesta

Significa...

Aplicar un proceso mental o intelectual que


permite identificar lo relevante e ignorar los
detalles

IMPLICACIONES:
percepcin del qu/ cm o (la separacin de
intereses )
percepcin del todo/ partes (modularidad)

Cuando los requisitos son analizados se


produce un modelo de la aplicacion
propuesta
El modelo puede ser una descripcin
formal o informal
Es posible razonar acerca del sistema
razonando acerca del modelo

En procesos
Cuando realizamos estimacin de costos
solo tomamos en cuenta algunos factores
En producto
Los tipos de datos abstractos

Un sistema complejo puede ser


dividido en piezas ms simples
llamadas mdulos
Un sistema que est conformado por
mdulos se dice que es modular

permite:
descomponer en partes un sistema complejo
(descomposicin)

componer el sistema a partir de sus partes


(composicin)

Comprender el sistema y las partes


(comprensin)

Problema
Solucin. 1 solucin. 2

solucin. 3 solucin. 4

Solucin
Subprob. 1

Subprob. 2

Subprob. 3 Subprob. 4

Significa:
La capacidad de prever cmo y dnde
pueden ocurrir los cambios

La aplicacin de este principio


es altamente apreciado en la
etapa de mantenimiento
Es un principio relevante para el
desarrollo de componentes
reusables

Habilidad para soportar la evolucin del


software requiere anticipar posibles
cambios
Es la base para el software evolutivo

Significa:
buscar la solucin ms amplia
(que englobe los casos especficos)

Busca la solucin ms amplia


para problemas especficos
La solucin general puede
ser menos eficiente o ms
costosa
Principio importante para
desarrollar productos
reusables.

Significa:
Construccin del producto por
aproximaciones sucesivas y/o por
componentes (partes)
Desarrollo de prototipos para los
componentes crticos
til para desarrollo de
aplicaciones no precisas, donde
no estn bien definidos los
requisitos.

Ejemplos
Liberar subconjuntos de un sistema
muy tempranamente para encontar el
feedback del usuario, y luego agregar
incrementalmente nuevas
caractersticas
Liberar un primer prototipo e
incrementalmente ir transformando el
prototipo en el producto.

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Definicin de la Ingeniera de Software


reas de conocimiento
Lneas de investigacin en IS
Disciplinas relacionadas
Evolucin de la Ingeniera de Software
Problemtica del desarrollo de software
Principios en la IS
Software de calidad
Actividades en proceso de DS

Mediante un proceso ....


Soportado por un mtodo riguroso,
sistemtico
basado en principios reconocidos
con actividades que se estructuren de
acuerdo a un modelo
facilitado por el uso de herramientas.

El software es construido para cumplir


ciertas funcionalidades y satisfacer ciertas
cualidades
El proceso de construccin de software
debe tambin cumplir ciertas cualidades.
Cualidades de software son a menudo
referidas como requisitos no funcionales
(en realidad es un subconjunto de este tipo
de requisitos).

Internas vs. externas

Externas visibles al usuario


Internas concernientes a los desarrolladores

Producto vs. procesos

Nuestro objetivo es desarrollar productos de


software
El proceso se refiere a como lo hacemos

Cualidades internas afectan las cualidades


externas
La calidad del proceso afecta la calidad del
producto.

Cules son las caractersticas que


deseamos al elaborar un software?

Caractersticas de Calidad de
software (Normas ISO 9126) :

Centro ISYS. Esc. Computacin. UCV/2005

53

Caractersticas
(ISO 9126)

Subcaractersticas

Funcionalidad

Adecuacidad (Suitability),
exactitud/precisin ( Accurateness),
Interoperabilidad, (Conformidad Compliance )
Seguridad

Confiabilidad

Madurez, Tolerancia a Falla, Recuperabilidad

Usabilidad

comprensibilidad (Understandability ),
aprendizaje (Learnability ),
Operabilidad

Eficiencia

Rendimiento en tiempo,
rendimiento de Recurso.

Mantenibilidad

Analizabilidad, Modificabilidad, Estabilidad, Testability


(Prueba)

Portabilidad

Adaptabilidad, Instalabilidad, Conformidad a estndares,


Reemplazabilidad/Substituibilidad

Correcto
Se comporta acorde a su especificacin

Confiable
Se comporta de acuerdo a lo esperado por
el usuario

Robusto
Se comporta razonablemente an en
cirscunstancias no contempladas
(tolerante a fallas).

construcciones correctas
si ellas satisfacen las
especificaciones
en un movimiento
ssmico unas colapsan
(no son robustas)
otras construcciones sufren
pequeos daos tolerables o
previsibles
(son confiables).

Software es correcto si satisface las


especificaciones de requisitos funcionales
(asumiendo que las especificaciones ...)

Si las especificaciones son formales la


correctitud puede ser probada

Informalmente, el usuario confa en el producto


Si las especificaciones son correctas, todo
software correcto es confiable. Pero no a la
inversa (en la practica, pueden haber
especificaciones incorrectas....)
ISO 9127: Confiabilidad: se refiere a la capacidad
de un SW de mantenerse operativo bajo las
condiciones establecidas por un perodo de
tiempo.

Productos (o componentes) son usados


(probablemente, con pequeos cambios)
para construir otros productos
Reuso de partes estandar miden la madurez
de una ingeniera
Tambien aplica a procesos.

Reusable

Componentes reusables:
Libreras cientficas
Libreras para el desarrollo de
interfaces (MFC de Windows)
Patrones
Especificaciones
Clases.

....en el futuro
las aplicaciones
sern construdas
ensamblando
componentes..

factor clave para


determinar la
madurez de
cualquier industria
....la IS debe an
evolucionar para
alcanzar su
madurez como una
disciplina de
ingeniera..

El software puede correr en diferentes


plataformas de hardware o ambientes de
software
se refiere a la habilidad del sw de ser
transferido de un ambiente a otro.
Es una cualidad relevante cuando se
introducen nuevas plataformas
Es tambien relevante, cuando el software se
baja de ambientes de redes heterogneos.

Interoperable

Puede coexistir y cooperar con otros sistemas


de software
Las herramientas de ambientes integrados son
interoperables

Software Eficiente:
Usa los recursos computacionales
econmicamente (memoria, tiempo de
. procesamiento, comunicacin..)

Se mide mediante tcnicas


clsicas:

complejidad de algoritmos
evaluacin de la eficiencia
(monitoreo, simulacin,..).

Qu es Usabilidad ?
Usabilidad es una cualidad del software que
tiene mltiples componentes y
tradicionalmente es asociado con:
Aprendizaje
ISO 9127
Eficiencia
Usabilidad: se
refiere al esfuerzo
Memorizacin
requerido por un
conjunto de
Baja rata de errores
usuarios para el uso
del sw
Satisfaccin

Usabilidad

Usable

La usabilidad de un producto de software


est determinada por la satisfaccin del
usuario al utilizar el producto
Fundamentalmente relacionada con las
caractersticas de la interfaz de usuario
Diversas cualidades inciden en la usabilidad
(eficiencia, confiablidad,...).

Mantenibilidad: facilidad de mantenimiento


Mantenimiento: cambios despues de la
liberacin del producto
Los costos de mantenimiento exceden el
69% del costo total del software

Tipos de Mantenimiento
Correctivo
(remocin de errores)
Adaptativo
(cambios para adecuarlos a
modificaciones de su ambiente)
Perfectivo
(cambios para mejorar la calidad -satisfacer
nuevos requisitos, aumentar la eficiencia,
modificar funcionalidades, etc)

Facilidad de comprender el software


Es una cualidad muy importante, para
realizar modificaciones de programa.
Esta cualidad incide en la mantenibilidad

Al usuario le
interesa que el
software sea fcil
de usar, confiable,
robusto...

Al equipo de desarrollo
le interesa que el
software sea
comprensible, portable,
mantenible, verificable ...

Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.

Definicin de la Ingeniera de Software


reas de conocimiento
Lneas de investigacin en IS
Disciplinas relacionadas
Evolucin de la Ingeniera de Software
Problemtica del desarrollo de software
Principios en la IS
Software de calidad
Actividades en proceso de DS

Actividades en el proceso de desarrollo


de software

Para desarrollar un producto de software se


realizan diversas actividades que se
estructuran y relacionan de acuerdo a un
modelo y se desarrollan siguiendo un
mtodo.
Los modelos encadenan las diversas
actividades

Actividades en el proceso de desarrollo


de software

se relacionan conformando :

un modelo

se desarrollan aplicando :

un mtodo

El mtodo se fundamenta en:

principios

El mtodo puede ser soportado por:

herramientas

principio(s) - mtodo(s) - herramienta(s) - modelo(s)

Acerca de las actividades

Utiliza y produce artefactos


Se relacionan e interactan de diferentes
maneras conformando distintos procesos de
desarrollo de software (modelos)
De acuerdo al modelo una actividad puede
jugar un rol preponderante o incluso
pudiera no existir.

Acerca de las actividades

La ingeniera de requisitos es el proceso que


lleva a la especificacin del software
Los procesos de diseo e implementacin
transforman la especificacin en un
programa ejecutable
La validacin involucra chequear que el
sistema cumple su especificacin y las
expectativas del usuario
La evolucin concierne con la modificacin
del sistema despus que est en uso
swebok

Actividades usuales

Relaciones entre las actividades


Actividades:
Encadenamiento Rol
Granularidad
Modelo de
desarrollo de
software

Anlisis de
requisitos

Prototipaje
Especificacin
Implementacin

Mtodo 1

Mtodo n

Un ejemplo

Actividades Modelos -Procesos

El modelo de desarrollo de software indica


como se relacionan las actividades
Los procesos de desarrollo de software
indican como se realizan las actividades
para producir y evolucionar un sistema del
software

Actividades Modelos - Procesos

Cmo encadenar las actividades del proceso de


desarrollo de software?
Modelos (ciclo de vida)
Ej.: Modelo de la cascada, UP....

Cmo realizar las actividades del proceso de desarrollo


de software?
Mtodos
Ej.: Orientado a objeto,

Cules principios se aplican en el proceso de desarrollo


de software?
Ej.: Incrementable, iterativo,...

CONCEPTOS GENERALES
CICLO DE VIDA: Conjunto de etapas que se han de llevar a cabo
para crear, explotar y mantener un Sistema Informtico.
METODOS: Son las normativas que marcan las directrices que se
han de seguir para llevar a cabo una tarea. Responde a la
pregunta QU.
TECNICAS: Es un modo de representacin para la solucin de un
problema concreto. Responde a la pregunta CMO.
METODOLOGIA: Es un conjunto coherente de mtodos y tcnicas
que cubren ms de una etapa del ciclo de vida.
HERRAMIENTAS: Proporcionan un soporte automtico o semiautomtico para el proceso y para los mtodos.

You might also like