Anda di halaman 1dari 54

Ingeniera de Software

Agustn J. Gonzlez
ElO329: Diseo y Programacin
Orientados a Objeto
Tomado de:
http://www.dsic.upv.es/~uml
http://inst.eecs.berkeley.edu/~cs169/
entre otras fuentes.

Definicin

(1993) La aplicacin mecanismos sistemticos,


disciplinados, y cuantificables para el desarrollo,
operacin y mantencin de software; esto es la
aplicacin de la ingeniera al software.
Establecimiento y uso de principios con
caracteres de ingeniera apropiados para
obtener, eficientemente, software confiable, que
opere eficaz y eficientemente en mquinas
reales
La aplicacin del arte del desarrollo software
junto con las ciencias matemticas y
computadores para disear, construir, y
mantener programas computacionales eficientes
y econmicos que logran sus objetivos.

Estado del arte en Ing. De


Software

Es una ciencia rigurosa con fuertes


fundamentos matemticos?
Es una campo tcnico bien desarrollado
con mucho de disciplina de ingeniera?
O est realmente en un estado primitivo...

A lo ms una serie de mejores prcticas,


desarrolladores de software construyen
software y si stos funcionan entonces
nosotros estudiamos como ellos lo hicieron.
Si stos funcionan por un largo tiempo
entonces estudiamos sus procesos de software
an ms cuidadosamente.

Construccin de una casa para fido

Puede hacerlo una sola persona


Requiere:
Modelado mnimo
Proceso simple
Herramientas simples

Construccin de una casa

Construida eficientemente y en un tiempo


razonable por un equipo
Requiere:
Modelado
Proceso bien definido
Herramientas ms sofisticadas

Construccin de un rascacielos

Claves en Desarrollo de SI
Notacin

(UML)

Calidad: Ej: CMM

Herramientas
(Ej: Rational Rose)

Proceso

(Metodologas
Ej: ITIL, Extreme Programming
RUP: Rational Unified
Process)

Abstraccin - Modelado Visual (MV)

El modelado captura las


partes esenciales del sistema
Orden
Item

envo

Proceso de Negocios
Sistema Computacional

Notacin (Visual) - Beneficios


Manejar la complejidad

Interfaz de Usuario
(Visual Basic,
Java, ..)

Lgica del Negocio


(C++, Java, ..)

Mltiples Sistemas

Servidor de BDs
(C++ & SQL, ..)

Modelar el sistema
independientemente
del lenguaje de
implementacin

Componentes
Reutilizados

Promover la Reutilizacin

Por qu la Orientacin a
Objetos?

Proximidad de los conceptos de modelado


respecto de las entidades del mundo real

Modelado integrado de propiedades


estticas y dinmicas del mbito del
problema

Mejora la captura y validacin de requisitos


Acerca el espacio del problema y el espacio
de la solucin

Facilita construccin, mantenimiento y


reutilizacin

Podramos dar muchas razones pero hay


problemas..

Problemas en OO
...Los conceptos bsicos de la OO se conocen
desde hace dos dcadas, pero su aceptacin
todava no est tan extendida como los beneficios
que esta tecnologa puede sugerir

Problemas en OO

Un objeto contiene datos y operaciones que


operan sobre los datos, pero ...
Podemos distinguir dos tipos de objetos
degenerados:

Un objeto sin datos (que sera lo mismo que una


biblioteca de funciones)
Un objeto sin operaciones, con slo operaciones del
tipo crear, recuperar, actualizar y borrar (que se
correspondera con las estructuras de datos
tradicionales)

Un sistema construido con objetos degenerados


no es un sistema verdaderamente orientado a
objetos

Proceso de Desarrollo
de SW

El proceso de desarrollo
Completo

Se da en un contexto y dependiendo el
texto o investigador destaca ms o menos
etapas.
El ms completo que he visto incluye:

Sueo

Investigacin

Desarrollo

Lanzamiento

Soporte
Tiempo

Al desarrollo es a lo que normalmente se


la da ms nfasis en la literatura.

Qu es un Proceso de Desarrollo de
SW?
Sueo

Investigacin Desarrollo Lanzamiento Soporte


Tiempo

Define Quin debe hacer Qu, Cundo y Cmo


debe hacerlo
Sistema nuevo
Requisitos nuevos
Proceso de Desarrollo
o modificado
o modificados

de Software

No existe un proceso de software universal. Las


caractersticas de cada proyecto (equipo de
desarrollo, recursos, etc.) exigen que el proceso
sea configurable

reas cubiertas por la Ing. de


Solftware
La Ingeniera del Software estudia todos los aspectos
involucrados en el desarrollo de software, entre los
cuales se encuentran:
Etapas de un Proyecto de software

Paradigmas / enfoques para enfrentar el


desarrollo del proyecto de software (Cascada,
Interativo incremental)

Tiempo y Costos

Aspectos tecnolgicos

Gestin de Proyectos

Etapas de un proyecto de
Etapas / Hitos escenciales rqueridos en un proyecto de
Software
desarrollo de software:

Oportunidad de Negocio (Hito)


Levantamiento Incial de Requerimientos (Dominio del
problema)
Entendimiento inicial de la problemtica a resolver
Reuniones con Cliente
Especificacin inicial de requerimientos

Confeccin de Propuesta
Estimacin de esfuerzos y planificacin del proyecto. Uso
de tcnicas (COCOMO) y estadisticas de proyectos
similares al que se dessarrollar, entrevistas a personas
con experiencia en proyectos similares al que se
desarrollar
Definicin del alcance del proyecto
Costos

Anlisis OO (Dominio del problema)


Casos de Uso
anlisis dinmico
Modelos Conceptuales anlisis esttico
Diseo preliminar de interfaces (web, GUI, comandos, voz)

Etapas de un proyecto de
Software
(cont)
Arquitectura (Dominio de la Solucin)

Especificacin de la tecnologa a utilizar (J2EE, .NET)


Especificacin de Patrones de Diseo

Diseo (Dominio de la Solucin)


Diseo de Interfaces (web, gui, comandos, voz)
Realizacin de diagramas de secuencia
Realizacin de diagramas de clases

Construccin / Codificacin
Entendimiento real del diseo ( solucin) a programar
Programacin eficiente y optima del cdigo fuente
Comentar en forma entendible y razonable el cdigo
fuente
Construccin de programa de TEST
Prueba unitaria del desarrollador mediante un programa
de TEST

Pruebas Unitarias
Realizacin de plan de pruebas

Pruebas Integradas

Etapas de un proyecto de
Software (cont)

Capacitacin a Usuarios
Confeccin de Manuales de Usuario
Reuniones con usuario final

Puesta en Produccin
Confeccin de plan de puesta en produccin

Marcha Blanca

Garanta
Resolucin de Incidencias

Planificar y Evaluar
Proyectos ...
Podr cumplir con los
plazos?
Estar dentro de lo
presupuestado?
El cliente quedar
satisfecho?
Las Metodologas pueden ser la ayuda que

necesitamos, si podemos usarlas correctamente !!

Procesos,
Metodologas

Qu es una Metodologa ...


Las metodologas imponen un
proceso disciplinado sobre el
desarrollo de software con el fin
de hacerlo ms predecible y
eficiente.

Las giles ms conocidas ...

XP (Programacin Extrema)
La familia Cristal de Cockburn
Cdigo Abierto
ASD (Desarrollo de Software Adaptable)
SCRUM
FFD (Desarrollo Manejado por Rasgos)
DSDM (Mtodo de desarrollo de sistema
dinmico)
RUP (Rational Unified Process)

Yo no conozco todas, pero vale la pena conocer al


menos una. Aquellas en rojo son la ms populares.

Metodologas en rea TI

Ms detalles aqu.

Apostando por RUP ...

Desarrollo de software:
Caractersticas de RUP ...
Guiado y Manejado por Casos de Uso
Centrado en la Arquitectura
Iterativo e Incremental
Desarrollo Basado en Componentes
Utilizacin de UML
Proceso Integrado

Principales metodologas en el
tiempo
Definicin de
Requerimientos

Construccin/Pruebas

Anlisis & Diseo

Modelo
Tradicional
de Cascada

Implementacin y
Test Unitarios
Integracin y
test del sistema
Operacin y
mantencin

Tiempo

Modelo
Iterativo
Incremental

Iteracin 1

Iteracin 2

R
A&D

R
A&D

A&D
C

Tiempo

Iteracin 3

C
P

RUP Define Fases de


Desarrollo ...

Requerimientos

Anlisis &
Diseo

Construccin

Pruebas

Distribucin

Concepcin

Esfuerzo Necesario por Actividad

reas de trabajo
(Workflow)

Elaboraci
n

Construcci
n

Transicin

A& D

A&D

A& D

A& D

Iteracin
Preliminar

Iteraci
n
1

Iteraci
n
2

....

....

Iteraci
n
n

Iteraci
n
n+1

Tiempo

Importancia de los Hitos en


RUP ...
Compromiso de
recursos para fase
elaboracin

Concepcin

Aceptacin
del cliente

Elaboracin

Construccin

Transicin

Tiempo
Hito
Objetivos,
visin

Hito
Arquitectura

Hito
Capacidad
Operacional

Liberacin
Producto

Mejores Prcticas de RUP ...

Desarrolle Iterativamente
Administre los
Requerimientos

Use
Arquitectura
de
Componentes

Modele
Visualmente

Controle los Cambios

Verifique
Calidad

Un Ejemplo: Comparar con VModel (Motorola)

Rational Unified Process (RUP)


Rational Unified Process
1998

RationalObjectory Process
1996-1997

Objectory Process
1987-1995

Enfoque Ericsson

Pruebas funcionales
Pruebas de desempe
Gestin de requisitos
Gestin de cambios y
configuracin
Ingeniera de Negocio
Ingeniera de datos
Diseo de interfaces

UML

Otra visin similar con ms


Actividades

Otra visin similar con ms


Actividades
Disciplinas o reas de trabajo
Modelado del Negocio
Requisitos
Anlisis y Diseo

Primarios

Implementacin
Pruebas
Despliegue, distribucin
Gestin de configuracin y cambios
Gestin del proyecto
Entorno

De Apoyo

... Elementos en RUP

Artefactos
Es el Resultado parcial o final que es producido y
usado durante el proyecto. Son las entradas y
salidas de las actividades
Un artefacto puede ser un documento, un
modelo o un elemento de modelo
Conjuntos de Artefactos
Business Modeling
Set
Requirements Set

Deployment Set
Project Management Set

Analysis & Design Set

Configuration & Change


Management Set

Implementation Set

Environment Set

Test Set

Caractersticas Esenciales de
RUP

Proceso Dirigido por los Casos de Uso


Proceso Iterativo e Incremental
Proceso Centrado en la Arquitectura

Proceso dirigido por los Casos de


Uso
Capturar, definir y
validar los casos de
uso

Requisitos
Anlisis & Diseo
Implementacin
Pruebas

Casos de Uso
integran el
trabajo

Realizar los
casos de uso
Verificar que se
satisfacen los
casos de uso

... Proceso dirigido por los Casos de


Uso
trace
Caso de Uso

trace

Realizacin de Anlisis Realizacin de Diseo

trace

trace

Pruebas
Unitarias
Pruebas Funcionales

Caso de Prueba

[The Unified Software Development Process. I. Jacobson, G. Booch and J. Rumbaugh. Addison-Wesley, 1999]

... Proceso dirigido por los Casos de Us

Proceso Iterativo e Incremental


El ciclo de vida iterativo se basa en la
evolucin de prototipos ejecutables que
se muestran a los usuarios y clientes
En el ciclo de vida iterativo en cada
iteracin se reproduce el ciclo de vida en
cascada a menor escala
Los objetivos de una iteracin se
establecen en funcin de la evaluacin de
las iteraciones precedentes

... Proceso Iterativo e


Incremental

Las actividades se encadenan en una


mini-cascada con un alcance limitado por
los objetivos de la iteracin
Anlisis
Diseo

n veces

Codific.
Pruebas e
Integracin

... Proceso Iterativo e


Incremental

Cada iteracin comprende:

Planificar la iteracin (estudio de riesgos)


Anlisis de los Casos de Uso y escenarios
Diseo de opciones arquitectnicas
Codificacin y pruebas. La integracin del
nuevo cdigo con el hecho en iteraciones
anteriores se hace gradualmente durante la
construccin
Evaluacin de la entrega de ejecutable
(evaluacin del prototipo en funcin de las
pruebas y de los criterios definidos)
Preparacin de la entrega (documentacin e
instalacin del prototipo)

Proceso Iterativo e Incremental


Enfoque
Cascada

Enfoque
Iterativo e
Incremental

... Proceso Iterativo e


Incremental
Grado de Finalizacin de Artefactos

Proceso Centrado en la Arquitectura

La arquitectura de un sistema es la
organizacin o estructura de sus partes ms
relevantes
Un arquitectura ejecutable es una
implementacin parcial del sistema, construida
para demostrar algunas funciones y
propiedades

RUP establece refinamientos sucesivos de una


arquitectura ejecutable, construida como un
Inception Elaboration
Construction
Transition
prototipo evolutivo

Architecture

Fases del Ciclo de Vida


El ciclo de vida consiste en una serie de
ciclos, cada uno de los cuales produce una
nueva versin del producto
Cada ciclo est compuesto por fases y cada
una de estas fases est compuesta por un
nmero de iteraciones
Las fases son:
Inicio o Estudio de oportunidad
Elaboracin
Construccin
Transicin

...Fases del Ciclo de Vida


Inicio o Estudio de oportunidad
(inception)
Define el mbito y objetivos del
proyecto
Se define la funcionalidad y
capacidades del producto
Elaboracin
Tanto la funcionalidad como el
dominio del problema se estudian en
profundidad
Se define una arquitectura bsica

...Fases del Ciclo de Vida

Construccin

El producto se desarrolla a travs de


iteraciones donde cada iteracin involucra
tareas de anlisis, diseo e implementacin
Las fases de estudio y anlisis slo dieron una
arquitectura bsica que es aqu refinada de
manera incremental conforme se construye
(se permiten cambios en la estructura)
Gran parte del trabajo es programacin y
pruebas
Se documenta tanto el sistema construido
como el manejo del mismo
Esta fase proporciona un producto construido

...Fases del Ciclo de Vida

Transicin

Se libera el producto y se entrega al usuario


para un uso real
Se incluyen tareas de marketing,
empaquetado atractivo, instalacin,
configuracin, entrenamiento, soporte,
mantenimiento, etc.
Los manuales de usuario se completan y
refinan con la informacin anterior
Estas tareas se realizan tambin en
iteraciones

Esfuerzo respecto de las


Workflows
Inception

Elaboration

Construction

Transition

15%

Requisitos
Una iteracin en la
fase de elaboracin
Anlisis

10%

Diseo

15%
30%

Implementacin

15%

Pruebas
P re lim ina ry
Ite ra tion (s)

ite r.
#1

ite r.
#2

ite r.
#n

ite r.
# n+ 1

ite r.
#n+2

ite r.
#m

ite r.
#m +1

...Esfuerzo respecto de las Fases


Inception

Elaboration

Construction

Transition

Requisitos
Una iteracin en la
fase de elaboracin
Anlisis

Diseo

Implementacin

Pruebas
P re lim ina ry
Ite ra tion (s)

Esfuerzo:

5%

ite r.
#1

ite r.
#2

20%

ite r.
#n

ite r.
# n+ 1

65%

ite r.
#n+2

ite r.
#m

ite r.
#m +1

10%

Dos lecciones importantes

El tiempo es independiente del contexto.


Ahorrar una semana la comienzo de un
proyecto es tan bueno como ahorrarla al
final. Una semana es una semana.
Es mucho ms fcil ahorrar tiempo al
inicio del proyecto (cuando los
entregables son menos claros).
Conclusin: Pronto hay que tener claro el
proyecto del ramo.

Idea relacionada: Patrones de


Diseo

Es una solucin a un problema general de diseo.


Tiene la forma de un conjunto de clases que
inter-actan.
Las clases requieren personalizacin al caso
especfico (partes en blanco)

Ejemplo: Patrn Observador

Vista

Controlador
Modelo

Modelo, vista, controlador

Anda mungkin juga menyukai