INTRODUCCION

Anuncio
INTRODUCCION
En el presente trabajo de investigación se darán a conocer alunas metodologías de programación utilizadas en
la creación de softwares. Una metodología es un conjunto de principios generales que un programador ha de
seguir para desarrollar un programa. Cada lenguaje de programación permite al programador seguir una
metodología determinada, por tanto los lenguajes de programación se pueden también clasificar según la
metodología que sigan. Las metodologías de programación definen cómo se organizan los diferentes
elementos de un programa, como esos elementos interactúan entre ellos, etc. Actualmente, las metodologías
de programación más comúnmente usadas son los siguientes:
• PROGRAMACIÓN ESTRUCTURADA
• PROGRAMACIÓN ORIENTADA A OBJETOS
• MODULARIZACIÓN
Pero existen otras mas tales como:
• Método de Warnier
• Método de Jackson
• Método de Bertini
• Método de Tabourier
• Método de Chapin
Etc.
A continuación se detallan cada uno de estos puntos.
PROGRAMACIÓN ESTRUCTURADA
A finales de los años 1970 y principios de los 1980, se creó una nueva filosofía de diseño de programas
llamada programación estructurada. Esta idea eliminó ese tipo de código largo, monolítico y lineal que
saltaba de un lugar a otro con sentencias tipo GOTO. En su lugar, los programadores seccionaban el código en
secciones claramente definidas mediante párrafos cortos los cuales eran llamados por un módulo principal. En
lugar de la utilización del lenguaje Assembler los lenguajes de tercera generación, tales como COBOL,
PASCAL y BASIC se hicieron muy populares. Además, un hardware de ordenador más sofisticado y más
rápido hizo posible las bases de datos relacionales, permitiendo el almacenamiento de la información en
diskettes y en discos duros. A finales de los 1970 y comienzos de los 1980 era muy caro hacer esto, pero los
beneficios eran tremendos. Por no más tiempo del que necesitabas para cerrar un sobre podías almacenar 80
caracteres de información. Ahora podías almacenar y recuperar decenas de miles de registros y tenerlos
disponibles en un terminal de ordenador.
COMO RESUMEN DIREMOS QUE LA PROGRAMACIÓN ESTRUCTURADA:
Postula el principio de división de un programa en unidades algorítmicas más pequeñas llamadas funciones o
procedimientos. Una vez definidos, el programador puede invocar a un procedimiento desde otro.
Típicamente un programa estructurado se realiza diseñando primeramente un conjunto de estructuras de datos,
y posteriormente un conjunto de algoritmos (procedimientos) que actúan sobre esas estructuras de datos. Por
ejemplo, si queremos desarrollar un programa para calcular la media de diversos conjuntos de variables, el
programador desarrolla un procedimiento al que llama media donde implementa el algoritmo mediante el cual
se calcula la media para cualquier conjunto de variables. Posteriormente invoca a ese procedimiento por cada
conjunto de variables de los cuales quiera calcular la media. Algunos lenguajes que siguen metodología de la
1
programación estructurada son el C, Pascal, Basic, Fortran, Cobol, etc.
Aunque la programación estructurada es una metodología que se ha usado durante mucho tiempo y aún se usa
en la actualidad, existe un límite en la complejidad de los programas que se pueden realizar manteniendo los
costes de mantenimiento y modificación de los programas razonablemente bajos. Es otras palabras, modificar
un programa complejo en Pascal o COBOL puede ser una tarea altamente costosa en términos de tiempo. Para
sobrepasar estos problemas se creó la metodología de la programación orientada a objetos, que postula la
división de un programa en unidades autocontenidas llamadas objetos. A diferencia de los procedimientos que
contienen sólo algoritmos y los datos sobre los que actúan están aparte, un objeto contiene un conjunto de
algoritmos junto con los datos sobre los que actúan. De esta manera cuando un programador invoca
algoritmos en un objeto, no necesita saber qué tipo de datos el objeto maneja de forma interna. Además los
objetos pueden ser organizados en jerarquías, de forma unos objetos pueden heredar datos y algoritmos de
otros objetos. Con esto lo que se consigue es que la organización de un programa orientado a objetos sea más
modular y rica que la organización de un programa estructurado, con lo que la arquitectura de los programas
complejos puede ser acomodada a cambios más fácilmente.
Programación Orientada a Objeto (OOP)
Con la introducción de sistemas operativos gráficos tales como Windows, ha surgido un nuevo concepto de
programación. Los programadores ahora diseñan aplicaciones a base de unir diferentes piezas de código ya
escrito y probado con anterioridad, cada una de estas piezas se llama "objeto". Los objetos pueden tener
propiedades, tales como forma, tamaño, color, y tipo de datos. Un ejemplo podría ser un cuadro en la pantalla
conteniendo una cuenta de dinero. Usted podría cambiar el tamaño de este cuadro, cambiar el color, cambiar
la forma en la que se muestra la figura de la cuenta de dinero. Entonces usted podría realizar operaciones en
esa cuenta, controlando los eventos que se hicieran sobre ella, tales como una pulsación del ratón que podría
disparar una determinada operación, o mover la caja sobre la pantalla. Gracias al entorno del sistema
operativo subyacente tras ello, usted puede hacer todo esto colocando propiedades en lugar de escribir todo un
código. Y no sólo esto, usted puede crear una aplicación con una base de datos subyacente tras ella, utilizando
todas las plantillas preprogramadas sobre la estructura de la base de datos. En los días del antiguo lenguaje
assembler, tal sistema hubiera sido extraordinario, si no imposible, de llevarlo a la práctica, además el tamaño
y la complejidad serían horrendos. Pero mucha de esa complejidad está ya realizada en el sistema operativo de
los ordenadores que ejecutan estos programas "orientados a objeto". Lo bueno de esto es que muchas de las
funciones que antes llevaban meses para programarlas, hoy se pueden hacer fácilmente en unos días, incluso
en cuestión de horas. Además, el coste económico de los sistemas operativos de ordenador se ha
revolucionado, debido a que los costes del hardware caen en picado. Hoy día es normal que un ordenador
personal medio tenga 64 megas de memoria RAM y 8 gigas de disco en una máquina que cuesta 1/40 de lo
que costaba nuestro pobre sistema Univac en 1978. Esta tendencia no muestra tendencias de ir a cambiar La
Orientación a Objetos (OO) se configura como la metodología de desarrollo de software predominante para
los próximos años. Según algunos estudios recientes, más del 50% de las corporaciones que desarrollan
aplicaciones informáticas, a nivel mundial, ya han abordado de alguna manera estas técnicas, empezando por
proyectos piloto con el fin de explorar las ventajas conseguidas con ellas. El soporte que todas las empresas
informáticas están dando a la OO (desde fabricantes de ordenadores, bases de datos, hasta lenguajes tanto de
tercera como de cuarta generación) hace que la dificultad de migrar a esta tecnología sea cada vez menor.
La Orientación a Objetos (OO), que inicialmente fue un con−junto de técnicas de programación soportadas en
el uso de lenguajes especiales (orientados a objetos), ha ido poco a poco más allá de la propia programación
hasta convertirse en una metodología genérica y de gran potencia para construir modelos de sistemas, que
puede ser aplicada en todas las fases del desarrollo de aplicaciones: análisis, diseño, programación y
mantenimiento.
Frente a otras metodologías tiene la ventaja de ser más natural (más próxima a la forma de pensar y hablar de
las personas) e integrar los principios generales de la ingeniería del software en un paradigma coherente (el
2
concepto de "objeto").
Los conceptos fundamentales de Objetos están en la actualidad bien asentados. A continuación se citan los
más importantes, desde nuestro punto de vista. Un Modelo de Objetos es un conjunto de entidades
(denominadas objetos) que colaboran entre ellos para desempeñar una serie de servicios. Esos servicios se
solicitan por medio del intercambio de mensajes. Todos los objetos del modelo pertenecen a algún tipo
(Clase).
En cuanto a los Objetos en sí, el principio fundamental es que un Objeto es la representación de un concepto.
Como tal, tendrá unas características (atributos) y un comportamiento, plasmado en una serie de operaciones.
Pero, si bien estos conceptos son aceptados generalmente, en cambio en las metodologías para construir
modelos de objetos hay grandes diferencias entre las distintas escuelas, lo cual está perjudicando en cierta
medida la implantación de las técnicas OO, ya que se les achaca aún una cierta inmadurez.
Aunque la programación estructurada es una metodología que se ha usado durante mucho tiempo y aún se usa
en la actualidad, existe un límite en la complejidad de los programas que se pueden realizar manteniendo los
costes de mantenimiento y modificación de los programas razonablemente bajos. Es otras palabras, modificar
un programa complejo en Pascal o COBOL puede ser una tarea altamente costosa en términos de tiempo. Para
sobrepasar estos problemas se creó la metodología de la programación orientada a objetos, que postula la
división de un programa en unidades autocontenidas llamadas objetos. A diferencia de los procedimientos que
contienen sólo algoritmos y los datos sobre los que actúan están aparte, un objeto contiene un conjunto de
algoritmos junto con los datos sobre los que actúan. De esta manera cuando un programador invoca
algoritmos en un objeto, no necesita saber qué tipo de datos el objeto maneja de forma interna. Además los
objetos pueden ser organizados en jerarquías, de forma unos objetos pueden heredar datos y algoritmos de
otros objetos. Con esto lo que se consigue es que la organización de un programa orientado a objetos sea más
modular y rica que la organización de un programa estructurado, con lo que la arquitectura de los programas
complejos puede ser acomodada a cambios más fácilmente.
Conceptos fundamentales de POO
Definición de Booch
La POO es el método de implementación en el que los programas se organizan como colecciones cooperativas
de objetos, cada uno de los cuales representa un ejemplar de una clase y cuyas clases son miembros de una
jerarquía de clases unidas mediante relaciones de herencia.
Conclusiones
La unidad lógica de programación es el objeto.
Los objetos tienen relaciones.
Existen clases que agrupan conceptualmente los objetos.
Las clases pertenecen a una jerarquía (son las clases las que heredan y no los objetos).
Objeto
Entidad que contiene los atributos que describen el estado de un objeto del mundo real y las acciones
3
que se asocian con el objeto del mundo real.
Un objeto es designado con un nombre o un identificador.
OBJETO = DATOS + OPERACIONES
Los datos deberían estar ocultos en el objeto, y las operaciones serían el interface del objeto con el exterior,
pero estas operaciones están encapsuladas en "cajas negras".
Lenguajes de POO
SIMULA
Se considera que SIMULA es el primer Lenguaje de Programación Orientado a Objetos (en adelante LPOO),
fue diseñado por Kristen Nygaard y Ole Johan Dhal , del Norwegan Computer Center (NCC). Se concibió
para el desarrollo de simulaciones de procesos industriales y científicos, pero llegó a considerarse apto para
desarrollar grandes aplicaciones.
La versión SIMULA_67 tenía características de ALGOL_60 , y ya era casi un LPOO, con estas
características:
Concepto de objeto (datos + operaciones)
Comunicación entre objetos (proceso de simulación)
Concepto de clase (estructura que agrupa el comportamiento y características de varios objetos)
Concepto de herencia (heredar datos y métodos)
Fuertemente tipificado (comprobación de tipos en tiempo de compilación)
Concepto de ligadura dinámica " polimorfismo" (tener interfaces idénticos para activar diferentes
propiedades.
Smalltalk
Más tarde surge el primer LPOO en sentido estricto: Smalltalk_80 , diseñado por Alan Kay y Adele Goldberg
, de la XEROX PARC . Además de ser considerado como primer LPOO es el más puro (sólo tiene objetos,
NO ES programación estructurada).
ACTUALMENTE SE ENCUENTRAN:
JAVA y C++
Características de un LPOO
1. Tipificación fuerte : comprobación de tipos en tiempo de compilación. Hay una excepción : Smalltalk .
2. Ocultación : de las características de los objetos.
3. Compilación Incremental : compilación separada.
4
4. Genericidad : reutilización de código.
5. Paso de mensajes .
6. Polimorfismo : basado en la ligadura dinámica.
7. Excepciones : sistema seguro.
8. Concurrencia : "el mundo real es concurrente".
9. Datos compartidos : entre varios objetos.
Modularización
Descomponer un programa en un número pequeño de abstracciones coherentes que pertenecen al
dominio del problema y enmascaran la complejidad interna.
* Existen muchas acepciones del concepto de modularidad.
* Van desde una subrutina hasta la asignación de trabajo para
un programador. Todas son correctas
* La modularidad consiste en subdividir el software en partes
denominadas módulos, cada uno con un propósito especifico,que
se integran para satisfacer los requerimientos de un problema
* La modularidad es el atributo mas sencillo del software,que
permite a un programa ser manejable intelectualmente
* Asimismo, la modularidad es un enfoque comunmente aceptado
tanto para análisis como para diseño.
* La modularidad proporciona:
− Calidad de diseño
− Facilidad de instrumentación
− Facilidad de depuración
− Facilidad de pruebas
− Facilidad de documentación
− Facilidad de mantenimiento
5
* Sea:
E −−−> Esfuerzo en coste
C −−−> Complejidad
C(P1) > C(P2) ======> E(P1) > E(P2)
C(P1 + P2) > C(P1) + C(P2)
||
\/
E(P1 + P2) > E(P1) + E(P2)
* Nos lleva
− Cuantos más módulos mejor ===> mayor sencillez
− Contingencia: interfaces entre módulos
− Problema: buscar M (nº de módulos) adecuado
Según
Liskov , modularizar es dividir un programa en módulos que pueden ser compilados
separadamente pero existiendo conexiones entre los módulos.
Parnas dice además que deben (las conexiones) seguir el criterio de ocultación.
Booch piensa que la modularización deber ser propiedad de un sistema que ha sido descompuesto en un
conjunto de módulos cohesivos y débilmente acoplados.
Acoplamiento
Es la interacción entre módulos, sus propiedades deberían ser:
• Facilitar la sustitución de un módulo realizando pocos cambios en los otros.
• Facilitar el seguimiento y aislamiento de un error (módulo defectuoso).
Cohesión
• Es la interacción interna de un módulo: todos los elementos de un módulo han de tener relación.
METODO DE WARNIER
La metodología Warnier fue creada por Jean D. Warnier en 1975, y se dio a conocer en el libro Entrainement
a la Programmation. Construction des Programes.
Es una metodología estructurada, formada por un conjunto de normas y herramientas que nos permiten
6
solucionar un problema de forma clara y sencilla.
Se basa fundamentalmente en la jerarquía de los datos, tanto de entrada como de salida, siendo estos últimos
los que de forma directa ejercen una influencia esencial en la definición y control del programa.
Se trata de un método para la representación de programas cuyo resultado final se
denomina diagrama de Warnier. En eI podemos utilizar toda la terminología estudiada
hasta ahora en lo que respecta a identificadores, constantes, variables, expresiones y operadores. teniendo en
cuenta que la característica fundamental en relación con todo lo anteriormente visto es la forma de diseñar el
programa. que será descendentemente y la representación utilizada.
Este método se basa en el empleo de Ilaves de distintos tamaños que relacionan entre si todas las tareas y
operaciones.
La representaci6n del algoritmo se basa en los siguientes puntos:
• Un programa se representa por un solo diagrama en el cual se engloban todas las operaciones
necesarias para la resolución del problema. Estas operaciones estan colocadas secuencialmente a la
derecha de una llave. en cuya parte izquierda figura el nombre del programa.
• En la parte superior de la llave anterior figurará el comentario INICIO.
• En la parte inferior figurará FIN.
• La forma de conectar con distintas paginas es a través de la palabra PROCESO seguida de un numero
o un nombre que tenga relación con las operaciones que se realizan en la siguiente pagina. Estas
palabras figuraran en el diagrama principal (diagrama que ocupa la primera pagina). En las siguientes
figurará un diagrama sujeto a las mismas normas, salvo que el nombre del programa será la palabra
anteriormente citada. Las sucesivas conexiones se hacen de forma similar.
FASES DE LA METODOLOGÍA DE WARNIER
Las fases que se siguen para desarrollar un programa son:
• Estudio de los datos de salida. Trata de crear el archivo lógico de salida (ALS).
• Estudio de los datos de entrada. Trata de crear el archivo lógico de entrada (ALE).
• Hacer el cuadro de descomposición de secuencias.
• Dibujar el organigrama de secuencias de Warnier.
• Construir la lista de instrucciones y asignarlas en el organigrama de secuencias.
• Desarrollar el juego de datos de ensayo y analizar los resultados.
MÉTODO DE JACKSON
En 1957 Michael A. Jackson. Describe el método de programación estructurada de Jackson (JSP), como
método de diseño de programas con aplicación a la mayoria de los lenguajes de programación.
La metodología de Jackson es un proceso sistemático para la realización de un programa, utilizando la técnica
del diseño descendente (Top−Down), cuyo producto final es el programa escrito en el pseudocódigo propio
del método, de tal forma que su codificaci6n posterior en cualquier lenguaje de programaci6n es relativamente
sencilla, bien manualmente o de forma automatica.
Para el diseñio de un programa, en general. se parte de unas especificaciones proporcionadas por el usuario en
las cuales se definen y detallan:
7
• Las funciones a realizar y su naturaleza.
• Los datos a manejar y su naturaleza.
El resultado final será un programa o conjunto de programas capaces de resolver el problema solicitado. El
siguiente grafico nos muestra. esquemáticamente. el proceso de creación' de un programa.
ESPECIFICACIONES DE USUARIO
FUNCIONES INFORMACIÓN
A REALIZAR SOBRE LOS DATOS
MÉTODO O ALGORITMO
PROGRAMA
OPERACIONES
DATOS DE ENTRADA DATOS DE SALIDA
DATOS
Los objetivos pretendidos en la realizaci6n de programas, siguiendo esta metodología son los siguientes:
Obtenci6n de programas fiables. Fiabilidad.
Obtenci6n de programas sencillos. Simplicidad.
Facilidad en la puesta a punto de los programas.
· Facilidad en el mantenimiento de los programas.
El punto de punto de partida en la metodología de Jackson es el de la definición de los datos que vamos a
manejar tanto en la entrada como en la salida y como consecuencia del tratamiento en estos datos se obtiene el
programa.
Desarrollar la estructura de un programa sobre la estructura de los datos que va a manejar ofrece:
• Una base consistente para la definición de los programas.
• Las operaciones se ubicaran en el programa de forma lógica.
• El programa será fiel reflejo del problema a resolver.
Esta metodología permite la realización de los programas siguiendo las directrices de la programación
estructurada puesto que la representación de los datos se basa en las estructuras básicas: secuencial, alternativa
y repetitiva, admitiendo además un sencillo descendente y modular.
FASES DE LA METODOLOGÍA DE JACKSON
La metodología de Jackson desarrolla un programa en 5 fases que realizan consecutivamente. Estas fases son:
• Definir las estructuras de datos.
• Encontrar correspondencias entre las estructuras de datos.
8
• Formar la estructura del programa.
• Listar y asignar las operaciones y condiciones a realizar.
• Escribir la lógica esquematizada.
MÉTODO DE BERTINI
Al igual que el de Jackson la representación de programas es en forma de árbol denominada diagrama
arborescente de Bertini.
Un diagrama de Bertini consta de:
• Definición detallada de los datos de entrada y salida, incluyendo los archivos lógicos utilizados.
• Representación del proceso o algoritmo.
La simbología utilizada se basa en el empleo de rectángulos horizontales y círculos.
La lectura del diagrama se hace recorriendo el árbol en orden inverso (RDI), lo que supone realizar :
• Situarse en la raíz (R)
• Recorrer el subárbol derecho (D)
• Recorrer el subárbol izquierdo (I)
Cada subárbol se recorre igualmente en orden inverso hasta llegar a las hojas o nodos terminales del árbol.
MÉTODO DE TABOURIER
Se trata de una representación de programas en forma de árbol denominado Diagrama de Tabourier. Para ello
se puede utilizar a si mismo la terminología común.
Un diagrama de Tabourier consta de:
• Definición detallada de los datos de entrada y salida.
• Representación del proceso o algoritmo.
La simbología utilizada se basa en el empleo de rectángulos y rombos horizontales.
La lectura del diagrama se hace recorriendo el árbol en preorden (RID), lo que supone realizar :
• Situarse en la raíz (R)
• Recorrer el subárbol izquierdo (I)
• Recorrer el subárbol derecho (D)
Cada subárbol se recorre igualmente en preorden hasta llegar a las hojas o nodos terminales del árbol.
MÉTODO DE CHAPIN (NASSI / SCHNEIDERMAN)
Se trata de un método de representación de programas en forma de bloque compacto. Tambien en este caso se
puede utilizar la terminología común.
Un diagrama de Chapin consta de:
• Definición detallada de los datos de entrada y salida.
9
• Representación del proceso o algoritmo.
La simbología utilizada se basa en el empleo de rectángulos.
La lectura del diagrama se hace de arriba abajo
.
BIBLIOGRAFÍA
LIBRO: METODOLOGÍA DE LA PROGRAMACIÓN.
AUTORES: EDUARDO ALCALDE Y MIGUEL GARCIA.
EDICIÓN: SEGUNDA EDICIÓN.
EDITORIAL: MC GRAW HILL / INTERAMERICANA DE ESPAÑA S.A.
AÑO: 1993.
10
Descargar