lunes, 19 de noviembre de 2012

Necesidad de una metodología: La estructurada y la Orientada a Objetos

Necesidad de una metodología
El proceso de construcción del software requiere, identificar las tareas que se han de realizar sobre el software y aplicar esas tareas de una forma ordenada y efectiva.

El desarrollo del software se debe realizar por un conjunto coordinado de personas simultáneamente, y por lo tanto sus esfuerzos deben estar dirigidos por una misma metodología que permita estructurar las diferentes fases del desarrollo.

Definición de metodología

Existen muchas definiciones sobre lo que es una metodología.
Más o menos todas ellas coinciden en que debería tener al menos las siguientes características:
  1. Define como se divide un proyecto en fases y las tareas a realizar en cada una.
  2. Para cada una de las fases está especificado cuales son las entradas que reciben y las salidas que producen.
  3. Tienen alguna forma de gestionar el proyecto.
  4. Teniendo esto en cuenta establecemos la siguiente definición:

Metodología es un modo sistemático de producir software.

Finalidad de una metodología
Atributos deseables en el producto final son:

  1. Adecuación: El sistema satisface las expectativas del usuario.
  2. Mantenibilidad: Facilidad para realizar cambios una vez que el sistema estáfuncionando en la empresa del cliente.
  3. Usabilidad: Es el grado de dificultad en aprender a manejar el sistema por parte de un usuario que no tiene por que ser programador. Irónicamente se puede decir que este atributo es inversamente proporcional a la resistencia al cambio.
  4. Fiabilidad: Es la capacidad de un sistema de funcionar correctamente durante un tiempo dado. La diferencia con la corrección es que aquí interesa el tiempo, es decir, no se trata del número absoluto de defectos en el sistema sino de los que se manifiestan en un intervalo de tiempo. Interesan sobre todo:
    • –MTBF: Mean Time Between Failures (Tiempo medio entre fallos)
    • –Disponibilidad: Probabilidad de que el sistema esté funcionando en un instante dado.
  5. Corrección: Densidad de defectos mínima.
  6. Eficiencia: El sistema es capaz de realizar su tarea con el mínimo consumo de recursos necesario.
Taxonomía de las metodologías
Grupos de metodologías en función de la mentalidad con la que se aborda el problema:
Metodología estructurada
Es la primera aproximación al problema. Está orientada a procesos, es decir, se centra en especificar y descomponer la funcionalidad del sistema.
Herramientas utilizadas:
Diagramas de flujo de datos (DFD): Representan la forma en la que los datos se mueven y se transforman. Incluye:
–Procesos–Flujos de datos–Almacenes de datos
Los procesos individuales se pueden a su vez descomponer en otros DFD de nivel superior.
Especificaciones de procesos: Es lo que se escribe para uno de los procesos definidos en el DFD cuando no se puede descomponer más. Puede hacerse en pseudocódigo, con tablas de decisión o en un lenguaje de programación.
Diccionario de datos: Son los nombres de todos los tipos de datos y almacenes de datos junto con sus definiciones
Diagramas de transición de estados: Modelan procesos que dependen del tiempo
Diagramas entidad-relación: Los elementos del modelo E/R se corresponden con almacenes de datos en el DFD. En este diagrama se muestran las relaciones entre dichos elementos
Los lenguajes de programación también reflejan esta dicotomía que existe entre la metodologías, así existen lenguajes para la programación estructurada. Los más famosos son: Cobol, Fortran, C, Pascal y Modula 2.



Metodología orientada a objetos.
La orientación a objetos es la más reciente.ventajas:
Está basada en componentes, lo que significa que es más fácil reutilizar código hecho por terceras personas.
Es fácil de mantener debido a que los cambios están más localizados.
Diseño estructurado : ¿Cómo se puede dividir el sistema en partes más pequeñas que puedan ser resueltas por algoritmos sencillos y qué información se intercambian?.
En el diseño orientado a objetos la idea es sin embargo: ¿Cuales son los tipos de datos que hay que utilizar, que características tienen y como se relacionan?.
La orientación a objetos supone un paradigma distinto del tradicional (no necesariamente mejor o peor) que supone focalizar la atención en las estructuras de datos.

El concepto de objetos tuvo sus orígenes en la inteligencia artificial como un modo de representación del conocimiento.


El primer lenguaje orientado a objetos fue Simula67, desarrollado por Kristen Nggaardy Ole-Johan Dahl en el centro de cálculo noruego, pero el que se considera el primer lenguaje orientado a objetos puro fue Smaltalk, donde todos los elementos del lenguaje son objetos.

El lenguaje C++ fue una ampliación de C para que soportara objetos, resultó muy eficiente y también muy complejo.

Java es otro lenguaje orientado a objetos derivado de C++ pero con la idea de ser más sencillo.


Objetos y clasesUn objeto consta de una estructura de datos y de una colección de métodos (antes llamados procedimientos o funciones) que manipulan esos datos.

Los datos definidos dentro de un objeto son sus atributos. Un objeto solo puede ser manipulado a través de su interfaz, esto es, una colección de funciones que implementa y que son visibles al exterior

Las clases y objetos tienen muchas características:

Herencia: Es una relación de generalización, cuando varias clases comparten características comunes, estas se ponen en una clase antecesora.

Polimorfismo: Es la capacidad de un objeto de presentar varios comportamientos diferentes en función de como se utilice, por ejemplo, se pueden definir varios métodos con el mismo nombre pero diferentes argumentos.

Durante la etapa de análisis se identifican los objetos del dominio del problema. En el diseño se definen cuales son las características de los objetos.

No hay comentarios:

Publicar un comentario