Está en la página 1de 9

INSTITUTO TECNOLOGICO DE PUEBLA

(ITP)

Ingeniería industrial

Profesora. Alejandra REYES VELEZ

“Metodología para el diseño de software:


Top down, Bottom up, Modular, y
Programación estructurada”

Ruiz Huerta Ivanna

Ibáñez Peralta José Hemerson

Castillo Martínez Aaron

Cuautle Tecpanecatl Erik


Metodología para el diseño de software:
Top down, Bottom up, Modular, y
Programación estructurada.
Introducción
Una metodología de desarrollo de software no es más que una serie de pasos que se
realizan de forma rigurosa tal que su resultado a partir de unos requisitos nuevos o
modificados sea un software nuevo o modificado. Se puede ver como una caja negra,
como muestra la siguiente imagen.
Esta nos permite responder a cuatro preguntas básicas:
¿Qué hacen los participantes del proyecto?
¿Quién participa en su desarrollo?
¿Cómo participan los anteriores?
¿Cuándo se realizan sus partes?
Un producto de software es de calidad si cumple rigurosamente con todos y cada uno de
sus requisitos. Es decir, calidad = requisitos satisfechos. Gracias a esto podemos medir la
calidad de un producto basándonos en los requisitos iniciales. También nos aporta una
forma de estimar y controlar costes. Así podemos saber cuánto vamos a tardar en
realizarlo y si nos sale o no rentable llevarlo a cabo antes de realizar la inversión completa
de tiempo, dinero y esfuerzo. También evita una gran parte de los esfuerzos perdidos en
rectificar fallos que se pueden evitar utilizando una metodología adecuada. Al ser un
proceso estructurado también nos organiza la forma en la que el proyecto va a ser
realizado, obligando a revisar que los resultados sean los correctos antes de proseguir y
marcando metas intermedias para controlar el avance del proyecto. Así pues, se logra una
mayor eficiencia de recursos, es decir, se invierte lo mínimo para obtener lo máximo a
cambio. Para que el proceso sea efectivo, éste debe ser aplicado con rigor.
El ciclo de vida del software es el conjunto de etapas que sigue un proyecto de software
desde su concepción hasta su finalización y cierre, inclusive los mantenimientos (es decir,
cambios o ajustes que puedan producirse una vez está implementado, nuevas versiones,
etc.).
A continuación, mostraremos diversos
enfoques que puede tomar una metodología
de desarrollo de software y explicaremos las
diferencias fundamentales entre ellas.
Estos enfoques serán: Cascada,
Prototipaje, Incremental y Espiral.

Técnicas de diseño
Todas las metodologías de desarrollo de software tienen algo en común: son conjuntos de
técnicas y herramientas que se utilizan para planificar, diseñar, desarrollar, implementar y
mantener un software. Es decir, aplicaciones que permiten a los usuarios interactuar con
un dispositivo informático de manera más eficiente.

Sin embargo, las metodologías de desarrollo de software son muy variadas, y cada una de
ellas tiene sus propias reglas y principios. En este post, explicaremos cuáles son las
mejores metodologías para un desarrollo de software exitoso.

Top Down
También conocida como de arriba-abajo y consiste en establecer una serie de niveles de
mayor a menor complejidad (arriba-abajo) que den solución al
problema. Consiste en efectuar una relación entre las etapas de la estructuración de
forma que una etapa jerárquica y su inmediato inferior se relacionen mediante entradas y
salidas de información. Este diseño consiste en una serie de descomposiciones sucesivas
del problema inicial, que recibe el refinamiento progresivo del repertorio de instrucciones
que van a formar parte del programa. La utilización de la técnica de diseño Top-Down
tiene los siguientes objetivos
básicos:
Simplificación del problema y de los subprogramas de cada descomposición. Las
diferentes partes del problema pueden ser programadas de modo
independiente e incluso por diferentes personas. El programa final queda estructurado en
forma de bloque o módulos lo que hace más sencilla su lectura y mantenimiento.
Conocida también como diseño descendente, consiste en establecer una serie de
niveles de mayor a menor complejidad (arriba-abajo) que den solución al
algoritmo.

Se efectúa una relación entre las etapas de la estructuración, de forma que una
etapa jerárquica y su inmediato inferior se relacionen mediante entradas y
salidas de datos.

Se integra de una serie de descomposiciones sucesivas del problema inicial, que


recibe el refinamiento progresivo del repertorio de instrucciones que van a formar
parte del programa.
Bottom Up
El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan
computarizarse con forme vayan apareciendo, su análisis como sistema y su codificación,
o bien, la adquisición de paquetes de software para satisfacer el problema inmediato.
Cuando la programación se realiza internamente y haciendo un enfoque ascendente, es
difícil llegar a integrar los subsistemas al grado tal de que el
desempeño global, sea fluido.
Los problemas de integración entre los subsistemas son sumamente costosos y muchos
de ellos no se solucionan hasta que la programación alcanza la fecha límite para la
integración total del sistema. En esta fecha, ya se cuenta con muy poco tiempo,
presupuesto o paciencia de los
usuarios, como para corregir aquellas delicadas interfaces que, en un principio, se
ignoran.
Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al
sistema como una entidad global, adolece de ciertas limitaciones por haber tomado un
enfoque ascendente. Uno de ellos es la duplicación de esfuerzos para accesar el software
y más aún al introducir los datos. Otro es, que se introducen al sistema muchos datos
carentes de valor. Un tercero y tal vez el más serio inconveniente del enfoque
ascendente, es que los objetivos globales de la organización no fueron considerados y en
consecuencia no se satisfacen.
¿Cómo se aplica la toma de decisiones bottom-up en la investigación de proyectos?

En el Análisis Bottom-up el proceso de toma de decisiones es todo lo contrario al top-


dowm. En este segundo análisis el proceso empieza por los detalles y las partes más
pequeñas, intentando solucionar los problemas más pequeños, que conjuntamente
generan soluciones a otros problemas más grandes dentro de una empresa.
El estilo de gestión bottom-up resuelve muchos de los problemas que plantea el enfoque
top-down. Este enfoque ascendente tiene ventajas que lo hacen ideal para los equipos
creativos y las industrias en las que la colaboración es clave, como el desarrollo de
software, el diseño de productos y más.
Modular
La programación modular es un paradigma de programación que consiste en dividir un
programa en módulos o subprogramas con el fin de hacerlo más legible y manejable
Se presenta históricamente como una evolución de la programación estructurada para
solucionar problemas de programación más grandes y complejos de lo que esta puede
resolver.
Al aplicar la programación modular, un problema complejo debe ser dividido en varios
subprogramas más simples, y estos a su vez en otros subprogramas más simples aún.
Esto debe hacerse hasta obtener subprogramas lo suficientemente simples como para
poder ser resueltos fácilmente con algún lenguaje de programación. Esta técnica se llama
refinamiento sucesivo, divide y vencerás o análisis descendente (Top-Down).
Un 'módulo' es cada una de las partes de un programa que resuelve uno de los
subproblemas en que se divide el problema complejo original. Cada uno de estos módulos
tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de
que un módulo necesite de otro, puede comunicarse con este mediante una interfaz de
comunicación que también debe estar bien definida.
Si bien un módulo puede entenderse como una parte de un programa en cualquiera de
sus formas y variados contextos, en la práctica se los suele tomar como sinónimos
de procedimientos y funciones. Pero no necesaria ni estrictamente un módulo es una
función o un procedimiento, ya que el mismo puede contener muchos de ellos. No debe
confundirse el término "módulo" (en el sentido de programación modular) con términos
como "función" o "procedimiento", propios del lenguaje que lo soporte.
Consiste en dividir el problema original en diversos subproblemas que se pueden resolver
por separado, para después recomponer los resultados y obtener la solución al problema.
Programación estructurada
Es una corriente que nació con la vocación de facilitar la vida de los programadores, sobre
todo cuando estos debían abordar fases de mejora posteriores a la creación del
programa, y de ordenar la forma en la que se creaba cualquier tipo de programa.
¿Cualquiera, cualquiera? ¡Sí!

Para comprenderlo mejor, vamos a hacer un pequeño viaje en el tiempo. Nos vamos al
año 1966, cuando Böhm y Jacopini proponen el teorema del programa estructurado,
con el que demuestran que cualquier programa puede ser escrito utilizando solo tres
instrucciones de control. Imagínate, ¡esto fue toda una revolución! Implicaba la
construcción de programas más sencillos y más rápidos, en los que disminuía la
complejidad de las pruebas y el testing para ponerlos en funcionamiento.

La programación estructurada se convierte así, junto con la programación orientada a


objetos, en uno de los paradigmas de programación más populares que ejecuta los
lenguajes más potentes que seguro conoces, incluidos, entre otros, Java, C, Python y
C++.

Las 3 estructuras básicas:

Ya nos ha quedado claro que la programación estructurada es una forma de programar


más sencilla que se basa únicamente en la combinación de tres órdenes. Pero, ¿cuáles
son esos tipos de estructuras de control que son capaces de expresarlo todo?

1. Secuencia. La estructura secuencial es la que se da de forma natural en el


lenguaje, porque las sentencias se ejecutan en el orden en el que aparecen en
el programa, es decir, una detrás de la otra.
2. Selección o condicional. La estructura condicional se basa en que una
sentencia se ejecuta según el valor que se le atribuye a una variable booleana.
¡Un pequeño inciso! Una variable booleana es aquella que tiene dos valores
posibles. Por tanto, esta estructura se puede ejecutar de dos formas distintas,
dependiendo del valor que tenga su variable.
Como apunte para los verdaderos amantes de la programación: para las
estructuras condicionales o de selección, Python dispone de la sentencia if, que
puede combinarse con elif y/o else.
3. Iteración (ciclo o bucle). La estructura de repetición ejecuta una o un conjunto
de sentencias siempre que una variable booleana sea verdadera. Para los
bucles o iteraciones, los lenguajes de programación usan las
estructuras while y for.
Conclusión
Hoy en día la comunicación, la tecnología y los sistemas de información avanzan han
evolucionan a una velocidad exponencial generando que la gestión de proyectos
informáticos esté a la altura de la velocidad de los cambios ocasionados por esta
evolución.
El mundo del desarrollo del software ha cambiado demasiado desde la aparición de
internet y la gran cantidad de herramientas que nos permiten crear ecosistemas de trabajo
mucho más colaborativos en los que el flujo de información es mucho más rápido que con
las estructuras tradicionales.
En esta nueva generación, las metodologías tradicionales de desarrollo de software
fueron quedado obsoletas en determinados sectores, en los que la propia demanda de los
usuarios es más rápida que la capacidad de producción de las empresas ancladas a las
viejas metodologías de gestión de proyectos de sistemas informáticos.
Este gran impacto en las tecnologías, ha generado la necesidad de encontrar y crear
nuevas metodologías de trabajo y gestión, que aseguren la entrega en tiempo y forma del
producto. Esta necesidad de calidad, eficiencia, flexibilidad y rapidez en la entrega de un
producto informático se volvió prioridad y en conjunto con su necesidad se crearon las
nombradas Metodologías Agiles.
El mundo en general y la vida de las personas, día a día se vuelve más ágil en todos sus
aspectos, siendo prácticamente inevitable la evolución en los sistemas de información
para poder atacar ésta demanda. Los métodos ágiles y los tradicionales no son
competidores directos.
Cada uno de ellos tiene su propio segmento de aplicación o terreno en base a las
necesidades del proyecto y de bien saber distinguir e identificar cual es la más adecuada
en base a las características de nuestro proyecto, necesidades y recursos. Algunos
aspectos del desarrollo de software se beneficiarán del enfoque agilista mientras otros
obtendrán beneficios de un enfoque tradicional-predictivo menos ágil y más estructurado.
Ambos metodologías, pueden fracasar si son mal implementadas, gestionadas y
administradas. No podemos decir que exista una metodología mejor que otra sino que
dependerá de la naturaleza de la empresa y la forma de organización de sus procesos
internos y de la capacidad de los líderes del proyecto de poder identificar la metodología
que más se adecua e implementarla de manera eficiente. Sin embargo, la tendencia
natural actual indica que las metodologías agiles están ganando terreno muy rápidamente
lo que en algunos años podrían generar la extinción definitiva de las metodologías
tradicionales.
Bibliografías
https://sites.google.com/view/eduardo-valenzuela-hernandez/unidad-2/2-2-
metodologia-para-el-dise%C3%B1o-de-software-top-down-bottom-up
https://www.occamagenciadigital.com/blog/las-mejores-metodologias-para-un-
correcto-desarrollo-de-software
https://es.wikipedia.org/wiki/Programaci%C3%B3n_modular

También podría gustarte