Para llevar adelante un proyecto de desarrollo de software se requiere de la participación de un grupo de personas. A cada uno de los grupos o personas se les asigna un rol. Un problema a superar es el de comunicación entre ellos. Igualmente se requiere descomponer el proyecto en fase y aquí entra en juego la definición del ciclo de vida de un proyecto.
Para solucionar estos dos problemas surge el concepto de metodología. Una metodología es un conjunto de herramientas, modelos, técnicas que permiten definir fases de un proceso de desarrollo y las reglas para pasar de una fase a la siguiente.
Se pueden encontrar diversas metodologías,
desde el análisis y diseño estructurado, hasta la metodología
orientada a objetos, para aplicarlas a modelos de desarrollo de software.
1. Analisis y Diseño Estructurado
Permite al analista conocer un sistema o proceso (actividad) en una forma lógica y manejable al mismo tiempo que proporciona la base para asegurar que no se omite ningún detalle pertinente".
El objetivo que persigue el análisis
estructurado es organizar las tareas asociadas con la determinación
de requerimientos para obtener la comprensión completa y exacta
de una situación dada.
Componentes
- Símbolos gráficos: sirven para identificar y describir los componentes de un sistema y las relaciones entre estos.
- Diccionarios de datos: Descripciones de todos los datos utilizados en el sistema pueden ser manual o automatizado.
- Descripciones de procesos y procedimientos: emplean técnicas y lenguajes que permiten describir actividades del sistema.
- Reglas: Estándares par describir
y documentar el sistema en forma correcta y completa.
Análisis de flujo de datos:
Estudia el empleo de los datos en cada actividad, documenta los hallazgos con diagramas de flujo de datos.
Herramientas
- Diagrama de flujo de datos: son la herramienta mas importante y la base en donde se desarrolla otros componentes.
- Diccionario de datos: contienen las características lógicas de los lugares donde se almacenan los datos del sistema, incluyendo nombre, alias, descripción, contenido y organización.
- Diagrama de estructuras de datos: este es una descripción de la relación entre entidades (personas, lugares, eventos y objetos ) y el conjunto de información relacionado con la entidad.
- Gráfica de estructura: es la herramienta del diseño que muestra con símbolos la relación entre los módulos de procesamiento y el software de la comp.
A continuación describimos parte
de la tecnologia realacionada con el tema:
Ciclo de Vida
El Ciclo de Vida del Desarrollo de Sistemas
es un proceso por el cual los analistas de sistemas, los ingenieros de
software, los programadores y los usuarios finales elaboran sistemas de
información y aplicaciones informáticas.
Objetivos del CICLO DE VIDA de un Proyecto:
? Definir las actividades a ser ejecutadas
en un proyecto de Procesamiento Electrónico de Datos (PED)
? Introducir coherencia en muchos proyectos
de PED de la misma organización
? Establecer punto de control para control
de gerencia y puntos de control para tomar la decisión de "continuar
o no".
Técnica: Es un método que aplica herramientas y reglas específicas para completar una o más fases del ciclo de vida del desarrollo de Sistemas. Ellas se aplican a una parte del ciclo de vida total.
Metodología: es una versión amplia y detallada de un ciclo de vida COMPLETO de desarrollo de sistemas que incluye:
Tecnicas Estructuradas
? Diagrama de estructura (DEC)
? Diagrama de flujo de datos (DFD)
? Modelo entidad/relación extendido
Análisis Estructurado
? El Análisis se refiere al "extremo
inicial" de un proyecto de desarrollo de sistemas, durante el tiempo en
que los requisitos del usuario son definidos y documentados.
? El Análisis estructurado introduce
el uso de las herramientas de documentación gráficas para
producir un tipo diferente de especificación funcional: "la especificación
estructurada".
Herramientas de documentación
del Análisis Estructurado
? Diagramas de flujo de datos (DFDs)
? Diccionario de Datos (DD)
? Diagramas de Entidad-Relación
(ER)
? Diagramas de Transición de Estado
(DTEs)
? Especificaciones de procesos
Diseño Estructurado
? Durante el desarrollo se determinan
"qué módulos, interconectados de qué forma, solucionarán
mejor un problema definido
? ¿Como se reconoce un buen diseño?
? ¿Existe una sola manera de realizar
un buen diseño?
Elementos del Diseño
Estructurado:
? Técnicas de documentación
? Criterios de evaluación del Diseño
? Heurísticas del diseño
? Estrategias del Diseño
Técnicas de
Documentación:
? Incluyen herramientas gráficas
y de texto
? Herramientas
? Flujos de datos
? Diagramas Hipo
? Diagrama de estructura
? Especificaciones de módulo y
D.D.
Criterios de evaluación
de diseño:
? Tiene como objetivo evaluar los defectos
del diseño conforme a la documentación del diagrama Hipo
y el diagrama estructural Criterios: acoplamiento y cohesión.
Estrategias de diseño:
Las estrategias requieren un buen nivel
de experiencia, sentido común y decisión .
Existe una basada en el flujo de datos
y otra basada en la estructura de datos
? Análisis transformacional
? Análisis transaccional
2. Análisis y Diseño Orientado a Objeto
La Programación Orientada a Objetos, POO (OOP, Object Oriented Programming) es una técnica de programación cuyo soporte fundamental es el objeto. Un objeto es una extensión de un Tipo Abstracto de Datos (TAD), concepto ampliamente utilizado desde la década de los setenta. Un TAD es un tipo definido por el usuario, que encapsula un conjunto de datos y las operaciones sobre estos datos.
A la hora de definir TAS’s (u objetos) se usa un concepto que nos ayuda a representar la realiad mediante modelos informáticos, la abstracción, que es un proceso mental por el que se evitan los detalles para centrarse en las cosas más genéricas de manerá que se facilite su comprensión. De hecho la abstracción no sólo se utiliza en la informática, un arquitecto al que se han encargado realizar los planos de un edificio no comenzará a realizar ciertos esbozos en un papel para posteriormente ir refinando. Por supuesto que cuando está realizando los esbozos no se preocupa de por dónde van a ir las lineas eléctricas ni las tuberías de saneamiento, abstrae esos detalles para atacarlos posteriormente cuando tenga clara la estructura del edificio..
? La diferencia entre el concepto TAD y el objeto radica en que además del proceso de abstracción que se utiliza para su definición, existen otros dos con los que se forma el núcleo principal de la programación orientada a objetos, estos son la herencia y el pofimorfismo.
Las ventajas más importantes de la programación orientada a objetos son las siguientes:
? Mantenibilidad (facilidad de mantenimiento). Los programas que se diseñan utilizando el concepto de orientación a objetos son más faciles de leer y comprender y el control de la complejidad del programa se consigue gracias a la ocultación de la información que permite dejer visibles sólo los detalles más relevantes.
? Modificabilidad (facilidad para modificar los programas). Se pueden realizar añadidos o supresiones a programas simplemente añadiendo, suprimieno o modificando objetos.
? Reusabilidad. Los objetos, si han sido correctamente diseñados, se pueden usar numerosas veces y en distintos proyectos.
? Fiabilidad. Los programas orientados
a objetos suelen ser más fiables ya que se basan en el uso de objetos
ya definidos que están ampliamente probados.
Conceptos básicos de la Orinetación a objeto
Como ya hemos dicho la orientación a objetos se basa en conceptos como clase, objeto, herencia y polimorfismo, pero tambien en otros muchos. En esta sección se intenta, sin entrar en detalles, realizar una breve descripción de los conceptos más impotantes que existen en el modelo orientado a objetos. Estos conceptos serán explicacos y ampliados posteriormente desde la perspectiva UML.
Clase: Es una descripción de un conjunto de objetos similares. Por ejemplo la clase coches. Una clase contiene los atributos y las operaciones sobre esos atributos que hacen que una clase tenga la entidad que desea.
Objeto: Un objeto es una cosa, generalmente extraída del vocabulario del espacio del problema o del espacio de la solución. Todo objeto tiene un nombre (se le puede identificar), un estado (generalmente hay algunos datos asociados a él) y un comportamiento (se le pueden hacer cosas a objeto y él puede hacer cosas a otros objetos). Un objeto de la clase coches puede ser un Ford Mustang.
Atributo: Es una característica concreta de una clase. Por ejemplo atributos de la clase Coches pueden ser el color, el Numero de Puertas, etc.
Método: es una operación concreta de una determinada clase. Por jemplo la clase coches podríamos tener un método arrancar8) que lo que hace es poner en marcha el coche.
Instancia: es una manifestación concreta de una clase (un objeto con valores concretos). También se le puede llamar ocurrencia. Por ejemplo una instancia de la clase coches puede ser: Un Ford Muestang, de color Gris con 3 puertas.
Herencia: Es un mecanismo mediante el cual se puede cerar una nueva clase partiendo de una existente, se dice entonces que la nueva clase hereda las características de la clase exsitentes aunque se la pueden añadir más capacidades (añadiendo datos o capacidades) o modificar las que tiene. Por ejemplo supongamos qe tenemos la VehículosDeMotor. En esta clase tenemos los siguientes atributos: cilindrada y Número de Ruedas, y el método acelera(). Mediante el mecanismo de herencia podemos definir la clase Coches y la clase Motos. Estas dos clases heredan los atributos Cilindrada y Número de ruedas de la clase VehiculosDeMotor pero a su vez tendrán atributos propios (como hemos dicho antes el Numero de Puertas es un atributo propio de la clase coches que no tienen sentido en la clase Motos). Se puede decir que Coches extiende la calse Vehículosdemotor es una generalización de las clases Coches y Motos.
Polimorfismo:
Hace referencia a la posibilidad de que dos métodos implementen
distintas acciones, aun teniendo el mismo nombre, dependiendo del objeto
que lo ejecuta o de los parámetros que recibe.
Diferencias entre Analisis y Diseño Estructurado y Orientado a Objetos
1. A diferencia del Analisis estructurado el Orientado a Objetos ha permitido la unificación de métodos como un criterio fundamental. Hasta hace pocos años, prácticamente cada autor proponía una metodología para este tipo de análisis. Para solucionar este problema, las principales empresas del sector se unieron para construir una herramienta CASE que se basará en las características principales de estos métodos, Fue entonces cuando surgió UML, siglas de Lenguaje Unificado de Modelado.
2. La programación estructurada
tradicional se basa fundamentalmente en la ecuación de Wirth:
Algoritmos + Estructuras de Datos = Programas
Esta ecuación significa que en
la programación estructurada u orientada a procedimientos los datos
y el código se trata por separado y lo único que se realiza
son funciones o procedimientos que tratan esos datos y los van pasando
de unos a otros hasta que se obtiene el resultado que se desea. En la programación
orientada o objetos se encapsula un conjunto de datos y las operaciones
sobre estos datos.
2. En el análisis estructurado se
organizan las tareas de acuerdo a los requerimientos especificados y el
la programación orientada a objetos se organizan las tareas de a
cuerdo a un objeto o lo que se le hace a ese objeto.
Ejemplo de Analisis y Diseño Estructurado
Como ejemplo, mostraremos para un Sistema de Contabilidad de Petroleo. Inicialmente se identifican las entidades del negocio de contabilidad de petroleo, por ejemplo: Productos, Organizaciones, Movimientos, etc. Se dibuja un diagrama de flujo de datos y especificamente aqui lo mostraremos con el siguiente diagrama funcional.
Ejemplo de Análisis y Diseño Orientado a Objetos
Como ejemplo hablaremos de un Sistema Automatizado de Control de Existencia en Tanques.