INGENIERÍA DE SOFTWARE
1
Historia
EVOLUCIÓN DEL DESARROLLO DE
SOFTWARE
1960
Lenguajes de alto nivel.
Primeros métodos de concepción
de sistemas.
1970
Programación estructurada.
Primeros conceptos de la ingeniería del software.
Intento de estandarización en el entorno de bases
de
datos (database Task Group).
1975
Modelo Entidad-Relación.
Gran importancia a los datos.
Diseño estructurado.
2
EVOLUCIÓN DEL DESARROLLO DE
SOFTWARE
1980
1985
Primeras metodologías de análisis y diseño estructurado
(YOURDON, GANE&SARSON, WARNIER, JACKSON).
Primeras metodologías que parten de una visión general del sistema
de información global.
Lenguajes de cuarta generación (4GL).
CASE inicial).
CASE integradas.
Aproximación entre metodologías estructuradas y sistémicas
(INFORMATION ENGINEERING).
Lenguajes de programación orientados a objetos.
1990
Primer intento de estandarización de metodologías
(EUROMETHOD).
Diseño orientado a objetos.
Metodologías de desarrollo orientadas a objetos.
3
EVOLUCIÓN DEL DESARROLLO DE
SOFTWARE
1995
Estructuras arquitectónicas distribuidas.
Utilización de componentes.
Primer intento de estandarización de los modelos
orientados a objetos UML.
2000
Auge de aplicación de arquitecturas en tres capas
(DCOM, CORBA, etc).
Nuevas técnicas de interacción con el usuario (Sist.
Ubicuos).
Solicitud de nuevos desarrollos sobre WEB.
Consolidación de UML.
¿Estandarización del método (Proceso Unificado de
Desarrollo).
Futuro,¿?
Metodologías Ágiles (Xtreme Programming).
4
INGENIERÍA DE SOFTWARE
5
Modelado
CONSTRUCCIÓN DE UNA CASA PARA “FIDO”
Puede hacerlo una sola persona
Requiere:
Modelado mínimo
Proceso simple
Herramientas simples
6
“Software Architecture and UML” de Grady Booch (Rational Software).
CONSTRUCCIÓN DE UNA CASA
Construida eficientemente y en un tiempo
razonable por un equipo
Requiere:
Modelado
Proceso bien definido
Herramientas más sofisticadas
7
“Software Architecture and UML” de Grady Booch (Rational Software).
CONSTRUCCIÓN DE UN RASCACIELOS
8
“Software Architecture and UML” de Grady Booch (Rational Software).
QUÉ ES LA INGENIERÍA DEL SOFTWARE?
¿Qué es ingeniería?: Conjunto de conocimientos y
técnicas cuya aplicación permite la utilización racional de
los materiales y recursos naturales, mediante invenciones,
construcción u otras realizaciones provechosas para el
hombre.
La ingeniería del software es una ingeniería que cubre
todos los aspectos relativos a la producción de software.
IS: Disciplina o área de la Informática o Ciencias de la
Computación, que ofrece métodos y técnicas para
desarrollar y mantener software de calidad que resuelven
problemas de todo tipo.
Los ingenieros de software deben adoptar una
aproximación sistemática y organizada en su trabajo y
utilizar las herramientas y técnicas apropiadas
dependiendo del problema a resolver, las restricciones de
desarrollo y los recursos disponibles.
9
MODELADO EN INGENIERÍA
Arquitectura/Ingeniería de
Estructuras
Vistas Edificio
Vista 3D
Alzado/Planta Perfil
Estructura del edificio
Instalación Eléctrica
Instalación Aire Acc.
...
Ingeniería Software
Modelos UML del Sistema
Software
Modelo de Casos de uso
Modelo Lógico
Modelo de Comportamiento
Modelo de Implementación
Modelo de Despliegue
DocumentList
FileMgr
add( )
delete( )
fetchDoc(
) )
sortByName(
FileList
fList
add( )
delete( ) 1
Document
name : int
docid : int
numField : int
get( )
open( )
close( )
read( )
sortFileList(
)
create( )
fillDocument(
user
read() fill the
code..
ƯÁ¤¹®¼¿¡ ´ëÇÑ º¸±â¸¦
»ç¿ëÀÚ°¡ ¿äûÇÑ´Ù.
mainWnd
fileMgrdocument
:
gFile
:repository
FileMgr
Document
Repository
1: Doc view request ( )
FileManager
3: create ( )
4: create ( )
Document
5: readDoc ( )
rep
File
Repository
(from Persistence) read( )
name : char * = 0
readDoc( )
readFile( )
ÈÀϰü¸®ÀÚ´Â Àоî¿Â
¹®¼ÀÇ Á¤º¸¸¦ ÇØ´ç ¹®¼
°´Ã¼¿¡ ¼³Á¤À» ¿äûÇÑ´Ù.
6: fillDocument ( )
7: readFile ( )
GrpFile
8: fillFile ( )
read( )
open( )
create( )
fillFile( )
È¸é °´Ã¼´Â ÀоîµéÀÎ
°´Ã¼µé¿¡ ´ëÇØ À̸§º°·Î
Á¤·ÄÀ» ½ÃÄÑ È¸é¿¡
º¸¿©ÁØ´Ù.
9: sortByName ( )
GraphicFile
File
FileList
Diagramas
Diagramas
DocumentList
2: fetchDoc( )
)
Herramientas Modelado (ej)
Autocad
Herramientas Modelado (ej)
Rational Rose
10
UN SISTEMA DE SOFTWARE ES
SIMILARMENTE COMPLEJO!
Complejas interacciones
entre sistemas y
usuarios
Seguridad,
concurrencia
Transacciones,
persistencia
Millares de
objetos en
ejecución
Sub-sistemas,
componentes,
distribución
Miles de millones de
líneas de código
Escalable..
confiable.. 11
CLAVES EN DESARROLLO DE SI
Notación
Herramientas
Proceso
12
adaptada desde “Visual Modeling with Rational Rose and UML” de Terry Quatrani
MODELO
Es un esquema simplificado que describe un sistema o
realidad desde un determinado punto de vista que facilita
su estudio y compresión
?
?
?
Modelo
(simplificado)
Sistema Software
(complejo)
Los modelos de un sistema software se
expresan visualmente mediante el
13
lenguaje de modelado UML
¿QUÉ ES EL MODELAMIENTO VISUAL?
Mapear
los
procesos reales
del mundo de un
Sistema
utilizando una
representación
gráfica
14
POR QUÉ
MODELAMOS?
Para capturar los procesos del negocio
Para comunicarse con los usuarios (facilita la
comunicación)
Define la arquitectura
Para manejar la complejidad
Para detectar errores y omisiones temprano en el
ciclo de vida
Para entender los requerimientos
Para guiar la implementación
Para entender el impacto del cambio
Para asegurarse de que los recursos sean
utilizados eficientemente
15
CAPTURA LOS PROCESOS DEL NEGOCIO
Para
poder
determinar los
requerimientos de
un software, es
necesario conocer
los procesos de un
negocio, utilizando
los use case
podemos
representar estos
procesos
16
FACILITA LA COMUNICACIÓN
Cuando
se
desarrolla un
software nos
encontramos frente
a los expertos del
negocio y los
desarrolladores, los
cuales usan dos
lenguajes distintos.
Se necesita un
lenguaje común
17
DEFINE LA ARQUITECTURA
El
modelamiento
visual provee una
capacidad para
capturar la
arquitectura lógica
del software
independiente de los
lenguajes de
implementación,
luego esta
arquitectura lógica
es mapeada a una
arquitectura física.
18
ABSTRACCIÓN - MODELADO VISUAL
(MV)
“El modelado captura las
partes esenciales del sistema”
Orden
Item
envío
Proceso de Negocios
Sistema Computacional
19
NOTACIÓN (VISUAL) - BENEFICIOS
Manejar la complejidad
Interface de Usuario
(Visual Basic,
Java, ..)
Lógica del Negocio
(C++, Java, ..)
Múltiples Sistemas
Servidor de BDs
(C++ & SQL, ..)
“Modelar el sistema
independientemente
del lenguaje de
implementación”
Componentes
Reutilizados
20
Promover la Reutilización