UF2406 - El cliclo de vida del desarrollo de aplicaciones
()
Información de este libro electrónico
Para ello, se desarrollará el proceso de ingeniería del software, planificación y seguimiento, se realizará el diagramado, el desarrollo de la GUI, y por último, se analizará la calidad en el desarrollo del software, pruebas, excepciones y documentación.
Tema 1. Proceso de ingeniería del Software.
1.1 Distinción de las fases del proceso de ingeniería software: especificación, diseño, construcción y pruebas unitarias, validación, implantación y mantenimiento.
1.2 Análisis de los modelos del proceso de ingeniería: modelo en cascada, desarrollo evolutivo, desarrollos formarles, etc.
1.3 Identificación de requisitos: concepto, evolución y trazabilidad.
1.4 Análisis de metodologías de desarrollo orientadas a objeto.
1.5 Resolución de un caso práctico de metodologías de desarrollo que utilizan UML.
1.6 Definición del concepto de herramientas CASE.
Tema 2. Planificación y seguimiento.
2.1 Realización de estimaciones.
2.2 Planificaciones: modelos de diagramado. Diagrama de Gantt.
2.3 Análisis del proceso del seguimiento. Reuniones e Informes.
Tema 3. Diagramado.
3.1 Identificación de los principios básicos de UML.
3.2 Empelo de diagramas de uso.
Tema 4. Desarrollo de la GUI.
4.1 Análisis del modelo de componentes y eventos.
4.2 Identificación de elementos de la GUI.
4.3 Presentación del diseño orientado al usuario. Nociones de usabilidad.
4.4 Empleo de herramientas de interfaz gráfica.
Tema 5. Calidad en el desarrollo del software.
5.1 Enumeración de criterios de calidad.
5.2 Análisis de métricas y estándares de calidad.
Tema 6. Pruebas.
6.1 Identificación de tipos de pruebas.
6.2 Análisis de pruebas de defectos. Pruebas de caja negra. Pruebas estructurales. Pruebas de trayectorias. Pruebas de integración. Pruebas de interfaces.
Tema 7. Excepciones.
7.1 Definición. Fuentes de excepciones. Tratamientos de excepciones. Prevención de fallos. Excepciones definidas y lanzadas por el programador.
7.2 Uso de las excepciones tratadas como objetos.
Tema 8. Documentación.
8.1 Como producir un documento.
8.2 Estructura del documento.
8.3 Generación automática de documentación.
Relacionado con UF2406 - El cliclo de vida del desarrollo de aplicaciones
Libros electrónicos relacionados
Desarrollo de Software Ágil. Extremme Programming y Scrum Calificación: 4 de 5 estrellas4/5Aprende a Modelar Aplicaciones con UML - Tercera Edición Calificación: 2 de 5 estrellas2/5Diseño de Software Calificación: 0 de 5 estrellas0 calificacionesDiseño de arquitecturas .NET orientadas a microservicios Calificación: 3 de 5 estrellas3/5UF2404 - Principios de la programación orientada a objetos Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de Software Calificación: 0 de 5 estrellas0 calificacionesCalidad en el desarrollo de software Calificación: 0 de 5 estrellas0 calificacionesMetodologías ágiles para el desarrollo de software Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de Software: Requisitos, Estimaciones y Análisis Calificación: 0 de 5 estrellas0 calificacionesUF2177 - Desarrollo de programas en el entorno de la base de datos Calificación: 0 de 5 estrellas0 calificacionesUF2218 - Desarrollo de un CMS Calificación: 0 de 5 estrellas0 calificacionesUF2405 - Modelo de programación web y bases de datos Calificación: 0 de 5 estrellas0 calificacionesEl Proceso de Desarrollo de Software: 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesEl Proceso de Desarrollo de Software Calificación: 0 de 5 estrellas0 calificacionesModelo de madurez de ingeniería del software Versión 2.0 (MMIS V.2) Calificación: 0 de 5 estrellas0 calificacionesCurso de Ingeniería de Software Calificación: 4 de 5 estrellas4/5Ciclo de vida de desarrollo ágil: de software seguro Calificación: 0 de 5 estrellas0 calificacionesAgile & Scrum Calificación: 0 de 5 estrellas0 calificacionesISO/IEC 29110 para procesos software en las pequeñas empresas Calificación: 0 de 5 estrellas0 calificacionesEl Libro Práctico Del Programador Ágil Calificación: 5 de 5 estrellas5/5UF1305 - Programación con lenguajes de guión en páginas web Calificación: 0 de 5 estrellas0 calificacionesUF1271 - Instalación y configuración del software de servidor web Calificación: 0 de 5 estrellas0 calificacionesUF1272 - Administración y auditoría de los servicios web Calificación: 0 de 5 estrellas0 calificacionesConceptos Básicos De Scrum: Desarrollo De Software Agile Y Manejo De Proyectos Agile Calificación: 5 de 5 estrellas5/5Aprende a Programar ASP .NET y C# - Segunda Edición Calificación: 0 de 5 estrellas0 calificacionesGuía para la adopción industrial de líneas de productos de software Calificación: 0 de 5 estrellas0 calificacionesAprende a Desarrollar con Spring Framework Calificación: 3 de 5 estrellas3/5El arte de probar: Guía sobre software testing para principiantes. Calificación: 0 de 5 estrellas0 calificacionesCurso de Programación y Análisis de Software - 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesAplicaciones microinformáticas e internet para consulta y generación de documentación. IFCT0310 Calificación: 0 de 5 estrellas0 calificaciones
Negocios para usted
Padre Rico, Padre Pobre de Robert Kiyosaki (Análisis de la obra): La riqueza al alcance de todos Calificación: 4 de 5 estrellas4/5Secretos para cerrar la venta Calificación: 5 de 5 estrellas5/5Ideas que pegan (2ª Edición): Por qué algunas ideas sobreviven y otras mueren Calificación: 5 de 5 estrellas5/5El año de 12 semanas: Logra en 12 semanas lo que otros hacen en 12 meses Calificación: 5 de 5 estrellas5/5Secretos judíos del dinero Calificación: 4 de 5 estrellas4/5Frases que Venden: Descubre cómo promocionar tus productos, atraer clientes y cerrar las ventas Calificación: 4 de 5 estrellas4/523 Hábitos Anti-Procrastinación Cómo Dejar De Ser Perezoso Y Tener Resultados En Tu Vida. Calificación: 4 de 5 estrellas4/5Rica mente: El juego interior de la riqueza Calificación: 5 de 5 estrellas5/5Libertad financiera: Los cinco pasos para que el dinero deje de ser un problema Calificación: 5 de 5 estrellas5/5Las 21 leyes irrefutables del liderazgo, cuaderno de ejercicios: Revisado y actualizado Calificación: 4 de 5 estrellas4/5Colección De Hábitos. 97 Pequeños Cambios De Vida Que Toman 5 Minutos O Menos. Calificación: 4 de 5 estrellas4/5Resumen de El poder del hábito de Charles Duhigg Calificación: 5 de 5 estrellas5/5El secreto de los grandes empresarios Calificación: 4 de 5 estrellas4/5Planeación estratégica. Fundamentos y casos Calificación: 5 de 5 estrellas5/5Administración-Fundamentos: Cómo iniciarse en el estudió de la administración Calificación: 5 de 5 estrellas5/5Vende como loco Calificación: 5 de 5 estrellas5/5Enfócate en resultados: Alto rendimiento para la vida y el trabajo Calificación: 4 de 5 estrellas4/5Libertad, libertad, libertad: Para romper las cadenas que no nos dejan crecer Calificación: 4 de 5 estrellas4/5La cultura organizacional y su impacto en la gestión empresarial: Un acercamiento a tres compañías peruanas Calificación: 4 de 5 estrellas4/5MBA: Guía visual. Todo lo que aprendí en dos años en la escuela de negocios Calificación: 5 de 5 estrellas5/5
Comentarios para UF2406 - El cliclo de vida del desarrollo de aplicaciones
0 clasificaciones0 comentarios
Vista previa del libro
UF2406 - El cliclo de vida del desarrollo de aplicaciones - José Luis Ávila Jiménez
1.1. Distinción de las fases del proceso de ingeniería software: especificación, diseño, construcción y pruebas unitarias, validación, implantación y mantenimiento
1.2. Análisis de los modelos del proceso de ingeniería: modelo en cascada, desarrollo evolutivo, desarrollos formarles, etc
1.3. Identificación de requisitos: concepto, evolución y trazabilidad
1.4. Análisis de metodologías de desarrollo orientadas a objeto
1.5. Resolución de un caso práctico de metodologías de desarrollo que utilizan UML
1.6. Definición del concepto de herramienta CASE
1.6.1. Herramientas de Ingeniería del Software
1.6.2. Entornos de desarrollo
1.6.3. Herramientas de prueba
1.6.4. Herramientas de gestión de configuración
1.6.5. Herramientas para métricas
1.1.Distinción de las fases del proceso de ingeniería software: especificación, diseño, construcción y pruebas unitarias, validación, implantación y mantenimiento
Desde el momento en el que se introdujeron computadores con capacidad para soportar aplicaciones de tamaño considerable en los años sesenta, se descubrió que las técnicas de desarrollo para los hasta entonces pequeños sistemas dejaron progresivamente de ser válidas.
Estas primitivas técnicas consistían básicamente en codificar y corregir, es decir, no existe necesariamente una especificación del producto final, en su lugar se tienen algunas anotaciones sobre las características generales del programa.
Inmediatamente al comienzo de un proyecto se empieza la codificación y simultáneamente se va depurando el programa resultante. Cuando el programa cumple con las especificaciones y parece que no tiene errores se entrega.
Las ventajas de esta forma de trabajar son que no se gasta tiempo en planificación, gestión de los recursos, documentación, etc.
En el caso de que el proyecto es de un tamaño muy pequeño y lo realiza una sola persona no es un mal sistema para producir un resultado pronto, aunque este enfoque no es muy adecuado cuando se trata de desarrollar un trabajo en equipo, como ocurren en el desarrollo de la mayoría de sistemas software
Hoy en día es un método de desarrollo que se usa cuando hay plazos muy breves para entregar el producto final y no existe una exigencia explícita por parte de la organización de usar alguna metodología de ingeniería del software. Puede dar resultado en algunas ocasiones pero la calidad es imprevisible.
Las consecuencias de este enfoque, que desembocaron en lo que se denomino la crisis del software, fueron:
–El costo de los proyectos era mucho mayor de lo originalmente previsto.
–El tiempo de desarrollo también excedía lo proyectado.
–La calidad del código producido era imprevisible y en promedio baja.
–Era prácticamente imposible mantener las aplicaciones así desarrolladas.
Sabías que
La Ingeniería del software surgió en aquella época como disciplina con el objetivo de idear métodos y técnicas que solucionaran estos problemas y proporcionaran un marco de trabajo técnico adecuado para llevar acabo la construcción del software.
La Ingeniería del Software se puede definir como aquella rama de las ciencias de la computación que trata del establecimiento de los principios y métodos de la ingeniería, orientados a obtener software económico, que sea fiable y funcione de manera eficiente sobre máquinas reales.
El software requiere de un tiempo y esfuerzo considerable para ser desarrollado, y durante aún más tiempo debe de estar en uso antes de ser retirado o substituido.
Durante todo este período de tiempo se identifican una serie de etapas que en su conjunto se denominan ciclo de vida del software
.
Las etapas principales de cualquier ciclo de vida son las siguientes:
–Análisis: se identifican los requisitos que debe de cumplir el software y se construye un modelo de dichos requisitos.
–Diseño: A partir del modelo de análisis se identifican los procesos y las estructuras de datos en las que se descomponen el sistema, y además se construye un modelo del sistema a desarrollar.
–Codificación: se construye el sistema en sí mismo.
–Prueba: se comprueba que el sistema construido es correcto y cumple con el modelo de requisitos.
–Mantenimiento: esta fase tiene lugar tras la entrega del producto acabado y en ella se trata de asegurar que el sistema siga funcionando y adaptándose a nuevos requisitos.
Desde cualquiera de ellas se puede volver a la anterior si el desarrollo posterior detecta algún error cometido en las fases anteriores.
Dependiendo de la manera en que se estructuren estas etapas surgen los diversos ciclos de vida del software los cuales se pueden clasificar en tres tipos genéricos, ciclos de vida en cascada, ciclos de vida en espiral o incrementales y ciclos de vida Orientados a Objetos
1.2.Análisis de los modelos del proceso de ingeniería: modelo en cascada, desarrollo evolutivo, desarrollos formarles, etc
El ciclo de vida en cascada, inicialmente propuesto por Royce en 1970, fue el primer ciclo de vida que se propuso y es, actualmente el más ampliamente seguido por una multitud de organizaciones y empresas de desarrollo.
Este modelo tiene la posibilidad de hacer iteraciones o repeticiones, es decir, que si durante las modificaciones y cambios que se hacen en la fase de mantenimiento se puede detectar la necesidad de cambiar algo en el diseño, por ejemplo, lo cual significa que se van a hacer los cambios que sean necesarios en la codificación y se tendrán que realizar de nuevo las pruebas.
Sin embargo, si se tiene que volver a una de las fase anteriores al mantenimiento hay que realizar de nuevo el resto de las etapas hasta llegar al final.
Después de cada etapa se hace una revisión para chequear si se puede pasar a la siguiente etapa. En el se trabaja en base a documentos, es decir, la entrada y la salida de cada etapa es un tipo de documento específico.
Este ciclo de vida conlleva una serie de ventajas:
–La planificación del proyectoes sencilla y fácil de hacer.
–La calidad del producto si se aplica correctamente es alta.
–Permite trabajar con empleados con menor cualificación.
Sin embargo también presenta una serie de inconvenientes bastante graves que hacen que no se suela implementar tal cual
en la realidad:
–Su mayor inconveniente es la necesidad de detallar todos los requisitos al comienzo del proyecto. Lo normal es que el cliente no tenga perfectamente claras las especificaciones del software que desea, o puede ser que surjan otras necesidades no previstas durante el proyecto.
–Si se cometen errores en una fase y no se detectan a tiempo es difícil volver atrás, ya que una vez que se ha finalizado una fase y se ha generado la documentación correspondiente, un paso atrás representa repetir la fase completamente
–No se desarrolla el producto hasta el final, esto quiere decir que si se tiene un fallo la fase de análisis este probablemente no será descubierto hasta la entrega, con el lo que conlleva un gasto inútil de recursos. Debido a esto el cliente no ve resultados hasta el final, con lo que puede impacientarse.
–No se tienen indicadores fiables del progreso del trabajo, lo cual puede llevar al síndrome del 90%, es decir, las tareas se indican como realizadas en un 90% pero el restante 10% va a necesitar de un esfuerzo considerablemente mayor que el resto.
Sin embargo fue el primer modelo de desarrollo de software que se planteó por lo que ha influenciado numerosos ciclos ce vida que se han propuesto posteriormente.
El ciclo de vida en cascada ha inspirado numeroso modelos de ciclos de vida, como el ciclo de vida en V, el modelo sashimi, o el ciclo de vida en espiral.
El ciclo de vida en V fue propuesto por Alan Davis, y tiene las mismas fases que el ciclo de vida en cascada pero teniendo en consideración en consideración el nivel de abstracción de cada una.
Se considera que la fase con mayor nivel de abstracción es la fase de análisis, para posteriormente pasar a trabajar a menos nivel en el diseño.
En la codificación se trabaja al mínimo nivel de abstracción. Posteriormente durante las distintas fases de prueba se va subiendo de nivel de abstracción
fase además de utilizarse como entrada para la siguiente, sirve para validar o verificar otras fases posteriores . La estructura de las tareas es la que se muestra en el esquema.
Una fase además de utilizarse como entrada para la siguiente, sirve para validar o verificar otras fases posteriores.
De esta forma la tarea de validación consiste en comprobar los resultados del análisis, es decir, si el software cumple con los requisitos que se le exigieron al principio del desarrollo.
Esto se hace durante la fase de mantenimiento en la que el usuario final durante su trabajo del día a día informa al desarrollador de aquellos aspectos que no cumplen con lo especificado y determinado durante el análisis.
De la misma forma surge el concepto de Verificación, en el que se comprueba que el software funciona correctamente acorde al diseño que se ha realizado.
Estos dos conceptos, verificación y validación son los mayores aportes de este modelo de ciclo de vida, y se han extendido a toda la ingeniería del software.
Definición
Podemos definir verificación como el proceso para determinar que un sistema software está libre de errores, y la validación como el proceso para determinar que un determinado sistema cumple con los requisitos esperados.
El modelo Sashimi es otro modelo de ciclos de vida. Si seguimos el modelo en cascada como fue definido, una fase sólo puede empezar cuando ha terminado la anterior.
En el caso de este ciclo de vida, sin embargo, se permite un solapamiento entre fases. Por ejemplo, sin tener terminado del todo el diseño se puede comenzar a implementar.
Sabías que
El nombre sashimi
deriva del estilo de presentación en rodajas de pescado crudo en Japón.
Una ventaja de este modelo es que no necesita generar tanta documentación como el ciclo de vida en cascada puro debido a que se continúa con el mismo grupo de trabajo durante las distintas fases y por lo tanto conocen el proyecto en profundidad.
Los problemas que plantea este modelo de ciclo de vida son básicamente los mismos que el modelo de ciclo de vida en cascada, pero agravados, y son los siguientes:
–Es más difícil que en ciclo de vida clásico el controlar el progreso del proyecto, debido a la falta de puntos de referencia. Debido a que las fases se solapan constantemente, los finales de fase ya no son un punto de referencia específico.
–Al realizar las fases en paralelo, pueden ocurrir a menudo problemas de comunicación entre los miembros del equipo, de los que pueden surgir inconsistencias que necesiten de cambios y modificaciones alterando la planificación.
La fase de concepto
se añade en este modelo de ciclo de vida y en ella se trata de definir los objetivos del proyecto, beneficios, tipo de tecnología y tipo de ciclo de vida.
La fase de diseño se divide a su vez en dos fases diferentes, el diseño arquitectónico y el diseño detallado o de componentes.
En la fase de diseño arquitectónico es diseño de alto nivel de abstracción, el detallado es de bajo nivel de abstracción, cuando se especifican en detalle cada uno de los componentes del software.
Al terminar una iteración se comprueba que lo que se ha realizado cumple con los requisitos que se establecieron al principio. También se verifica que funciona correctamente y es el propio cliente quien evalúa el producto para ver si es satisfactorio para resolver su necesidad.
En el ciclo de vida Sahimi no existe una diferencia muy clara entre cuándo termina el proyecto y cuándo empieza la fase de mantenimiento ya que cuando hay que hacer un cambio, éste puede consistir en un nuevo ciclo.
Presenta numerosas ventajas en cuanto a su utilización:
–No necesita una definición detallada 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 frente a la solicitud del usuario.
–El riesgo en general es menor porque, si todo se hace mal, sólo se pierde el tiempo y recursos invertidos en una iteración (las anteriores iteraciones están bien por definición).
–El riesgo de sufrir retrasos es menor, ya que se identifican los problemas en etapas tempranas cuando aun hay tiempo de subsanarlos.
Sin embargo también presenta algunos inconvenientes que conviene tener en cuenta si se decide optar por el a la hora de realizar un proyecto:
–Es difícil llevar a cabo una evaluación correcta de los riesgos. Por el propio concepto de riesgo, este lleva implicado una dosis de incertidumbre que limita el hecho de poder realizar una estimación adecuada.
–Necesita de la participación continua de la parte cliente, esfuerzo al que algunos clientes pueden no estar de acuerdo en realzar, por lo que convienen aclarar cual va a ser su participación antes de comenzar.
Importante
Los tipos de ciclos de vida que se han visto hasta ahora se refieren al análisis y diseño estructurados, pero hay que tener en cuenta que el desarrollo de sistemas orientados a objetos tiene la particularidad de estar basados en un diseñado de componentes que se relacionan entre sí a través de una serie de interfaces, o lo que es lo mismo, son más modulares y por lo tanto el trabajo se puede particionar en un conjunto de pequeños proyectos o miniproyectos.
Esquema de ciclo de vida incremental
Además, hoy en día se trata de tender a reducir los riesgos y, en este sentido, el ciclo de vida en cascada no proporciona muchas ventajas. Debido a todo esto, el ciclo de vida típico en una metodología de diseño orientado a objetos alguna variación del ciclo de vida en espiral.
Un ejemplo de ciclo de vida Orientado a Objetos es elllamado modelo fuente
, que fue desarrollado por Henderson-Sellers y Edwards en 1990.Es un tipo de ciclo de vida pensado para ser aplicado siguiendo el paradigma de la orientación a objetos y posiblemente el más seguido con la ventaja de que permite un desarrollo solapado e iterativo.
Un proyecto en modelo fuente se divide en las siguientes fases:
–Planificación del negocio.
–Construcción: Es la más importante y se subvidide a su vez en otras tantas actividades: Planificación, Investigación, Especificación, Implementación y Revisión.
–Entrega o liberación
.
La primera y la tercera fase son independientes de la metodología de desarrollo orientado a objetos. Que se utilice Además de las tres fases, existen dos periodos:
–Crecimiento: Es el tiempo durante el cual se esta construyendo el sistema.
–Madurez: Es el periodo de mantenimiento del producto. En el cada mejora se planifica igual que el periodo anterior, o sea, llevando a cabo las fases de Planificación del negocio, Construcción y Entrega.
Cada una de las clases de la aplicación desarrollada puede tener un ciclo de vida propio debido a que cada clase puede estar en una fase diferente en un momento cualquiera.
Un esquema de su estructura es el siguiente:
Esquema de ciclo de vida orientado a objetos
La fase de análisis de requisitos comienza tras el análisis del sistema donde se va a encuadrar el producto que se va desarrollar y tiene como objetivo crear un modelo de los requisitos que debe de cumplir el software. Este modelo se plasmará en un documento, la especificación de requisitos del software
que será el producto final de esta fase y el punto de comienzo de la siguiente fase, el diseño.
El análisis de requisitos podemos subdividirlo en tres partes, la búsqueda de requisitos y el modelado de requisitos.
La búsqueda de requisitos tiene como objetivo descubrir las verdaderas necesidades del cliente que ha encargado el desarrollo del sistema software.
En la mayoría de las ocasiones el cliente que desea un desarrollo no tiene al comienzo muy claro que producto necesita. En otras ocasiones puede tener claro que es lo que quiere pero la labor del ingeniero del software es determinar que es lo que necesita.
Para ello se pueden utilizar varias técnicas, como las que se definen a continuación.
1.3.Identificación de requisitos: concepto, evolución y trazabilidad
Definición
Entrevistas: reuniones entre el cliente y el equipo desarrollador, en la que se determinan los requisitos del sistema.
Estas siempre la tendremos, al menos al inicio del proyecto, aunque conviene que se hagan con cierta frecuencia para que se expliciten los requisitos y estos se refinen. Conviene que las entrevistas no solamente sean con la alta dirección o la gerencia, sino que en ella se involucren otros actores, preferiblemente los usuarios que van a trabajar con la aplicación final y que conocerán mucho menos los rusitos de esta.
Definición
Desarrollo conjunto de aplicaciones (JAD): Es un tipo de entrevista con muchos participantes desarrollada por IBM que se apoya en la dinámica de grupos. LaPlanificación conjunta de requisitos (JRP) es un subconjunto de las sesiones JAD, dirigidas a la alta dirección y los productos que resultan de ellas son los requisitos de alto nivel o estratégicos.
Las entrevistas de JAD son unas entrevistas muy estructuradas en las que hay participantes de todos los niveles de la organización que van a estar involucrados en el proyecto de software. Siguiendo un guión previamente marcado se van explicitando uno a uno los requisitos de la aplicación.
En el caso del JRP se trata de detectar los requisitos estratégicos de la organización, que sirvan como base de otros desarrollos. Por esta razón en ella se involucran sobre todo elementos de la alta dirección de la empresa cliente y de la empresa desarrolladora.
Definición
Brainstorming: es otro tipo de entrevista de grupo. A diferencia del JAD que está fuertemente estructurada, se caracteriza precisamente por lo contrario, ser de una naturaleza muy libre.
La principal característica del brainstorming es que los participantes han de sentirse libres de expresar su opinión o inquietudes en un entrono sin críticas que coarten la expresión. Posteriormente las ideas que se recopilen se refinan y se irán detectando sus ventajas e inconvenientes.
Definición
Prototipos: un prototipo es una versión reducida de la aplicación final. Se puede construir para obtener y validar requisitos.
Casos de uso: son una forma de especificar los requisitos de un sistema. Un caso de uso consiste en una interacción de algo externo al sistema y el sistema.
Aunque es una técnica definida dentro del ambiente del análisis orientado a objetos no tiene que ver con objetos, se podría utilizar perfectamente dentro del análisis estructurado.
Sabías que
Los casos de uso fueron introducidos por Jacobson en 1992 para ser utilizado con la metodología de análisis orientada a objetos que había desarrollado.
Un caso de uso describe la interacción entre un actor externo al sistema y el sistema con texto en lenguaje natural y representa los requisitos funcionales desde el punto de vista del usuario y por lo tanto produce un resultado observable por éste.
De esta manera el sistema que se va a desarrollar se presenta como una serie de interacciones entre los usuarios y el sistema.
Especificando así el sistema, se empiezan a determinar los límites del sistema y que es lo que se espera que este haga desde el punto de vista del usuario
El modelado de requisitos tiene como objetivo crear un modelo del problema que se pretende solventar y de los requisitos que debe de cumplir el sistema a implementar.De esta forma sirva para comprobar la coherencia de los requisitorios y servir como punto de partida del diseño, que consistirá en crear otro modelo, pero esta vez de la solución propuesta.
Dentro del modelado de los requisitos en la actualidad conviven dos tendencias:
–Análisis orientado a objetos: representa el problema en términos de clases, propiedades de estas clases y relaciones entre ellas.
–Análisis estructurado: crea un modelo con tres vertientes, modela los datos, los procesos y el comportamiento haciendo uso de varias herramientas.
La trazabilidad de requisitos es una subdisciplina de la gestión de requisitos en el desarrollo de software y la ingeniería de sistemas .
La trazabilidad de requisitos se refiere a la documentación generada durante la vida de un requisito y proporcionar información sobre los enlaces que tengan entre sí varios requisitos asociados.
La trazabilidad lo que permite es que los usuarios puedan encontrar fácilmente el origen de cada requisito y el seguimiento de cada cambio realizado a este requisito. Para este fin, es necesario documentar cada cambio realizado al requisito.
Importante
La trazabilidad se puede definir de manera genérica como la «capacidad de interrelacionar cronológicamente las entidades singularmente identificables de una manera significativa.
Lo que importa en la gestión de requisitos no es una evolución temporal tanto como una evolución estructural: es decir, dejar un rastro de que los requisitos que se derivan de, cómo se cumplen, la forma en que se ponen a prueba, y qué impacto producirá si se cambian.
Los requisitos provienen de diferentes fuentes, como el directivo que encarga el producto, el gerente de marketing y el usuario. Estas personas tienen diferentes visiones y requisitos sobre el producto.
Con el uso de requisitos de trazabilidad, una característica implementada se puede buscar de nuevo a la persona o grupo que lo quiso durante la búsqueda y elicitación de requisitos.
Esto puede ser utilizado durante el proceso de desarrollo para priorizar el requisito, la determinación de cómo de valioso es el requisito para un determinado usuario.
También se puede utilizar después de la implementación, en la fase de mantenimiento, cuando los estudios muestran que una característica que no se usa, para ver por qué se requirió originalmente.
La trazabilidad de requisitos a la documentación de las relaciones entre los requisitos y otros elementos de desarrollo.
Su finalidad es la de facilitar la calidad global del producto o productos en fase de desarrollo, la comprensión del producto en fase de desarrollo y su elemento final, el producto terminado así como el mantenimiento adaptativo, es decir la capacidad de gestionar un cambio solicitado por el cliente
No sólo los propios requisitos deben ser rastreados sino también la relación con los requisitos de todos los elementos asociados a el, como los modelos, resultados de análisis, casos de prueba, procedimientos de prueba, resultados de pruebas y documentación de todo tipo.
Incluso las personas y grupos de usuarios asociados con los requisitos deben ser trazables.
Definición
Una definición muy común de trazabilidad de los requisitos: se refiere a la capacidad de describir y seguir la vida de un requisito, tanto hacia delante como hacia atrás(es decir, desde sus orígenes, a través de su desarrollo y especificación, para su posterior distribución y uso, y a través de todos los períodos del ciclo de vida así como de iteraciones en cualquiera de sus fases.
Si bien esta definición enfatiza el seguimiento de la vida de un requisito a través de todas las fases de desarrollo, no señala explícitamente que la trazabilidad puede documentar las relaciones entre muchos tipos de elementos de desarrollo, como los requisitos, declaraciones de especificaciones, diseños, pruebas, modelos y componentes desarrollados.
Por las razones expuestas la definición anterior se puede completar formulándose de la siguiente manera:
Trazabilidad de requisitos se refiere la capacidad de definir, capturar y seguir las huellas dejadas por las necesidades capturadas en otros elementos del entorno de desarrollo de software y la huella dejada por dichos elementos sobre los requisitos.
Esta definición enfatiza el uso de la trazabilidad para documentar la transformación de un requisito en el diseño y desarrollo de elementos.
Importante
En el campo de la ingeniería de requisitos, la trazabilidad es la comprensión de cómo los requisitos de alto nivel - los objetivos, metas, objetivos, aspiraciones, expectativas, necesidades - se transforman en requisitos de bajo nivel y por lo tanto, se refiere principalmente a las relaciones entre las capas de información y niveles de abstracción.
La relación principal se hace referencia en la trazabilidad de requisitos se puede caracterizar como satisfacción. Es decir se trata de responder a la pregunta: ¿cómo es un requisito satisfecha por elementos del software desarrollado? Es decir, indicar qué elemento satisface un requisito.
Otras relaciones indican la manera en que puede un requisito ser rastreado desde el software en producción hasta una necesidad.
En este caso se habla de una relación de «verificación», o sea se trata de responder a ¿cómo es un requisito verificado por los elementos de la prueba?
Uno de los elementos fundamentales a la hora de poder determinar la traza de unos requisitos es la matriz de trazabilidad.
Una matriz de trazabilidad es un documento, por lo general en forma de una tabla, que se correlaciona dos documentos que mantienen una relación de muchos a muchos para determinar la integridad de la relación.
Se utiliza con frecuencia con requisitos de alto nivel (estos a menudo consisten en requisitos de comercialización) y los requisitos detallados del producto con los elementos que los satisfacen de requisitos de diseño de alto nivel, diseño detallado, plan de pruebas y casos de prueba .
Una matriz de trazabilidad de requisitos se puede utilizar para comprobar si se están cumpliendo los requisitos actuales del proyecto, y para ayudar en la creación de una solicitud de proyecto, de la especificación de requisitos de software, las tareas de diversos documentos de entrega, y el plan del proyecto.
La forma más común de utilizarla es tomar el identificador para cada uno de los elementos de un documento y colocarlos en la columna de la izquierda. Los identificadores para el otro documento se colocan en la fila superior.
Cuando un elemento de la columna de la izquierda se relaciona con un elemento en la parte superior, se coloca una marca en la celda de intersección. Se debe determinar si una relación debe existir para cada elemento de la matriz.
El número de relaciones se suman para cada fila y cada columna. Este valor indica el grado de interrelación de los dos elementos. Los valores de cero indican que no existe ninguna relación. Los valores elevados implican que la relación es muy compleja y debe simplificarse.
Para facilitar la creación de matrices de trazabilidad, es recomendable añadir las relaciones con los documentos fuente, tanto para la trazabilidad hacia atrás y trazabilidad hacia delante.
De esta manera, cuando un elemento se cambia en un documento línea base, es fácil ver lo que necesita ser cambiado en la otra.
Ejemplo de una matriz de requisitos es la siguiente:
1.4.Análisis de metodologías de desarrollo orientadas a objeto
El proceso de construcción del software requiere, como cualquier otra ingeniería, identificar las tareas que se han de realizar sobre el software y aplicar esas tareas de una forma ordenada y efectiva.
Además el desarrollo del software se debe realizar por un conjunto coordinado de personas simultáneamente, y por lo tanto sus esfuerzos deben estar dirigidos por un mismo plan de trabajo o metodología que permita estructurar las diferentes fases del desarrollo.
En la literatura sobre ingeniería del software existen muchas definiciones sobre lo que es una metodología. Más o menos todas ellas coinciden en que debería tener al menos las siguientes características:
–Define como se divide un proyecto en fases y las tareas a realizar en cada una.
–Para cada una de las fases está especificado cuáles son las entradas que recibe y las salidas que produce.
–Tienen alguna forma de gestionar el proyecto.
Definición
Teniendo esto en cuenta estas características se puede dar una definición, escueta, pero no por eso menos completa de metodología como un modo sistemático de producir software.
El objetivo de una metodología será crear un producto software que cumpla con las siguientes características:
–Adecuación: el sistema satisface las expectativas del cliente o usuario.
–Mantenibilidad: facilidad para realizar cambios una vez que el sistema está funcionando
–Usabilidad: es la facilidad en aprender a manejar el sistema por parte de un usuario final.
–Fiabilidad: es la capacidad de un sistema de funcionar correctamente durante un tiempo dado. Se diferencia de la corrección en que lo que mide es el tiempo, es decir, no se trata del número absoluto de defectos en el sistema sino de los que se manifiestan en un intervalo de tiempo; está muy relacionada con la siguiente característica.
–Disponibilidad: probabilidad de que el sistema esté funcionando en un instante dado.
–Corrección: densidad de defectos mínima.
–Eficiencia: el sistema es capaz de realizar su tarea con el mínimo consumo de recursos necesario
Existen dos grupos de metodologías en función de la idea con la que se aborda el problema: metodologías estructuradas y metodología orientada a objetos.
–Metodología estructurada: estas metodologías consisten en la primera aproximación a los problemas planteados por la Ingeniería del Software. Estas metodologías están en general orientada a procesos, es decir, se centra en especificar y descomponer la funcionalidad del sistema.
Es decir, de lo que se trata es de ir especificando sé es lo que va a hacer el sistema y como lo va a a hacer desde el punto de vista de la máquina.
La mentalidad que subyace al diseño estructurado es tratar de dividir el sistema en partes más pequeñas que puedan ser resueltas por algoritmos sencillos y qué información se intercambian.De esta manera se buscó en primer lugar resolver los problemas que se habían detectado por la creación de software de manera artesanal.
Este tipo de metodologías fueron desarrollándose durante los años 70 y siguen siendo muy utilizadas, sin embargo se han desarrollado muchos enfoques posteriores que permiten abordar el problema de la complejidad del software de formas mas sofisticadas.
–Metodologías orientadas a objetos: Es una aproximación posterior y más avanzado. Se basa en as anteriores, pero busca unificar los procesos y la información en las mismas entidades, lo que se denominan los tipos abstractos de datos.
En el diseño orientado a objetos la idea es identificar los tipos de datos que hay que utilizar, qué características tienen y cómo se relacionan.
Actualmente cuenta con mayor número de seguidores y prácticamente en los últimos años esta sustituyendo a la anterior.
Importante
Las metodologías orientadas a objeto cuentan con una serie de ventajas importantes como el hecho de estar basadas en componentes, lo que significa que es más fácil reutilizar código hecho por terceras personas.
Otra ventaja importante es que las aplicaciones son más fáciles de mantener debido a que los cambios están más localizados y es más sencillo añadir nuevos requisitos o modificar los existente.
Sabías que
Durante muchos años el término orientado a objetos se usó para referirse a un enfoque de desarrollo de software que usaba uno de los lenguajes orientados a objetos (C++,Eiffel, Smalltalk, Java). Hoy en día el paradigma OO encierra una completa visión de la ingeniería del software.
Ejemplo
Para entender la visión orientada a objetos, consideremos un ejemplo de un objeto del mundo real, por ejemplo una silla.
Silla es un miembro (o instancia) de una clase mucho más grande de objetos que llamaremos Mobiliario. Un conjunto de atributos genéricos puede asociarse con cada objeto, en la clase Mobiliario. Por ejemplo, todo mueble tiene un costo, dimensiones, peso, localización y color, entre otros muchos posibles atributos.
Estos son aplicables a cualquier elemento sobre el que se hable, una mesa o silla, un sofá o un armario. Como Silla es un miembro de la clase Mobiliario, hereda todos los atributos definidos para dicha clase.
Todo objeto de una clase puede manipularse de varias