Está en la página 1de 63

El modelo del proceso de software

1.1 Conceptualizacin de tecnologa orientada a objetos


Conceptos de la Programacin tradicional.
Conocida como programacin Estructurada consta de mltiples datos y funciones globales.

Todos los datos o funciones son visibles en todo el programa Pueden ser llamados desde cualquier ubicacin en la aplicacin.

Las instrucciones de un programa:


Estaban en funciones o procedimientos Se ejecutaban por el procesador de manera secuencial Afectando los datos del programa Los datos se almacenaban en la memoria.

Dos problemas principales:

a) La organizacin del programa de ser de acuerdo a la arquitectura de la computadora b) Los datos se vuelven globalmente visibles al estar separados de las funciones. Dado esto cualquier cambio en la estructura de los datos pudiera llegar a requerir la modificacin de todas las funciones del programa

Conceptos de la Programacin Orientada a Objetos Tiene una estructura de ms alto nivel llamada objeto, que ofrece dos ventajas sobre la tradicional:

a) Permite al programador que organice su programa de acuerdo con abstracciones de ms alto nivel. los objetos son las unidades de

representacin de las aplicaciones

Ejemplo: cuentas de bancos, reservaciones de vuelo, etc.

b) Los datos globales y las funciones son parte interna de los objetos. Por lo tanto los cambio en la estructura de alguno de los datos solo deber afectar las funciones definidas en ese mismo objeto. Un programa orientado a objetos, se define exclusivamente en trminos de objetos y sus relaciones.

Una Perspectiva Histrica


Tradicionalmente, la programacin fue hecha :
Secuencial o lineal: serie de pasos consecutivos con estructuras consecutivas y bifurcaciones. Esta forma de programacin Tenia el problema ocurre cuando los sistemas es complejos. programas estilo espaguetti

Frente a esta dificultad:


Aparece la programacin estructurada: La idea principal es separar las partes complejas del programa en mdulos.

Diseo modular ( comunicacin entre ellos)


Poco a poco este estilo de programacin fue reemplazando al estilo espaguetti impuesto por la programacin lineal.

La evolucin que se fue dando en la programacin se orientaba siempre a ir descomponiendo ms el programa Este tipo de descomposicin conduce directamente a la programacin orientada a objetos. As aparece la Programacin Orientada a Objetos (POO).
Viene de la evolucin de la programacin estructurada; bsicamente simplifica la programacin con la nueva filosofa y nuevos conceptos que tiene.

La POO se basa en la dividir el programa en pequeas unidades lgicas de cdigo.

Objetos. unidades independientes que se comunican entre ellos mediante mensajes. Cules son las ventajas de un lenguaje orientado a objetos?
Fomenta la reutilizacin y extensin del cdigo. Permite crear sistemas ms complejos. Relacionar el sistema al mundo real. Facilita la creacin de programas visuales. Construccin de prototipos Agiliza el desarrollo de software Facilita el trabajo en equipo Facilita el mantenimiento del software

Conceptos bsicos: Objetos, Clases, Herencia, Envo de mensajes (mtodos)

El modelo Orientado a Objetos

Los objetos son entidades que

tienen un determinado comportamiento (mtodo) e identidad. El estado est compuesto de datos atributos a los que se asignado un valor (datos). El comportamiento est definido por los mtodos operaciones se pueden realizar con l. La identidad es lo que diferencia del resto, es su identificador (variable o constante).

Caractersticas
Un objeto contiene toda la informacin que permite identificarlo frente a otros objetos Disponen de mecanismos de interaccin llamados mtodos (comunicacin entre ellos) Esta comunicacin favorece a su vez el cambio de estado en los propios objetos. Esta caracterstica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento

Conceptos Fundamentales POO


Para entender este modelo vamos a revisar 4 conceptos bsicos: Objetos Clases Herencia Envo de mensajes

1.- Objeto: Primero que es un objeto del mundo real: es cualquier cosa que vemos a nuestro alrededor.
Un monitor y una computadora, ambos son objetos, al igual que nuestro telfono celular, un rbol o un automvil.

Analicemos un poco ms a un objeto del mundo real, como la computadora. una computadora est compuesta internamente por varios componentes:

Tarjeta madre Procesador Disco duro Tarjeta de video, y otras partes ms.

El trabajo en conjunto de todos estos componentes hace operar a una computadora.

Cada componente es una unidad autnoma, y todo lo que necesitamos saber de adentro es cmo interactan entre. Por ejemplo si el procesador y las memorias son compatibles con la tarjeta madre, o conocer donde se coloca la tarjeta de video. Cuando conocemos como interaccionan, podremos armar fcilmente una computadora.

La POO trabaja de esta manera. Todo el programa est construido en base a diferentes componentes Objetos

Que tiene que ver esto con la programacin?

Cada uno tiene un rol especfico Todos los componentes pueden comunicarse entre ellos de formas predefinidas

Todo objeto del mundo real tiene 2 componentes:


1. Caractersticas 2. Comportamiento.

Por ejemplo, los automviles tienen: Caractersticas: marca, modelo, color, velocidad mxima, etc. Comportamiento: frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc. Los Objetos de Software, tambin caractersticas y comportamientos. Sus caractersticas en una o ms variables Su comportamiento con mtodos tienen

Para redondear estas ideas


Imaginemos que tenemos estacionado en nuestra cochera un Ford Focus color azul que corre hasta 260 km/h. Si pasamos ese objeto del mundo real al mundo del software, tendremos un objeto Automvil con sus caractersticas predeterminadas:
objeto del mundo objeto del mundo SW
Marca = Ford Modelo = Focus Color = Azul Vel_Mx = 260 km/h

Cuando a las caractersticas del objeto le ponemos valores decimos que el objeto tiene estados. Las variables almacenan los estados de un objeto en un determinado momento.

Definicin terica: Un objeto es una unidad de cdigo compuesto de variables y mtodos relacionados.

Entidad provista de un conjunto de atributos (datos) y de comportamiento (mtodos) los mismos que consecuentemente reaccionan a eventos.
Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.

2. Clase
En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro celular es slo uno de los miles que hay en el mundo.

Si hablamos en trminos de la POO, podemos decir que nuestro objeto celular es una instancia de una clase conocida como "celular".

Los celulares tienen:


Caractersticas marca, modelo, sistema operativo, pantalla, teclado, etc. Comportamientos hacer y recibir llamadas, enviar mensajes multimedia, transmisin de datos, etc.
Celular +Marca +Modelo +Colgar() +Llamar()

Ejemplo
Los fabricantes de celulares Aprovechan que los celulares comparten esas caractersticas comunes Construyen modelos o plantillas comunes A partir de esas se puedan crear muchos equipos celulares del mismo modelo.

A ese modelo o plantilla le llamamos CLASE, y a los equipos que sacamos a partir de ella la llamamos OBJETOS.
Objeto +Marca: Sagem +Modelo: X5 +Colgar() +Llamar()

Creando un objeto de la clase


Objeto +Marca: Sagem +Modelo: X5 +Colgar() +Llamar()

Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del mismo tipo y mismas caractersticas.

Definicin terica: es un modelo o prototipo

que define las variables y mtodos comunes a todos los objetos de cierta clase. Tambin se puede decir que una clase es una plantilla genrica para un conjunto de objetos de similares caractersticas.

Es la definiciones de las propiedades y comportamiento de un tipo de objeto La instanciacin es la lectura de estas definiciones y la creacin de un objeto a partir de ellas.

3. La herencia:
consiste en que una clase puede heredar sus variables y mtodos a varias subclases (la clase que hereda es llamada superclase o clase padre).

La subclase, aparte de los atributos y mtodos propios, tiene incorporados los atributos y mtodos heredados de la superclase.

Jerarqua de Herencia

Por ejemplo

imaginemos que estamos haciendo el anlisis de un Sistema para una tienda que vende y repara equipos celulares.
Celular +Marca +Modelo +Llamar() +Colgar()

Celular_nuevo +Marca +Modelo +Precio +Fecha_ingreso +Llamar() +Colgar()

Celula_reparar +Marca +Modelo +Motivo +Dueo +Llamar() +Colgar()

En el imagen vemos 2 Clases ms que requerimos nuestro Sistema.


Las cuales se construirn a partir de la Clase Celular existente. De esa forma utilizamos el comportamiento de la SuperClase.

Ejemplo : herencia de la clase C a la clase D


Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D.

Por lo tanto, puede usar (pblicas declaradas en C)

Mtodos Variables.
Los componentes "privados" tambin se heredan slo pueden ser accedidos a travs de otros mtodos pblicos.

4. Envo de Mensajes
Un objeto es intil si est aislado. El medio para interacte con otro son los mensajes invocaciones a los

mtodos de los objetos

Los Mensaje: es la comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos con ciertos parmetros asociados al evento que lo gener.

Propiedad o atributo:
contenedor de un tipo de datos asociados a un objeto, que hace los datos visibles desde fuera del objeto y esto se define como: Sus caractersticas predeterminadas, y cuyo valor puede ser alterado por la ejecucin de algn mtodo.

Estado interno:
Es una variable que se declara privada, que puede ser nicamente accedida y alterada por un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos).
No es visible al programador que maneja una instancia de la clase.

Componentes de un objeto:
Atributos Identidad Relaciones Mtodos.

Identificacin de un objeto: Se representa por una tabla compuesta por sus atributos y funciones correspondientes.

Caractersticas de la POO
Las caractersticas siguientes son las ms importantes:

1. La abstraccin
consiste en captar las caractersticas esenciales de un objeto, as como su comportamiento. Por ejemplo, volvamos al ejemplo de los automviles, Qu caractersticas podemos abstraer de los automviles? Qu caractersticas semejantes tienen todos los automviles?

Todos tendrn atributos :


o o o o o o o Marca Modelo Nmero de chasis Peso Llantas Puertas Ventanas, etc.

Y en cuanto a su comportamiento
o Acelerar o Frenar o Retroceder, etc.

En los lenguajes de POO, el concepto de Clase es la representacin y el mecanismo por el cual se gestionan las abstracciones

2. Encapsulamiento
Es el mecanismo bsico de la POO para ocultar los detalle internos del objeto de los damas objetos. Consiste en unir en la Clase las caractersticas y comportamientos, esto es, los atributos y mtodos. Es tener todo esto es una sola entidad. Es evidente que el encapsulamiento se logra gracias a la abstraccin y el ocultamiento que veremos a continuacin

La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde slo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesar ser conocer qu hace la Clase pero no ser necesario saber cmo lo hace.

Es evidente que el encapsulamiento se logra gracias a la abstraccin y el ocultamiento que veremos a continuacin

3. Ocultamiento
Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer slo los detalles que sean necesarios para el resto del sistema.

El ocultamiento permite 2 cosas:


Restringir el uso de la Clase: porque habr cierto comportamiento privado de la Clase que no podr ser accedido por otras Clases.

Controlar el uso de la Clase: porque daremos ciertos mecanismos para modificar el estado de nuestra Clase y es en estos mecanismos dnde se validarn que algunas condiciones se cumplan.

Por qu seguimos buscando

nuevas tcnicas de desarrollo?


Por el aumento de la complejidad de los sistemas. En un POO tendremos a un conjunto de objetos colaborando entre ellos. La O. O. es paradigma de que est de moda para el desarrollo de software.

En Resumen

Un objeto es una abstraccin conceptual del mundo real que se puede traducir a un lenguaje de POO Un objeto del mundo real tiene atributos y comportamientos, al igual que un objeto del mundo del software. Una Clase es una plantilla que define las variables y mtodos a ser incluidas en un tipo de objeto especfico.

Los objetos tambin son llamados instancias de la Clase. Los objetos slo almacenan su estado. valores en sus variables. Los objetos se comunican entre ellos usando los mensajes. Un mensaje es la invocacin de un mtodo del objeto. La O. O. requiere de una metodologa que integre el proceso de desarrollo y un lenguaje de modelamiento con herramientas y tcnicas adecuadas.

Modularidad:
Propiedad que permite subdividir una aplicacin en partes ms pequeas llamadas mdulos Cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. Estos mdulos se pueden compilar por separado, pero tienen conexiones con otros mdulos.

Polimorfismo:
En java es la habilidad de una variable por referencia de cambiar su comportamiento en funcin de que instancia de objeto posee.

Esto permite tratar de la misma manera, como objetos de la superclase, a mltiples objetos de la subclase, seleccionado en cada caso los mtodos apropiados.

Ejemplo:
Dada una clase Vehicular, la caracterstica de polimorfismo habilita al programador para definir mtodos en sus subclases (por ejemplo: coche, camin y
moto).

No importa qu tipo de Vehculo sea ya que si llamamos al mtodo getNumeroruedas() llamara al propio de cada subclase, pero el objeto deja de ser Vehculo tambin.

Recoleccin de basura
La garbage collector es la tcnica por la cual el entorno de objetos se encarga de destruir automticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos.

Esto significa que el programador no debe preocuparse por la asignacin o liberacin de memoria, ya que el entorno la asignar al crear un nuevo objeto y la liberar cuando nadie lo est usando.

Evento:
Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente.

Tambin se puede definir como la reaccin que puede desencadenar un objeto, es decir la accin que genera.

Estado interno:
Es una variable que se declara privada, que puede ser nicamente accedida y alterada por un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.

Lenguajes orientados a objetos


ABL Leng de programacin de OpenEdge de Progress Software Ada C++ Object Pascal (Embarcadero Delphi) JavaScript (la herencia se realiza por medio de la programacin basada en prototipos) Lexico (en castellano) Objective-C Visual FoxPro (en su versin 6) Visual Basic 6.0 Visual Objects

1.2. Metodologas emergentes de desarrollo de software.


Proceso
Define quin hace qu, cundo y cmo para alcanzar cierto objetivo. Los sistemas de software pueden llegar a ser muy complejos, para administrar dicha complejidad es necesario contar con modelos de procesos y tecnologas de software apropiadas.

Modelo de proceso
Define cmo solucionar la problemtica del desarrollo de sistemas de software.

Para desarrollar software se requiere resolver ciertas fases de su proceso, las cuales se conocen como el ciclo de vida de desarrollo de software. U Debe considerar aspectos como:
Personas Estructuras organizacionales Reglas Polticas Actividades Componentes de software Metodologas y herramientas.

No existe un solo modelo de proceso, depende del tipo particular de proyecto: Primer proyecto de su tipo. Se crea desde cero, requiere de ms tiempo para especificarlo y analizarlo, la incertidumbre crea riesgos adicionales. Segundo proyecto de su tipo. Se busca agregar nueva funcionalidad a un o conocido. Variacin de un proyecto. Se extiende un sistema ya existente, lo cual involucra introducir componentes de software reutilizables como un marco de trabajo (framework), crear nuevos componentes o simplemente extender la aplicacin existente mediante nueva funcionalidad. Dependiendo de la estrategia a utilizar, el modelo del proceso debe variar.

Proyecto de reescritura de legado (legacy). Se busca transformar o hacer una reingeniera de un sistema ya existente, desarrollado bajo tecnologas anteriores y transformarlo a tecnologas nuevas. Proyecto de creacin de software reutilizable. Se busca crear uno o ms componentes de software reutilizables, debe ser diseado de tal manera que se asegure de que el diseo sea lo suficientemente general para ser til en otras situaciones desconocidas, por ello no hay muchos proyectos as. Proyecto de mejora de sistema o mantenimiento. Se busca modificar los componentes bsicos de un sistema para apoyar a una nueva funcionalidad. Son regularmente pequeos y afectan solo a partes del sistema.

Arquitectura. Estructura general de un sistema y vara de acuerdo con el tipo de sistema a desarrollarse: Transformacin en lote (batch). Sistemas de transformacin sobre un conjunto de entradas de valor constante, para generar un conjunto de salidas, ejemplo un compilador. Transformacin contina. Sistemas de transformacin sobre un conjunto de entradas de valor constante, para generar un conjunto de salidas que difieren en el tiempo, ejemplo sistema de control de seales.

Componentes de un modelo de proceso

Sistemas interactivos. Regidos por interacciones externas, por lo general un usuario, son controlados por manejadores de eventos, encargados de procesar acontecimientos generados por el usuario, ejemplo un click o presionar una tecla. Simulacin dinmica. Sistemas que simulan sistemas del mundo real y evolucionan con el tiempo, ejemplo simuladores de sistemas financieros, redes neuronales, etc. Sistemas de tiempo real. Regidos por restricciones estrictas en el tiempo y requieren garantas en el tiempo de respuesta, ejemplos controladores de procesos industriales y dispositivos de comunicacin. Administracin de transaccin. Sistemas para interactuar con las bases de datos y que incluyen acceso concurrente y distribuido de mltiples usuarios, ejemplo reservaciones de vuelo y control de inventario.

Tambin la arquitectura involucra las interfaces (elementos grficos), la funcionalidad (reglas del negocio), los datos y las funciones (elementos internos de los objetos)

Actividad. Es una unidad o paso bsico de un proceso. En el proceso de software las actividades definen los pasos necesarios para lograr las metas y los objetivos. Las actividades bsicas del proceso de desarrollo de software son conocidas como el ciclo de vida:

Requisitos. Para especificar aspectos funcionales del sistema, que describen cmo interactuara un usuario con la aplicacin, se genera un Modelo de Requisitos. Anlisis. Para dar al sistema una estructura o arquitectura robusta y extensible, se genera un Modelo de Anlisis. Diseo. Para adoptar y refinar la arquitectura del sistema y adaptarla sl ambiente de implementacin, se genera un Modelo de Diseo (de estructuras o de objetos y de sistema). Implementacin. Para codificar el sistema, se genera un Modelo de Implementacin (lenguajes de programacin, bases de datos). Integracin. Para combinar componentes del sistema, se genera un Modelo de Integracin. Pruebas. Para validar y verificar el sistema, se genera un Modelo de Pruebas (validacin de acuerdo a la especificacin del cliente y verificacin si el sistema est siendo desarrollado correctamente). Documentacin. Para describir los diversos aspectos del sistema, se generan los manuales de usuario, programador, operador, administrador). Mantenimiento. Para extender la funcionalidad del sistema, es la continuacin del ciclo de vida, una vez concluida la primera versin del sistema.

Mtodos y Metodologas. Los mtodos definen las reglas para las transformaciones internas de las actividades, mientras que las metodologas definen el conjunto de mtodos. Un mtodo es un procedimiento que define tareas o acciones a realizar, donde cada tarea incluye condiciones de entrada y de salida que se deben satisfacer antes y despus de completarse.

Los mtodos deben: Apoyar conceptos bsicos significativos para resolver problemas. Se deben utilizar en distintos dominios de aplicacin segn las arquitecturas: secuencial, concurrente, distribuido, en tiempo real. Deben ajustarse al ciclo de vida del proceso, apoyando a todas las actividades. Deben proveer tcnicas para recopilar informacin. Deben apoyar su propia extensibilidad, su propia documentacin. Deben permitir la generacin de modelos a partir de la informacin recopilada por el mtodo. Deben apoyar la integridad de los modelos generados, verificando y evitando errores de consistencia. Deben ofrecer entradas y salidas bien definidas que permitan la integracin de varios mtodos. Deben contar con notaciones especficas y estandarizadas para representar los modelos desarrollados, los cuales deben incluir elementos grficos, de texto o combinacin de ambos. Deben tener confianza en los mtodos y las herramientas correspondientes; para lo cual se debe contemplar que stos se mantendrn en el mercado y, que cuenten con capacitacin y apoyo tcnico.

Existen una gran variedad de mtodos y metodologas en apoyo al proceso de software, como son las estructuras y orientadas a objetos. Estructuradas: Se enfocan en la descomposicin funcional de un sistema. El objetivo es lograr una definicin completa del sistema, estableciendo los datos de entrada y salida. Estas metodologas se conocen como anlisis y diseo estructurado (SA/SD Structured Analysis and Structured Design) y se basan en herramientas como:
o o Diagramas de flujo de datos. Modelado de transformacin de datos entre funciones del sistema. Se compone de procesos, flujo de datos, actores, y almacenamiento de datos (DFD). Diagramas de transicin de estado. Sirven para modelar el comportamiento a travs del tiempo, describen el efecto de eventos externos en los procesos y funciones. Diagramas entidad-relacin. Para modelar un almacenamiento de datos.

Orientadas a objetos: Se enfocan en el modelado de un sistema en trminos de objetos. Se identifican inicialmente los objetos del sistema para luego especificar su comportamiento y usan las herramientas siguientes:
o o o o o o

Diagramas de clase. Describen los componentes esenciales de la arquitectura de un sistema. A diferencia de los DFD, los de clases muestran relaciones de asociacin entre clases y no flujo de datos entre ellas. Diagramas de casos de uso. Especifican un sistema en trminos de su funcionalidad. A diferencia de las metodologas estructuradas los de casos de uso no son descompuestos en funciones de programacin. Diagramas de transicin de estado. Describen los cambios de estado de los objetos. Diagramas de secuencia. Describen los aspectos dinmicos de sistema, mostrando el flujo de eventos entre objetos en el tiempo. Diagramas de colaboracin. Describen la comunicacin entre objetos de un sistema. Diagramas de subsistemas. Se usan para describir agrupaciones de clases en un sistema.

Metodologas Emergentes