domingo, 20 de mayo de 2012

UNIDAD III: Programación Orientada a Objeto


Técnicas y Desarrollo de Prototipos

Un prototipo representa un modelo del comportamiento de un sistema propuesto. Su aplicación resuelve la incertidumbre sobre si el diseño del producto se ajusta realmente a las necesidades del usuario. Su uso, en la etapa de desarrollo del ciclo de vida de un producto, ayuda a los diseñadores a tomar provecho de la información suministrada por los usuarios, permiitendoles hacer un bueno y sano sobre:
·         La necesaria funcionalidad del sistema
·         Secuencia operacional
·         Necesidades de dar soporte al usuario
·         Utilidad de las representaciones gráficas requeridas
·         Operatividad de la interfaz

En el ambiente de los diseños de sistemas de información, varios tipos de prototipos han sido desarrollados, para tomar ventaja de los diferentes tipos de información:
·         Requerimiento de animación: Permite que un posible requerimiento sea demostrado en un software, permitiendo a su vez ser evaluado por un usuario.
·         Prototipo Rápido: Ayda a recopilar información sobre requirimiento y adaptabilidad de posibles diseños. Se reconoce que los requerimientos sean probablemente imprecisos cuando son especificados en su primera vez. El enfasis se centra en evaluar el prototipo antes de tomar una decisión de implementar otra idea.
·         Prototipo Incremental: Permite que grandes sistemas sean instalados por fases para evitar retrasos entre las etapas de especificación y entrega del producto. El sistema es construido incrementalmente una fase a la vez. En este tipo de prototipo, el cliente y el proveedor del sistema acuerdan la realización del desarrollo del producto por etapas. Esto permite que los requerimientos sean chequeados e inspeccionadops en el área de trabajo y los cambios realizados tan pronto sean posibles, para adecuarlos a las necesidades. Cualquier cambio adicional menos importante puede ser realizado mas adelante.
·         Prototipo Evolucionario: Es la forma mas extensiva de prototipo. Representa un compromiso entre la producción del producto y el diseño del prototipo. El prototipo inicial es construido, evaluado y desarrollado continuamente hasta el producto final.
En ambientes de diseño de interfaz usuario-computador, se pueden encontrar los siguientes tipos:
·         Prototipo completo: Contiene una completa funcionalidad, pero con una baja capacidad operativa.
·         Prototipo horizontal: Contiene toda la funcionalidad de los niveles altos del sistema, pero obvia detalles de los niveles bajos.
·         Prototipo Vertical: Contine toda la funcionalidad de los niveles altos y bajos del sistema, pero restrnge parte de el .
·         Prototipo de alta fidelidad: Refiere a un prototipo que involucra un medio como video, sonido, etc., en la que se utiliza la interfaz final tan cercano a a la realidad como sea posible.
·         Prototipo de baja fidelidad: Usa materiales de baja calidad, muy distantes a la versión final y que tiende por lo general a ser muy económicos y rápidos de desarrollar.
·         Prototipos conducido: Involucra al usuario observando a un miembro del equipo desarrollador construyendo el sistema. Es una manera de probvar si la interfaz del sistema reune las necesidades del usuario sin que él tenga acción con el sistema.
·         Prototipos Mago de Oz (Wizard of Oz): Similar al anterior, pero en este caso el usuario no esta conciente de que está siendo observado por un miembro del equipo desarrollar. El usuario interactua con el sistema, pero en lugar de recibir asesoria del sistema, un miembro del equipo ubicado en otro equipo responde las inquietudes del usuario.
Limitaciones
·         Usuarios frecuentemente no tienen la habilidad para imaginar que decisión tomar, con respecto al diseño del sistema.
·         Usuarios frecuentemente no tienen la capacidad para hacer comentarios técnicos sobre el diseño del producto, proceso o sistema. 



La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.

Elementos de POO:
  • Objetos: Entender que es un objeto es la clave para entender cualquier lenguaje orientado a objetos. Existen muchas definiciones que se le ha dado al Objeto. Primero empecemos entendiendo que es un objeto del mundo real. Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor. Digamos que para leer este artículo lo hacemos a través del monitor y una computadora, ambos son objetos, al igual que nuestro teléfono celular, un árbol o un automóvil.
Analicemos un poco más a un objeto del mundo real, como la computadora. No necesitamos ser expertos en hardware para saber que una computadora está compuesta internamente por varios componentes: la tarjeta madre, el chip del procesador, un disco duro, una tarjeta de video, y otras partes más. El trabajo en conjunto de todos estos componentes hace operar a una computadora.
Internamente, cada uno de estos componentes puede ser sumamente complicado y puede ser fabricado por diversas compañías con diversos métodos de diseño. Pero nosotros no necesitamos saber cómo trabajan cada uno de estos componentes, como saber que hace cada uno de los chips de la tarjeta madre, o cómo funciona internamente el procesador. Cada componente es una unidad autónoma, y todo lo que necesitamos saber de adentro es cómo interactúan entre sí los componentes, saber por ejemplo si el procesador y las memorias son compatibles con la tarjeta madre, o conocer donde se coloca la tarjeta de video. Cuando conocemos como interaccionan los componentes entre sí, podremos armar fácilmente una computadora.
¿Qué tiene que ver esto con la programación? La programación orientada a objetos trabaja de esta manera. Todo el programa está construido en base a diferentes componentes (Objetos), cada uno tiene un rol específico en el programa y todos los componentes pueden comunicarse entre ellos de formas predefinidas.
Todo objeto del mundo real tiene 2 componentes: características y comportamiento.
Por ejemplo, los automóviles tienen características (marca, modelo, color, velocidad máxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.).
  • Atributos: Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables. Las variables de instancia también denominados miembros dato, son declaradas en la clase pero sus valores son fijados y cambiados en el objeto. Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los automóviles.
  • Mensaje: Un objeto es inútil si está aislado. El medio empleado para que un objeto interactúe con otro son los mensajes. Hablando en términos un poco más técnicos, los mensajes son invocaciones a los métodos de los objetos. Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el mensaje ponte en marcha. Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que deseamos invocar. miCoche.ponerseEnMarcha() En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar paréntesis igual que cualquier llamada a una función, dentro irían los parámetros.
  • Clase: Los objetos están organizados en familias claramente delimitadas. Una familia se reconoce porque reúne un grupo de objetos que heredan elementos entre sí. El modelo de programación visual, al igual que la naturaleza, organiza los objetos en clases (familias), así una clase es el conjunto de objetos que pertenecen a una misma familia. Por ejemplo Madonna, Michael Jackson, Prince y Dire Straits son objetos de una clase cantantes de rock, sin embargo personas específicas con nombres específicos son miembros de esa clase si poseen ciertas características comunes. El modelo de programación visual permite así organizar las familias de objetos en un orden jerárquico. En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro teléfono celular es sólo uno de los miles que hay en el mundo. Si hablamos en términos de la programación orientada a objetos, podemos decir que nuestro objeto celular es una instancia de una clase conocida como "celular". Los celulares tienen características (marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisión de datos, etc.).Definición teórica: La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares características. Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe diferencia entre un objeto y una instancia. Sólo que el objeto es un término más general, pero los objetos y las instancias son ambas representación de una clase. Definición Teórica: Una instancia es un objeto de una clase en particular. 
Características de la POO: 
  • Abstracción: La abstracción consiste en captar las características esenciales de un objeto, así como su comportamiento. Por ejemplo, volvamos al ejemplo de los automóviles, ¿Qué características podemos abstraer de los automóviles? O lo que es lo mismo ¿Qué características semejantes tienen todos los automóviles? Todos tendrán una marca, un modelo, número de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automóviles podrán acelerar, frenar, retroceder, etc. En los lenguajes de programación orientada a objetos, el concepto de Clase es la representación y el mecanismo por el cual se gestionan las abstracciones.
  • Encapsulamiento: El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstracción y el ocultamiento que veremos a continuación.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesará será conocer qué hace la Clase pero no será necesario saber cómo lo hace.
  • Polimorfismo: El polimorfismo se presenta cuando se ha creado objetos que pertenecen a clases que han sido derivadas de otras clases. En otras palabras, el polimorfismo aparece en las clases derivadas.
También se dice que el polimorfismo es la propiedad que indica literalmente, la posibilidad de que una entidad tome muchas formas, en términos prácticos el polimorfismo permite referirse a objetos de clases distintas mediante el mismo elemento de programa y realizar la misma operación de diferentes formas, según sea el objeto que se referencia en ese momento. Por ejemplo cuando se describe la clase mamíferos se puede observar que la operación comer es una operación fundamental en la vida de los mamíferos, de modo que cada tipo de mamíferos debe poder realizar la operación o función comer. Por otra parte, una vaca o una cabra que pasta en el campo, un niño que se come un bombón o caramelo y un león que devora a otro animal, son diferentes formas que utilizan los distintos mamíferos para realizar la misma función (comer).
  • Herencia: La herencia es uno de los conceptos más cruciales en la POO. La herencia básicamente consiste en que una clase puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase. De esta manera se crea una jerarquía de herencia. las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple. 

miércoles, 16 de mayo de 2012

Unidad II: Programación Estructurada


La programación estructurada es un paradigma que consiste en la organización de un código en bloques conformados por estructuras del tipo: Secuencial (asignación, lectura, escritura) Decisión o selección (simple, doble, múltiple) Repetición (Repita mientras, Hacer-Mientras, Repita para)

ANÁLISIS ESTRUCTURADO DE SISTEMAS
Cuando los analistas comienzan a trabajar sobre un proyecto de sistemas de información, a menudo tienen que profundizar en un área de la organización con la que tienen poca familiaridad. A pesar de esto, futuros usuarios - de esa área. Cualquier nuevo sistema o conjunto de recomendaciones para cambios en el sistema existente, ya sea éste manual o automatizado, debe conducir hacia una mejora. Para alcanzar este resultado, se espera que los analistas de sistemas hagan lo siguiente:


  • aprendan los detalles y procedimientos del sistema en uso.
  • Obtengan una idea de las demandas futuras de la organización como resultado del crecimiento, del aumento de la competencia en el mercado, de los cambios en las necesidades de los consumidores, de la evolución de las estructuras financieras, de la introducción de la nueva tecnología y cambios en las políticas del gobierno entre otros.
  • Documentar detalles del sistema actual para su revisión y discusión por otros.
  • Evaluar la eficiencia y efectividad del sistema actual y sus procedimientos, tomando en cuenta el impacto sobre las demandas anticipadas para el futuro.
  • Fomentar la participación de gerentes y empleados en todo el proceso, tanto para aprovechar su experiencia y conocimiento del sistema actual, como para conocer sus ideas, sentimientos y opiniones relacionadas con los requerimientos de un nuevo sistema o de los cambios para la cual.


¿Qué es el análisis estructurado?
El análisis estructurado es un método para el análisis de sistemas manuales o automatizados, que conduce al desarrollo de especificaciones para sistemas nuevos o para efectuar modificaciones a los ya existentes. Cuando los analistas de sistemas abordan una situación poco familiar, siempre existe una pregunta sobre donde comenzar el análisis. Una situación dinámica siempre puede ser vista como abrumadora debido a que muchas de las actividades se llevan a cabo constantemente, como señalo MARY HELEN es su seminario. El análisis estructurado permite el analista conocer un sistema o proceso (actividad) en una forma lógica y manejable el mismo tiempo que proporciona la base para asegurar que no se omite ningún detalle pertinente.

Significado de estructurado
En el análisis estructurado la palabra estructura significa qué: 1) el método intenta estructurar el proceso de determinación de los requerimientos comenzando con la documentación del sistema existente; 2) el proceso está organizado de tal forma que intenta incluir todos los detalles relevante que describe al sistema en uso; 3) es fácil verificar cuando se han omitido detalles relevantes; 4) la identificación de los requerimientos será similar entre varios analistas e incluirá las mejora soluciones y estrategias para las oportunidades para de desarrollo de sistemas; y 5) los documentos de trabajo generados para documentar los sistemas existente o propuesto son dispositivos de comunicación eficientes.

Componentes del análisis estructurado
El análisis estructurado hace uso de los siguientes componentes.
  1. símbolos gráficos
  2. diccionario de datos
  3. descripciones de procesos y procedimientos
  4. reglas

Herramientas
La estrategia de flujo de datos muestra el empleo de estos en forma gráfica. Las herramientas utilizadas al seguir esta estrategia muestran todas las características esenciales del sistema y la forma en que se ajustan entre sí. Puede ser difícil comprender en su totalidad un proceso de la empresa si se emplea para ello una descripción verbal; Las herramientas para el flujo de datos ayuda a mostrar los componentes esenciales de un sistema junto con sus interacciones. 

El análisis de flujo de datos utiliza la sguie. Herramientas.
Diagrama de flujo de datos
Una herramienta gráfica se emplea para describir y analizar el movimiento de datos a través de un sistema, ya sea que este fuera manual o automatizado, incluyendo procesos, lugares para almacenar datos y retrasos en el sistema. Estos diagramas reciben el nombre de diagramas lógicos de flujo de datos.
Diccionario de datos
El diccionario contiene las características lógicas de los sitios donde se almacenan los datos del sistema, incluyendo nombre, descripción, alias, contenidos y organización. También identifica los procesos donde se emplea los datos y los sitios de donde se necesitan el acceso inmediato a la información. Sirve como puerto de partida para identificar los requerimientos de las bases de datos durante el diseño del sistema.
Descripción de los procesos
Este diagrama es una descripción de la relación entre entidades (personas, lugares, eventos y objetos) de un sistema y el conjunto de información relacionada con la entidad. No considera el almacenamiento físico de los datos.

NOTA: PARA AQUELLOS ALUMNOS QUE NO CURSARON PROGRAMACIÓN CONMIGO VISITEN ESTE BLOG DONDE ESTA PUBLICADO TODO LO REFERENTE A ALGORITMO Y DIAGRAMA DE FLUJO. http://programacion2011-2.blogspot.com/2011_10_01_archive.html

Algoritmos Estructurados:

Estructuras de secuencia: La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso.

Estructura de decisión: La instrucción If...Then nos permite ejecutar distintos bloques de código dependiendo de cuál sea la evaluación de un determinado enunciado. Si la condición es verdadera, se ejecuta el código que se encuentra a continuación de la instrucción If...Then. Si la condición es falsa, se ejecuta el código siguiente a la instrucción Else (si existiera).

Estructura de Repetición o Bucle: Existen varias estructuras de repetición, entre ellas se tienen:
Sentencia WHILE: Indica al ordenador que se ejecuten una o más sentencias mientras se cumpla una determinada condición. La condición viene determinada por una variable o expresión booleana.
Sentencia FOR: Repite la ejecución de una o varias sentencias un número fijo de veces. Previamente establecido.Necesita una variable de control del bucle que es necesariamente de tipo ordinal, ya que el bucle se ejecuta mientras la variable de control toma una serie consecutiva de valores de tipo ordinal, comprendidos entre dos valores extremos (inferior y superior).
Sentencia Do…While y Repeat: Los bucles do..while son muy simjilares a los bucles while, excepto que las condiciones se comprueban al final de cada iteración en lugar del principio.

Herramientas Estructuradas

CASE (Computer Aided Software Engineering. Ingeniería de Software Asistida por Ordenador):
De acuerdo con Kendall y Kendall, la ingeniería de sistemas asistida por ordenador es la aplicación de tecnología informática a las actividades, las técnicas y las metodologías propias de desarrollo, su objetivo es acelerar el proceso para el que han sido diseñadas, en el caso de CASE para automatizar o apoyar una o más fases del ciclo de vida del desarrollo de sistemas.
La tecnología CASE supone la informatización de la informática es decir la automatización del desarrollo del software, contribuyendo así a elevar la productividad y la calidad en el desarrollo de los sistemas de información.

Objetivos:





 Mejorar la productividad en el desarrollo y mantenimiento del software.
Aumentar la calidad del software.
Reducir el tiempo y coste de desarrollo y mantenimiento de los sistemas informáticos.
Mejorar la planificación de un proyecto
 Aumentar la biblioteca de conocimiento informático de una empresa ayudando a la búsqueda de soluciones para los requisitos.
 Automatizar el desarrollo del software, la documentación, la generación de código, las pruebas de errores y la gestión del proyecto.
 Ayuda a la reutilización del software, portabilidad y estandarización de la documentación Gestión global en todas las fases de desarrollo de software con una misma herramienta.
 Facilitar el uso de las distintas metodologías propias de la ingeniería del software.

Modelo de Datos:
Conjunto de herramientas conceptuales para especificar datos, la relación entre ellos, su semántica asociada y la restricción de integridad. Un modelo de datos es un lenguaje orientado a describir una Base de Datos. Típicamente un Modelo de Datos permite describir:

Las estructuras de data de la base de datos: El tipo de los datos que hay en la base de datos y la forma en que se relacionan.
Las restricciones de integridad: Un conjunto de condiciones que deben cumplir los datos para reflejar correctamente la realidad deseada.
Operaciones de manipulación de los datos: típicamente, operaciones de agregado, borrado, modificación y recuperación de los datos de la base de datos.

Los modelos de datos aportan la base conceptual para diseñar aplicaciones que hacen un uso intensivo de datos, así como la base formal para las herramientas y técnicas empleadas en el desarrollo y uso de sistemas de información.
Además de capturar las necesidades dadas en el momento de la etapa de diseño, la representación debe ser capaz de dar cabida a eventuales futuros requerimientos.

Workflow:
El Flujo de trabajo (workflow) es el estudio de los aspectos operacionales de una actividad de trabajo: cómo se estructuran las tareas, cómo se realizan, cuál es su orden correlativo, cómo se sincronizan, cómo fluye la información que soporta las tareas y cómo se le hace seguimiento al cumplimiento de las tareas.

Objetivo;

Reflejar, mecanizar y automatizar los métodos y organización en el sistema de información
Establecer los mecanismos de control y seguimiento de los procedimientos organizativos
Independizar el método y flujo de trabajo de las personas que lo ejecutan
Facilitar la movilidad del personal
Soportar procesos de reingeniería de negocio
Agilizar el proceso de intercambio de información y agilizar la toma de decisiones de una organización, empresa o institución








jueves, 3 de mayo de 2012

Buen Día Queridos Alumnos les informo que la primera evaluación de Laboratorio es la siguiente:

Crear una Propuesta de un Sistema del proceso de Inscripción de la UNEFA de acuerdo al Análisis Estructurado de Sistemas utilizando las respectivas Herramientas.

Valor 5% Máximo 2 integrantes
Entrega en Hora de Laboratorio: Turno de la Tarde: 08-05-12            
 Turno de la Mañana: 10-05-12