Upload
spartanluism
View
256
Download
22
Embed Size (px)
DESCRIPTION
tarea
Citation preview
ANÁLISIS Y
MODELADO DE
SISTEMAS DE
INFORMACIÓN
OBJETIVO GENERAL:
Analizar y modelar
proyectos de sistemas
de información aplicando
el paradigma orientado a
objetos.
Recopilado por: M.I Norma H.
Jiménez Alor
Unidad 1. El modelo del proceso de software
1.1. Conceptualización de tecnología orientada a objetos.
1.2. Metodologías emergentes de desarrollo de software.
1.3. Métodos de desarrollo de software orientado a objetos.
1.4. El proceso de desarrollo unificado – RUP.
1.5. El lenguaje de modelado unificado – UML.
Recopilado por: M.I Norma H.
Jiménez Alor
Unidad 1. El modelo del proceso de
software
Recopilado por: M.I Norma H.
Jiménez Alor
COMPETENCIA
ESPECÍFICA:
Conocer el modelo de
proceso de
software.
Introducción
Hoy en día la tecnología orientada a
objetos ya no se aplica solamente
a los lenguajes de programación, además se viene
aplicando en el análisis y diseño con mucho éxito, al
igual que en las bases de datos. Es que para hacer una
buena programación orientada a objetos hay que
desarrollar todo el sistema aplicando esta tecnología,
de ahí la importancia del análisis y el diseño orientado
a objetos.
Recopilado por: M.I Norma H.
Jiménez Alor
1.1 Conceptualización de tecnología orientada a
objetos
o La Programación Orientada a Objetos
(POO u OOP según siglas en inglés) es un
paradigma de programación que define los
programas en términos de "clases de
objetos", objetos que son entidades que
combinan estado (es decir, datos),
comportamiento (esto es, procedimientos o
métodos) e identidad (propiedad del objeto
que lo diferencia del resto).
Recopilado por: M.I Norma H.
Jiménez Alor
1.1 Conceptualización de tecnología orientada a
objetos
o La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
o Basándonos en la idea que estamos
en tiempos de tecnologías cambiantes
y de comunicación global,
necesitamos optimizar el análisis y
diseño de los sistemas y aplicaciones.
Se necesita crear software que pueda
ser implementado en cualquier
infraestructura y que pueda ser
modificado con facilidad por cualquier
persona en el mundo.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
o Por tal razón, se han creado varias metodologías para análisis y diseño orientado a objetos, las cuales estandarizan la forma de trabajar en el diseño de un software. Estas metodologías permiten que cualquier persona pueda trabajar en su diseño.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
¿Qué es una metodología de desarrollo de software?
Conjunto de procedimientos, técnicas, herramientas y un soporte documental que ayuda a los desarrolladores a realizar nuevo software.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
SCRUM.
Scrum es un "agile process" que nos permite
enfocarnos en la generación de valor en el mínimo tiempo.
Nos permite tener un control continuo sobre el estado
actual de nuestro software
El cliente establece las prioridades y el equipo se auto-
organiza para determinar la mejor forma de entregar los
requerimientos con más prioridad.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Scrum asume que el proceso de desarrollo de software es
complicado e impredecible y lo trata como una caja negra
en lugar de un proceso teórico totalmente definido. Esta es
una de las mayores diferencias entre Scrum y otras
metodologías de desarrollo de software: con Scrum se
trata de evitar los típicos problemas de éstas otras
metodologías más formales cómo:
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
o Los requerimientos no se entienden plenamente
al principio del proceso.
o Los requerimientos cambian durante el proceso.
o El mismo proceso puede ser imprevisible si se
está trabajando con nuevas tecnologías.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Fases
El proceso de desarrollo Scrum se compone de 5
actividades importantes:
o Planes de lanzamientos.
o Distribución, revisión y ajuste de los estándares de
producto.
o Sprint. Es donde el desarrollo de software se lleva a
cabo. Un Sprint consta de los siguientes sub-
actividades: Elaborar, integrar, revisar y ajustar.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
o Revisión de Sprint. Cada Sprint es seguida por
una revisión de Sprint. Durante esta revisión, el
software desarrollado en el Sprint anterior se
revisa y si es necesario se le añaden nuevos
ítems del backlog. El grupo de revisores pueden
ser: las partes interesadas del proyecto,
gestores, desarrolladores y, en ocasiones los
clientes, ventas y marketing.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Las actividades, y la revisión de Sprint se repiten
hasta que el producto se considera listo para su
distribución por los participantes en el proyecto.
Luego, el proyecto pasa a la fase de cierre en que
el producto se prepara para el lanzamiento y la
distribución.
o Cierre. En esta fase tienen lugar las actividades
de debugging, marketing y promoción. Al acabar
esta fase el proyecto quedará cerrado.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Extreme programming. (Programación extrema - XP)
o Metodología para un ágil desarrollo de software.
o Programación basada en los deseos del cliente.
o El equipo lo conforman los jefes de proyecto,
desarrolladores y el cliente.
o Se rige por valores y principios.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Valores.
Comunicación: Crear software requiere de sistemas
comunicados.
Simplicidad: Empezar con lo necesario y requerido y
trabajar desde ahí.
Retroalimentación: Del sistema, del cliente, y del equipo.
Valentía: Programa para hoy y no para mañana.
Respeto: El equipo debe trabajar como uno, sin hacer
decisiones repentinas.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Actividades.
Codificación: La parte mas importante de XP.
Pruebas: Nunca se puede estar seguro de algo hasta
haberlo probado.
Escuchar: Escuchar los requisitos del cliente acerca del
sistema a crear.
Diseño: Crear una estructura del diseño para evitar
problemas.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Ventajas:
o Programación organizada.
o Menor taza de errores.
o Satisfacción del programador.
Desventajas:
o Es recomendable emplearlo solo en proyectos a corto
plazo.
o Altas comisiones en caso de fallar.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Beneficios:
o El cliente tiene el control sobre las prioridades.
o Se hacen pruebas continuas durante el proyecto.
o La XP es mejor utilizada en la implementación de
nuevas tecnologías donde los requerimientos cambian
rápidamente.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Rational Unified Process. (Proceso Racional Unificado
- RUP)
Es un proceso de desarrollo de software y junto con el
Lenguaje Unificado de Modelado UML, constituye la
metodología estándar más utilizada para el análisis,
implementación y documentación de sistemas orientados a
objetos.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Ventajas.
o Un proceso de software hecho a la medida para ser
publicado y hacerlo accesible para todo el equipo del
proyecto.
o Un proceso de software configurable, para satisfacer
necesidades específicas de un proyecto.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Ventajas (continuación).
o Una definición común del proceso que puede ser
compartida por todo el equipo de desarrollo, ayudando a
asegurar una comunicación clara y sin ambigüedades
entre los miembros del equipo.
o Ofrece a cada usuario, un filtrado personalizado de la
definición del proceso publicado, acorde con su rol
dentro del proyecto.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Agile Unified Process. (Proceso Ágil Unificado – AUP)
Los procesos ágiles de desarrollo de software, conocidos
anteriormente como metodologías livianas, intentan evitar
los tortuosos y burocráticos caminos de las metodologías
tradicionales enfocándose en la gente y los resultados.
El Proceso Unificado Ágil de Scott Ambler o Agile Unified
Process (AUP) en inglés es una versión simplificada del
Proceso Unificado de Rational (RUP).
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
Describe de una manera simple y fácil de entender la
forma de desarrollar aplicaciones de software de negocio
usando técnicas ágiles y conceptos que aún se mantienen
válidos en RUP.
El AUP aplica técnicas ágiles incluyendo Desarrollo
Dirigido por Pruebas (test driven development - TDD),
Modelado Ágil, Gestión de Cambios Ágil, y Refactorización
de Base de Datos para mejorar la productividad.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
AUP se preocupa especialmente de la gestión de riesgos.
Propone que aquellos elementos con alto riesgo obtengan
prioridad en el proceso de desarrollo y sean abordados en
etapas tempranas del mismo. Para ello, se crean y
mantienen listas identificando los riesgos desde etapas
iníciales del proyecto.
Al igual que en RUP, en AUP se establecen cuatro fases
que transcurren de manera consecutiva y que acaban con
hitos claros alcanzados:
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
o Inception(Concepción): El objetivo de esta fase es
obtener una comprensión común cliente-equipo de
desarrollo del alcance del nuevo sistema y definir una o
varias arquitecturas candidatas para el mismo.
o Elaboración: El objetivo es que el equipo de desarrollo
profundice en la comprensión de lo requisitos del
sistema y en validar la arquitectura.
Recopilado por: M.I Norma H.
Jiménez Alor
1.2 Metodologías emergentes de desarrollo de
software.
o Construcción: Durante la fase de construcción el
sistema es desarrollado y probado al completo en el
ambiente de desarrollo.
o Transición: El sistema se lleva a los entornos de
preproducción donde se somete a pruebas de validación
y aceptación y finalmente se despliega en los sistemas
de producción.
Recopilado por: M.I Norma H.
Jiménez Alor
Como conclusión ¿Qué metodología utilizar?
Pues depende:
o Si formas parte de un equipo de desarrollo en un proyecto
grande y te toca decidir qué metodología hay que utilizar
significa que tienes un puesto de responsabilidad. Escoge
una metodología moderna, bien definida, que dé respuesta
a las necesidades del proyecto.
Recopilado por: M.I Norma H.
Jiménez Alor
¿Qué metodología utilizar?
o Si formas parte de un equipo de desarrollo en un proyecto
grande y no ocupas un puesto de responsabilidad, no
deberías decidir qué metodología utilizar: alguien lo decidirá
por tí. Si nadie toma esa decisión... ¡Mucho ánimo!... el
proyecto en el que estás involucrado está destinado al
fracaso.
o Si formas parte de un equipo pequeño en un proyecto
pequeño, lo mejor es consensuar la metodología a utilizar.
Incluso, combinar buenas ideas de más de una.
Recopilado por: M.I Norma H.
Jiménez Alor
Cosas que no son metodologías de desarrollo de software
o La "Programación estructurada" o la "Programación
Orientada a Objetos" son paradigmas o modelos de
programación. Indican pautas de comportamiento en los
sistemas de programación... no tienen nada que ver con el
ciclo de vida del software ni la manera en la que debe
realizarse cada tarea para un proyecto concreto... así
pues... NO SON METODOLOGÍAS.
o Los términos "Ciclo de vida en espiral", "Incremental", en
"Cascada", con "prototipo", etc... Indican esquemas
generales de organización en las tareas del ciclo de vida,
Recopilado por: M.I Norma H.
Jiménez Alor
Cosas que no son metodologías de desarrollo de software
unas con respecto a otras y con respecto a otros aspectos
como el tiempo, los requisitos o el riesgo. Actualmente se
denominan "PATRONES" del ciclo de vida del software,
aunque antaño fueron denominados simplemente distintos
"Ciclos de vida". Indican ideas estructurales sencillas en el
proceso de desarrollo, y no la manera en la que debe
realizarse cada tarea del ciclo para un proyecto concreto... así
pues... NO SON METODOLOGÍAS.
o El lenguaje UML (Unified Modeling Languaje) es un gran
logro de la ingeniería. Aún con sus carencias, es algo muy
Recopilado por: M.I Norma H.
Jiménez Alor
Cosas que no son metodologías de desarrollo de software
importante: un lenguaje común para que todos los
profesionales del desarrollo de sistemas -de software o no-
expresen sus ideas... pero el UML no le indica a nadie la
manera de realizar las cada tarea en un proyecto concreto:
tan solo es una herramienta para expresar ideas... así pues...
NO ES UNA METODOLOGÍA. Sin embargo, algunas
metodologías de las que hemos comentado, como RUP o
METRICA hacen referencia a UML como herramienta para
expresar ideas.
Recopilado por: M.I Norma H.
Jiménez Alor
1.3 Métodos de desarrollo de software orientado a
objetos
Existen numerosos métodos de diseño orientado a objetos:
Booch, Yourdon-Coad, Martín, Shlaer & Mellor,
Rumbaugh, por citar algunos. Pero en general como
ocurre encualquier proyecto estructurado, un proyecto
software OO se compone de las siguientes etapas:
o Análisis Orientado a Objetos (AOO)
o Diseño Orientado a Objetos (DOO)
o Programación Orientada a Objetos (POO)
Recopilado por: M.I Norma H.
Jiménez Alor
1.3 Métodos de desarrollo de software orientado a
objetos
El método de Booch considera que las etapas del proceso
en un desarrollo orientado a objetos son:
1. Identificar las claves y objetos en un nivel dado de
abstracción.
2. Identificar la semántica de estas clases y objetos.
3. Identificar las relaciones entre clases y objetos.
4. Especificar la interfaz y la implementación de estas
clases y objetos.
Recopilado por: M.I Norma H.
Jiménez Alor
1.3 Métodos de desarrollo de software orientado a
objetos
Estas etapas suelen seguirse por la mayoría de los
métodos de diseño OO existentes. De hecho, para los
sistemas orientados a objetos se define el siguiente diseño
en pirámide que contempla el método de Booch.
Recopilado por: M.I Norma H.
Jiménez Alor
1.3 Métodos de desarrollo de software orientado a
objetos
La capa del subsistema.- Contiene una representación de
cada uno de los subsistemas que le permiten al software
conseguir los requisitos definidos por el cliente e
implementar la infraestructura técnica que los soporta.
La capa de clases y Objetos.- Contiene las jerarquías de
clase que permiten crear el sistema usando
generalizaciones y especializaciones mejor definidas. Esta
capa también contiene representaciones de diseño para
cada objeto.
Recopilado por: M.I Norma H.
Jiménez Alor
1.3 Métodos de desarrollo de software orientado a
objetos La capa de mensajes.- Contiene los detalles que le
permiten a cada objeto comunicarse con sus colaboradores.
Esta capa establece las interfaces externas e internas para
el sistema.
La capa de responsabilidades.- Contiene las estructuras
de datos y el diseño algorítmico para todo los atributos y
operaciones de cada objeto.
Esta pirámide de diseño se centra entonces en el diseño de
un producto o sistema específico.
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
Es un proceso que puede especializarse para una gran
variedad de sistemas de software, en diferentes áreas de
aplicación, diferentes tipos de organizaciones, diferentes
niveles de aptitud y diferentes tamaños de proyecto.
RUP no es un sistema con pasos firmemente
establecidos, sino un conjunto de metodologías
adaptables al contexto y necesidades de cada
organización.
Es el resultado de varios años de desarrollo y uso
práctico en el que se han unificado técnicas de desarrollo,
a través
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
del UML, y trabajo de muchas metodologías utilizadas por los
clientes. La versión que se ha estandarizado vio la luz en 1998
y se conoció en sus inicios como Proceso Unificado de
Rational 5.0; de ahí las siglas con las que se identifica a este
proceso de desarrollo.
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
Elementos básicos de RUP
o Con RUP, un proceso de desarrollo es representado
usando un conjunto de elementos de modelado, tales como:
roles, actividades, artefactos y flujos de trabajo (workflows),
entre otros. Un rol expresa quién (individuo o grupo) hace
un trabajo, una actividad describe cómo es hecho el trabajo
y un artefacto captura el trabajo realizado. En RUP se
encuentran 4 elementos básicos: los roles (el quién), las
actividades (el cómo), los artefactos (el qué) y los flujos de
trabajo (el cuándo).
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
Características principales de RUP
o Unifica los mejores elementos de metodologías
anteriores.
o Preparado para desarrollar grandes y complejos
proyectos.
o Orientado a Objetos.
o Utiliza el UML como lenguaje de representación visual.
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
Fases del ciclo de vida de RUP
o Fase de inicio. Es el alcanzar consenso entre todos los
inversionistas y afectados por el desarrollo del proyecto,
de los objetivos del ciclo de vida del proyecto.
o Fase de elaboración. Consiste en definir y establecer la
base de la arquitectura del sistema, brindando así una
base estable para la mayor parte del esfuerzo de diseño e
implementación en la fase de construcción
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
Fases del ciclo de vida de RUP
o Fase de construcción. Se enfoca de forma detallada en
el diseño, implementación y prueba hasta lograr un
sistema completo, con una alta calidad a un costo
efectivo. La meta de esta fase, es resolver los
requerimientos restantes y completar el desarrollo del
sistema sobre la arquitectura base.
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
Fases del ciclo de vida de RUP
o Fase de transición. Se enfoca en asegurar que el software
esté listo para los usuarios finales. En la fase de transición,
puede extenderse algunas iteraciones, incluyendo las
pruebas del producto dentro de la preparación para su
publicación y el hacer los ajustes menores basados en la
retroalimentación de los usuarios.
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
El ciclo de vida de RUP se caracteriza por:
Dirigido por casos de uso: Los casos de uso reflejan lo
que los usuarios futuros necesitan y desean, lo cual se
capta cuando se modela el negocio y se representa a
través de los requerimientos
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
El ciclo de vida de RUP se caracteriza por:
Centrado en la arquitectura: La arquitectura muestra la
visión común del sistema completo en la que el equipo
de proyecto y los usuarios deben estar de acuerdo, por lo
que describe los elementos del modelo que son más
importantes para su construcción, los cimientos del
sistema que son necesarios como base para
comprenderlo, desarrollarlo y producirlo
económicamente.
Recopilado por: M.I Norma H.
Jiménez Alor
1.4 El Proceso de Desarrollo Unificado (RUP)
El ciclo de vida de RUP se caracteriza por:
Iterativo e Incremental: Una iteración involucra actividades
de todos los flujos de trabajo, aunque desarrolla
fundamentalmente algunos más que otros.
Es práctico dividir el trabajo en partes más pequeñas o
miniproyectos. Cada miniproyecto es una iteración que
resulta en un incremento.
Recopilado por: M.I Norma H.
Jiménez Alor
1.5 El lenguaje de modelado unificado – UML.
o Es una herramienta o Lenguaje de Modelamiento Unificado que permite a los creadores de sistemas crear diseños que capturen sus ideas en una forma convencional y fácil de comprender, y así poder comunicárselas a otras personas.
o El Lenguaje de Modelado Unificado (UML:Unified Modeling Language) es la sucesión de una serie de métodos de análisis y diseño orientadas a objetos que aparecen a fines de los 80's y principios de los 90’s. UML es llamado un lenguaje de modelado, no un método.
o Es un lenguaje de propósito general para el
modelo orientado a objetos.
Recopilado por: M.I Norma H.
Jiménez Alor
1.5 El lenguaje de modelado unificado – UML.
o El lenguaje de modelado es la notación (principalmente
gráfica) que usan los métodos para expresar un diseño.
El proceso indica los pasos que se deben seguir para
llegar a un diseño.
o Define una notación que se expresa como diagramas
que sirven para representar modelos/subsistemas o
partes de ellos.
o Define una estructura para ir del análisis al diseño y de
éste a la implementación.
Recopilado por: M.I Norma H.
Jiménez Alor
1.5 El lenguaje de modelado unificado – UML.
Vistas de UML
5 vistas- 9 diagramas
Recopilado por: M.I Norma H.
Jiménez Alor
1.5 El lenguaje de modelado unificado – UML.
Los diagramas expresan gráficamente partes del modelo
Recopilado por: M.I Norma H.
Jiménez Alor
1.5 El lenguaje de modelado unificado – UML.
Un modelo UML esta compuesto por tres clases de
bloques de construcción:
o Elementos: Los elementos son abstracciones de cosas
reales o ficticias (objetos, acciones, etc.)
o Relaciones: relacionan los elementos entre sí.
o Diagramas: Son colecciones de elementos con sus
relaciones.
Recopilado por: M.I Norma H.
Jiménez Alor
1.5 El lenguaje de modelado unificado – UML.
o La finalidad de los diagramas es presentar diversas
perspectivas de un sistema, a los cuales se les conoce
como modelo.
o Es importante destacar que le modelo UML describe lo
que supuestamente hará un sistema, pero no dice como
implementar dicho sistema.
Recopilado por: M.I Norma H.
Jiménez Alor
Referencias electrónicas
o http://latecladeescape.com/articulos/1550-metodologias-de-
desarrollo-del-software
o http://www.omitsis.com/scrum-como-metodologia-de-desarrollo
o http://ingsoftware072301.obolog.com/rational-unified-process-rup-
proceso-racional-unificado-2006524
o http://www.ingenieriadesoftware.mex.tl/images/18149/METODOLO
GIAS%20AGILES.pdf
o http://dpinto.cs.buap.mx/semadoo/mario.pdf
o http://www.ecured.cu/index.php/Proceso_Unificado_de_Desarrollo
o http://www.slideshare.net/ecastrojimenez/uml-lenguaje-de-
modelamiento-unificado-presentation
Recopilado por: M.I Norma H.
Jiménez Alor