Está en la página 1de 48

Ingeniera de Software I

Introduccin

Ingeniera de Software I FCEN - UBA


Objetivos del Curso
Entender el rol fundamental que juega la construccin y
anlisis de modelos en la Ingeniera de Software
Aprender tcnicas de descripcin, su semntica y su uso como
herramientas de anlisis.
Poder aplicarlas en distintas actividades de IS.
Entender la problemtica, las notaciones, mtodos,
procesos y herramientas para encarar tres reas
importantes de la ingeniera de software
Ingeniera de requerimientos
Verificacin y Validacin. Principalmente Testing

Ingeniera de Software I FCEN - UBA


Organizacin de la Materia
Tericas
Lunes y Jueves de 17:00 a 19:00
Prcticas y Taller
Lunes y jueves de 19:00 a 22:00
Aulas
Lunes: Dnde estamos hoy
Jueves: Dnde estaremos el jueves

Ingeniera de Software I FCEN - UBA


Estructura (tentativa) de Tericas
1. Introduccin a la Ingeniera de Software
2. Introduccin a la Ingeniera de Requerimientos
3. Tcnicas de Descripcin aplicadas a Requerimientos
4. Diseo de Software (slo tericas)
5. Introduccin a la Validacin y Verificacin
6. Testing
7. Conclusiones

Ingeniera de Software I FCEN - UBA


Nivel del Detalle del Curso

+ detalle

- detalle

tiempo
Ingeniera de Software I FCEN - UBA
Resea histrica
1 Inicialmente predominaba software de cmputo para
aplicaciones cientficas o de ingeniera
2 Luego crece el
Espectro y escala de aplicaciones
Vida til del software
Nmero y perfiles de programadores
3 Aparece la nocin de crisis del software y la necesidad
de un enfoque sistemtico a la construccin: Ingeniera
de Software.
Ambos trminos son usados por primera vez en una reunin de la
OTAN en 1968, Garmish.

Ingeniera de Software I FCEN - UBA


Resea histrica
4 Dijkstra describe el panorama en los 70 muy bien:
The major cause of the software crisis is that the machines have become
several orders of magnitude more powerful. To put it quite bluntly: as long as
there were no machines, programming was no problem at all; when we had a
few weak computers, programming became a mild problem, and now we have
gigantic computers, programming has become an equally gigantic problem.

Edsger Dijkstra, The Humble Programmer,


Communications of the ACM 15(1972)

5 Primer International Conference on Software


Engineering: 1975

Ingeniera de Software I FCEN - UBA


Impacto en la Prctica
http://www.sigsoft.org/impact/

Principios fundamentales de anlisis y diseo


Information hiding, Jacksons World & Machine...
Lenguajes de programacin
Manejo de excepciones, aserciones, ...
Software Configuration Management
Version control, product models ,change control,composition/selection ,
build management , workspace management
Tcnicas y herramientas
Inspecciones, Revisiones y Walkthroughs...
Verificadores de cdigo...
Middleware
web services, application servers, distributed object systems, message
queues, remote procedure call systems
Mtodos y Procesos
QA, Ciclos de Vida, Modelos de madurez, gerenciamiento...
Ingeniera de Software I FCEN - UBA
Qu es la Ingeniera de Software?

Una definicin aproximada y simplificada...


Se ocupa de construir un producto de software de buena
calidad lidiando con las mltiples restricciones (tiempo,
presupuesto, y otros...)
Sus dos problemticas fundamentales son:
Lidiar con la escala y complejidad de sistemas de
software.
Identificar que significa buena calidad y luego lograrla
Requiere (como todas las ingenieras)
Rigor, creatividad, documentacin y gestin.

Ingeniera de Software I FCEN - UBA


Pero entonces
De donde salen las pre-post condiciones?
Cmo expresamos requerimientos que transcurren en
tiempo?
Cmo describir procesos qu requieren de la
aplicacin de varias operaciones?
Cul es la pre y post condicin para un sistema de
despachos de taxis?
Es viable describir todo en lgica de primer orden?
Qu pasa si no desarrollo todo (compro?,
subcontrato?)
Qu pasa si tengo que modificar en vez de desarrollar?

Ingeniera de Software I FCEN - UBA


Ingeniera de Software
- Algunas Definiciones -

Software engineering is the application of a


systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of
software.

IEEE Standard Glossary of Software


Engineering Terminology, IEEE std 610.12-1990

No es solo desarrollo

Ingeniera de Software I FCEN - UBA


Ingeniera de Software
- Qu temas abarca? -

The discipline of software engineering encompasses


knowledge, tools, and methods for defining software
requirements, and performing software design, software
construction, software testing, and software maintenance tasks.
Software engineering also draws on knowledge from fields such
as computer engineering, computer science, management,
mathematics, project management, quality management,
software ergonomics, and systems engineering.

The Software Engineering Body


of Knowledge, IEEE CS and ACM Interdisciplinario

Ingeniera de Software I FCEN - UBA


Ciclo de Vida del Desarrollo de Software
Modelo Cascada (Royce, 1970)

Requerimientos

Diseo

Implementacin

Integracin

Validacin

Instalacin

Ingeniera de Software I FCEN - UBA


Ciclo de Vida del Desarrollo de Software
Modelo Espiral (Boehm, 1988)

Ingeniera de Software I FCEN - UBA


Ciclo de Vida del Desarrollo de Software
Unified SW Development Process (Jacobson, 1999)
Fases
Workflows de Proceso ConcepcinElaboracin Construccin Transicin

Modelado de Negocios
Requerimientos
Anlisis y Diseo
Implementacin
Test
Puesta en Produccin
Workflows de Soporte
Adm. de Config.
Gerenciamiento
Entorno
Iteracin Iter. Iter. Iter. Iter. Iter. Iter. Iter.
Preliminar #1 #2 #n #n+1 #n+2 #m #m+1

Iteraciones
Ingeniera de Software I FCEN - UBA
Por qu es difcil?
Software es uno de los objetos de mayor complejidad
hecho por humanos
Desarrollar software es resolver un juego de restricciones de
naturaleza tcnica, econmica y humana
Una disciplina joven victima de su propio xito
La teora sobre la que se debe apoyar la ingeniera no est
terminada
La tecnologa y la capacidad de construir sistemas complejos
crece rpidamente exigiendo ms a una disciplina ingeniera
que esta madurando y introduciendo nuevas problemticas

Ingeniera de Software I FCEN - UBA


Cmo lidiar con la complejidad?
En las ingenieras tradicionales la construccin y anlisis
de modelos juega un rol fundamental
Los modelos sirven para
Analizar un aspecto del problema a resolver o artefacto a
construir para lograr mayor confianza
Comunicar en forma precisa aspectos del problema y la solucin
a otras personas
Los modelos son efectivos porque
Son significativamente ms barato de construir que el sistema
Permiten detectar errores y falencias tempranamente

Ingeniera de Software I FCEN - UBA


Modelos y Diagramas

Un modelo captura una vista de un sistema del mundo


real. Es una abstraccin de dicho sistema,
considerando un cierto propsito. As, el modelo
describe completamente aquellos aspectos del sistema
que son relevantes al propsito del modelo, y a un
apropiado nivel de detalle.

Diagrama: una representacin grfica de una coleccin


de elementos de modelado, a menudo dibujada como
un grafo con vrtices conectados por arcos.

Ingeniera de Software I FCEN - UBA


Modelos y Diagramas
Un proceso de desarrollo de software debe ofrecer un conjunto de
modelos que permitan expresar el producto desde cada una de
las perspectivas de inters

El cdigo fuente del sistema es el modelo ms detallado del


sistema (y adems es ejecutable). Sin embargo, se requieren
otros modelos ...

Cada modelo es completo desde su punto de vista del sistema,


sin embargo, existen relaciones de trazabilidad entre los
diferentes modelos

Ingeniera de Software I FCEN - UBA


Modelo

El modelo es conocimiento depurado

Ingeniera de Software I FCEN - UBA


Conocimiento implcito y explcito
El conocimiento sobre un proyecto est fragmentado, repartido entre
muchas personas y documentos, y est mezclado con otra informacin
de tal manera que ni siquiera conocemos cules son los fragmentos de
informacin que realmente necesitamos.

Conocimiento explcito: este conocimiento puede expresarse en palabras y


nmeros y compartido en la forma de datos, frmulas cientficas, especificaciones,
manuales, etc. Puede transmitirse entre las personas formal y sistemticamente

Conocimiento implcito: es en gran medida personal y muy difcil de formalizar,


dificultando mucho la comunicacin o el ser compartido por otros. Los plpitos
subjetivos, las intuiciones, los presentimientos caen dentro de esta categora. Es
difcil de verbalizar, dado que est ntimamente enraizado en las acciones y
experiencias de una persona, adems de los ideales, valores o emociones que esa
persona pueda adoptar.

Ingeniera de Software I FCEN - UBA


Conocimiento implcito y explcito
Relacin -de acuerdo a varios autores- entre conocimiento tcito y explcito

10% Conocimiento visible, comunicable,


formalizable (Explcito)

90% Conocimiento oculto, ligado a la


experiencia (Implcito)

Ingeniera de Software I FCEN - UBA


Unified Modeling Language
Diagramas Estructurales
Diagrama de Casos de Uso
Diagrama de Clases
Diagrama de Objetos

Diagramas de Comportamiento
Diagrama de Estados
Diagrama de Actividad

Diagramas de Interaccin
Diagrama de Secuencia
Diagrama de Colaboracin

Diagramas de Implementacin
Diagrama de Componentes
Diagrama de Despliegue

Ingeniera de Software I FCEN - UBA


Diagramas de UML
Diagrama de
Secuencia

Diagrama de Diagrama de
Colaboracin Casos de Uso

Diagrama de Diagrama de
Estados Clases

MODELO

Diagrama de Diagrama de
Actividad Objetos

Diagrama de Diagrama de
Despliegue Componentes

Los diagramas expresan grficamente partes de un modelo.


Ingeniera de Software I FCEN - UBA
UML
Vistas y Diagramas
Clases Casos de Uso
Objetos
Usuarios
Estructural

Despliegue

Ambiente Implementacin Componentes

Secuencia
Colaboracin
Comportamiento
Estado
Actividades

Ingeniera de Software I FCEN - UBA


Documentos y Diagramas
La primera percepcin de la utilidad de un diagrama UML -un
diagrama de clases u objetos- puede ser cuando discutimos sobre
un diseo de software.
Mucha gente es naturalmente visual y los diagramas ayudan a
captar cierto tipo de informacin: los diagramas UML son muy
tiles para comunicar relaciones entre objetos y para mostrar
interacciones.
Pero no transmiten la definicin conceptual de estos objetos. En
una discusin deberemos rellenar estos significados hablando
mientras vamos dibujando estos diagramas, o surgirn en un
dilogo con otros participantes.

Ingeniera de Software I FCEN - UBA


Documentos y Diagramas
Es decir que un diagrama UML no puede transmitir dos de los
aspectos ms importantes de un modelo: el significado de los
conceptos que representa y qu se supone que hacen los objetos.
Esta es la funcin complementaria del lenguaje hablado.
Los diagramas son un medio de comunicacin y de explicacin y
facilitan el proceso de creacin de ideas (brainstorming).

Ingeniera de Software I FCEN - UBA


Documentos y Diagramas
Deben ser mnimos: diagramas completos -aunque sean
comprensibles- del modelo total de objetos fracasan en su intento
de comunicar o explicar. Agobian al lector con detalles al mismo
tiempo que carecen de los significados ms importantes.
Algunos prefieren utilizar los diagramas UML al revs: en vez de
un diagrama con anotaciones en forma de texto que aclaren
detalles, prefieren un documento escrito ilustrado con diagramas
seleccionados y simplificados.

Ingeniera de Software I FCEN - UBA


Documentos y Diagramas
Siempre debemos recordar que el modelo no es el diagrama (lo
mismo que el mapa no es el territorio), el propsito del mismo es
ayudar a comunicar y explicar el modelo.

Ingeniera de Software I FCEN - UBA


Documentos y Diagramas
La comunicacin hablada complementa el rigor de los
diagramas y del cdigo, pero aunque sea vital para
conectar a todos con el modelo, a partir de una cierta
cantidad de integrantes de un equipo se necesita la
estabilidad y el poder compartir que ofrecen los
documentos escritos.

Los documentos deben complementar al modelo y a las conversaciones.


Un documento no debera intentar hacer lo que el cdigo hace perfectamente.
Los documentos deberan servir para seguir funcionando y estar actualizados.
Un documento debe estar involucrado en las actividades del proyecto.

Ingeniera de Software I FCEN - UBA


Scope y Span de un Modelo
Scope: tipo de fenmeno que se capta (ej.
Mapa poltico, mapa fsico); aspecto.
Span: Individuos descriptos (ej.: Mapa de
Amrica, Mapa de Asia); segmento.

Los modelos tienen un scope y un span.

Ingeniera de Software I FCEN - UBA


Modelos en Ingeniera de Software
El producto (principal) a construir es intangible: El programa
Los modelos que construimos sern intangibles tambin
A diferencia del ala del avin
Los modelos en Ingeniera de Software son lenguajes formales con
una denotacin precisa en el mundo real
Es imposible comunicar/analizar una descripcin efectivamente si
La denotacin no est bien definida
Los usuarios del modelo no la entienden y aplican rigurosamente
Cmo defino una denotacin?
Usando modelos con denotacin pre-definida (Usos y costumbres en
Ingeniera de Software)
Lenguaje natural, glosarios, etc..
Ingeniera de Software I FCEN - UBA
Lenguajes Formales
Elementos de un lenguaje formal
Una Sintaxis (grfica / texto) para describirlos
Cuales son los garabatos permitidos en una descripcin?
Una Semntica para abstraer accidentes sintcticos
Cuales de estos garabatos significan lo mismo?

Qu lenguajes formales conocen? Cul es su sintaxis


y semntica?
Cmo defino/documento/transmito una semntica?
Hay muchos mtodos, dos tradicionales son:
1. Con una traduccin a otro lenguaje formal
2. Definiendo relaciones (de equivalencia o de orden) entre
elementos sintcticos
Ingeniera de Software I FCEN - UBA
Sintaxis, Semntica y Denotacin

Dominio
Semntico
Semntica Semntica

M M
?

Denotacin Denotacin
Mundo
real

Ingeniera de Software I FCEN - UBA


No es un Modelo, son muchos!
Cada modelo enfoca en un aspecto del sistema
para permitir anlisis riguroso y escalable
(scope y span)
Un sistema se analiza desde mltiples modelos
complementarios
Es imposible vincular los distintos modelos
formalmente mantenindolos analizables y
entendibles (es decir tiles)
Lgica de primer orden?
Aqu las interpretaciones consistentes del los
modelos en el dominio por parte del Ingeniero son
fundamentales
Ingeniera de Software I FCEN - UBA
Modelos de Ingeniera de Software
- Una visin desde los Requerimientos -

Grafos de
refinamiento Y/O Ing. Soft 2

Diagrama de
Contexto Diagramas de
Clases,
Objetos, Entidad -
Relacin

Casos de Uso,
Pre/Post

Maquinas de Estado,
Diagramas de Secuencia

Ingeniera de Software I FCEN - UBA


Validacin y Verificacin
Validacin: un proceso cuyo objetivo es incrementar

Corresponde?
la confianza de que una descripcin formal se
corresponde con la realidad (es decir, el mundo
informal)
Ej. si la descripcin del problema se corresponde con
las necesidades reales.

Verificacin: un proceso cuyo objetivo es garantizar


que una descripcin formal es correcta con respecto a
otra

Correcto?
Ej. garantizar que la descripcin del problema satisface
la descripcin de la solucin.

Ingeniera de Software I FCEN - UBA


Dificultades de la Validacin
Es imposible: Formal vs. Informal El sistema real no existe
El problema es intangible
Los stakeholders no estn
disponibles
Observar el mundo no es
inocuo (Hawthorne)
No podemos realizar
Modelo experimentos controlados
El modelo no es determinstico
Mental Etc.. Etc.. Etc..
Mundo
Vista 1
Real

Comparaciones Modelo
Informales Formal
Manipulacin
Formal
Vista n

Ingeniera de Software I FCEN - UBA


Dificultades de la Verificacin
Vnculos entre modelos son difciles de formalizar
Cmo comparo modelos con scope y span diversos?
Complejidad de la prueba puede ser excesiva (tiempo y espacio)

Ingeniera de Software I FCEN - UBA


Validacin es todo
El objetivo final es Problema
resolver el problema

Cmo validamos un
sistema complejo?

Qu pasa si el sistema
construido no es vlido?
Sistema

Ingeniera de Software I FCEN - UBA


Achicar el Gap a Validar
Aqu la denotacin
Problema
de la descripcin
del problema es
Descripcin del
fundamental! Problema

Sistema

Ingeniera de Software I FCEN - UBA


Achicar el gap a Verificar
Y aqu?
Problema

Descripcin del
Problema

Descripcin de la
Solucin

Sistema

Ingeniera de Software I FCEN - UBA


Muchas Descripciones y Gaps
Problema

Sistema
Ingeniera de Software I FCEN - UBA
Nuevos Problemas
Problema

Son consistentes los tres modelos?


Sistema
Ingeniera de Software I FCEN - UBA
Otro problema nuevo
Las descripciones
intermedias a veces
Problema Escribir modelos
formales es difcil
no son tan formales

Sistema
Ingeniera de Software I FCEN - UBA
Decidibilidad y Complejidad de Verificacin

Problema

Sistema
Ingeniera de Software I FCEN - UBA
Formalidad y Rigurosidad
La Ingeniera de Software intenta ayudar a viajar
de lo informal al lo formal
del mundo real (con necesidades y problemtica)
prcticamente imposible de formalizar al mundo software
(HW + cdidgo fuente) completamente formal

Este viaje no puede hacerse formalmente


Pero si puede hacerse ms o menos rigurosamente

La ingeniera de software intenta hacer este viaje lo


ms rigurosamente posible (dentro de los lmites de
presupuesto - tiempo y $)

Ingeniera de Software I FCEN - UBA


Resumen
Qu es la Ingeniera de Software
Porqu lo visto hasta ahora no alcanza
El rol central de modelado
Modelos
Sintaxis, Semntica y Denotacin
Scope & Span
Verificacin y Validacin

Ingeniera de Software I FCEN - UBA

También podría gustarte