Componentes fundamentales
del Enfoque Orientado a Objetos.
· Clase: Definiciones
de las propiedades y comportamiento de un tipo de objeto concreto. La
instanciación es la lctura de estas definiciones y la creación de un objeto a
partir de ellas.
· Herencia: (Por 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 los mismos
métodos y variables publicas declaradas en C. Los componentes registrados como
"privados" (private) también se heredan, pero como no pertenecen a la
clase, se mantienen escondidos al programador y sólo pueden ser accedidos a
través de otros métodos públicos. Esto es así para mantener hegemónico el ideal
de OOP.
· Objeto: Entidad
provista de un conjunto de propiedades o atributos (datos) y de comportamiento
o funcionalidad (métodos) 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.
·
Método: Algoritmo asociado a un objeto (o a una
clase de objetos), cuya ejecución se desencadena tras la recepción de un
"mensaje". Desde el punto de vista del comportamiento, es lo que el
objeto puede hacer. Un método puede producir un cambio en las propiedades del
objeto, o la generación de un "evento" con un nuevo mensaje para otro
objeto del sistema.
· Evento:
Es un suceso en el sistema (tal como una interacción del
usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja
el evento enviando el mensaje adecuado al objeto pertinente. También se puede
definir como evento, a la reacción que puede desencadenar un objeto, es decir
la acción que genera.
·
Mensaje:
Una comunicación dirigida a un objeto, que le ordena que
ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo
generó.
·
Propiedad o atributo: Contenedor
de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace
los datos visibles desde fuera del objeto y esto se define como sus
características predeterminadas, y cuyo valor puede ser alterado por la
ejecución de algún método.
·
Estado interno: Es una variable
que se declara privada, que puede ser únicamente accedida y alterada por un
método 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 y métodos.
·
Identificación de un objeto: Un
objeto se representa por medio de una tabla o entidad que esté compuesta por
sus atributos y funciones correspondientes.
Reusabilidad de
componentes.
Una vez que una
clase ha sido escrita, creada y depurada, se puede distribuir a otros
programadores para utilizar en sus propios programas. Esta propiedad se llama
reusabilidad o reutilización. Su concepto es similar a las funciones
incluidas en las bibliotecas de funciones de un lenguaje procedimental como C
que se pueden incorporar en diferentes programas. En C++, el concepto de
herencia proporciona una extensión o ampliación al concepto de reusabilidad.
Un programador
puede considerar una clase existente y sin modificarla, añadir competencias y
propiedades adicionales a ella. Esto se consigue derivando una nueva clase de
una ya existente. La nueva clase heredará las características de la
clase antigua, pero es libre de añadir nuevas características propias.
La facilidad de
reutilizar o rehusar el software existente es uno de los grandes beneficios de
la POO: muchas empresas consiguen con la reutilización de clase en nuevos
proyectos la reducción de los costes de inversión en sus presupuestos de
programación. Las propiedades comunes de varias clases sólo necesitan ser
implementadas una vez y sólo necesitan modificarse una vez si es necesario
Estadáres en el Proceso de Desarrollo de Software
La gran cantidad de
organizaciones de desarrollo de software implementan metodologías para el
proceso de desarrollo. Muchas de estas organizaciones pertenecen a la industria
armamentística, que en los Estados Unidos necesita un certificado basado en su
modelo de procesos para poder obtener un contrato.
El estándar
internacional que regula el método de selección, implementación y monitoreo del
ciclo de vida del software es ISO 12207.
Durante décadas se ha perseguido la meta
de encontrar procesos reproducibles y predecibles que mejoren la productividad
y la calidad. Algunas de estas soluciones intentan sistematizar o formalizar la
aparentemente desorganizada tarea de desarrollar software. Otros aplican
técnicas de gestión de proyectos para la creación del software. Sin una gestión
del proyecto, los proyectos de software corren el riesgo de demorarse o
consumir un presupuesto mayor que el planeado. Dada la cantidad de proyectos de
software que no cumplen sus metas en términos de funcionalidad, costes o tiempo
de entrega, una gestión de proyectos efectiva es algo que a menudo falta.
Planificación.
La importante tarea a la hora de crear un producto de
software es obtener los requisitos
o el análisis de los
requisitos. Los clientes suelen tener una idea
más bien abstracta del resultado final, pero no sobre las funciones que debería
cumplir el software. Una vez que se hayan recopilado los requisitos del
cliente, se debe realizar un análisis del ámbito del desarrollo. Este documento
se conoce como especificación funcional.
Implementación, pruebas y documentación.
La implementación
es parte del proceso en el que los ingenieros de
software programan
el código para el proyecto.
Las pruebas de software
son parte esencial del proceso de desarrollo del software. Esta parte del
proceso tiene la función de detectar los errores de software
lo antes posible.
La documentación
del diseño interno del software con el objetivo de facilitar su mejora y su
mantenimiento se realiza a lo largo del proyecto. Esto puede incluir la
documentación de un API, tanto interior
como exterior.
Despliegue y mantenimiento.
El despliegue
comienza cuando el código ha sido suficientemente probado, ha sido aprobado
para su liberación
y ha sido distribuido en el entorno de producción.
Entrenamiento y soporte para el
software es de suma importancia y algo que
muchos desarrolladores de software descuidan. Los usuarios, por naturaleza, se
oponen al cambio porque conlleva una cierta inseguridad, es por ello que es
fundamental instruir de forma adecuada a los futuros usuarios del software.
El mantenimiento
y mejora del software de un software con problemas recientemente desplegado
puede requerir más tiempo que el desarrollo inicial del software. Es posible
que haya que incorporar código que no se ajusta al diseño original con el
objetivo de solucionar un problema o ampliar la funcionalidad para un cliente.
Si los costes de mantenimiento son muy elevados puede que sea oportuno
rediseñar el sistema para poder contener los costes de mantenimiento.
Metodología Empleada
El modelo y diseño orientado a objetos u OMT( técnica de modelado de objetos ) se extiende desde el análisis hasta la implementación pasando por el diseño . Actualmente es una de las metodologías mas implantadas.
Las técnicas orientadas a objetos permiten que el software se construya a partir de objetos de compartimiento especifico.
Los propios objetos se pueden constituir a partir de otros , que a su vez pueden estar formados por otros objetos .Esto nos recuerda a una maquina compleja construida por partes , subpartes y sub-subpartes,etc.
La metodología de desarrollo de software orientada a objetos es cada día más usada, pues permite desarrollar software fácilmente extensible y reusable. Esto último es sólo posible si los desarrolladores conocen muy bien los fundamentos que esté basada esta metodología.
Por eso, este curso revisa los conceptos más importantes que se encuentran en las distintas etapas del desarrollo de software orientado a objetos.
Fases y Disciplinas:
- Establece oportunidad y alcance
- Identifica las entidades externas o actores con las que se trata
- Identifica los casos de uso
- RUP comprende 2 aspectos importantes por los cuales se establecen las disciplinas:
- 'Proceso': Las etapas de esta sección son: (Revise nuevamente la gráfica)
- Modelado de negocio
- Requisitos
- Análisis y Diseño
- Implementación
- Pruebas
- Despliegue
- Soporte: En esta parte nos encontramos con las siguientes etapas:
- Gestión del cambio y configuraciones
- Gestión del proyecto
- Entorno
- La estructura dinámica de RUP es la que permite que éste sea un proceso de desarrollo fundamentalmente iterativo, y en esta parte se ven inmersas las 4 fases descritas anteriormente:
- Inicio(También llamado Incepción o Concepción)
- Elaboración
- Desarrollo(También llamado Implementación, Construcción)
- Cierre (También llamado Transición)
- Fase de Inicio: Esta fase tiene como propósito definir y acordar el alcance del proyecto con los patrocinadores, identificar los riesgos asociados al proyecto, proponer una visión muy general de la arquitectura de software y producir el plan de las fases y el de iteraciones posteriores
- Fase de elaboración: En la fase de elaboración se seleccionan los casos de uso que permiten definir la arquitectura base del sistema y se desarrollaran en esta fase, se realiza la especificación de los casos de uso seleccionados y el primer análisis del dominio del problema, se diseña la solución preliminar.
- Fase de Desarrollo: El propósito de esta fase es completar la funcionalidad del sistema, para ello se deben clarificar los requisitos pendientes, administrar los cambios de acuerdo a las evaluaciones realizados por los usuarios y se realizan las mejoras para el proyecto.
- Fase de Cierre: El propósito de esta fase es asegurar que el software esté disponible para los usuarios finales, ajustar los errores y defectos encontrados en las pruebas de aceptación, capacitar a los usuarios y proveer el soporte técnico necesario. Se debe verificar que el producto cumpla con las especificaciones entregadas por las personas involucradas en el proyecto.