UNIVERSIDAD DE GUAYAQUIL
INGENIERÍA DE SOFTWARE ORIENTADA A OBJETOS
Actividad – Grupo 6
Integrantes:
Jaime Suarez Jeremy
León Torres Sheyla
Mejía Álvarez Alan
Quimí Rugel Guillermo
Quinto Vera Keyla
Curso: ISI-S-MA-5-1
QUÉ ES MÉTODO?
Es el conjunto de estrategias y herramientas para poder llegar a un objetivo
preciso, para llegar a este resultado solemos hacerlo de forma sistemática, por
ejemplo
Un método de pago se refiere a las varias opciones que tenemos para poder
usar nuestro dinero.
Un método de estudio son los pasos para poder realizar esta actividad de la
mejor forma y así obtener los mejores resultados.
El método de Gauss es una serie de pasos para transformar un sistema de
ecuaciones en otro mas simple
QUÉ ES METODOLOGÍA ?
Es un conjunto integrado de técnicas y métodos que permite abordar de forma
homogénea y abierta cada una de las actividades del ciclo de vida de un proyecto de
desarrollo. Es un proceso de software detallado y complete.
Se basan en una combinación de los modelos de proceso genéricos. Definen
artefactos, roles y actividades, junto con prácticas y técnicas recomendadas.
La metodología para el desarrollo de software es un modo sistemático de realizar,
gestionar y administrar un proyecto para llevarlo a cabo con altas posibilidades de
éxito.
Una metodología para el desarrollo de software comprende los procesos a seguir
sistemáticamente para idear, implementar y mantener un producto software desde que
surge la necesidad del producto hasta que cumplimos el objetivo por el cual fue
creado.
UNA METODOLOGÍA DE DESARROLLO DE SOFTWARE
ES:
Un marco de trabajo que se usa para estructurar, planificar y controlar el proceso de desarrollo de
sistemas de información.
Una gran variedad de estos marcos de trabajo han evolucionado durante los años, cada uno con sus
propias fortalezas y debilidades.
Una metodología de desarrollo de sistemas no tiene que ser necesariamente adecuada para usarla en
todos los proyectos. Cada una de las metodologías disponibles es más adecuada para tipos específicos
de proyectos, basados en consideraciones técnicas, organizacionales, de proyecto y de equipo.
Una metodología de desarrollo de software o metodología de desarrollo de sistemas en ingeniería de
software es un marco de trabajo que se usa para estructurar, planificar y controlar el proceso de
desarrollo de un sistema de información.
SI ESTO SE APLICA A LA INGENIERÍA DEL
SOFTWARE, PODEMOS DESTACAR QUE UNA
METODOLOGÍA:
Optimiza el proceso y el producto software.
Métodos que guían en la planificación
y en el desarrollo del software.
Define qué hacer, cómo y cuándo durante todo el desarrollo y mantenimiento de un proyecto.
Una metodología define una estrategia global para enfrentarse con el proyecto.
ENTRE LOS ELEMENTOS QUE FORMAN
PARTE DE UNA METODOLOGÍA SE PUEDEN
DESTACAR:
Fases: tareas a realizar en cada fase o etapa.
Productos: E/S de cada fase, documentos.
Procedimientos y herramientas: apoyo a la realización de cada tarea.
Criterios de evaluación: del proceso y del producto. Saber si se han logrado los objetivos.
TÉCNICAS DE MODELADO DE
OBJETOS
Definición de clases, atributos,
métodos y objetos
UNA CLASE
Una clase: podríamos decir que es un molde con el cual podemos crear infinidad
de objetos con características parecidas.
Por ejemplo, concibiendo una clase como un molde podríamos definir la clase
Coche: Esta clase será la plantilla o molde para crear nuevos coches
Tendrá atributos o propiedades (lo que conocíamos como variables) y digamos
que estos serán cada una de las piezas o características del coche, por ejemplo:
nombre, color, modelo, plazas, caballaje, velocidad, etc.
Tendrá métodos (lo que conocíamos como funciones), estos serán las acciones
que es capaz de hacer el coche, por ejemplo, podríamos tener los métodos:
arrancar, acelerar, frenar, encender Luces, cambiar Color, etc. Con los métodos
interactuamos con los atributos y si es necesario cambiamos los valores que
tienen
Ya sabemos crear una clase y sabemos que cualquier cosa podríamos convertirla
a un objeto (coche, persona, moto, televisor, usuario, lo que sea) definiendo
atributos y métodos.
EL MODELO COMO
RESULTADO DE LA
ABSTRACCIÓN
Modelo: Un modelo es una representación abstracta de una especificación, un
diseño o un sistema, desdé un punto de vista en particular.
Los modelos nos ayudan a visualizar como es o queremos que sea un sistema, un
sistema puede ser descrito por uno o más modelos, posiblemente desde distintos
puntos de vista.
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 (abstracciones de la realidad y de la solución del
problema) y objetos (instancias de estas abstracciones) que interactúan entre sí
para realizar una funcionalidad, así veremos el mundo. Este es precisamente al
paradigma a que le apuesta el UML: modelo orientado a objetos. Si vemos la
realidad como compuesta de procesos donde cada uno a su vez se puede
descomponer en subprocesos entonces concibiendo la realidad según el modelo
estructurado y la arquitectura del sistema en desarrollo estará conformada de
programas y subprogramas.
UML COMO UNA HERRAMIENTA
DE MODELADO DE OBJETOS.
¿Qué es el UML?
UML: Unified Modeling Language
Un lenguaje de propósito general para el modelado orientado a objetos.
Documento “OMG unified Modeling Language Specification”
UML Combina notaciones provenientes desde:
- Modelado Orientado a objetos
- Modelado de datos.
- Modelado de comportamiento.
- Modelado de flujos de trabajo (Workflows)
El UML visualiza los estados y las interacciones entre objetos dentro de un
sistema. Su extensa popularidad se debe probablemente a la fuerte influencia que
ejercen los miembros del OMG (IBM, Microsoft y HP entre otros). La semántica
estructurada hace el resto. Los diagramas UML se utilizan para representar los
siguientes componentes del sistema:
- Objetos individuales (elementos básicos)
- Clases (combina elementos con las mismas propiedades)
- Relaciones entre objetos (jerarquía y comportamiento/comunicación entre
objetos)
- Actividad (combinación compleja de acciones/módulos de comportamiento)
- Interacciones entre objetos e interfaces
Inconvenientes en UML
- UML no es una metodología.
- Falta integración con respecto de otras técnicas tales como patrones de
diseño, interfaces de usuario, documentación, etc.
- Ejemplos aislados
- Monopolio de conceptos, técnicas y métodos entorno a UML.
CICLO DE VIDA
OMT (Object Modelling Technique) es una metodología (y una notación gráfica) para el
desarrollo orientado a objetos que consiste en construir un modelo de un dominio de
aplicación añadiéndosele detalles de implementación durante el diseño del sistemas.
Esta metodología consta de las siguientes fases:
ANÁLISIS
Comenzando en la descripción del problema el analista construye un modelo de la situación del
mundo real
que muestra sus propiedades importantes. Dicho analista debe trabajar con quien hace la solicitud
para comprender el problema porque las definiciones del mismo no suelen ser completas ni
correctas. El modelo de análisis es una abstracción resumida y precisa de lo que debe hacer el
sistema deseado y no de la forma en que se hará. Los objetos del modelo deberán ser conceptos
del dominio de la
aplicación y no conceptos de implementación de la computadora tales como estructuras de datos.
Un buen modelo
podrá ser comprendido y criticado por expertos de la aplicación que no sean programadores. El
modelo de análisis
no deberá contener ninguna decisión de implementación, los objetos se describirán en términos de
atributos y
operaciones que son visibles para el usuario.
DISEÑO DEL SISTEMA
Se toman decisiones de alto nivel acerca de la arquitectura global. Durante el diseño, el
sistema de destino se organiza en subsistemas basados tanto
en la estructura del análisis como en la arquitectura propuesta. El diseñador de sistemas deberá
decidir qué características de rendimiento hay que optimizar.
Seleccionando una estrategia para atacar el problema y efectuando las reservas de recursos
tentativas.
DISEÑO DE OBJETOS
se construye un modelo de diseño basándose en el modelo de análisis que lleven incorporados
detalles de implementación. El diseñador añade detalles al modelo de acuerdo con la estrategia
establecida durante el diseño del sistema. El foco de atención del diseño de objetos son las
estructuras de datos y los algoritmos necesarios para implementar cada una de las clases. Las
clases de objetos procedentes del análisis siguen siendo significativas pero se aumentan con
estructuras de datos y algoritmos del dominio de la computadora seleccionados para optimizar
medidas importantes de rendimiento. Tanto los objetos del dominio de la aplicación como los
objetos del dominio de la computadora se describen utilizando unos mismos conceptos y una
misma notación orientados a objetos aún cuando existan en planos conceptuales diferentes.
IMPLEMENTACIÓN
las clases de objetos y las relaciones desarrolladas durante su diseño se traducen finalmente a
un lenguaje de programación concreto, a una base de datos o a una implementación en
hardware. La programación debería ser una parte relativamente pequeña del ciclo de desarrollo
y fundamentalmente mecánica porque todas las decisiones importantes deberán hacerse
durante el diseño. El lenguaje de destino influye en cierta medida sobre las decisiones de
diseño pero éste no debería depender de la estructura final de un lenguaje de programación.
Durante la implementación es importante respetar las ideas de la ingeniería del software, de tal
manera que el seguimiento hasta el diseño sea sencillo y de tal forma que el sistema
implementado siga siendo flexible y extensible.
Metodología tradicional
Estas metodologías tradicionales imponen una disciplina de trabajo sobre el proceso de desarrollo del software, con
el fin de conseguir un software más eficiente. Para ello, se hace énfasis en la planificación total de todo el trabajo a
realizar y una vez que está todo detallado, comienza el ciclo de desarrollo del producto software.
Se centran especialmente en el control del proceso, mediante una rigurosa definición de roles, actividades, artefactos,
herramientas y notaciones para el modelado y documentación detallada.
Además, las metodologías tradicionales no se adaptan adecuadamente a los cambios, por lo que no son métodos
adecuados cuando se trabaja en un entorno, donde los requisitos no pueden predecirse o bien pueden variar.
Principios de desarrollo
El RUP está basado en 5 principios clave que son:
• Adaptar el proceso
El proceso deberá adaptarse a las características propias del proyecto u organización. El
tamaño del mismo, así como su tipo o las regulaciones que lo condicionen, influirán en su
diseño específico. También se deberá tener en cuenta el alcance del proyecto.
• Equilibrar prioridades
Los requerimientos de los diversos participantes pueden ser diferentes, contradictorios o
disputarse recursos limitados. Debe encontrarse un equilibrio que satisfaga los deseos de
todos. Gracias a este equilibrio se podrán corregir desacuerdos que surjan en el futuro.
• Demostrar valor interactivamente
Los proyectos se entregan, aunque sea de un modo interno, en etapas iteradas. En cada iteración se analiza la
opinión de los inversores, la estabilidad y calidad del producto, y se refina la dirección del proyecto así como
también los riesgos involucrados
• Colaboración entre equipos
El desarrollo de software no lo hace una única persona sino múltiples equipos. Debe haber una comunicación
fluida para coordinar requerimientos, desarrollo, evaluaciones, planes, resultados, etc. también esta
metodología esta basada en 2 punto 1,2
• Elevar el nivel de abstracción
Este principio dominante motiva el uso de conceptos reutilizables tales como patrón del software, lenguajes
4GL o marcos de referencia (frameworks) por nombrar algunos. Esto evita que los ingenieros de software
vayan directamente de los requisitos a la codificación de software a la medida del cliente, sin saber con
certeza qué codificar para satisfacer de la mejor manera los requerimientos y sin comenzar desde un principio
pensando en la reutilización del código. Un alto nivel de abstracción también permite discusiones sobre
diversos niveles y soluciones arquitectónicas. Éstas se pueden acompañar por las representaciones visuales
de la arquitectura, por ejemplo con el lenguaje UML.
Principales características
Forma disciplinada de asignar tareas y responsabilidades (quién hace qué, cuándo y cómo)
Pretende implementar las mejores prácticas en Ingeniería de Software
Desarrollo iterativo
Administración de requisitos
Uso de arquitectura basada en componentes
Control de cambios
Modelado visual del software
Verificación de la calidad del software
Fases
Establece oportunidad y alcance
Identifica las entidades externas o actores con las que se trata
Identifica los casos de uso
RUP comprende 2 aspectos importantes por los cuales se establecen las disciplinas:
Proceso: Las etapas de esta sección son:
Modelado de negocio
Requisitos
Análisis y Diseño
Implementación
Pruebas
Despliegue
Soporte: En esta parte nos encontramos con las siguientes etapas:
Gestión del cambio y configuraciones
Gestión del proyecto
Entorno
La estructura dinámica de RUP es la que permite que éste sea un proceso de desarrollo fundamentalmente iterativo, y en
esta parte se ven inmersas las 4 fases descritas anteriormente:
Inicio(También llamado Incepción)
Elaboración
Desarrollo(También llamado Implementación, Construcción)
Cierre (También llamado Transición)
Es una serie de modelos flexibles interrelacionados, que guían a una organización sobre como
ensamblar los recursos, el personal y las técnicas necesarias para asegurar que su infraestructura
tecnológica y sus soluciones cumplan los objetivos de negocio.
CARACTERISTICAS
• Adaptable: su uso es limitado a un específico lugar.
• Escalable: puede organizar equipos tanto pequeños como grandes.
• Flexible: es utilizada en el ambiente de desarrollo de cualquier cliente.
• Tecnología Agnóstica: puede ser usada para desarrollar soluciones basadas sobre cualquier
tecnología.
Los objetivos de MSF son:
Alinear objetivos empresariales y tecnológicos.
Trazar correctamente los roles, responsabilidades y objetivos del proyecto.
Establecer puntos iterativos, estableciendo puntos de control.
Establecimiento oportuno de los riesgos.
Respuestas oportunas y efectivas a cambios no esperados.
Entre los principios fundamentales de MSF tenemos:
1. Comunicación abierta entre los miembros del equipo.
2. Trabajo hacia una visión compartida y un objetivo común.
3. Delegación de responsabilidades claras y compartidas entre los responsables con sus permisos necesarios.
4. Adaptabilidad y apertura a cambios con soluciones óptimas y oportunas.
5. Principios de calidad de software con resultados auditables.
MODELO DE ARQUITECTRURA - VISIÓN
Diseñado para acortar la planificación del ciclo de vida.
Define la visión y el ámbito de una solución que cumplirá los objetivos del cliente.
Define las pautas para construir proyectos empresariales a través del lanzamiento de versiones.
MODELO DE EQUIPO - PLANIFICACIÓN
Mejora el rendimiento del equipo de desarrollo.
Concretar los puntos de control de avance del proyecto.
Proporciona una estructura flexible para organizar los equipos de un proyecto.
Puede ser escalado dependiendo del tamaño del proyecto y del equipo de personas disponibles.
Se debe tener en cuenta el cronograma establecido.
MODELO DE EQUIPO - PLANIFICACIÓN
Mejora el rendimiento del equipo de desarrollo.
Concretar los puntos de control de avance del proyecto.
Proporciona una estructura flexible para organizar los equipos de un proyecto.
Puede ser escalado dependiendo del tamaño del proyecto y del equipo de personas disponibles.
Se debe tener en cuenta el cronograma establecido.
MODELO DE PROCESO - DESARROLLO
El equipo crea y prueba la solución.
Mejora el control del proyecto, minimizando el riesgo, y aumentar la calidad acortando el tiempo de entrega.
Consigue versiones del producto.
MODELO DE GESTIÓN DEL RIESGO -
ESTABILIZACIÓN
Se encuentran y solucionan posibles errores.
Identifica las prioridades, toma las decisiones estratégicas correctas y controla las emergencias que puedan
surgir.
Este modelo proporciona un entorno estructurado para la toma de decisiones y acciones valorando los riesgos
que puedan provocar.
MODELO DE DISEÑO DEL PROCESO –
IMPLEMENTACIÓN
Instalación del software.
Proporciona un modelo centrado en el usuario para obtener un diseño eficiente y flexible a través de un enfoque iterativo.
Las fases de diseño conceptual, lógico y físico proveen tres perspectivas diferentes para los tres tipos de roles: los
usuarios, el equipo y los desarrolladores.
MODELO DE APLIACIÓN - SOPORTE
Como en todo proceso de desarrollo de software se debe brindar el soporte técnico adecuado.
Mejora el desarrollo, el mantenimiento y el soporte, proporciona un modelo de tres niveles para diseñar y desarrollar
aplicaciones software.
CONCEPTO
El modelo en espiral fue propuesto por Boehm (1988), El modelo en espiral es una de las metodologías más
recomendables para el desarrollo y creación de un programa, ya que consta de pocas etapas o fases, las cuales se van
realizando en una manera continua y cíclica
DESCRIPCION
Es un modelo de proceso de software evolutivo que conjuga la naturaleza iterativa de construcción de prototipos con los
aspectos controlados y sistemáticos del modelo lineal secuencial.
CARACTERISTICAS
• Trata de mejorar los ciclos de vida clásicos y prototipos.
• Este modelo puede combinarse con otros modelos de proceso de desarrollo (cascada, evolutivo).
• En cada giro se construye un nuevo modelo del sistema completo.
• El análisis de riesgo requiere la participación de personal con alta cualificación.
• Incorpora objetivos de calidad y gestión de riesgos
• Elimina errores y alternativas no atractivas al comienzo
• Permite iteraciones, vuelta atrás y finalizaciones rápidas
• Cada ciclo empieza identificando:
Los objetivos de la porción correspondiente
Las alternativas
Restricciones
• Cada ciclo se completa con una revisión que incluye todo el ciclo anterior y el plan para el siguiente
VENTAJAS
El modelo en espiral puede adaptarse y aplicarse a lo largo de la vida del software de computadora.
Como el software evoluciona a medida que progresa el proceso, el desarrollador y el cliente comprenden y reaccionan
mejor ante riesgos en cada uno de los niveles evolutivos.
El modelo en espiral permite a quien lo desarrolla aplicar el enfoque de construcción de prototipos en cualquier etapa de
evolución del producto.
El modelo en espiral demanda una consideración directa de los riesgos técnicos en todas las etapas del proyecto y si se
aplica adecuadamente debe reducir los riesgos antes de que se conviertan en problemas
DESVENTAJAS
Resulta difícil convencer a grandes clientes de que el enfoque evolutivo es controlable.
Debido a su elevada complejidad no se aconseja utilizarlo en pequeños sistemas.
Genera mucho tiempo en el desarrollo de sistemas.
METODOLOGÍAS
ÁGILES
Las Metodologías Ágiles son aquellas que permiten adaptar la forma de trabajo a las condiciones
del proyecto, consiguiendo flexibilidad e inmediatez en la respuesta para amoldar el proyecto y su
desarrollo a las circunstancias específicas del entorno.
Un modelo de desarrollo ágil, generalmente es un proceso
o Incremental (entregas frecuentes con ciclos rápidos), también
o Cooperativo (clientes y desarrolladores trabajan constantemente
con una comunicación muy fina y constante),
o Sencillo (el método es fácil de aprender y modificar para el equipo) y finalmente
o Adaptativo (capaz de permitir cambios de último momento).
Las metodologías ágiles proporcionan una serie de pautas y principios junto a técnicas pragmáticas
que hacen que la entrega del proyecto sea menos complicada y más satisfactoria tanto para los
clientes como para los equipos de trabajo, evitando de esta manera los caminos burocráticos de las
metodologías tradicionales, generando poca documentación y no haciendo uso de métodos
formales.
TIPOS DE METODOLOGÍAS ÁGILES DE
DESARROLLO DE SOFTWARE, ¿CUÁLES SON
LAS MÁS USADAS?
Si bien hay varias metodologías ágiles de desarrollo de software diferentes disponibles, algunas de las
más comunes son las que se mencionan a continuación:
Scrum. Es una excelente herramienta para gestionar y controlar proyectos iterativos e
incrementales.
Lean. Subraya la velocidad y la productividad del proceso de trabajo de mejora, y
depende de aportes rápidos y sólidos entre los ingenieros de software y los clientes.
Kanban. Esta metodología es utilizada por las organizaciones que se centran en la
entrega continua sin sobrecargar al grupo de desarrollo. Es un procedimiento destinado
a permitir que los grupos cooperen con mayor éxito.
Programación extrema (XP). Una de las metodologías ágiles más conocidas. Una
forma disciplinada de entregar productos de software de alta calidad, promueve una
alta asociación de clientes, bucles de retroalimentación rápida, pruebas incesantes,
planificación continua y una estrecha colaboración.
Crystal. Una de las metodologías ágiles de desarrollo de software más ligeras y
versátiles. Sus cualidades excepcionales están impulsadas por varios factores como
la estimación grupal, la importancia del marco y las necesidades de la empresa.
Método de desarrollo de sistemas dinámicos (Dynamic Systems Development
Method , DSDM). Se desarrolló para satisfacer la necesidad de ofrecer un marco de
entrega de proyectos estándar de la industria. Pero ha evolucionado en una
herramienta que puede actuar como base para planificar, administrar, ejecutar y
escalar procesos ágiles.
Desarrollo basado en características (Feature-Driven Development, FDD). Es un
proceso de software centrado en el cliente y pragmático, de iteración corta de dos
semanas. Al especificar tareas muy pequeñas, permite una mejor gestión del trabajo
al calcular la entrega del producto en función de las tareas realizadas
BIBLIOGRAFÍAS
https://repositorio.uca.edu.ar/bitstream/123456789/522/1/metodologias-desarrollo-software.pdf
https://es.slideshare.net/khinkhe/modelo-espiral-win-win
https://es.slideshare.net/JeseniaOcaaEscobar1/metodologa-tradicional-52380188
https://www.elconspirador.com/2014/08/30/microsoft-solution-framework/
https://www.programaenlinea.net/proceso-unificado-rational-rup/
https://studentplace98.blogspot.com/2018/09/metodologia-de-desarrollo-de-software.html
BIBLIOGRAFÍAS
MODELADO DE OBJETOS
Bibiana ROSSI, Paola BRITOS y Ramón GARCIA MARTINEZ CAPIS - Centro de Actualización
Permanente en Ingeniería de Software
Escuela de Posgrado. ITBA.
Utilización de UML en Ingeniería del Software con Objetos y Componentes. Perdita Stevens,
Rob Pooley. Addison Wesley. 2002.
https://www.sciencedirect.com/science/article/abs/pii/S0890695599000310