martes, 26 de septiembre de 2017

GENERACIONES


GENERACIONES DE METODOLOGÍA DE DESARROLLO DE SOFTWARE

1.- Desarrollo Convencional (sin metodología):
1.1.- Características:
ØEn los años 50 no existía metodologías de desarrollo. El desarrollo estaba a cargo de programadores.
ØSe vio la importancia del análisis y diseño en el desarrollo de sistemas (aparecen los analistas programadores y analistas de sistemas).
ØNo hay forma de controlar lo que está sucediendo en el proyecto.
Ø Los cambios organizativos afectan negativamente al proceso de desarrollo.
Ø Los resultados finales son impredecibles.
1.2.- Modelo Jackson: Sus características son:
Ø Se basa en el principio de que la base inicial del diseño del programa son los datos del problema y no los requisitos funcionales exigidos.
Ø  Permite una mayor objetividad.
Ø Partir de una buena especificación del problema que queremos resolver: datos de entrada, datos de salida y algoritmo aplicables.

2.- Desarrollo de programación estructurada: El desarrollo estructurado se basa en la estructuración y descomposición funcional de problemas en unidades más pequeñas interrelacionadas entre sí. Representan los procesos, flujos y estructuras de datos, de una manera jerárquica y ven el sistema como entradas – proceso- salidas.
2.1 Características:
Ø  Se maneja como proyecto.
Ø  Gran volumen de datos y transacciones.
Ø  Abarca varias áreas organizativas de la empresa
Ø  Tiempo de desarrollo largo.
Ø  Requiere que se cumplan todas las etapas, para poder cumplir las siguientes (progresión lineal y secuencial de una fase a la otra).



3.- Programación orientada a objetos: La programación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.
3.1 Características:
Ø  Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar "cómo" se implementan estas características.
Ø  Encapsulamiento: Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión (diseño estructurado) de los componentes del sistema.
Ø  Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando.
Ø  Herencia: Las clases no se encuentran aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento, permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.
Ø  Modularidad: Se denomina "modularidad" a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes.
Ø  Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una "interfaz" a otros objetos que específica cómo pueden interactuar con los objetos de la clase. 

Ø  Recolección de basura: La recolección de basura (garbage collection) es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. 


domingo, 17 de septiembre de 2017

CRITICA SOBRE LA EVOLUCIÓN DE LA METODOLOGÍA DEL DESARROLLO DE SOFTWARE

CRITICA


Según el estudio de la evolución desde su primera etapa hasta la quinta etapa (etapa final) se puede determinar que no existe una metodología universal para hacer frente con éxito a cualquier proyecto de desarrollo de software. Cualquier metodología debe ser adaptada al contexto del proyecto como: recursos técnicos y humano, tiempo de desarrollo, tipo de sistema, etc. Esto quiere decir que cualquier tipo de metodología que se use siempre tendrá desventajas puesto que el tema de las metodologías es complejo y el propósito es que dependiendo de lo que se requiera en el desarrollo de software se utilizara una metodología.

¿Por qué no desarrollar una metodología universal? Sabemos que es difícil por los requerimientos de las industrias de software. La industria de software requiere, la adopción de una metodología de desarrollo en sus inicios, ya que a medida que crece la experiencia se va adoptando mejoras en el entorno de las metodologías de desarrollo de software, a medida que va pasando el tiempo van surgiendo nuevas metodología de software. Debería simplemente existir un tipo de metodología que se vaya actualizando para realizar el desarrollo de software, a medida que pasa el tiempo perfeccionarlo en todos los sentidos llegando a no tener desventajas de dicha metodología y pueda ser de gran ayuda para cualquier tipo de proyecto. En conclusión una metodología que el usuario pueda usar y modificar a su antojo dependiendo de lo que necesite, en este caso la metodología debería adaptarse.

Lo que si estaría de acuerdo es que no desaparezcan los modelos que usa la Metodología de desarrollo de software como por ejemplo: Modelo Cascada, Modelo espiral, Modelo incremental, etc. Esto forma parte del desarrollo ya que no todos los usuarios tenemos la misma mentalidad de realizar un software.