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.