Introducción El ser humano desde tiempos remotos ha buscado resolver sus problemas por medio de diversas formas que le pudiesen servir, en la actualidad gracias al avance de las tecnologías el ser humano ha hecho posible incorporar una nueva herramienta para buscar de una mejor manera la resolución de sus problemas. Los algoritmos son en la actualidad una de las herramientas más usadas englobando así sus metodologías para el desarrollo de la lógica que necesita la estructura de su algoritmo para poder diseñar de esta forma las posibles variables
para que dé marcha su programa. Existen unas cuantas metodologías que son propiamente conocidas que ayudan a resolver el planteamiento de nuestros problemas, cada una de las cuales tienen una cierta estructura que de cierta forma analiza los datos con la finalidad de encontrar la relación de las mismas. Así mismo es importante comprender lo que estamos haciendo con la metodología que seguimos puesto que debemos entender las instrucciones que le damos al proceso para que nuestro fin sea el adecuado ya que si cometemos un error en la descripción de los datos, básicamente nuestro proceso va a ser erróneo puesto que no se logrará el objetivo de nuestra metodología.
Desarrollo El Diseño de Sistemas se define como el proceso de aplicar ciertas técnicas y principios con el propósito de definir un dispositivo, un proceso o un Sistema, con suficientes detalles como para permitir su interpretación y realización física. La etapa del Diseño del Sistema encierra cuatro etapas:
El diseño de los datos. Trasforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de datos necesarios para
implementar el Software. El Diseño Arquitectónico. Define la relación entre cada uno de los
elementos estructurales del programa. El Diseño de la Interfaz. Describe como se comunica el Software consigo mismo, con los sistemas que operan junto con él y con los operadores y
usuarios que lo emplean. El Diseño de procedimientos. Transforma elementos estructurales de la arquitectura del programa. La importancia del Diseño del Software se puede definir en una sola palabra Calidad, dentro del diseño es donde se fomenta la calidad del Proyecto. El Diseño es la única manera de materializar con precisión los requerimientos del cliente.
El Diseño del Software es un proceso y un modelado a la vez. El proceso de Diseño es un conjunto de pasos repetitivos que permiten al diseñador describir todos los aspectos del Sistema a construir. A lo largo del diseño se evalúa la calidad del desarrollo del proyecto con un conjunto de revisiones técnicas:
El diseño debe implementar todos los requisitos explícitos contenidos en el modelo de análisis y debe acumular todos los requisitos implícitos que
desea el cliente. Debe ser una guía que puedan leer y entender los que construyan el código
y los que prueban y mantienen el Software. El Diseño debe proporcionar una completa idea de lo que es el Software, enfocando los dominios de datos, funcional y comportamiento desde el punto de vista de la Implementación.
Para evaluar la calidad de una presentación del diseño, se deben establecer criterios técnicos para un buen diseño como son:
Un diseño debe presentar una organización jerárquica que haga un uso inteligente del control entre los componentes del software. El diseño debe ser modular, es decir, se debe hacer una partición lógica del Software en
elementos que realicen funciones y subfunciones específicas. Un diseño debe contener abstracciones de datos y procedimientos. Debe producir módulos que presenten características de funcionamiento
independiente. Debe conducir a interfaces que reduzcan la complejidad de las conexiones
entre los módulos y el entorno exterior. Debe producir un diseño usando un método que pudiera repetirse según la información obtenida durante el análisis de requisitos de Software. Estos criterios no se consiguen por casualidad. El proceso de Diseño del Software exige buena calidad a través de la aplicación de principios fundamentales de Diseño, Metodología sistemática y una revisión exhaustiva.
Cuando se va a diseñar un Sistema de Computadoras se debe tener presente que el proceso de un diseño incluye, concebir y planear algo en la mente, así como hacer un dibujo o modelo o croquis. Top Down La programación descendente o “Top - Down” es el proceso mediante el cual un problema se descompone en una serie de niveles o pasos sucesivos de refinamiento (stepwise). La metodología descendente consiste en efectuar una relación entre las sucesivas etapas de estructuración de modo que exista una relación entre ellas mediante entradas y salidas de información. El problema se descompone en varias estructuras jerárquicas, de forma que se pueda considerar cada estructura desde dos puntos de vista: ¿qué hace? y ¿cómo lo hace? Bottom Up
El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan computarizarse conforme 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 acceder 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. Modular programación modular es uno de los métodos de diseño más flexibles y potentes para mejorar la productividad de un programa. En programación modular el programa se divide en módulos (partes independientes), cada una de las cuales ejecuta una única actividad o tarea y se codifican independientemente de otros módulos. Cada uno de estos módulos se analizan, codifican por separado. Cada programa contiene un módulo denominado programa principal, que controla todo lo que sucede, se transfiere el control a submódulos (posteriormente se denominan subprogramas), de modo que ellos puedan ejecutar sus funciones; sin embargo, cada submódulo devuelve el control al módulo principal cuando termina su tarea. Si la tarea asignada a cada submódulo es demasiado compleja, éste deberá dividirse en otros módulos más pequeños. El proceso sucesivo de
subdivisión de módulos continúa hasta que cada módulo tenga solamente una tarea específica que ejecutar. Programación Estructurada Es una forma de escribir programas de computadora de manera clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN). Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones. Algoritmo Es un Método para resolver un problema mediante una serie de pasos precisos, definidos y finitos. Un algoritmo es una serie de operaciones detalladas, en otras palabras, un algoritmo es un conjunto de pasos para resolver una cierta clase de problemas y se puede formular de muchas formas con el cuidado de que no exista ambigüedad. Características
Preciso (debe indicar el orden de realización en cada paso y no puede tener
ambigüedad). Definido (si se sigue dos veces, obtiene el mismo resultado cada vez) Finito (tiene fin; un número determinado de pasos). Debe ser Sencillo, Legible. Modular. Eficiente y Efectivo. Se ha de desarrollar en el menor tiempo posible. Correcto. Todo Algoritmo debe tener cero o más entradas. Debe tener al menos una salida y ésta debe ser tangible.
Conclusión Con todo lo anterior nos podemos dar cuenta que las distintas metodologías tienen ciertas características en la metodología de Top Down nos podemos dar cuenta que, para el análisis del problema es necesario descomponerlo en ciertas partes que desde luego estos mismos necesariamente deben tener relación con las entradas y salidas que emanan del proceso. Por su parte el método Bottom Up, trata de identificar ciertos procesos que necesitan registrarse a medida que estos empiecen a surgir, lo que más resalta en esta es su análisis que como sistema tal cual va codificando. Lo complicado en este entonces es tratar de integrar todos los elementos que tal vez lo más interesante son los costos que son elevados y como todo en muchas ocasiones estos mismos no funcionan como los esperamos, la paciencia también juega un papel muy importante debido a que se le dedica mucho tiempo en el análisis y la comprensión de la estructura que se necesita. Existen métodos más flexibles pero que estas no pierden su eficacia como es la metodología modular que mejora el desempeño de un programa, pues esta se divide en módulos que ya posteriormente se analizan como tal. Y por el contrario si resulta más difícil de nueva cuenta se dividirá hasta lograr resolverla y encontrar la posible solución. De esta forma podemos concluir con la importancia de las metodologías para el diseño de software que hoy en día nos permite realizar diversas actividades que mejorar el tiempo de hacer las cosas.
Referencias bibliográficas
http://es.slideshare.net/Adark/metodologa-para-el-diseo-de-software http://moodle2.unid.edu.mx/dts_cursos_mdl/lic/IC/EA/AM/06/Metodolo
gia_para_la_solucion_de_problemas.pdf https://algoritmos-lenguajes.wikispaces.com/Unidad+2+Materiales? responseToken=5cac4605c00292f5ece5d9d0a88654ab