semanas01y02

23
INGENIERÍA DEL SOFTWARE ING. BETTY SUÁREZ TORRES

Upload: luisortiz

Post on 04-Jul-2015

1.157 views

Category:

Business


0 download

TRANSCRIPT

Page 1: Semanas01y02

INGENIERÍA DEL SOFTWARE

ING. BETTY SUÁREZ TORRES

Page 2: Semanas01y02

EL PARADIGMA ORIENTADO A OBJETOS

Un paradigma de programación es una colección de modelos conceptuales que juntos modelan el proceso de diseño y determinan la estructura de un programa.Tipos de Paradigmas de Programación a) Que soportan técnicas de programación de bajo nivelb) Que soportan métodos de diseño de algoritmosc) Que soportan soluciones de programación de alto niveld) Basado para el desarrollo de sistemas expertose) De programación lógicaf) De programación funcionalg) De programación heurísticah) Orientado al objetoDiferentes lenguajes de programación que soportan cada una de estas categorías de paradigmasa) Solución procedimental u operacionalb) Solución demostrativac) Solución declarativa

Page 3: Semanas01y02

Paradigmas Procedimentales u Operacionales: secuencia computacional realizada etapa a etapa para resolver el problema. Su mayor dificultad reside en determinar si el valor computado es una solución correcta del problema.Paradigmas Demostrativos: Cuando se programa bajo un paradigma demostrativo (también llamada programación por ejemplos), el programador no especifica procedimentalmente cómo construir una solución sino que presentan soluciones de problemas similares.Paradigmas Declarativos: se construye señalando hechos, reglas, restricciones, ecuaciones, transformaciones y otras propiedades derivadas del conjunto de valores que configuran la solución.Paradigmas Imperativo: modelo abstracto que consiste en un gran almacenamiento de memoria donde la computadora almacena una representación codificada de un cálculo y ejecuta una secuencia de comandos que modifican el contenido de ese almacenamiento. Algoritmos + Estructura de Datos = Programa.Paradigmas Funcional: modelo matemático de composición funcional donde el resultado de un cálculo es la entrada del siguiente, y así sucesivamente hasta que una composición produce el valor deseado.Paradigma Orientado a Objeto: disciplina de ingeniería de desarrollo y modelado de software que permite construir más fácilmente sistemas complejos a partir de componentes individuales. Objetos + Mensajes = Programa.

Page 4: Semanas01y02

a) Identidad: Los datos están cuantificados en entidades discretas y distinguibles llamadas objetos.b) Clasificación: Significa que los objetos con la misma estructura de datos (atributos) y comportamiento (operaciones) se agrupa para formar una clase.c) Polimorfismo: Significa que una misma operación puede comportarse de modos distintos en distintas clases.d) Herencia: Compartir atributos y operaciones entre clases tomando como base una relación jerárquica.Paradigma Heurístico: Define un modelo de resolución de problemas en el que se incorpora alguna componente heurística sobre la base de una representación más apropiada de la estructura del problema para su resolución con técnicas heurísticas.Como se entiende la tecnología orientada a objeto.Los informáticos en comparación con una persona ciega no busca más allá de lo que piensa esta viendo, limitándose a solo lo que esta palpando en ese momento sin darse cuenta que lo que esta investigando es mucho más grande de lo que aparenta.

Page 5: Semanas01y02

CONCEPTOS DE ORIENTACIÓN A OBJETOS

Un objeto encapsula datos, operaciones, otros objetos, constantes y otra información relacionada.Una clase es un concepto OO que encapsula las abstracciones de datos y procedimientos que se requieren para describir el contenido y comportamiento de alguna entidad del mundo Una clase es una descripción generalizada que describe una colección de objetos similares. Todos los objetos que existen dentro de una heredan sus atributos y las operaciones disponibles para la manipulación de los atributos. Una superclase es una colección de clases y una instancia de una clase.Los Atributos están asociados a clases y objetos, ellos describen la clase y el objeto de alguna manera. Un atributo puede tomar un valor definido por un dominio enumerado. En la mayoría de los casos, un dominio es simplemente un conjunto de valores específicos. En situaciones más complejas el dominio puede ser un conjunto de clases.Los mensajes son el medio a través del cual los objetos intercalan. Un mensaje estimula la ocurrencia de cierto comportamiento en el objeto receptor. El comportamiento se realiza cuando se ejecuta una operación.El encapsulamiento significa que toda la información de un objeto se encuentra empaquetada bajo un nombre y puede reutilizarse como una especificación o componente de un programa.La herencia funciona de la siguiente forma: Una SubClase hereda todos los Atributos y operaciones asociadas con su superclase.El polimorfismo permite que un número de operaciones diferentes tengan el mismo nombre. Esto reduce el acoplamiento entre objetos, haciendo a cada uno más independiente.

Page 6: Semanas01y02

Identificación de Clases y ObjetosLos objetos se determinan subrayando cada nombre o cláusula nominal e introduciéndola en una simple.Pueden ser: Entidades Externas, Ocurrencias o eventos, papeles o roles, unidades organizacionales, lugares, estructuras.Existen cinco características que deben ser usadas para incluir o un objeto en el modelo de análisis:1) información retenida2) servicios necesarios3) atributos múltiples4) atributos comunes5) requisitos esenciales. NOTA: El objeto debe cumplir todas o casi todas de las características anteriores para ser considerado un objeto válido.Especificación de AtributosPara desarrollar un conjunto de atributos el analista puede estudiar la narrativa de proceso para el problema y seleccionar aquellos elementos que razonablemente pertenecen al objeto. Para cada objeto responderse la siguiente pregunta: ¿Qué elementos definen completamente el objeto en el contexto del problema actual?

Page 7: Semanas01y02

Definición de OperacionesLas operaciones definen el comportamiento de un objeto y cambian, de alguna manera, los atributos de dicho objeto. Más correctamente, una operación cambia valores de uno o más atributos contenidos en el objeto.Aunque existen muchos tipos diferentes de operaciones, estas pueden clasificarse en tres grandes categorías:1) Operaciones que manipulan, de alguna manera, datos, 2) Operaciones que realizan algún calculo y 3) Operaciones que motorizan un objeto frente a la ocurrencia de un suceso de control.Fin de la definición de objetosLa definición de operaciones es él ultimo paso para completar la especificación del objeto. Las operaciones adicionales pueden determinarse considerando la “historia de la vida” de un objeto y los mensajes que se pasan entre objetos definidos por el sistema.La historia de la vida genérica de un objeto puede definirse reconociendo que dicho objeto debe ser creado, modificado, manipulado o leído de manera diferente, y posiblemente borrado.

Page 8: Semanas01y02

Marco de proceso común para OOUn marco de proceso común (MPC) define un enfoque organizado para el desarrollo y mantenimiento de software. El MPC efectivo para proyectos OO no es un modelo inicial secuencial. El marco de proceso común usado para dirigir un proyecto OO debe ser por naturaleza evolutivo. Métricas y estimaciones en proyectos orientado a objetosNúmeros de guiones de escenario: Un guión de escenario es una secuencia detallada de pasos que describen la interacción entre el usuario y la aplicación.Numero de clases claves: Las clases claves son las componentes altamente independientes, definidas inicialmente en al AOO.Número de clases soportes: Las clases de soportes son necesarias para implementar el sistema, pero no están directamente relacionadas con el dominio del problema.Numero promedio de clases de soporte por clase clave: En general las clases claves son conocidas en las primeras etapas del proyecto. Las clases de soporte se definen a lo largo de este.Numero de subsistencia: Un subsistema es una agregación de clases que dan soporte a una función visible al usuario final del sistema.

Page 9: Semanas01y02

Clases y ObjetosUna clase es un concepto OO que encapsula las abstracciones de datos y procedimientos que se requieren para describir el contenido y comportamiento de alguna entidad del mundo real. Por definición, todos los objetos que existen dentro de una clase heredan sus atributos y las operaciones disponibles para la manipulación de los atributos.Atributos: Son los que están asociados a clases y objetos, y que ellos describen la clase o el objeto de alguna manera. Un atributo puede tomar un valor definido por un dominio enumerado. Un dominio es simplemente un conjunto de valores específicos.Operaciones, Métodos Y Servicios: Un objeto encapsula datos y los algoritmos que procesan estos datos.Estos algoritmos son llamados Operaciones, métodos o servicios y pueden ser vistos como módulos en un sentido convencional. Cada una de las operaciones encapsuladas por un objeto proporciona una representación de uno de los comportamientos del objeto.Mensajes: Los mensajes son el medio a través del cual los objetos interactúan. Usando la terminología introducida en la sección precedente, un mensaje estimula la ocurrencia de ciertos comportamientos en el objeto receptor.

Page 10: Semanas01y02

Encapsulamiento, Herencia Y PolimorfismoLas clases OO y los objetos derivados de ella encapsulan los datos y las operaciones que trabajan sobre estos en un único paquete. Estos proporcionan importantes beneficios:Detalles de implementación interna de datosProcedimientos están ocultos al mundo exteriorLas Estructuras de datos y las operaciones que las manipulan están mezcladas en una entidad sencilla: La clase.Las Interfaces entre objetos encapsulados están simplificadas.La Herencia es una de las diferencias clave entre sistemas convencionales y sistemas OO. La reutilización se realiza directamente. Cualquier cambio en los datos u operaciones contenidas dentro de una superclase se hereda inmediatamente por todas las subclases que se derivan de la superclase.El Polimorfismo es una característica que reduce en gran medida el esfuerzo necesario para extender un sistema OO. Para entender el polimorfismo, considere una aplicación convencional que debe dibujar cuatro tipos diferentes de gráficos: Gráficos de líneas, Gráficos de Tarta, Histograma, etc.

Page 11: Semanas01y02

IDENTIFICACIÓN DE LOS ELEMENTOS DE UN MODELO DE OBJETOS

Existen diferentes directrices informales para identificar los elementos de un modelo de objetos. Podemos identificar objetos examinando el planteamiento del problema a la función que desempeña aquel objeto. Por ejemplo, si implemente una solución formara parte del espacio solución. Los objetos pueden ser de diferentes tipos:Entidades Externas (dispositivos, personas) que maneja informaciones a usar por sistema computacional.Ocurrencias o eventos (transformaciones de una serie de movimientos) que ocurren dentro del contexto de operación del sistemaPapeles o roles (Ing. Vendedor) desempeñados por personas que interactúan con el sistema Cosas (Partes del dominio del problema)Lugares (Establece el contexto del problema y la función general del sistema)

Page 12: Semanas01y02

Para ser considerado como valido n objeto debe de tener las siguiente características:Información retenidaServicio necesarioAtributos múltiplesAtributos comunesOperaciones comunesRequisitos esencialesUn atributo es aquel objeto que ha sido seleccionado para ser incluido en el modelo de análisis. Tiene por objetivo definir a los objetos.Las operaciones indican el comportamiento del objeto dentro del sistema, cambia uno o más atributos contenidos en el sistema.Pueden ser clasificados entre tres grandes categoríasOperaciones que manipulan datosOperaciones que realizan algún Calculo

Page 13: Semanas01y02

UML (Lenguaje Unificado de Modelamiento)

Es un lenguaje para especificar, visualizar, construir y documentar los artefactos de un sistema de software orientado a objetos. Un artefacto es una pieza de información que es utilizada o producida mediante un proceso de desarrollo de software.UML no es una metodología de desarrollo, es un lenguaje para expresar modelos orientados a objetos, y por lo tanto es parte de un método de desarrollo de software.El término unificado "unified" se refiere al hecho de que el Object Management Group (OMG) y Rational Software Corporation crearon UML para reunir las mejores prácticas de la industria. Para que los desarrolladores contaran con modelos precisos se creó el sub-lenguaje Object Constrain Language (OCL), para añadir condiciones a los elementos del modelo que debe cumplir para considerarlo correcto.UML es independiente del proceso de desarrollo utilizado, pero sus autores promueven el uso de un proceso dirigido por los casos de uso, centrado en la arquitectura, iterativo e incremental.

Page 14: Semanas01y02

DESARROLLO DE SOFTWARE ORIENTADO A OBJETOS

Un proceso de desarrollo de software define quien está haciendo qué, cuándo y cómo alcanzar un determinado objetivo.En la ingeniería de software el objetivo es construir un producto software o mejorar uno existente. Un proceso efectivo proporciona normas para un desarrollo de calidad.Un proceso de desarrollo de software debería también ser capaz de evolucionar durante muchos años. Durante esta evolución debería limitar su alcance, en un momento del tiempo dado, a las realidades que permita las tecnologías, herramientas, personas y patrones de organización.Tecnologías: el proceso debe construirse sobre las tecnologías (lenguaje de programación, sistemas operativos, estructuras de red, computadores, etc.) disponibles en el momento en el que se va a emplear el procesoHerramientas: los procesos y herramientas deben desarrollarse en paralelo. Las herramientas son esenciales en el procesoPersonas: un creador del proceso debe limitar el conjunto de habilidades necesarias para trabajar en el proceso a las habilidades que los desarrolladores posean, o apuntar a aquellas que los desarrolladores puedan obtener rápidamente.Patrones de organización: el creador del proceso debe adaptar el proceso a las realidades del momento como las empresas virtuales, el trabajo a distancia, subcontratas por outsourcing, etc.

Page 15: Semanas01y02

USO DE UML EN INGENIERÍA DEL SOFTWARE

En la especificación de UML podemos comprobar que una de las partes que lo componen es una metamodelo formal. Un metamodelo es un modelo que define el lenguaje para expresar otros modelos. Un sistema puede ser descrito por uno o más modelos desde distintos puntos de vista.Vistas del modelado de un sistemaUML permite la creación de diagramas a partir de modelos resultantes de los diferentes puntos de vista del usuario. La arquitectura de un sistema se puede describir mediante cinco vistas interrelacionadas, donde cada una de ellas es una proyección de la estructura y organización del sistema enfocado:Vista de casos de usoDescribe el comportamiento del sistema desde el punto de vista de los usuarios finales, analistas y personal encargado de las pruebas del sistema. Los diagramas UML utilizados en esta vista son:

Diagrama de casos de usoDiagrama de interacciónDiagrama de estadosDiagrama de actividades

Page 16: Semanas01y02

Vista de diseñoMuestra los requisitos funcionales del sistema, es decir, los servicios que el sistema brinda a los usuarios finales. Comprende las clases, interfaces y colaboraciones. Los diagramas utilizados son:Diagrama de clasesDiagrama de objetosDiagrama de interacciónDiagrama de estadoDiagrama de actividades

Vista de procesosMuestra los hilos y procesos que forman los mecanismos de sincronización y concurrencia del sistema. Comprende la funcionalidad, capacidad de crecimiento y rendimiento del sistema. Los diagramas utilizados son los mismos de la vista de diseño pero con énfasis en las clases activas que representan a los hilos y procesos.

Diagrama de casos de usoDiagrama de interacciónDiagrama de estadosDiagrama de actividades

Page 17: Semanas01y02

Vista de implementaciónMuestra los componentes y archivos necesarios para hacer disponible el sistema físico. Esta vista se centra principalmente en la gestión de la configuración de las distintas versiones del sistema. Los diagramas utilizados son:

Diagrama de componentesDiagrama de interacciónDiagrama de estadoDiagrama de actividades

Vista de despliegueMuestra los nodos que forman la topología hardware sobre la que se ejecuta el sistema. Esta vista se centra en la distribución, entrega e instalación de las partes que forman el sistema físico. Los diagramas utilizados son:Diagrama de despliegueDiagrama de interacciónDiagrama de estadoDiagrama de actividades

Page 18: Semanas01y02

UML como lenguaje de especificación permite definir modelos precisos, sin ambigüedades, ya que UML utiliza una notación de símbolos que tienen una semántica bien definida que puede ser interpretada por cualquier desarrollador, y completos.UML no es un lenguaje de programación, la correspondencia entre el modelo UML y el lenguaje de programación, permite ejecutar ingeniería directa, es decir, la generación de código a partir del modelo. También se puede ejecutar ingeniería reversa, es decir, la reconstrucción de un modelo UML a partir de su implementación.UML proporciona un lenguaje para modelar las actividades de planificación de proyectos, gestión de versiones, y para expresar requisitos y pruebas.

Page 19: Semanas01y02

MODELADO CON UML. HERRAMIENTAS

UML es utilizado como herramienta de modelado visual, como tal, se le asignan características como edición, formato, zoom, imprimir, dar color y diseño automático.Además UML define algunas reglas sintácticas que especifican como combinar elementos del lenguaje.UML representa la unificación de las notaciones de Booch, OMT y Objectory, al igual que las mejores ideas de otros metodologistas. Mediante la unificación de las notaciones usadas por estos métodos orientados a objetos, el Lenguaje Unificado de Modelado establece la base para un estándar en el dominio del análisis y el diseño orientados a objetos, fundado en una amplia base de experiencia de los usuarios. UML ha sido desarrollado con el fin de ser útil para modelar diferentes sistemas: de información, técnicos (telecomunicaciones, industria, etc.), empotrados de tiempo real, distribuidos; y no sólo es útil para la programación sino también para modelar negocios, es decir, los procesos y procedimientos que establecen el funcionamiento de una empresa. En lo que corresponde al desarrollo de programas, posee elementos gráficos para soportar la captura de requisitos, el análisis, el diseño, la implementación, y las pruebas. Sin embargo es necesario recalcar que UML es una notación y no un proceso/método, es decir, es una herramienta útil para representar los modelos del sistema en desarrollo, mas no ofrece ningún tipo de guía o criterios acerca de cómo obtener esos modelos.

Page 20: Semanas01y02

Los diagramas de UML se pueden clasificar de la siguiente manera: Diagrama de Casos de Uso:Sirve para describir las interacciones del sistema con su entorno, identificando los Actores, que representan los diferentes roles desempeñados por los usuarios del sistema, y los Casos de Uso, que corresponden a la funcionalidad que el sistema ofrece a sus usuarios, explicada desde el punto de vista de éstos. Diagramas de Clase y Diagramas de Objetos:Un diagrama de clases es una colección de elementos de un modelo estático declarativo, tales como clases, interfaces, y sus relaciones, conectados como un grafo entre sí y con sus contenidos. Si bien la estructura estática de los modelos está integrada por clases y no por objetos, frecuentemente es necesario utilizar diagramas de objetos con el fin de ilustrar cómo se instancia en un momento dado un diagrama de clases.

Page 21: Semanas01y02

Diagramas de Comportamiento: Diagramas de Secuencia:Un Diagrama de Secuencias contribuye a la descripción de la dinámica del sistema en términos de la interacción entre sus objetos. Diagramas de Colaboración:Los Diagramas de Colaboración muestran no sólo los mensajes a través de los cuales se produce la interacción entre los objetos, como en los Diagramas de Secuencia, sino también los enlaces entre los objetos; se trata de una mezcla de Diagrama de Objetos y Diagrama de Secuencia. Diagramas de Estados:Permite describirla en términos del ciclo de vida de un objeto de una clase, mostrando los estados que éste puede tener y los estímulos que dan lugar a los cambios de estado. Diagramas de Actividad:Los Diagramas de Actividad son en esencia diagramas de flujo, con algunos elementos adicionales que les permiten expresar conceptos como la concurrencia y la división del trabajo.

Page 22: Semanas01y02

Diagramas de Implementación: Diagramas de Componentes:Presenta elementos tangibles, los archivos. Se lo utiliza, para describir la estructura física del código de la aplicación en términos de sus componentes (código fuente, binario o ejecutable) y sus dependencias. Diagramas de Implantación:Muestran nodos, conexiones, componentes y objetos. Los nodos representan objetos físicos con recursos computacionales como procesadores y periféricos; pueden mostrarse como una clase (e.g. una familia de procesadores) o una instancia, por lo que su nombre sigue la misma sintaxis establecida para clases y objetos. Las conexiones son asociaciones de comunicación entre los nodos, y se etiquetan con un estereotipo que identifica el protocolo de comunicación o la red utilizada. Los componentes son archivos de código ejecutable, que residen y se ejecutan dentro de un nodo; se pueden representar relaciones de dependencia entre los componentes que, de manera similar a las dependencias entre paquetes, corresponden al uso de servicios.

Page 23: Semanas01y02

MODELANDO UN PROCESO DE NEGOCIO