jueves, 12 de julio de 2012


PROCESO DE DESARROLLO DE SOFTWARE:


Un sistema informático está compuesto por hardware y software. En cuanto al hardware, su producción se realiza sistemáticamente y la base de conocimiento para el desarrollo de dicha actividad está claramente definida. La fiabilidad del hardware es, en principio, equiparable a la de cualquier otra máquina construida por el hombre. Sin embargo, respecto del software, su construcción y resultados han sido históricamente cuestionados debido a los problemas asociados.

Para ello el proceso de desarrollo del software  tiene como propósito la producción eficaz y eficiente de un producto software que reúna los requisitos del cliente.  Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas. Aunque un proyecto de desarrollo de software es equiparable en muchos aspectos a cualquier otro proyecto de ingeniería, en el desarrollo de software hay una serie de desafíos adicionales, relativos esencialmente a la naturaleza del producto obtenido.       Un producto software en sí es complejo, es prácticamente inviable conseguir un 100% de confiabilidad de un programa por pequeño que sea. Existe una inmensa combinación de factores que impiden una verificación exhaustiva de las todas posibles situaciones de ejecución que se puedan presentar (entradas, valores de variables, datos almacenados, software del sistema, otras aplicaciones que intervienen, el hardware sobre el cual se ejecuta, etc.).

FUNDAMENTOS DEL ENFOQUE ORIENTADO A OBJETO

El Enfoque Orientado a Objeto se basa en cuatro principios que constituyen la base de todo desarrollo orientado a objetos. Estos principios son: la Abstracción, el Encapsulamiento, la Modularidad y la Herencia.

Otros elementos a destacar (aunque no fundamentales) en el EOO son: Polimorfismo, Enlace dinámico (o binding), Concurrencia y Persistencia.

1.    Abstracción

Es el principio de ignorar aquellos aspectos de un fenómeno observado que no son relevantes, con el objetivo de concentrarse en aquellos que si lo son.

Los mecanismos de abstracción son usados en el EOO para extraer y definir del medio a modelar, sus características y su comportamiento. Dentro del EOO son muy usados mecanismos de abstracción: la Generalización, la Agregación y la clasificación.

Ø  Generalización es el mecanismo de abstracción mediante el cual un conjunto de clases de objetos son agrupados en una clase de nivel superior (Superclase), donde las semejanzas de las clases constituyentes (Subclases) son enfatizadas, y las diferencias entre ellas son ignoradas.
Ø  Agregación es el mecanismo de abstracción por el cual una clase de objeto es definida a partir de sus partes (otras clases de objetos).

Ø  Clasificación consiste en la definición de una clase a partir de un conjunto de objetos que tienen un comportamiento similar.

2.    Encapsulamiento (Ocultamiento de Información)

Es la propiedad del EOO que permite ocultar al mundo exterior la representación interna del objeto. Esto quiere decir que el objeto puede ser utilizado, pero los datos esenciales del mismo no son conocidos fuera de él.

El encapsulamiento en un sistema orientado a objeto se representa en cada clase u objeto, definiendo sus atributos y métodos con los siguientes modos de acceso:

v  Público (+) Atributos o Métodos que son accesibles fuera de la clase. Pueden ser llamados por cualquier clase, aun si no está relacionada con ella.

   v Privado (-) Atributos o Métodos que solo son accesibles dentro de la implementación de la clase.

v  Protegido (#): Atributos o Métodos que son accesibles para la propia clase y sus clases hijas (subclases)

3 .   Modularidad
Es la propiedad que permite tener independencia entre las diferentes partes de un sistema. La modularidad consiste en dividir un programa en módulos o partes, que pueden ser compilados separadamente, pero que tienen conexiones con otros módulos.

4 .    Herencia
Es el proceso mediante el cual un objeto de una clase adquiere propiedades definidas en otra clase que lo preceda en una jerarquía de clasificaciones.

5.    Polimorfismo

            Es una propiedad del EOO que permite que un método tenga múltiples implementaciones, que se seleccionan en base al tipo objeto indicado al solicitar la ejecución del método.
    Polimorfismo operacional o Sobrecarga operacional permite aplicar operaciones con igual nombre a diferentes clases o están relacionados en términos de inclusión. En este tipo de polimorfismo, los métodos son interpretados en el contexto del objeto particular, ya que los métodos con nombres comunes son implementados de diferente manera dependiendo de cada clase.

Los beneficios del enfoque OO son: 

            El uso del modelo OO nos ayuda a explotar el poder expresivo de todos los lenguajes de programación basados en objetos y los orientados a objetos, como Smalltalk, Object Pascal, C++, CLOS, Ada, [ y recientemente Java] .

El uso del modelo OO alienta el reuso no solo del software, sino de diseños completos.

Produce sistemas que están construidos en formas intermedias estables y por ello son más resistentes al cambio en especificaciones y tecnología.

Desarrollo de componentes

El desarrollo de software basado en componentes permite reutilizar piezas de código pre elaborado que permiten realizar diversas tareas, conllevando a diversos beneficios como las mejoras a la calidad, la reducción del ciclo de desarrollo y el mayor retorno sobre la inversión. Al comparar la evolución del ambiente de IT con el crecimiento de las metrópolis actuales, podemos entender el origen de muchos problemas que se han presentado históricamente en la construcción de software y vislumbrar las posibles y probables soluciones que nos llevarán hacia la industrialización del software moderno.
Este proceso de industrialización ha dado ya sus inicios con implementaciones como la plataforma .net, la cual impulsa la idea de industrializar el software utilizando tecnologías de componentes. Los avances y mejoras presentados en esta plataforma van mucho más allá de las implementaciones iníciales como COM y CORBA, convirtiendo a los componentes .net en verdaderas piezas de ensamblaje, en un estilo muy similar a las líneas de ensamblaje modernas. Asimismo, los nuevos paradigmas como las Fábricas de Software proveen de los medios para hacer la transición desde el 'hacer a mano' hacia la fabricación o manufactura de software.
Sin embargo más allá de su definición existen algunas características claves para que un elemento pueda ser catalogado como componente:

–  Identificable: Debe tener una identificación que permita acceder fácilmente a sus servicios y que permita su clasificación.
–  Auto contenido: Un componente no debe requerir de la utilización de otros para finiquitar la función para la cual fue diseñado. 

–  Puede ser remplazado por otro componente: Se puede remplazar por nuevas versiones u otro componente que lo remplace y mejore.

–  Con acceso solamente a través de su interfaz: Debe asegurar que estas no cambiaran a lo largo de su implementación.

–  Sus servicios no varían: Las funcionalidades ofrecidas en su interfaz no deben variar, pero su implementación sí.

Bien Documentado: Un componente debe estar correctamente documentado para facilitar su búsqueda si se quiere actualizar, integrar con otros, adaptarlo, etc.

–  Es genérico: Sus servicios debe servir para varias aplicaciones.

–  Reutilizado dinámicamente: Puede ser cargado en tiempo de ejecución en una aplicación.

–  Independiente de la plataforma: Hardware, Software, S.O

TIPOS DE COMPONENTES

 Framework:
 
Los frameworks de componentes proporcionan servicios que soportan un modelo de componentes. Estos modelos de componentes son patrones que permiten interactuar entres si de acuerdo al problema que resuelven y permiten la extensibilidad del framework y su funcionalidad, estos son aplicados a dominios específicos, lo cual hace que el framework también lo sea, se dice que un framework es una aplicación incompleta y genérica, sobre la cual las aplicaciones que se implementan (las que soporta) son las que le dan el estado final definiendo una funcionalidad especifica y propia.

Las principales ventajas que ofrecen los frameworks son la reducción del costo en el proceso de desarrollo de aplicaciones software para dominios específicos, y la mejora de la calidad del producto final.

Bussines Component

Los componentes de negocio, son aquellos componentes especializados en prestar alguna clase de servicio, enfocado a un dominio en particular. Los componentes de negocio son aquellos componentes que generan el valor agregado y se enfocan a las necesidades de los clientes. Un componente de negocio es aquel que realiza o provee al cliente de la funcionalidad necesaria en su aplicación para resolver sus necesidades y cumplir con sus requerimientos.  Este tipo de componentes se sitúan por lo general en el último escalafón dentro del desarrollo basado en componentes, ya que estos son los que darán la funcionalidad propia del negocio a la aplicación, estos componentes están soportados por lo general bajo un framework en particular, el cual permite que el componente de negocio se desempeñe y cumpla con su objetivo, lo cual implica que además de las características propias de un componente de software, tenga también las características adicionales del framework sobre el cual está soportado.

Posee los siguientes niveles:

Nivel de Marketing: Características de la organización y el negocio, condiciones técnicas.

Nivel de tarea: Ayuda a las tareas del negocio que corresponden al dominio de la aplicación. Propósito de la aplicación.

Nivel de terminología: Definición de conceptos del dominio de la aplicación.

Nivel de Calidad: Criterios de calidad, procedimientos y categorías de medidas, niveles de servicio.

Nivel de interacción: Secuencias de dependencias a través de servicios del mismo componente de negocio y de diferentes componentes de negocio.

Nivel de Comportamiento: Pre y pos condición, invariantes.

Nivel de Interfaces: Servicios, parámetros, tipos de datos y excepciones.

Por medio de estos niveles la búsqueda de un componente de negocio resulta más rápida y fácil, acelerando el proceso de DSBC.