Fundamentos de programación

Name:
Location: Tuxtla Gutiérrez, Mexico

Tuesday, October 24, 2006

Técnicas de diseño detallado.


Diseño algorítmico.



Definición
Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema. De un modo más formal, un algoritmo es una secuencia finita de operaciones realizables, no ambiguas, cuya ejecución da una solución de un problema.



El algoritmo se puede representar por medio de dos formas :
Pseudo código
Diagrama de flujo:


Pseudo código: es el lenguaje de especificación de algoritmos y tiene una estructura:
Las instrucciones se escriben en ingles o en palabras similares al ingles o español que facilitan la escritura de programación.



Para la resolución de una ecuación de segundo grado se escribiría

inicio
Introducir coeficientes a, b y c
Imprimir títulos primera raíz, segunda raíz, no tiene solución,
Calcular raíz 1 y raíz 2
Imprimir raíz 1 y raíz 2
Fin

Diagramas de flujo (flows charts):

Es la representación grafica del algoritmo; según la ANSI consta de una simbologia , que tiene los siguientes significados:




Elementos y reglas de la representación gráfica de los algoritmos.



a) Descripción Narrada

b) Pseudocódigo
c) Diagramas de Flujo
d) Diagramas N- S (Nassi-Schneiderman o de Chapin)

a) Descripción Narrada
Este algoritmo es caracterizado porque sigue un proceso de ejecución común y lógico, describiendo textualmente paso a paso cada una de las actividades a realizar dentro de una actividad determinada.

Ejemplo 1:




Algoritmo para asistir a clases:

1. Levantarse

2. Bañarse

3. Vestirse

4. Desayunar

5. Cepillarse los dientes

6. Salir de casa

7. Tomar el autobús

8. Llegar al ITTG

9. Buscar el aula

10. Ubicarse en un asiento

b) Descripción en Pseudocódigo



Pseudo = falso.


El pseudocódigo no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para las computadoras. Es una técnica para diseño de programas que permite definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema.

Ejemplo 1


Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmética.


inicio

leer (a, b, c, d)

producto <-- (a * b * c * d)

suma <-- (a + b + c + d)

media <-- (a + b + c + d) / 4

escribir (producto, suma, media)

fin

c) Diagramas N-S


Son una herramienta que favorece la programación estructurada y reúne características gráficas propias de diagramas de flujo y lingüísticas propias de pseudocódigos. Constan de una serie de cajas contiguas que se leerán siempre de arriba-abajo y sus estructuras lógicas son las siguientes:
Estructura Secuencial





d) Diagramas de Flujo.



Son la representación gráfica de la solución algorítmica de un problema. Para diseñarlos se utilizan determinados símbolos o figuras que representan una acción dentro del procedimiento. Utilizan unos símbolos normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos con flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados.

Para su elaboración se siguen ciertas reglas:



Se escribe de arriba hacia abajo y de izquierda a derecha
Siempre se usan flechas verticales u horizontales, jamás curvas
Evitar cruce de flujos
En cada paso expresar una acción concreta
Secuencia de flujo normal en una solución de problema
Tiene un inicioUna lectura o entrada de datos
El proceso de datosUna salida de información
Un final

Ventajas de usar Flujogramas



Rápida comprensión de las relaciones.

Análisis efectivo de las diferentes secciones del programa.
Pueden usarse como modelos de trabajo en el diseño de nuevos programas o sistemas.
Comunicación con el usuario.
Documentación adecuada de los programas.
Codificación eficaz de los programas.
Depuración y pruebas ordenadas de programas.

Desventaja de los flojugramas



Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseño.
Acciones a seguir tras la salida de un símbolo de decisión, pueden ser difíciles de seguir si existen diferentes caminos
No existen normas fijas para la elaboración de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir.

Representando el ejemplo como flujograma tenemos:

Implementación de algoritmos secuenciales.



Un algoritmo puede adoptar una de las estructuras siguientes o combinaciones de ellas: lineal o secuencial, alternativa o selectiva y repetitiva o cíclica.
La más sencilla de las tres es la lineal, también llamada secuencial que se caracteriza porque todos los pasos del algoritmo se realizan en secuencia, es decir, se suceden uso a otros.


Un ejemplo de esta estructura es el algoritmo para calcular la densidad de un cuerpo a partir de los datos de masa y volumen, mostrada a continuación a través de un diagrama de flujo:



Diseño algorítmico de las funciones


El diseño algorítmico de cualquier función implica como se hace o realiza la tarea (problema) solicitado a resolver.
En el diseño, en la resolución de un problema complejo, se divide en varios sub- problemas y seguidamente se vuelven a dividir los sub-problemas en otros más sencillos, hasta que puedan implementarse en la computadora.


Esta característica define lo que se entiende como diseño descendente o diseño modular.· Cada problema se resuelve mediante un modulo (subprograma) y tiene un solo punto de entrada y un solo punto de salida. · Un programa bien diseñado consta de un programa principal (modulo de nivel mas alto) que llama a subprogramas (módulos de nivel mas bajo), que a su vez pueden llamar otros sub-programas.


Los programas que se estructuran de esta forma, se dicen que tienen diseño modular y el método de romper el programa en modos pequeños se llama programación modular.

Wednesday, October 18, 2006

UBICACIÓN DEL PELIGRO



La información sobre el lugar del incidente, como materiales peligrosos, ubicación de tuberías de gas, etc., no se tiene disponible o no existe.

INFORMACION NECESARIA





§Durante una emergencia, quienes la atienden pueden adquirir información útil
§Está información no se trasmite por radio, a menos que se solicite, debido al tiempo aire limitado.

INFORMACION EN EMERGENCIA



§Los departamentos de bomberos, policía, servicios y médicos de emergencia, recopilan gran cantidad de información basada en papel. Durante una emergencia, esta información basada en papel es en extremo difícil de usar, y rara vez se usa.

SOBRECARGA DE LLAMADAS




§Los sistemas del manejo de emergencias están establecidos para manejar cargas de llamadas normales, y se sobrecargan de inmediato cuando sucede un evento no usual o varios eventos.

ENUNCIADO DEL PROBLEMA FRIEND


DEBILIDADES DEL MANEJO
DEL SISTEMA DE
EMERGENCIAS ACTUAL

DEFINICION DEL PROBLEMA


REQUERIMIENTOS



FUNCIONALES
NO FUNCIONALES
CRITERIOS DE ACEPTACION

DEFINICION DEL PROYECTO



§La actividad de definición del proyecto produce un documento de definición del problema que indica el dominio y la funcionalidad del sistema.

DEFINICION DEL PROBLEMA



§Su objetivo es que el gerente de proyecto y el cliente se pongan de acuerdo sobre el alcance del sistema que se va a construir.

EL MÉTODO DE LA INGENIERÍA


INCLUYE CINCO PASOS:



Ø1.- Formular el problema
Ø2.- Analizar el problema
Ø3.- Buscar soluciones
Ø4.- Decidir cual es la Solución adecuada
Ø5.- Especificar la solución

Planteamiento del problema



§La ingeniería es una actividad para la solución de problemas.
§ Los ingenieros buscan una solución adecuada, a menudo mediante ensayo y error

Fundamentos de programaci�n: Diagrama de Actividades

Fundamentos de programaci�n: Diatgrama de Actividades

Diagrama de Secuencia

Diatgrama de Actividades

Diagrama de Estado

Diagrama de Casos de Uso

Planteamiento del problema

Planteamiento del problema







Con la creación del UML se persigue obtener un lenguaje que sea capaz de abstraer cualquier tipo de sistema, sea informático o no, mediante los diagramas, es decir, mediante representaciones gráficas que contienen toda la información relevante del sistema.

En cualquier proyecto de ingeniería
Requiere etapas de modelamiento que permitan experimentar y visualizar el sistema que se construirá.

Principios de Modelado

a) La forma como vemos el problema tiene una profunda influencia en forma como acometemos el problema y le damos solución al mismo. Si pensamos que el mundo está compuesto de clases (abstracción de la realidad y la solución del problema) y objetos (instancias de éstas) que interactúan entre sí para efectuar (realizar) una funcionalidad, así veremos el mundo. Es precisamente al paradigma a que le apuesta UML, el modelo orientado a objetos. Si vemos la calidad como compuesta de procesos desde cada uno a su vez se puede descomponen subprocesos entonces estamos contiendo la realidad según el modelo estructurado y la arquitectura del sistema en desarrollo estará conformada de programas y subprogramas.

b) Para modelar un sistema complejo no es suficiente un único modelo, se requieren múltiples modelos donde cada una representa una vista (aspecto) del sistema; estos modelos se complementan entre sí. Esta es la razón de la existencia de varios diagramas en UML que modelan diferentes aspectos del sistema desde las vistas lógicas y físicas del sistema hasta los aspectos dinámicos, estáticos y funciones del mismo.

c) Cualquier modelo puede ser presentado con diferentes grados de precisión. La precisión se puede ver desde dos ópticas. La primera es el grado de detalle con que se presenta un modelo; por ejemplo, si lo que desea es razonar acerca de los requerimientos del sistema con un cliente o usuario final, se puede elaborar un diagrama de clases que muestra las clases, sus atributos y operaciones, así como varios adornos (multiplicidad) en las relac9ones; por otro lado, si lo que desea es transmitir el diagrama de clases para que sea implementado en un DBMS (Data Base Management System, Sistema de Administrador de B

Diagramas de UML y modelando una problematica

¿QUÉ ES UML?


ES UN LENGUAJE GRAFICO PARA VISUALIZAR, ESPECIFICAR, CONSTRUIR Y DOCUMENTAR CADA UNA DE LAS PARTES QUE COMPRENDE EL DESARROLLO DE SOFTWARE. CAPTA LA INFORMACION SOBRE LA ESTRUCTURA ESTATICA Y EL COMPORTAMIENTO DINAMICO DE UN SISTEMA Y PREESCRIBE UN CONJUNTO DE NOTACIONES Y DIAGRAMAS ESTANDAR PARA MODELAR SISTEMAS ORIENTADOS A OBJETOS, ADEMAS DE DESCRIBIR LA SEMANTICA ESENCIAL DE LO QUE LOS DIAGRAMAS Y SIMBOLOS SIGNIFICAN.
UN SISTEMA SE MODELA COMO UNA COLECCIÓN DE OBJETOS DISCRETOS QUE INTERACTUAN PARA REALIZAR UN TRABAJO QUE BENEFICIA A UN USUARIO EXTERNO.



  • UML TAMBIEN ES CONSIDERADO COMO UN LENGUAJE DE MODELAMIENTO VISUAL QUE PERMITE UNA ABSTRACCION DEL SISTEMA Y SUS COMPONENTES.
    UTILIDAD
    DISEÑAR, CONFIGURAR, MANTENER Y CONTROLAR LA INFORMACION DE SISTEMAS A DESARROLLAR
  • MODELAR COSAS CONCEPTUALES COMO PROCESOS DE NEGOCIO Y FUNCIONES DE SISTEMA
  • MODELAR COSAS CONCRETAS COMO ESCRIBIR CLASES EN UN LENGUAJE DETERMINADO, ESQUEMAS DE BASE DE DATOS Y COMPONENTES DE SOFTWARE REUSABLES
  • MODELAR DISTINTOS TIPOS DE SISTEMAS COMO SISTEMAS DE SOFTWARE, SISTEMAS DE HARDWARE Y ORGANIZACIONES DEL MUNDO REAL


CARACTERISTICAS

  • UML NO ES UN LENGUAJE DE PROGRAMACION
  • ES UN LENGUAJE DE PROPOSITO GENERAL PARA EL MODELADO ORIENTADO A OBJETOS


PARA MODELAR UN SISTEMA DE SOFTWARE DE GRANDES DIMENSIONES, LA CLAVE PARA SU DESARROLLO ES DIVIDIRLO EN AREAS MANEJABLES O PEQUEÑAS A LAS CUALES SE LES LLAMA DOMINIOS, CATEGORIAS O SUBSISTEMAS.
LA DIVISION DEL SISTEMA VIENE DEL NIVEL MAS ALTO PARA SUBDIVIDIRLO EN DOMINIOS; HASTA EL NIVEL MAS BAJO USADOS PARA AGRUPAR CASOS DE USOS INDIVIDUALES, CLASES O COMPONENTES.


OBJETIVOS

  • PUEDE SER UTILIZADO POR TODOS LOS MODELADORES
  • CONSTRUIR UNA SÓLIDA ARQUITECTURA PARA RESOLVER REQUISITOS
  • SER FACIL DE ENTENDER Y TENER LA CAPACIDAD DE MODELAR TODO TIPO DE SISTEMAS
  • SER UN LENGUAJE UNIVERSAL
  • IMPONER UN ESTANDAR MUNDIAL


ARQUITECTURA

  1. META-METAMODELO
  2. METAMODELO
  3. MODELO
  4. OBJETOS DE USUARIO
    AREAS CONCEPTUALES DE UML
  5. ESTRUCTURA ESTATICA
  6. COMPORTAMIENTO DINAMICO
  7. CONSTRUCCIONES DE IMPLEMENTACION
  8. ORGANIZACIÓN DEL MODELO
  9. MECANISMOS DE EXTENSION

Un Diagrama de Casos de Uso muestra la relación entre los actores y los casos de uso del sistema. Representa la funcionalidad que ofrece el sistema en lo que se refiere a su interacción externa. En el diagrama de casos de uso se representa también el sistema como una caja rectangular con el nombre en su interior. Los casos de uso están en el interior de la caja del sistema, y los actores fuera, y cada actor está unido a los casos de uso en los que participa mediante una línea. En la Figura 15 se muestra un ejemplo de Diagrama de Casos de Uso para un cajero automático.



Los elementos que pueden aparecer en un Diagrama de Casos de Uso son: actores, casos de uso y relaciones entre casos de uso.

Un diagrama de Secuencia muestra una interacción ordenada según la secuencia temporal de eventos. En particular, muestra los objetos participantes en la interacción y los mensajes que intercambian ordenados según su secuencia en el tiempo. El eje vertical representa el tiempo, y en el eje horizontal se colocan los objetos y actores participantes en la interacción, sin un orden prefijado. Cada objeto o actor tiene una línea vertical, y los mensajes se representan mediante flechas entre los distintos objetos. El tiempo fluye de arriba abajo. Se pueden colocar etiquetas (como restricciones de tiempo, descripciones de acciones, etc.) bien en el margen izquierdo o bien junto a las transiciones o activaciones a las que se refieren.


Diagrama de Colaboración Un Diagrama de Colaboración muestra una interacción organizada basándose en los objetos que toman parte en la interacción y los enlaces entre los mismos (en cuanto a la interacción se refiere). A diferencia de los Diagramas de Secuencia, los Diagramas de Colaboración muestran las relaciones entre los roles de los objetos. La secuencia de los mensajes y los flujos de ejecución concurrentes deben determinarse explícitamente mediante números de secuencia.


Un Diagrama de Estados muestra la secuencia de estados por los que pasa bien un caso de uso, bien un objeto a lo largo de su vida, o bien todo el sistema. En él se indican qué eventos hacen que se pase de un estado a otro y cuáles son las respuestas y acciones que genera. En cuanto a la representación, un diagrama de estados es un grafo cuyos nodos son estados y cuyos arcos dirigidos son transiciones etiquetadas con los nombres de los eventos. Un estado se representa como una caja redondeada con el nombre del estado en su interior. Una transición se representa como una flecha desde el estado origen al estado destino. La caja de un estado puede tener 1 o 2 compartimentos. En el primer compartimento aparece el nombre del estado. El segundo compartimento es opcional, y en él pueden aparecer acciones de entrada, de salida y acciones internas.


Una clase se representa mediante una caja subdividida en tres partes: En la superior se muestra el nombre de la clase, en la media los atributos y en la inferior las operaciones. Una clase puede representarse de forma esquemática, con los atributos y operaciones suprimidos, siendo entonces tan solo un rectángulo con el nombre de la clase. En la Figura 5 se ve cómo una misma clase puede representarse a distinto nivel de detalle según interese, y según la fase en la que se esté.

Un objeto se representa de la misma forma que una clase. En el compartimento superior aparecen el nombre del objeto junto con el nombre de la clase subrayados, según la siguiente sintaxis: nombre_del_objeto: nombre_de_la_clase Puede representarse un objeto sin un nombre específico, entonces sólo aparece el nombre de la clase.

By charleXs

Saturday, October 14, 2006

Introduccion a UML

DEFINICION DE UML:

El lenguaje unificado de modelado, es una herramienta que permite a los creadores de sistemas generar diseños que capturen sus ideas en una forma convencional y facil de comprender para comunicarlas a otras personas.


DIAGRAMAS DE UML


• El UML está compuesto por diversos elementos gráficos que se combinan para conformar diagramas, éste cuenta con reglas para combinar tales elementos.
• La finalidad de los diagramas es presentar diversas perspectivas de un sistema a los cuales se les conoce como modelo.
Se Dispone de dos tipos diferentes de diagramas los que dan una vista estática del sistema y los que dan una visión dinámica.
Estructura estática:
Cualquier modelo preciso debe primero definir su universo, esto es, los conceptos clave de la aplicación, sus propiedades internas, y las relaciones entre cada una de ellas. Este conjunto de construcciones es la estructura estática..
Los conceptos de la aplicación son modelados como clases, cada una de las cuales describe un conjunto de objetos que almacenan información y se comunican para implementar un comportamiento. La información que almacena es modelada como atributos; La estructura estática se expresa con diagramas de clases y puede usarse para generar la mayoría de las declaraciones de estructuras de datos en un programa.

Los diagramas estáticos son:


Diagrama de clases
Diagrama de objetos
Diagrama de componentes
Diagrama de despliegue
Diagrama de casos de uso

Estructura estática:

Cualquier modelo preciso debe primero definir su universo, esto es, los conceptos clave de la aplicación, sus propiedades internas, y las relaciones entre cada una de ellas. Este conjunto de construcciones es la estructura estática. Los conceptos de la aplicación son modelados como clases, cada una de las cuales describe un conjunto de objetos que almacenan información y se comunican para implementar un comportamiento. La información que almacena es modelada como atributos; La estructura estática se expresa con diagramas de clases y puede usarse para generar la mayoría de las declaraciones de estructuras de datos en un programa.

Los diagramas dinámicos son:
• Diagrama de secuencia
• Diagrama de colaboración
• Diagrama de estados
• Diagrama de actividades

Como podemos ver el número de diagramas es muy alto, en la mayoría de los casos excesivos, y UML permite definir solo los necesarios, ya que no todos son necesarios en todos los proyectos. Se verá una explicación de todos, ampliándose para los más necesarios.

DIAGRAMA DE CLASES
: Una clase es una categoría o grupo de cosas que tienen atributos y acciones similares.

Ejemplo:

lavadoras, tienen atributos como: marca, modelo, no. De serie y la capacidad; acciones como agregar ropa, agregar detergente sacar ropa.
Un rectángulo es el símbolo que representa a la clase y se divide en tres áreas:
• área superior: que contiene el nombre
• área central: que contiene los atributos
• área inferior: que contiene las acciones

El ejemplo se representa de esta manera:

Los diagramas de clases colaboran en lo referente al análisis; permiten al
Analista hablarle a los clientes en su propia terminología

Atributos: es una propiedad o característica de una clase y describe un rango de valores que la propiedad podrá contener en los objetos (esto es, instancias) de la clase.
OPERACIONES: Es algo que la clase puede realizar

Restricciones: Una manera más formal es agregar una restricción, un texto libre bordeado por llaves; este texto especifica una o varias reglas que sigue la clase.
RESPONSABILIDADES: Es una descripción de lo que hará la clase, es decir lo que sus atributos y operaciones intentan realizar en conjunto.
Diagrama de objetos: Un objeto es una instancia de clase; esta es la forma en que UML, representa a un objeto:



USO DE LA ORIENTACION A OBJETOS

CONCEPCION DE UNA CLASE: El nombre de la clase es, por convención, una palabra con la primera letra en mayúscula y normalmente se coloca en la parte superior del rectángulo. Si el nombre de su clase consta de 2 palabras, únalas e inicie cada una con mayúscula.
NOMBRE DE RUTA: Si la clase “Lavadoras” es parte de un paquete llamado “Electrodomesticos”, podrá darle el nombre “Electrodomesticos::Lavadoras”, a este tipo de nombre de clase se le conoce como nombre de ruta