Documente Academic
Documente Profesional
Documente Cultură
https://www.youtube.com/watch?v=A9U_AVXwWIM
El Diseño Orientado a los Objetos (DOO) crea una representación del problema del
mundo real y la hace corresponder con el ámbito de la solución, que es el software. A
diferencia con otros métodos de diseño, el DOO produce un diseño que interconecta
objetos de datos y operaciones de procesamiento para esos
objetos, de forma que se modula riza la información y el procesamiento, en lugar de aislar
el procesamiento.
Todos los métodos de diseño intentan desarrollar software basándose en:
• Abstracción
• Oculta miento de información
• Modularidad
https://youtu.be/s40SFUbW0OE
Objetos, operaciones y mensajes
El funcionamiento del software se consigue al actuar uno o más procesos sobre una
estructura de datos de acuerdo con un procedimiento de invocación. Para conseguir un
DOO, tenemos que establecer un mecanismo para:
• Representar la estructura de datos
• Especificar el proceso
• Realizar el procedimiento de invocación
Objeto: Componente del mundo real que se hace corresponder con el software. En un
Sistema de Información basado en Computador, un objeto es un producto o consumidor
de información, o un elemento de información. Cuando se hace corresponder un objeto
con su realización software, implementamos una estructura de datos y usa serie de
procesos que pueden transformar la estructura de datos. Diseño orientado a los objetos
Mensajes: Peticiones que se realizan a los objetos para que realicen alguna de sus
operaciones. Las operaciones contienen construcciones procedimentales y de control,
que se invocan mediante un mensaje.
Al definir un objeto con parte privada y proporcionar mensajes para invocar al
procedimiento adecuado conseguimos el oculta miento de información. De esta forma
dejamos ocultos al resto de los elementos de programa los detalles de implementación
del objeto.
https://youtu.be/IPrvjPyRiCA
Los objetos con sus operaciones proporcionan una modularidad inherente, es decir los
elementos del software (datos y procesos) están agrupados con un mecanismo de
interfaz bien definido, que son los mensajes.
Aspectos de diseño
Meyer sugiere cinco criterios para evaluar la calidad de un método de diseño a partir de
la modularidad. Descomponibilidad: Facilidad con la que un método de diseño ayuda al
diseñador a descomponer un problema en sub problemas más sencillos.
Componibilidad: Grado en el que un método de diseño permite la
reutilizabilidad de módulos. Compresibilidad: Facilidad para comprender un componente
del programa sin tener que hacer referencia a otros módulos. Continuidad: Capacidad de
realizar cambios en un programa y que esos cambios afecten a un número mínimo de
módulos.
Protección: Característica arquitectónica que reduce la propagación de
errores. A partir de estos criterios, Meyer sugiere la derivación de cinco principios de
diseño para arquitecturas modulares: Diseño orientado a los objetos
• Unidades modulares
• Pocas interfaces
• Interfaces pequeñas (acoplamiento débil)
• Interfaces explícitas
• Ocultamiento de información
Siempre que los módulos tengan que comunicarse tiene que hacerlo de forma clara,
mediante interfaces explícitas, y no mediante una zona global de datos, ya que la
comunicación entre módulos no sería fácilmente comprensible para un observador
externo.
El resultado del diseño orientado a objetos es una jerarquía de clases. Los elementos
iniciales de un DOO son los propios objetos, y posteriormente, a medida que se van
identificando aspectos comunes, los objetos se van agrupando en clases, que a su vez
serán subclases de clases más abstractas. Los métodos estructurados y sus
correspondientes notaciones definen un sistema como un conjunto secuencial de
módulos ínter dependientes que comparten datos. En cambio, los métodos orientados a
objetos definen un
conjunto de módulos independientes relacionados y con visibilidad limitada entre ellos.
Pasos del DOO
Las metodologías para apoyar el AOO y el DOO se encuentran en sus primeras fases de
desarrollo, pero se han definido una serie de directrices que facilitan la identificación y
definición de clases y métodos.
• Modelar con clases las entidades que ocurren de forma natural en el problema
• Diseñar métodos con una sola finalidad
• Diseñar un método nuevo antes de ampliar uno existente
• Evitar métodos extensos
• Guardar como instancia los datos necesitados por más de un método o por una
subclase
• El diseñador debe trabajar para obtener una biblioteca de clases, y no para él mismo, ni
para desarrollar el sistema actual. Además, para evitar la creación de clases innecesarias
o declaración de clases que no lo sean, una clase debe ofrecer una serie de servicios a
objetos de un tipo determinado.
Una clase se debería crear cuando:
• La nueva clase represente una abstracción significativa del problema
• Es probable que los servicios que proporciona sean utilizados por otras
clases.
• Su comportamiento sea complejo.
• Si se representara como un método de otra clase, pocos usuarios de ésta lo
invocarían.
https://youtu.be/k_V8pQSS7-U
En los años 80’s Bjarne Stroustrup de AT&T Labs., amplió el lenguaje C para crear C++
que soporta la programación Orientada a Objetos.
En esta misma década se desarrollaron otros lenguajes Orientados a Objetos como
Objective C, Common Lisp Object System (CIOS), object Pascal, Ada y otros.
Posteriores mejoras en herramientas y lanzamientos comerciales de C++ por distintos
fabricantes, justificaron la mayor atención hacia la programación Orientada a Objetos en
la comunidad de desarrollo de software. El desarrollo técnico del hardware y su
disminución del costo fue el detonante final. Con más computadoras al alcance de más
personas más programadores, más problemas y más algoritmos surgieron.
https://youtu.be/4EbOk9NMkc8
Características de la POO
Lenguaje UML
https://youtu.be/XBrUv-rcsBM
https://youtu.be/8UgQNQML_b8
Momentos de tensión
La ingeniería de software entre los años 1985 y 1987 se ve afectada por una serie de
accidentes que resultaron en la muerte de un estimado de tres personas. «Therac 25»
una máquina de radioterapia de la época, por un conjunto de fallas emitía una sobredosis
masiva de radiación en el paciente, la cual tenía resultados letales. Era el ejemplo claro
de la deficiencia existente en el desarrollo de software, del control de calidad del mismo
y del riesgo que implicaba el control por software en aquel entonces.
Los lenguajes de Programación Trascendentes
https://youtu.be/rLYiJJwx6Ws
Campo de Aplicación
*Aumento en el volumen
Reducción de costos:
Son diseños de sistemas que ayudan a disminuir los costos, ya que toman ventaja de las
capacidades de cálculo automático y de recuperación de datos que están incluidos en
procedimientos de programas en computadora.
Control
Son datos ya hechos para que puedan ser guardados en una forma adecuada para su lectura
por medio de una máquina, y para alcanzar en un medio ambiente donde no existen
computadoras.
Esto se puede lograrse por medio de uso de procedimientos de control. Cada paso se lleva a
cabo de la misma manera. Con consistencia y con exactitud: por otra parte se efectúan
todos los pasos para cada lote de transacciones. Y se omiten etapas, especificas para su
desarrollo y no tenga problemas al momento de manipular
Calidad
Es donde el usuario permite interactuar con el sistema ya que el usuario esta inconforme sabré
que mi sistema es malo y no tiene los requerimientos básicos para un buen software
Competitividad
Son sistemas de información computacionales son un arma estratégica, capaz de cambiar la
forma en que la compañía compite en el mercado, en consecuencia éstos sistemas
mejoran la organización y la ayudan a ganar "ventaja competitiva",
Cada software debe cumplir estas expectativas entre las cuales tenemos
1- Mejores precios
2- Servicios exclusivos.
3- Productos diferentes.
1. Métodos o técnicas: Indican cómo construir técnicamente el software, y abarca una serie
de tareas que incluyen la planificación y estimación de proyectos, el análisis de
requisitos, el diseño de estructuras de datos, programas y procedimientos, la
codificación, las pruebas y el mantenimiento.
2. Herramientas: Son instrumentos o sistemas automatizados para realizar algo de la mejor
manera posible. Esta manera óptima puede significar que la herramienta produce
resultados más exactos, más eficientes, más productivos, o que refuerza la calidad del
producto resultante. Proporcionan un soporte automático o semiautomático para todas
las fases del desarrollo y sistemas que integran las herramientas de cada fase de manera
que sirven para todo el proceso
3. Procedimientos: Son la combinación de las técnicas y las herramientas que en forma
conjunta dan un resultado particular. Los procedimientos indicarán qué herramientas
deberán utilizarse cuando se aplican determinadas técnicas.
4. Paradigmas: Representan un enfoque particular o filosofía para la construcción del
software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas.
También hay situaciones donde un paradigma resulta más apropiado que otro. Los más
comunes son el desarrollo en cascada, el desarrollo en espiral, el desarrollo por
prototipos, el desarrollo incremental, el desarrollo en V y el desarrollo orientado a
objetos.
Un ciclo de vida usualmente consta de las siguientes etapas: especificación y análisis de requisitos,
diseño del sistema, implementación del software, aplicación y pruebas, entrega y mantenimiento.
Cada etapa consta de diversas tareas; la documentación es una tarea que se realiza en todas las
etapas.
El modelo de cascada muestra un proceso donde los desarrolladores han de seguir las siguientes
fases de forma sucesiva:
Especificación de requisitos
Diseño del software
Codificación
Pruebas (o validación)
Despliegue (o instalación)
Mantenimiento
Siguiendo el modelo de cascada de forma estricta, sólo cuando se finaliza una fase, comienza la
otra. En ocasiones se realiza una revisión antes de iniciar la siguiente fase, lo que permite la
posibilidad de cambios (lo que puede incluir un proceso de control formal de cambio). Las revisiones
también se utilizan para asegurar que la fase anterior ha sido totalmente finalizada; los criterios para
completar una fase se conocen frecuentemente con el término inglés "gate" (puerta). Este modelo
desaconseja revisitar y revisar fases que ya se han completado. Esta falta de flexibilidad en un
modelo de cascada puro ha sido fuente de crítica de los defensores de modelos más flexibles.
Ventajas
La planificación es sencilla.
La calidad del producto resultante es alta.
Permite trabajar con personal poco calificado.
Ayuda a prevenir que se sobrepasen las fechas de entrega y los costes esperados.
Es mejor que no seguir ningún ciclo de vida.
Inconvenientes
Es difícil obtener todos los requisitos al comienzo. Lo normal es que el cliente no tenga
perfectamente definidas las especificaciones del sistema, o puede ser que surjan necesidades
imprevistas.
Si se han cometido errores en una fase es difícil volver atrás. Al cambiar alguna de las etapas
se debe revisar todas las etapas subsiguientes.
Es comparativamente más lento que los demás y el coste es mayor también.
Se tarda mucho en disponer del software.
No se tiene el producto hasta el final, esto quiere decir que:
Si se comete un error en la fase de análisis no lo descubrimos hasta la entrega, con
el consiguiente gasto inútil de recursos.
El cliente no verá resultados hasta el final, con lo que puede impacientarse.
No se tienen indicadores fiables del progreso del trabajo (síndrome del 90%).
El mantenimiento se realiza en el código fuente
Impone una estructura de gestión de proyectos
La espiral se visualiza como un proceso que pasa a través de algunas iteraciones con el diagrama
de los cuatro cuadrantes representativos de las siguientes actividades:
Crear planes con el propósito de identificar los objetivos del software,seleccionados para
implementar el programa y clarificar las restricciones en el desarrollo del software;
Análisis de riesgos: una evaluación analítica de programas seleccionados, para evaluar
como identificar y eliminar el riesgo;
La implementación del proyecto: implementación del desarrollo del software y su pertinente
verificación;
Modelo de espiral con énfasis en los riesgos, haciendo hincapié en las condiciones de las opciones
y limitaciones para facilitar la reutilización de software, la calidad del software puede ayudar como
una meta propia en la integración en el desarrollo del producto.
Ventajas
No necesita una definición completa de los requisitos para empezar a funcionar.
Al entregar productos desde el final de la primera iteración es más fácil validar los requisitos.
El riesgo en general es menor, porque si todo se hace mal, solo se ha perdido el tiempo y
recursos invertidos en una iteración (las anteriores iteraciones están bien).
El riesgo de sufrir retrasos es menor, ya que al identificar los problemas en etapas tempranas
hay tiempo de subsanarlos.
Inconvenientes
Es difícil evaluar los riesgos.
Necesita de la participación continua por parte del cliente.
Cuando se subcontrata hay que producir previamente una especificación completa de lo que
se necesita, y esto lleva tiempo.
Dónde es adecuado
Sistemas de gran tamaño.
Proyectos donde sea importante el factor riesgo.
Cuando no sea posible definir al principio todos los requisitos.
Un cliente, a menudo, define un conjunto de objetivos generales para el software, pero no identifica
los requisitos detallados de entrada, proceso o salida. En otros casos, el responsable del desarrollo
del software puede no estar seguro de la eficacia de un algoritmo, de la capacidad de adaptación de
un sistema operativo, o de la forma en que debería tomarse la interacción hombremáquina.
Ventajas
Ayuda a identificar los requisitos del software.
Hace el software amigable al usuario.
El cliente estará seguro de que el producto final reflejara lo que él desea.
Inconvenientes
Primera versión de un producto es construido con poca funcionalidad y poca fiabilidad.
El cliente ve lo que parece ser una versión de trabajo del software, y piensa que el trabajo
esta hecho.
Puede ser demasiado lento, demasiado grande o torpe en su uso, o las tres a la vez.
No hay otra alternativa que comenzar de nuevo, aunque nos duela pero es más inteligente,
y construir una versión rediseñada en la que se resuelvan estos problemas
Clases de prototipos:
Puede considerarse como un modelo pleno a seguir, como así también una alternativa dentro de los
modelos anteriores.
Al igual que la filosofía del paradigma de la programación orientada a objetos, en esta metodología
cada funcionalidad, o requerimiento solicitado por el usuario, es considerado un objeto.
Los ciclos de vida clásicos se centran en el proyecto, el desarrollo orientado a objetos se basa en el
producto, no comprende los procesos como funciones sino que arma módulos basados en
componentes, es decir, cada componente es independiente del otro y se relacionan entre ellos a
través de interfaces, son más modulares y se dividen en miniproyectos lo cual permiten que el código
sea reutilizable.
Es más fácil de mantener porque los cambios están localizados en cada uno de estos componentes.
De esta forma si el cliente tiene nuevos requerimientos es mucho mas fácil agregarlos sin tener que
hacer demasiados cambios en lo que ya se tiene.
Debido a todo esto se considera que el ciclo de vida orientado a objetos es iterativo e incremental.
Modelo Fuente.
Modelo de Agrupamiento.
Modelo Remolino.
Modelo PinBall.
A continuacion veremos un tipo de ciclo de vida orientado a objetos mas conocidos, que es además
el más representativo, el modelo fuente.
Modelo fuente
Fue creado por Henderson-Sellers y Edwards en 1990. Es un tipo de ciclo de vida pensado para la
orientación a objetos y posiblemente el más seguido.
Concepto Clave: Agrupamiento, que es un conjunto de clases relacionadas con un objetivo común.
Enfoque Ascendente.
El modelo en cascada asume una sola dimensión de iteración, consistentes en la fase de proceso.
Se procede de forma iterativa a encontrar clases, atributos, métodos y relaciones (actividades que
pueden englobarse en la fase de análisis) y definir colaboraciones, herencia, agregación y
subsistemas (actividades de diseño), y por último se pasa a la programación, prueba e
implementación.
Como en el pinball los pasos se pueden dar en cualquier orden y de forma simultánea.
Los Ciclos de vida Orientados a Objetos tienen permiten la reutilización del código, algo con lo que
no cuentan los tradicionales.
Los Ciclos de vida Orientados a Objetos son mas fáciles de mantener porque los cambios están
localizados en cada uno de estos componentes. De esta forma si el cliente tiene nuevos
requerimientos es mucho mas fácil agregarlos sin tener que hacer demasiados cambios en lo que
ya se tiene. En cambio los tradicionales tienen más complicaciones para detectar y corregir los
errores a tiempo, mas aun la modificación o incremento de requerimientos ocasiona crisis en el
proyecto pues no suelen ser muy flexibles al cambio.
Por todo esto es a mi parecer mucho mas conveniente realizar proyectos siguiendo un ciclo de vida
orientado a objetos en lugar de utilizar uno tradicional, o bien también es factible utilizar alguna
variante de los tradicionales con los orientados a objetos obteniendo como resultado un ciclo de vida
hibrido
Referencias
Libros
Ingeniería del Software: Un Enfoque Práctico
Páginas Web
http://www.ia.uned.es/ia/asignaturas/adms/GuiaDidADMS/node10.html
http://es.scribd.com/doc/54962509/33/Los-modelos-orientados-al-objeto
http://www.ctr.unican.es/asignaturas/is1/is1-t02-trans.pdf
http://www.buenastareas.com/ensayos/Modelos-De-Desarrollo-De-Sistemas-
Orientados/1193373.html
Unidad 1 Conceptos básicos del modelo orientado a objetos
1.1 Reconocimiento de Objetos y Clases
https://youtu.be/x4kkhQ-jo5w
1.2 La Abstraccion y el encapsulamiento como un proceso natural
Abstracción: Es un método por el cual abstraemos valga la redundancia, una determinada entidad
de la realidad de sus características y funciones que desempeñan, estos son representados en
clases por medio de atributos y métodos de dicha clase.
Procedimientos: Proporcionó la primera posibilidad de ocultación de información.
Módulos: Es una técnica que proporciona la posibilidad de dividir sus datos y procedimientos en
una parte privada y una parte pública. Proporcionan un método efectivo de ocultación de la
información, pero no permiten realizar instanciación, que es la capacidad de hacer múltiples copias
de las zonas de datos.
TADS: Un tipo abstracto de dato (TAD) es un tipo de dato definido por el programador que se
puede manipular similarmente a los tipos de datos definidos por el sistema.
Un tipo abstracto de dato corresponde a un conjunto (puede ser de tamaño indefinido) de valores
legales de datos y un número de operaciones primitivas que se pueden realizar sobre esos valores.
Para construir un tipo abstracto de dato se debe:
1.- Exponer una definición del tipo.
2.- Hacer disponible un conjunto de operaciones.
3.- Proteger los datos asociados con el tipo.
4.-Permitir instancias múltiples del tipo.
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 ver este tipo de programación.
En la historia de la programación ha habido varias evoluciones sucesivas. Una de las principales
fue la programación estructurada, cuyo principio fundamental era dividir un programa en
subprogramas más pequeños y fáciles de resolver, hasta llegar a niveles de complejidad
elementales, siempre apoyándonos en la idea de ¿qué debe hacer el programa?
Este método de diseño, a pesar de haber dado resultados satisfactorios, tiene limitaciones.
Algunas de ellas son:
• No favorece la reutilización del código. Si en la figura anterior f1 y f2 fueran idénticas, este hecho
seguramente pasaría desapercibido y no se compartiría una única función fn.
• Si dos subprogramas comparten una misma función fn reutilizando así el código que define la
misma, y más adelante queremos modificar fn porque hay un cambio en uno de los subprogramas
que la utilizan, la modificación afectará también al otro subprograma, razón por la que ahora
tendremos que realizar dos funciones.
La programación orientada a objetos puede llevarse a cabo con lenguajes convencionales, pero
esto exige al programador la construcción de los mecanismos de que disponen los lenguajes
orientados a objetos. Por ello, lo más apropiado es utilizar directamente un lenguaje orientado a
objetos, ya que éstos soportan los mecanismos y las características que anteriormente se han
expuesto, tales como objetos, clases, métodos, mensajes, herencia, etc.
La herencia constituye uno de los mecanismos más potentes de la programación orientada a
objetos
Según Microsoft 1997, el diseño de software se realiza a tres niveles: conceptual, lógico y físico.
Diseño Conceptual :El diseño conceptual se considera como un análisis de actividades y consiste
en la solución de negocios para el usuario y se expresa con los casos de uso. El diseño lógico es
la solución del equipo de proyecto del negocio y consiste de las siguientes tareas: Identificar los
usuarios y sus roles Obtener datos de los usuarios Evaluar la información Documentar los
escenarios de uso Validar con los usuarios Validar contra la arquitectura de la empresa.
Diseño Lógico: El diseño lógico traduce los escenarios de uso creados en el diseño conceptual en
un conjunto de objetos de negocio y sus servicios. El diseño lógico se convierte en parte en la
especificación funcional que se usa en el diseño físico. El diseño lógico es independiente de la
tecnología. El diseño lógico refina, organiza y detalla la solución de negocios y define formalmente
las reglas y políticas específicas de negocios. El diseño lógico comprende las siguientes tareas:
*Identificar y definir los objetos de negocio y sus servicios
*Definir las interfases
*Identificar las dependencias entre objetos
*Validar contra los escenarios de uso
*Comparar con la arquitectura de la empresa
*Revisar y refinar tanto como sea necesario
Diseño físico: El diseño físico traduce el diseño lógico en una solución implementable y costo-
efectiva o económica. El componente es la unidad de construcción elemental del diseño físico.
*El diseño para distribución – debe minimizarse la cantidad de datos que pasan como parámetros
entre los componentes y éstos deben enviarse de manera segura por la red.
*El diseño para multitarea – debe diseñarse en términos de la administración concurrente de dos o
más tareas distintas por una computadora y el multithreading o múltiples hilos de un mismo
proceso)
*El diseño para uso concurrente – el desempeño de un componente remoto depende de si está
corriendo mientras recibe una solicitud.
*El diseño con el manejo de errores y prueba de eventos: Validando los parámetros- a la entrada
antes de continuar con cualquier proceso. Protegiendo recursos críticos manejar excepciones para
evitar la falla o terminación sin cerrar archivos, liberar objetos sincronizados o memoria.
*Protegiendo datos importantes – contar con una excepción a la mitad de la actuación en las bases
de datos.
*Debugging – crear una versión para limpiar errores.
*Protección integral de transacciones de negocios – los errores deben regresarse al componente
que llama.
De las tareas anteriores la más importante es la distribución de los datos que pueden ser
centralizados, una partición, un extracto o una réplica.
La Programación Orientada a Objetos (OOP por sus siglas en inglés de Object Oriented
Programming) como paradigma, “es una forma de pensar, una filosofía, de la cual surge una
cultura nueva que incorpora técnicas y metodologías diferentes.
Pero estas técnicas y metodologías, y la cultura misma, provienen del paradigma, no lo hacen. La
POO como paradigma es una postura ontológica: el universo computacional está poblado por
objetos, cada uno responsabilizándose por sí mismo, y comunicándose con los demás por medio
de mensajes”
*Requerimientos funcionales
Son declaraciones de los servicios que proveerá el sistema, de la manera en que éste reaccionará
a entradas particulares. En algunos casos, los requerimientos funcionales de los sistemas también
declaran explícitamente lo que el sistema no debe hacer.
Los requerimientos funcionales de un sistema describen la funcionalidad o los servicios que se
espera que éste provea. Estos dependen del tipo de software y del sistema que se desarrolle y de
los posibles usuarios del software. Cuando se expresan como requerimientos del usuario,
habitualmente se describen de forma general mientras que los requerimientos funcionales del
sistema describen con detalle la función de éste, sus entradas y salidas, excepciones, etc. Muchos
de los problemas de la ingeniería de software provienen de la imprecisión en la especificación de
requerimientos. Para un desarrollador de sistemas es natural dar interpretaciones de un
requerimiento ambiguo con el fin de simplificar su implementación. Sin embargo, a menudo no es
lo que el cliente desea. Se tienen que estipular nuevos requerimientos y se deben hacer cambios al
sistema, retrasando la entrega de éste e incrementando el costo
*Requerimientos no funcionales.
Son restricciones de los servicios o funciones ofrecidos por el sistema. Incluyen restricciones de
tiempo, sobre el proceso de desarrollo, estándares, etc.
Son aquellos requerimientos que no se refieren directamente a las funciones específicas que
entrega el sistema, sino a las propiedades emergentes de éste como la fiabilidad, la respuesta en
el tiempo y la capacidad de almacenamiento.
De forma alternativa, definen las restricciones del sistema como la capacidad de los dispositivos de
entrada/salida y la representación de datos que se utiliza en la interface del sistema.
Establecen con detalle los servicios y restricciones del sistema. El documento de requerimientos
del sistema, algunas veces denominado especificación funcional, debe ser preciso. Éste sirve
como un contrato entre el comprador del sistema y el desarrollador del software.
Son descripciones más detalladas de los requerimientos del usuario. Sirven como base para definir
el contrato de la especificación del sistema y, por lo tanto, debe ser una especificación completa y
consistente del sistema. Son utilizados por los ingenieros de software como el punto de partida
para el diseño del sistema.
La especificación de requerimientos del sistema incluye diferentes modelos del sistema como el de
objetos o el de flujo de datos.
EL DOCUMENTO DE REQUERIMIENTOS DEL SOFTWARE: Éste es la declaración oficial de qué
es lo que requieren los desarrolladores del sistema. Incluye tanto los requerimientos del usuario
para el sistema como una especificación detallada de los requerimientos del sistema. En algunos
casos, los dos tipos de requerimientos se integran en una única descripción. En otros, los del
usuario se definen en una introducción de la especificación de los del sistema. Si existe un gran
numero de requerimientos, los detalles de los requerimientos del sistema se pueden presentar
como documentos separados.
El documento de requerimientos tiene un conjunto diverso de usuarios que va desde los
administradores principales de la organización, quienes pagan por el sistema, hasta los ingenieros
responsables del software.
Una gran variedad de organizaciones han definido estándares para los documentos de
requerimientos.
El IEEE sugiere la siguiente estructura para los documentos de requerimientos.
1. Introducción • propósito del documento de requerimientos • Alcance del producto • Definiciones,
acrónimos y abreviaturas • Referencias • Resumen del resto del documento
2. Descripción general • Perspectiva del producto • Funciones del producto • características del
usuario • Restricciones generales • Suposiciones y dependencias
3. Requerimientos específicos. Cubren los requerimientos funcionales, no funcionales y de interfaz.
Obviamente, ésta es la parte más sustancial del documento, pero debido a la amplia variabilidad
en la práctica organizacional, no es apropiado definir una estructura estándar para esta sección.
Los requerimientos pueden documentar las interfaces externas, describir la funcionalidad y el
desempeño del sistema, especificar los requerimientos lógicos de la base de datos, las
restricciones de diseño, las propiedades emergentes del sistema y las características de calidad.
4. Apéndices
5. Índice
MODELADO DEL SISTEMA: Es importante evaluar los componentes del sistema y sus relaciones
entre sí, determinar cómo están reflejados los requisitos, y valorar como se ha concebido la
“estética” en el sistema.
1.5.5 Polimorfismo
La quinta propiedad significativa de los lenguajes de programación orientados a objetos es 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
diferentes 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.
El polimorfismo adquiere su máxima expresión en la derivación o extensión de clases, es decir,
cuando se obtiene una clase a partir de una clase ya existente, mediante la propiedad de
derivación de clases o herencia.
Prototipos
Casacada
Incremental
En v
Orientado a objetos
Hibridos
1.7 Beneficios del Modelo de Objetos y de la Poo sobre otros Paradigmas
En resumen, la programación orientada a objetos beneficia a los desarrolladores debido a que: Los
programas son fáciles de diseñar debido a que los objetos reflejan elementos del mundo real. Las
aplicaciones son más sencillas para los usuarios debido a que los datos innecesarios están
ocultos. Los objetos son unidades autocontenidas. La productividad se incrementa debido a que
puede reutilizar el código. Los sistemas son fáciles de mantener y se adaptan a las cambiantes
necesidades de negocios.
Es más fácil crear nuevos tipos de objetos a partir de los ya existentes.
Simplifica los datos complejos.
Reduce la complejidad de la transacción.
Confiabilidad.
Robustez.
Capacidad de ampliación.
Permite mostrar la magnitud de los lenguajes de programacion basada en objetos.
La POO utiliza jerarquia de clases para la elaboracion del diseño. Crea sistemas mas flexibles, que
en un futuro son modificables. Se aplica en las bases de datos, analisis matematico, animacion,
robotica, composicion de musica, etc
Aplica la metodología de desarrollo rápido de aplicaciones con programación orientada a eventos.
https://elvex.ugr.es/decsai/java/
http://academicos.azc.uam.mx/jfg/pags/tarea_programacion_visual.html
http://www3.uji.es/~belfern/Docencia/Presentaciones/ProgramacionAvanzada/Tema3/programa
cionDirigidaEventos.html#1
https://www.youtube.com/watch?v=HIaKAo-CqnA
Tarea No. 1
Rediseño de pantallas
Rediseñar la pantalla de inscripción de uea que utilizan los alumnos para inscribirse a
inicios del trimestre
Fecha de Entrega:
Eniviar un archivo JPG o PNG por correo con el asunto: Tarea 1 PVOE Nombre Completo
a más tardar el viernes de la 2da semana.
Tarea No. 2
Botones y conversiones
Fecha de Entrega:
Eniviar el proyecto comprimido como ZIP a más tardar el lunes de la 4ta semana.
Tarea No. 3
Radio Buttons y Checkboxes
Fecha de Entrega:
Eniviar el proyecto comprimido como ZIP a más tardar el lunes de la 6ta semana.
En asunto colocar TAREA 3 PVOE Nombre completo
Tarea 4. Elementos de Selección y Objetos
Java Swing
Descargar Documento
Descargar Archivo Apoyo
Fecha de Entrega:
Fecha de Entrega:
Diseño de Pantallas
Identificación de Funcionalidades
Identificación de Pantallas
Consideraciones:
La primer pantalla en aparecer será la de Login (no es necesario realizar una validación)
Posteriormente se podrá navegar através de pestañas, menú o por botones (a eleacción del
alumno) entre el resto de las ventanas
Si es necesario agregar una ventana de menú, se puede realizar
Fecha de Entrega:
http://www.jfree.org/jfreechart/download.html