27
Ingeniería de Sistemas e Informática publicado por.lightning http://sotfstone.blogspot.com/

Introduccion a la ingenieria de software

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Introduccion a la ingenieria de software

Ingeniería de Sistemas e Informática publicado por.lightning

http://sotfstone.blogspot.com/

Page 2: Introduccion a la ingenieria de software

características y evolución del software Software

Programas Archivos de configuración Documentación de la estructura del sistema Manuales de instalación y uso Sitios web con información y actualizaciones

TIPOS DE SOFTWARE Productos genéricos

sistemas producidos por una organización y que se venden en el mercado abierto. Ejemplos: sistemas gestores de bases de datos, procesadores de texto, paquetes gráficos,...

Productos personalizados desarrollados específicamente para un cliente aplicaciones de negocio, sistemas de control de tráfico aéreo, control de procesos de

fabricación,... el cliente controla la especificación de la aplicación

Ingeniería de Sistemas e Informática publicado por.lightning

Page 3: Introduccion a la ingenieria de software

características y evolución del software El software desde una perspectiva industrial

El valor del software: de “elemento añadido” a principal elemento de coste

El desarrollo del software:

Algunas preguntas: ¿Por qué se tarda tanto? (y casi siempre más de lo

previsto) ¿Por qué la productividad es tan baja? ¿Por qué cuesta tanto? ¿Por qué siempre quedan errores sin localizar?

Ingeniería de Sistemas e Informática publicado por.lightning

Page 4: Introduccion a la ingenieria de software

naturaleza y problemas del desarrollo de software

El software como elemento lógico. Se desarrolla, no se fabrica: Se “deteriora” con el mantenimiento Desarrollo a medida.

La “crisis” del software: problemas que aparecen en el desarrollo del software al desarrollar, mantener y atender la demanda de nuevas aplicaciones.

Ingeniería de Sistemas e Informática publicado por.lightning

Insatisfacción del cliente

Planificación y estimacionesimprecisas

Calidad

Sin tiempo para recogerdatos históricos

Baja productividad

Dificultad de mantenerel software existente

Page 5: Introduccion a la ingenieria de software

naturaleza y problemas del desarrollo de software

Causas de la crisis del software

Naturaleza lógica del softwareMala gestión de los proyectos ( ausencia de

datos, deficiente comunicación, ...)Ausencia de entrenamiento formal en nuevas

técnicas (programadores vs. ingenieros de software)

Resistencia al cambioMitos del software:

Ingeniería de Sistemas e Informática publicado por.lightning

MITOS DEL CLIENTE

- Requisitos establecidos comouna declaración general de

objetivos- Flexibilidad del software ante

los cambios

MITOS DE GESTIÓN

- Uso de estándares- Uso de herramientas

- Mala planificación: aumentode programadores

MITOS DE LOS DESARROLLADORES

- Programa funcionando = fin del trabajo- Calidad = el programa se ejecuta

sin errores- Entrega al cliente: programa

funcionando

Page 6: Introduccion a la ingenieria de software

DEFINICION DE INGENIERIA DE SOFTWARELa Ingeniería de Software es una disciplina

de la Ingeniería que concierne a todos los aspectos de la producción de software

Los Ingenieros de Software adoptan un enfoque sistemático para llevar a cabo su trabajo y utilizan las herramientas y técnicas necesarias para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y recursos disponibles.

Ingeniería de Sistemas e Informática publicado por.lightning

Page 7: Introduccion a la ingenieria de software

DIFERENCIA ENTRE INGENIERÍA DE SOFTWARE Y COMPUTACIÓN

Ingeniería de Sistemas e Informática publicado por.lightning

La computación concierne a la teoría y fundamentos de cualquier sistema de computo, sea de hardware o de software.

La Ingeniería de software concierne solo al desarrollo de sistemas o productos de software.

La Ingeniería de Software todavía esta lejos de ser una ciencia como los son la Química, la Ingeniería Civil o la Electrónica.

Page 8: Introduccion a la ingenieria de software

CARACTERÍSTICAS DE LOS PRODUCTOS DE SOFTWARE

Ingeniería de Sistemas e Informática publicado por.lightning

Mantenibles. Debe ser posible que el software evolucione y que siga

cumpliendo con sus especificaciones.

Confiabilidad. El software no debe causar danos tangibles o económicos

en el caso de fallos.

Eficiencia. El software no debe desperdiciar los recursos del sistema.

Utilización adecuada. El software debe contar con una interfaz de usuario

adecuada y su documentación.

Page 9: Introduccion a la ingenieria de software

QUE CONTIENE EL SOFTWARE ?

Ingeniería de Sistemas e Informática publicado por.lightning

El software contiene:Líneas de código de algún lenguaje ?

Instrucciones de computadora.

Descripción de las estructuras de datos.

Algoritmos.

Procedimientos y funciones.

Componentes de software.

Page 10: Introduccion a la ingenieria de software

QUE TIPOS DE SOFTWARE HAY ?

Ingeniería de Sistemas e Informática publicado por.lightning

Por su estructura:

Funcionales.

Orientados a objetos.

Orientados a listas.

Orientados a componentes.

Por su función:

Programas o Sistemas de Usuario

Interfaces Hombre-Maquina.

Herramientas de Software.

Librerías.

Sistemas de uso genérico: Compiladores, S.O’s, Procesadores de Texto, etc.

Bases de Datos.

Sistemas basados en Web.

Page 11: Introduccion a la ingenieria de software

INGENIERÍA DEL SOFTWARE ORIENTADA A OBJETOS

Ingeniería de Sistemas e Informática publicado por.lightning

La Programación Orientada a Objetos (OOP por sus siglas en inglés de Object Oriented Programming) como paradigma, "es una forma de pensar, una filosofía, de la cual surge una cultura nueva que incorpora técnicas y metodologías diferentes

La Programación Orientada a Objetos desde el punto de vista computacional "es un método de implementación en el cuál los programas son organizados como grupos cooperativos de objetos, cada uno de los cuales representa una instancia de alguna clase, y estas clases, todas son miembros de una jerarquía de clases unidas vía relaciones de herencia"

Programación Orientada a Objetos

La OO se basa en tres principios básicos: todo son objetos, encapsulamiento / ocultación y herencia / polimorfismo.El primer principio indica la unidad básica de trabajo. El segundo permite englobar en un mismo concepto a los datos y a las operaciones. El tercero permite agrupar y tratar de igual forma a objetos similares.

Page 12: Introduccion a la ingenieria de software

Análisis y Diseño Orientado a objetos

Ingeniería de Sistemas e Informática publicado por.lightning

Análisis Orientado a Objetos

(OOA por sus siglas en inglés de Object Oriented Analysis) "es un método de análisis que examina los requerimientos desde la perspectiva de las clases y objetos encontrados en el vocabulario de del dominio del problema" .

Diseño Orientado a Objetos

es un método de diseño abarcando el proceso de descomposición orientado a objetos y una notación para representar ambos modelos lógico y físico tal como los modelos estáticos y dinámicos del sistema bajo diseño

Page 13: Introduccion a la ingenieria de software

EL MODELADO

Ingeniería de Sistemas e Informática publicado por.lightning

Por un lado el Análisis y Diseño (OOAD) y por otro Programación (POO).Se recalcaba la necesidad de usar lenguajes de modelado para desarrollar proyectos:OOSE, OMT-2, Booch’93 o UML. Este último, fruto de la fusión y de mejoras de los anteriores, aún estaba en proceso de desarrollo en Rational (compañía integrada enIBM hoy en día).

Aun con la cotidianeidad del paradigma orientado a objetos, muchos informáticos sumergidos en un mar de siglas se realizan la siguiente pregunta:“Pues muy bien, ya sé UML... ¿y ahora qué?”

El Modelado es una técnica de ingeniería probada y bien aceptada.

Un modelo es una abstracción del sistema, especificando el sistema desde un cierto punto de vista y en un determinado nivel de abstracción

Un modelo es una simplificación de la realidad.

Page 14: Introduccion a la ingenieria de software

UNIFIED MODELING LANGUAJE (UML)

Ingeniería de Sistemas e Informática publicado por.lightning

UML es un lenguaje de especificación, visualización, construcción y documentación de propósito general, aunque especializado en sistemas software.

UML combina lo mejor de:

•Modelamiento conceptual de datos•Modelamiento del flujo de actividades•Modelamiento de Objetos•Modelamiento de Componentes

Page 15: Introduccion a la ingenieria de software

Perspectivas de UML UML es el lenguaje de modelado orientado a

objetos estándar predominante ahora y en los próximos años.

Razones: Participación de metódologos influyentes Participación de importantes empresas Estándar del OMG

Evidencias: Herramientas que proveen la notación

UML.

Ingeniería de Sistemas e Informática publicado por.lightning

Page 16: Introduccion a la ingenieria de software

Modelos y Diagramas Un modelo captura una vista de un sistema del mundo

real. Es una abstracción de dicho sistema, considerando

un cierto propósito. Así, el modelo describe completa-

mente aquellos aspectos del sistema que son relevantes al

propósito del modelo, y a un apropiado nivel de detalle.

Diagrama: una representación gráfica de una colección

de elementos de modelado, a menudo dibujada como un

grafo con vértices conectados por arcos

Ingeniería de Sistemas e Informática publicado por.lightning

Page 17: Introduccion a la ingenieria de software

... 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 interés

El código fuente del sistema es el modelo más detallado del sistema (y además es ejecutable). Sin embargo, se requieren otros modelos ...

Ingeniería de Sistemas e Informática publicado por.lightning

Page 18: Introduccion a la ingenieria de software

... Diagramas de UML

Ingeniería de Sistemas e Informática publicado por.lightning

Use CaseDiagramsUse Case

DiagramsDiagramas de Casos de Uso

ScenarioDiagramsScenario

DiagramsDiagramas deColaboración

StateDiagramsState

DiagramsDiagramas deComponentes

ComponentDiagramsComponent

DiagramsDiagramas deDistribución

StateDiagramsState

DiagramsDiagramas de Objetos

ScenarioDiagramsScenario

DiagramsDiagramas deEstados

Use CaseDiagramsUse Case

DiagramsDiagramas deSecuencia

StateDiagramsState

DiagramsDiagramas deClases

Diagramas deActividad

Modelos

Los diagramas expresan gráficamente partes de un modelo

Page 19: Introduccion a la ingenieria de software

Organización de Modelos

Ingeniería de Sistemas e Informática publicado por.lightning

Propuesta de Rational Unified Process (RUP)El Proceso Unificado de Desarrollo de Software

M. de Casos de Uso del Negocio (Business Use-Case Model)

M. de Objetos del Negocio (Business Object Model) M. de Casos de Uso (Use-Case Model) M. de Análisis (Analysis Model) M. de Diseño (Design Model) M. de Despliegue (Deployment Model) M. de Datos (Data Model) M. de Implementación (Implementation Model) M. de Pruebas (Test Model)

Page 20: Introduccion a la ingenieria de software

¿Qué es un Proceso de Desarrollo de SW? RUP

Define Quién debe hacer Qué, Cuándo y Cómo debe hacerlo

No existe un proceso de software universal. Las características de cada proyecto (equipo de desarrollo, recursos, etc.) exigen que el proceso sea configurable

Ingeniería de Sistemas e Informática publicado por.lightning

Requisitos nuevos

o modificados

Sistema nuevo

o modificadoProceso de Desarrollo

de Software

Page 21: Introduccion a la ingenieria de software

Dos Dimensiones

Ingeniería de Sistemas e Informática publicado por.lightning

Page 22: Introduccion a la ingenieria de software

Ingeniería de Sistemas e Informática publicado por.lightning

El Proceso Unificado tiene dos dimensiones: (Figura 1):Un eje horizontal que representa el tiempo y muestra los

aspectos del ciclo de vida del proceso a lo largo de su desenvolvimiento

Un eje vertical que representa las disciplinas, las cuales agrupan actividades de una manera lógica de acuerdo a su naturaleza.

La primera dimensión representa el aspecto dinámico del proceso conforme se va desarrollando, se expresa en términos de fases, iteraciones e hitos (milestones).

La segunda dimensión representa el aspecto estático del proceso: cómo es descrito en términos de componentes del proceso, disciplinas, actividades, flujos de trabajo, artefactos y roles.

 

Dos Dimensiones

Page 23: Introduccion a la ingenieria de software

Etapas del ProcesoModelado del NegocioComprender procesos del negocio

Modelado de RequisitosObtener y describir requisitos del sistema

Análisis y Diseño del SistemaIdentificar clases y colaboraciones para

objetos del dominioResolver problemas de diseño (nuevas

clases y colaboraciones, patrones..)Diseño de Bases de Datos

ImplementaciónPruebas

Ingeniería de Sistemas e Informática publicado por.lightning

Modelo del

Negocio

Modelo de

Requisitos

Modelo del

AnálisisModelo

del Diseño

Page 24: Introduccion a la ingenieria de software

Modelado del NegocioObjetivo:Comprender el conjunto de procesos de negocio que tienen lugar dentro de una empresa, como paso previo a establecer los requisitos del sistema a desarrollar.

Centrado en diagramas de actividades de UML.

Ingeniería de Sistemas e Informática publicado por.lightning

Page 25: Introduccion a la ingenieria de software

Modelado del Negocio Una empresa organiza su actividad a través de un conjunto de procesos de negocioprocesos de negocio

Cada Proceso de Negocio se caracteriza por... Información que produce y manipula Tareas que producen o manipulan la información Agentes (trabajadores...) que participan en las tareas Flujos de trabajo que definen cómo los agentes colaboran

para el cumplimiento de una tarea Los procesos de negocio están restringidos por las reglasreglas del del

negocionegocio, que determinan las políticas y la estructura de la información

Ingeniería de Sistemas e Informática publicado por.lightning

Page 26: Introduccion a la ingenieria de software

Ejemplo: Empresa dedicada a la fabricación bajo demanda

Ingeniería de Sistemas e Informática publicado por.lightning

Registrar pedido de

cliente

Fabricar productos pedidos

Gestionar almacén de

materias primas

Generar Pedidos a

Proveedores

Registrar Pedido

Fabricar Producto Pedido

Gestionar Almacén

Realizar Pedido a

Proveedor

Identificar Procesos del Negocio

Objetivos Estratégicos

Subobjetivos Procesos del Negocio

Casos de Uso del Negocio

Satisfacer Pedidos de Clientes

Disminuir tiempo de fabricación un 15% ...Incrementar las

ventas en un 25%

Page 27: Introduccion a la ingenieria de software

Contexto y Límites de la Organización

Identificar Roles del Entorno

Ingeniería de Sistemas e Informática publicado por.lightning

Diagrama de Casos de Uso del Negocio

Registrar PedidoCliente

<<initiator>>

Fabricar Producto Pedido

Gestionar Almacen

Realizar Pedido a ProveedorProveedor

Jefe Tecnico

Jefe Produccion