Investigacion Documental U3

15
1 I I N NG GE E N NI I E E R RÍ Í A A I I N N D DU US S T T R RI I A A L L Materia: Algoritmos Y Lenguajes De Programacion. Semestre - Grupo - Sistema: 4° Semestre - Grupo “B” – Semiescolarizado. Producto Académico: Investigación Documental U3 “Metodologías Para El Diseño De Software” Presenta: Calles Murillo Nancy Pérez Banda Vicente Arturo. Castillo Lara Gerardo. Alarcón Fernández Alder. Docente: I.S.C: Gregorio Martínez Vásquez MEDELLIN DE BRAVO, VER. FEB. – JUN. 2013 INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO Campus Medellín

Transcript of Investigacion Documental U3

Page 1: Investigacion Documental U3

1

IINNGGEENNIIEERRÍÍAA IINNDDUUSSTTRRIIAALL

Materia:

Algoritmos Y Lenguajes De Programacion.

Semestre - Grupo - Sistema: 4° Semestre - Grupo “B” – Semiescolarizado.

Producto Académico: Investigación Documental U3

“Metodologías Para El Diseño De Software”

Presenta: Calles Murillo Nancy

Pérez Banda Vicente Arturo. Castillo Lara Gerardo.

Alarcón Fernández Alder.

Docente: I.S.C: Gregorio Martínez Vásquez

MMEEDDEELLLLIINN DDEE BBRRAAVVOO,, VVEERR.. FFEEBB.. –– JJUUNN.. 22001133

IINNSSTTIITTUUTTOO TTEECCNNOOLLOOGGIICCOO SSUUPPEERRIIOORR

DDEE AALLVVAARRAADDOO –– CCaammppuuss MMeeddeellllíínn

Page 2: Investigacion Documental U3

2

INDICE

Índice ........................................................................................................................... 2

Objetivo del trabajo ..................................................................................................... 3

Introducción ................................................................................................................. 4

Metodologías Para El Desarrollo De Software ............................................................ 5

Tipo De Metodologías ............................................................................................. 7

Metodología Estructurada ............................................................................... 7

Metodología Orientada A Objetos ................................................................... 8

Tipos De Programación ............................................................................................... 9

Programación Modular .................................................................................... 9

Programación Estructurada ........................................................................... 10

Técnicas Principales De Diseño De Algoritmos De Programación ............................ 11

Top Down ...................................................................................................... 11

Bottom Up ..................................................................................................... 12

Diferencias Entre Top Down Y Bottom Up .................................................... 13

Conclusión................................................................................................................. 14

Bibliografías ............................................................................................................... 15

Page 3: Investigacion Documental U3

3

OBJETIVO

El presente trabajo tiene la finalidad de dar a conocer los tipos de metodologías

utilizadas frecuentemente en la estructuración de software con base a las

características que esta poseen.

Básicamente se pretende ilustrar al lector en el ámbito de algoritmos y programación,

haciendo hincapié a los elementos principales como lo son, las metodologías de

diseño, los tipos de programación, y las técnicas de diseño de algoritmos; con la

finalidad de plantear un previo conocimiento dentro de este ámbito con generalidades

diversas.

Page 4: Investigacion Documental U3

4

INTRODUCCION

Actualmente el campo de la tecnología ha tenido un crecimiento notorio en gran

variedad de ámbitos incorporados a la sociedad, pues este campo hace que las

tareas a realizar sean más fáciles de desarrollar, por lo cual hoy en día los algoritmos

y la programación juegan un rol importante en las implantaciones que se incorporan

a la solución de problemas día a día.

En el presente trabajo se podrá encontrar el como parte la programación atraves de

ciertas metodologías fundamentales las cuales tienes diversas tareas según su caso

de aplicación y en donde se toma en cuenta de manera estricta el tipo de

programación más apto para la solución del problema planteado. También se hace

mención de los tipos de técnicas de diseño de algoritmos y de cómo estas son

importantes para la programación en gran escala, así como se ara mención de la

diferencia que prevalecen entre estas.

Esperemos que esta información sea de gran utilidad y sobretodo les ayude a tener

una mejor compresión de los conceptos de programación presentes en esta

redacción.

¡ENHORABUENA Y MUCHA SUERTE!

Page 5: Investigacion Documental U3

5

METODOLOGÍAS PARA EL DESARROLLO DE SOFTWARE

Metodología de desarrollo de software se describe como el conjunto de

herramientas, técnicas, procedimientos y soporte documental para el diseño de

Sistemas de información. Es decir particularmente, una metodología se basa en una

combinación de los modelos de proceso genéricos para obtener como beneficio un

software que soluciones un problema, pues básicamente un proceso de software

detallado y completo se denomina “Metodología”.

En Ingeniería de software cuando se habla de desarrollo de software se habla de

desarrollo de programas y por lo tanto se considera como una tarea de ingeniería, en

el cuál se debe ejecutar una serie de fases, etapas para obtener un programa que

funcione de acuerdo con métodos ya establecidos en otras disciplinas de ingeniería.

Las actividades que los ingenieros de software realizan se encuentran asociadas a

un proceso de software donde intervienen diferentes elementos (fases, actividades,

producto, roles, agentes) que permiten la definición del software a producir

(producto), el desarrollo o el diseño del software, la validación del software tanto lo

interno (requerimientos específicos) como lo externo (expectativas del cliente), y la

evolución del software donde se modifica para adaptarlo a los cambios.

Con base esto se dice que adicionalmente una metodología debe definir con

precisión de los artefactos, roles y actividades, junto con prácticas, técnicas

recomendadas y guías de adaptación de la metodología al proyecto. Sin embargo, la

complejidad del proceso de creación de software es netamente dependiente de la

naturaleza del proyecto mismo, por lo que la selección de la metodología estará

acorde al nivel de aporte del proyecto, ya sea pequeño, mediano o de gran nivel.

Page 6: Investigacion Documental U3

6

Como se ha mencionado, las metodologías se basan en una combinación de los

modelos de proceso genéricos (cascada, evolutivo, incremental, espiral entre otros),

en donde habitualmente se utiliza el término “método” para referirse a técnicas,

notaciones y guías asociadas, que son aplicables a una (o algunas) actividades del

proceso de desarrollo, por ejemplo, suele hablarse de métodos de análisis y/o diseño

según el tipo de proyecto en cuestión, planteando así alternativas de solución

correspondientes.

Page 7: Investigacion Documental U3

7

TIPOS DE METODOLOGIAS

La comparación y/o clasificación de metodologías no es una tarea sencilla debido a

la diversidad de propuestas y diferencias en el grado de detalle, información

disponible y alcance de cada una de ellas. A grandes rasgos, si tomamos como

criterio las notaciones utilizadas para especificar artefactos producidos en actividades

de análisis y diseño, podemos clasificar las metodologías en dos grupos:

Metodologías Estructuradas

Metodologías Orientadas a Objetos.

METODOLOGÍAS ESTRUCTURADAS

Los métodos estructurados comenzaron a desarrollarse a fines de los 70’s con la

Programación Estructurada, para que posteriormente a mediados de los 70’s se

desarrollaran las técnicas para el diseño, como lo son el Diagrama De Estructura y

posteriormente para el análisis como lo son los Diagramas De Flujo De Datos.

Estas metodologías son particularmente apropiadas para la generación de proyectos

en donde se utilizan la implementación lenguajes de 3ra y 4ta generación ya que en

esta los programas están divididos en distintos bloques, los cuales tienen funciones

que se van confeccionado en forma de arriba-abajo, empezando desde las generales

hasta las particulares, hasta llegar a detallar cada uno de los procedimientos y su

interacción

Page 8: Investigacion Documental U3

8

METODOLOGÍAS ORIENTADAS A OBJETOS

Esta metodología se basa en la manipulación de los procesos y datos de manera

conjunta. Esta comienza a mediados de los años 80 con los lenguajes de

programación Orienta a Objetos.

La orientación a objetos empieza, como se mencionó anteriormente, con los

lenguajes de programación orientada a objetos; en los que se daba énfasis a la

abstracción de los datos para los que se adjuntaba un conjunto de operaciones.

Algunos ejemplos de este lenguaje son C++, Java.

En esta metodología el sistema se organiza como una colección de objetos que

interactúan entre sí y que contienen tanto estructuras de datos como un

comportamiento ya que comprende dividir un programa en clases, donde estas

clases estarán estructuradas por propiedades, atributos, variables, pretendiendo

simular y describir de manera conceptual a un objeto.

Esto se opone a la programación convencional (programación de los años 50s), en la

cual las estructuras de datos y el comportamiento solamente están relacionadas de

forma débil, ya que estos se enfocan principalmente a las funciones.

Page 9: Investigacion Documental U3

9

TIPOS DE PROGRAMACION

PROGRAMACION MODULAR

La 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 y se codifican por separado.

Cada programa contiene un módulo denominado programa principal (denominado

también raíz), que controla todo lo que sucede y el cual 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 tareas específica que ejecutar.

Los módulos son independientes en el

sentido de que ningún módulo puede

tener acceso directo a cualquier otro

módulo excepto el módulo al que llama

y a sus propios submódulos. Sin

embrago, los resultados producidos

por un módulo pueden ser utilizados

por cualquier otro módulo cuando se

transfiera a ellos el control.

Raíz

Módulo 1 Módulo 2 Módulo 3

Módulo

11

Módulo

12

Módulo

21

Módulo

22

Módulo

31

Módulo

212

Módulo

211

RaízRaíz

Módulo 1Módulo 1 Módulo 2Módulo 2 Módulo 3Módulo 3

Módulo

11

Módulo

11

Módulo

12

Módulo

12

Módulo

21

Módulo

21

Módulo

22

Módulo

22

Módulo

31

Módulo

31

Módulo

212

Módulo

212

Módulo

211

Módulo

211

Page 10: Investigacion Documental U3

10

Dado que los módulos son independientes, diferentes programadores pueden

trabajar simultáneamente en diferentes partes del mismo programa. Esto reducirá el

tiempo del diseño del algoritmo y de la posterior codificación. Además un módulo se

puede modificar radicalmente sin afectar a otros módulos.

PROGRAMACION ESTRUCTURADA

El término programación estructurada se refiere a un conjunto de técnicas que

aumentan considerablemente la productividad del programa, reduciendo en elevado

grado el tiempo requerido para escribir, verificar, depurar y mantener los programas.

La programación estructurada utiliza un número limitado de estructuras de control

que minimizan la complejidad de los programas y, por consiguiente, reducen los

errores lo cual hace a los programas más fáciles de escribir, verificar, leer y

mantener.

En este tipo de programación, los programas están divididos en distintos bloques, los

cuales tienen funciones que se van confeccionado en forma de arriba-abajo,

empezando desde las generales hasta las particulares, hasta llegar a detallar cada

uno de los procedimientos y su interacción

Básicamente la programación estructurada significa escribir un programa de acuerdo

a las siguientes reglas:

El programa tiene un diseño modular

Los módulos son diseñados de modo descendente

Cada módulo se codifica utilizando las tres estructuras de control básicas:

secuencia, selección y repetición.

Page 11: Investigacion Documental U3

11

TÉCNICAS PRINCIPALES DE DISEÑO DE ALGORITMOS DE

PROGRAMACIÓN

TOP DOWN

También conocida como de “arriba-abajo”, esta técnica 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 básicamente se refiere a 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.

BOTTOM UP

Page 12: Investigacion Documental U3

12

La técnica de diseño bottom-up hace referencia a las partes individuales que se

diseñan con detalle y luego se enlazan para formar componentes más grandes, que

a su vez se enlazan hasta que se forma el sistema completo. Las estrategias

basadas en el flujo de información "bottom-up" se caracterizan potencialmente

necesarias y suficientes porque se basan en el conocimiento de todas las variables

que pueden afectar los elementos del sistema.

Básicamente 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, ya que en ese tiempo se cuenta con

muy poco tiempo, presupuesto y/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, la introducción de datos carentes

de valor al sistema y 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.

Page 13: Investigacion Documental U3

13

DIFERENCIAS ENTRE EL TOP DOWN Y EL BOTTOM UP

La diferencia entre estas dos técnicas de programación se fundamenta en el

resultado que presentan frente a un problema dado.

Por ejemplo:

Imagine una empresa, la cual se compone de varios departamentos (contabilidad,

mercadeo,), en cada uno de ellos se fueron presentando problemas a los cuales se

le dieron una solución basados en un enfoque ascendente (Bottom Up): creando

programas que satisfacían sólo el problema que se presentaba.

Cuando la empresa decidió integrar un sistema global para suplir todas las

necesidades de todos los departamentos se dio cuenta que cada una de las

soluciones presentadas no era compatible la una con la otra, no representaba una

globalidad, característica principal de los sistemas.

Como no hubo un previo análisis, diseño de una solución a nivel global en todos sus

departamentos, centralización de información, que son características propias de un

diseño descendente (Top Down) y características fundamentales de los sistemas; la

empresa no pudo satisfacer su necesidad a nivel global por lo tanto con base a esto

la creación de algoritmos es basado sobre la técnica descendente, la cual brinda el

diseño ideal para la solución de un problema.

Page 14: Investigacion Documental U3

14

CONCLUSIONES

En conclusión podemos agregar que una metodología se basa en una combinación

de los modelos de proceso genéricos para obtener como beneficio un software que

soluciona un problema determinado ya que las trascendencias de estas se ha hecho

notorias, pasando de solo programar, a establecer funciones en etapas o módulos,

así como también en objetos, agilizando así el desarrollo del software para la

disminución de los costos en estos.

En resumen las metodologías así como también los tipos de programación y las

técnicas de diseño de algoritmos, son elementos de gran importancia dentro del

ámbito de la tecnología pues su conocimiento previo hace más fácil el entendimiento

de la programación así como también nos permite tener una mejor perspectiva del

avance tecnológico ya que estos elementos informáticos son en parte, el primer paso

para la innovación tecnológica empleada a la solución de problemas.

Por tanto tener en cuenta estos conomientos, nos permitirá tener mejores opciones

para la solución de un problema pues hoy en día la aplicación de software es uno de

los métodos solución más frecuente lo que hace que su conocimiento sea escencial y

aplicable.

Page 15: Investigacion Documental U3

15

BIBLIOGRAFIA

http://procesosdesoftware.wikispaces.com/METODOLOGIAS+PARA+DESARROLLO

+DE+SOFTWARE

http://www.iesjuandelacierva.com/paginade/fupro/apuntes/ut10.htm

http://wiki.monagas.udo.edu.ve/index.php/Metodolog%C3%ADas_para_el_desarrollo

_de_software

http://www.sites.upiicsa.ipn.mx/polilibros/portal/Polilibros/P_terminados/PolilibroFC/U

nidad_III/Unidad%20III_8.htm

http://www.slideshare.net/VicenteArturoPerezBanda/savedfiles?s_title=metodologa-

para-el-diseo-de-software&user_login=Adark

http://sedici.unlp.edu.ar/bitstream/handle/10915/3835/2_-

_Metodolog%C3%ADas_de_dise%C3%B1o_de_hardware.pdf?sequence=4

http://programacionfacil.wikispaces.com/file/view/Parte_4.pdf