Teórico - 1er Parcial
Teórico - 1er Parcial
Teórico - 1er Parcial
Un conjunto estructurado de actividades necesarias para desarrollar un sistema de software. Muchos de los procesos de
software son diferentes, pero todos implican:
● Especificación - la definición de lo que el sistema debe hacer; entender cuáles son los servicios que tiene que proveer
nuestro sistema (ingeniería de requerimientos: descubre cuáles son las necesidades del usuario final)
● Diseño e implementación - la definición de la organización del sistema y la implementación del sistema;
● Validación - la comprobación de que hace lo que quiere el cliente.
● Evolución - el cambio del sistema en respuesta a las necesidades cambiantes de los clientes. Cuando el producto
entra en operación, pero no nos asegura que esté 100% libre de errores.
Un modelo de proceso de software es una representación abstracta de un proceso, genera las metodologías de desarrollo.
Se presenta una descripción de un proceso a partir de una perspectiva particular.
Cuando describimos y discutimos los procesos, por lo general hablamos de las actividades en estos procesos, como la
especificación de un modelo de datos, el diseño de una interfaz de usuario, etc., y el ordenamiento de estas actividades.
● Productos, que son los resultados de una actividad del proceso (cada producto es un proyecto);
● Roles, que reflejan las responsabilidades de las personas involucradas en el proceso;
Pre-y post-condiciones, que son declaraciones que son verdaderas antes y después de una actividad de proceso se ha
promulgado o elaborado un producto.
● En un desarrollo dirigido por plan todas las actividades (están puestas en fases) del proceso se planifican con
antelación y el progreso se mide en contra de este plan. No se puede avanzar a la siguiente fase si no terminé con la
anterior y se realiza en determinado orden.
● En los procesos ágiles, la planificación es gradual y es más fácil para cambiar el proceso para reflejar los requisitos
cambiantes de los clientes.
● En la práctica, la mayoría de los procesos prácticos incluyen elementos de ambos enfoques el dirigido por plan y el
ágil.
● No hay procesos de software correctos o incorrectos.
Modelos de procesos de SW
• El modelo de cascada: Modelo dirigido por Plan. Fases separadas y distintas de especificación y desarrollo.
• El desarrollo incremental: Especificación, desarrollo y validación se intercalan. Puede ser el dirigido por plan o ágil.
• Ingeniería de software orientado a reutilización: El sistema se ensambla a partir de componentes existentes Puede
ser el dirigido por plan o ágil.
En la práctica, la mayoría de los grandes sistemas se desarrollan mediante un proceso que incorpora elementos de
todos estos modelos.
1
• Requerimiento: son las necesidades y funcionalidades que debe brindar un sistema y sus limitaciones (memoria,
cantidad de usuarios conectados de manera concurrente)
Modelo de cascada
1. Implica ver el sistema de manera completa, como un todo. Entrevistas a usuarios finales, a los roles que utilizaran el
sistema, ver las necesidades y como se negocian los requerimientos. (si el proceso es grande puede llevar hasta 6
meses). Una vez definidos y controlados paso al siguiente ->
2. Diseño de SW: Modelado del sistema y la estructura.
3. Empiezo a generar el código. Voy haciendo pruebas de desarrollo para ver que todo ande OK pero no es el testing final
4. Si está todo bien se integra y se hace un testing general por otro equipo
5. Finalmente, si todo anda bien se empieza a operación, pero puede haber errores, ahí entra mantenimiento. Los
cambios que impactan en los requerimientos. Y volvemos al paso 1
● Inflexible, la división del proyecto en fases estructuradas hace difícil responder a las necesidades cambiantes de los
clientes. Por lo tanto, este modelo sólo es apropiado cuando los requisitos son bien entendidos y los cambios serán
bastante limitados durante el proceso de diseño.
2
● El modelo de cascada se utiliza sobre todo para los grandes proyectos de ingeniería de sistemas especialmente si
un sistema se desarrolla en varios lugares. En estas circunstancias el modelo de cascada ayuda a coordinar el trabajo
● El cliente no recibe nada funcional hasta que se terminó toda la cascada.
● Proceso crítico, después de que el producto está en operación, no se pueden hacer errores sin tener que volver a
arrancar el proyecto de 0.
Ventajas
El desarrollo incremental
Beneficios
● El costo de atender las necesidades cambiantes de los clientes se reduce: la cantidad de análisis y la documentación
que tiene hacerse de nuevo es mucho menor que la que se requiere con el modelo de cascada.
● Es más fácil obtener retroalimentación de los clientes en el trabajo de desarrollo: los clientes pueden hacer
comentarios sobre el avance del desarrollo del software y probar lo que se ha implementado.
● Más rápida entrega y despliegue de software de utilidad para el cliente: los clientes pueden usar y obtener valor a
partir del software más rápidamente de lo que es posible con un proceso de cascada.
● Podemos corregir a tiempo los problemas que se presenten en funcionalidades críticas.
Problemas
● El proceso no es visible. Problema con la gestión de proyectos: los gerentes necesitan entregas regulares para medir
el progreso. No es rentable producir documentos que reflejen todas las versiones del sistema.
● Estructura del sistema tiende a degradarse (el SW y la documentación) a medida que se añaden nuevos incrementos:
se gasta menos tiempo y dinero en la refactorización para mejorar el software, lo que tiende a corromper su
estructura (SW de menor calidad). La incorporación de nuevos cambios se vuelve cada vez más difícil y costoso.
● Si no se pregunta no hay orden de prioridad. No se sabe cuál es la funcionalidad critica.
Se basa en la reutilización sistemática de código, los sistemas se integran a partir de componentes o sistemas existentes.
● Análisis de requerimiento;
● Análisis de los componentes;
3
● Modificación de requerimientos; pero cubriendo las mismas necesidades y lograr las mismas funcionalidades, incluso
maximizarlas.
● Configuración del sistema con la reutilización;
● Desarrollo e integración. Es difícil integrar todo
Tipos de componentes de SW
● Los servicios Web que se desarrollan de acuerdo a los estándares de servicio y que están disponibles para la
invocación remota.
● Colecciones de objetos que se desarrollan como un paquete para ser integrado con un marco de componentes
tales como. NET o J2EE.
● Sistemas autónomos de software (COTS) que están configurados para su uso en un entorno particular.
● Ya no se desarrollan más, solo se configuran para poder trabajar con ellos.
Actividades de Proceso
● Procesos de software reales son secuencias intercalados de actividades técnicas, de colaboración y de gestión con
el objetivo general de la especificación, diseño, implementación y prueba de un sistema de software.
● Las cuatro actividades básicas del proceso son: especificación, desarrollo, validación y evolución y están
organizados de manera diferente según el proceso de desarrollo. En el modelo de cascada, se organizan en
secuencia, mientras que en el desarrollo incremental son intercalados.
Especificaciones de SW
El proceso de establecer qué servicios son necesarios y las limitaciones de funcionamiento (cant de usuarios sin que se
rompa todo) y desarrollo (usar determinados lenguajes, DB, calidad) del sistema.
● Estudio de factibilidad: ¿Con la tecnología, presupuesto y tiempo, puedo o no? Hacer una lista general para ver si
se lleva a cabo o no.
○ ¿Es técnicamente y financieramente factible para construir el sistema?
● Requerimientos, obtención y análisis (se realiza si el anterior paso es posible), ver incoherencias, contradicciones,
etc. y se va documentando hasta tener la documentación definida.
○ ¿Que requieren los diferentes actores del sistema o esperan del sistema?
● Especificación de Requerimientos (documentación definida)
○ Definición de los requisitos en detalle. Si o si verificable
● Validación de Requerimientos
○ Comprobación de la validez de los requisitos. Volver a leer con el interesado para ver si es lo que necesitan
o no.
4
Proceso de ingeniería de requerimientos
Diseño de SW y la implementación
Actividades de diseño
● Diseño arquitectónico, donde se identifica la estructura general del sistema, los componentes principales (a veces
llamados subsistemas o módulos), sus relaciones y la forma en que se distribuyen.
● Diseño de la interfaz, donde se definen las interfaces entre los componentes del sistema.
● Diseño de componentes, donde se toma cada componente del sistema y el diseño de cómo se va a operar.
● Diseño de base de datos, donde se diseña la estructura de datos del sistema y de cómo éstos han de estar
representados en una base de datos.
Validación del SW
● Verificación y validación (V & V) está destinado a demostrar que un sistema cumple con su especificación y cumple
con los requisitos del cliente.
● Involucra procesos de control, revisión y prueba del sistema.
5
● Las pruebas del sistema implican ejecutar el sistema con casos de prueba que se derivan de la especificación
utilizando datos reales.
● La prueba es la actividad de V & V más utilizada.
Etapas de prueba
Pruebas de Desarrollo o componente. (de caja blanca, porque las hace el que hizo el código)
● Pruebas del sistema como un todo. El ensayo de las propiedades emergentes es particularmente importante. Se
realiza por un equipo de testing.
● Las pruebas realizadas por el cliente para verificar que el sistema cumple con sus necesidades.
6
Problema del cambio
Evitar el Cambio, donde el proceso de software incluye actividades que pueden anticipar posibles cambios para evitar
repetir el trabajo. Por ejemplo, un prototipo del sistema puede ser desarrollado para mostrar algunas de las características
clave del sistema para los clientes.
Tolerancia al Cambio, en el que el proceso está diseñado de modo que los cambios pueden afrontarse con un costo
relativamente bajo. Esto implica alguna forma de desarrollo incremental. Los cambios propuestos pueden implementarse
en incrementos que aún no se han desarrollado. Sólo un único incremento (una pequeña parte del sistema) debe ser
alterado para incorporar el cambio.
SW prototipado
Un prototipo es una versión inicial de un sistema que se utiliza para demostrar conceptos y probar opciones de diseño. Un
prototipo se puede utilizar en:
Beneficios
Desarrollo de prototipos
● Prototipo debe centrarse en las áreas del producto que no se conocen bien
● La comprobación de errores y recuperación pueden no estar incluidos en el prototipo
● Centrarse en los requisitos funcionales y no en los no funcionales tales como la fiabilidad y la seguridad.
7
Prototipos desechables
Los prototipos deben desecharse después de desarrollo ya que no son una buena base para un sistema de producción:
● Puede ser imposible para ajustar el sistema para cumplir con los requisitos no funcionales;
● Los prototipos son normalmente indocumentados;
● La estructura del prototipo se suele degradarse a través de un cambio rápido;
● El prototipo probablemente no va a cumplir con los estándares de calidad normal de la organización.
Entrega incremental
● En lugar de entregar el sistema en una sola vez, el desarrollo y la entrega se desglosan en incrementos, con cada
incremento se entrega de parte de la funcionalidad requerida.
● Requisitos de usuario se priorizan y se incluyen los requisitos de más alta prioridad en incrementos tempranos.
● Una vez que se inicia el desarrollo de un incremento, los requisitos están congelados, aunque los requisitos para
incrementos posteriores pueden seguir evolucionando.
DESARROLLO AGIL DE SW
Desarrollo rápido de SW
El rápido desarrollo y la entrega son ahora los requisitos más importantes para los sistemas de software
● Los requisitos de las empresas cambian rápidamente y es prácticamente imposible producir un conjunto de
requerimientos de software estable.
● El Software tiene que evolucionar rápido para reflejar los cambios en las necesidades del negocio.
● Especificación, diseño e implementación están intercalados
● El sistema está desarrollado como una serie de versiones con las partes interesadas involucradas en la evaluación
de versiones
● Las interfaces del usuario se desarrollan a menudo utilizando un IDE y herramientas gráficas.
Métodos agiles
Las insatisfacciones con los gastos involucrados en los métodos de diseño de software de los años 1980 y 1990 dieron lugar
a la creación de métodos ágiles. Estos métodos:
El objetivo de los métodos agiles es reducir los gastos generales del proceso de SW (por ejemplo, limitando la
documentación) y ser capaces de responder rápidamente a las necesidades cambiantes sin rehacer trabajo de manera
excesiva.
Manifiesto Ágil
Estamos descubriendo mejores formas para desarrollar software, al hacerlo y al ayudar a otros a hacerlo. Gracias a este
trabajo llegamos a valorar:
● Desarrollo de productos, donde una compañía de software está desarrollando un producto de pequeño o mediano
tamaño para la venta.
● El desarrollo de sistemas a medida para una organización, donde hay un claro compromiso por parte del cliente
para participar en el proceso de desarrollo y donde no hay muchas reglas y regulaciones externas que afectarán el
software.
● Enfoque en pequeños equipos, bien integrados, hay problemas en la ampliación de los métodos ágiles a grandes
sistemas
● Puede ser difícil mantener el interés de los clientes que están involucrados en el proceso.
● Los miembros del equipo pueden ser inadecuados para la intensa participación que caracteriza a los métodos ágiles.
● Priorizar cambios puede ser difícil donde hay múltiples partes interesadas.
● Mantener simplicidad requiere un trabajo extra
● Los contratos pueden ser un problema
La mayoría de las organizaciones gastan más en el mantenimiento del software existente que en el desarrollo de nuevo
software. Los métodos ágiles deben facilitar tanto el mantenimiento como el desarrollo inicial.
● ¿Son los sistemas que se desarrollan utilizando un enfoque ágil mantenibles, haciendo énfasis en la minimización
de la documentación formal?
● ¿se pueden utilizar los métodos ágiles con eficacia para la evolución de un sistema?
● Identifica etapas separadas en el proceso de software con salidas asociadas a cada etapa.
9
● Las salidas de una etapa se usan como base para planear la siguiente actividad del proceso.
● Las iteraciones se producen dentro de las actividades.
● Desarrollo Ágil
● Especificación, diseño, implementación y pruebas están intercalados.
La mayoría de los proyectos de software incluyen prácticas de los enfoques ágil y basado en un plan
La mayoría de los proyectos incluyen elementos del plan guiado y procesos ágil. La decisión sobre el equilibrio depende de:
● ¿Es importante contar con una especificación y diseño muy detallado antes de pasar a la implementación? Si es así,
es probable que tenga que utilizar un enfoque guiado por plan.
Puede realizarse una estrategia de entrega incremental, donde se entrega el software a los clientes y se obtiene una
rápida retroalimentación de ellos, Si es así, considere el uso de los métodos ágiles.
Los métodos ágiles son más eficaces cuando el sistema se puede desarrollar con un equipo pequeño que pueda
comunicarse de manera informal. Esto puede no ser posible para los grandes sistemas que requieren equipos de
desarrollo grandes y distribuidos.
Los enfoques del plan guiado pueden ser necesarios para los sistemas que requieren una gran cantidad de análisis
antes de la aplicación (por ejemplo, sistema en tiempo real con el complejo Requisitos de temporización).
Los sistemas de larga vida tal vez requieran más documentación de diseño para comunicar las intenciones originales
de los desarrolladores del sistema al equipo de soporte.
Los métodos ágiles se basan en buenas herramientas para realizar un seguimiento de la evolución de un diseño
10
● ¿Cómo se organiza el equipo de desarrollo?
Si el equipo de desarrollo se distribuye o si parte del desarrollo se subcontrata, entonces puede que tenga que
desarrollar los documentos de diseño para comunicarse a través de los equipos de desarrollo.
● ¿Hay cuestiones culturales o de organización que puedan afectar al desarrollo del sistema?
Las organizaciones tradicionales de ingeniería tienen una cultura basada en el plan de desarrollo, ya que esta es la
norma en la ingeniería.
● ¿Qué tan buenos son los diseñadores y programadores del equipo de desarrollo?
A veces se argumenta que los métodos ágiles requieren niveles más altos de capacitación que los enfoques basados
en planes, en el que los programadores simplemente traducen un diseño detallado en código.
Si un sistema tiene que ser aprobado por un regulador externo (por ejemplo, que el FAA aprueba el software, es
crítico para el funcionamiento de una aeronave) entonces usted probablemente tendrá que producir detallada
documentación como parte de la justificación de la seguridad del sistema.
Programación extrema
XP y principios ágiles
● Participación del cliente: un compromiso a tiempo completo del cliente con el equipo
● Entrega incremental: el desarrollo incremental es apoyado a través de pequeños sistemas de comunicación
frecuentes.
● Personas no procesos: a través de la programación en pares y propiedad colectiva.
● Adoptar el cambio: Cambios soportados a través sistemas regulares de comunicación. Se toma el cambio en el
próximo incremento
● Mantener la simplicidad: refactorización constante de código.
11
Prácticas de Extreme programming
● En XP, el cliente o el usuario es parte del equipo de XP y es responsable de tomar decisiones sobre los requisitos
● Las solicitudes de los usuarios se expresan como escenarios o historias del usuario.
● Estas se han escrito en los historiales y el equipo de desarrollo las plasma en tareas de ejecución. Estas tareas son
la base del calendario y los costos estimados.
● El cliente elige las historias para su inclusión en el próximo lanzamiento en base a sus prioridades y
● calendario de estimaciones.
XP y el cambio
● La sabiduría convencional en la ingeniería de software es diseñar para el cambio. Vale la pena el gasto de tiempo y
esfuerzo anticipando los cambios ya que esto reduce costos más tarde.
● XP sostiene que no vale la pena anticipar los cambios ya que cambios no se pueden prever de forma fiable
● Propone la mejora constante de código (refactorización) para poder realizar cambios más fácilmente.
12
Refactorización
● El equipo de programación busca posibles mejoras de código y realiza las mejoras aunque no sean de inmediata
necesidad.
● Esto mejora la comprensibilidad del software y reduce la necesidad de documentación.
● Los cambios son más fáciles de hacer ya que el código es bien estructurado y claro.
● Sin embargo, algunos cambios requieren reconstrucción de la arquitectura y esto es mucho más caro
Pruebas en XP
Las pruebas son fundamentales para XP y XP ha desarrollado un enfoque en el que el programa se comprueba después de
que cada cambio se ha realizado.
Funciones de prueba de XP
En XP se trabaja por incrementos, por lo que existe la posibilidad de que lo nuevo rompa lo que ya estaba andando, se
necesitan pruebas de regresión para probar que lo de antes siga funcionando.
● Escribir pruebas antes del código aclara los requisitos para ser implementados.
● Las pruebas se escriben como programas en lugar de datos de manera que se pueden ejecutar de forma
automática. La prueba incluye una comprobación de que se ha ejecutado correctamente. Por lo general, se basa
en un marco de pruebas tales como Junit.
● Todas las pruebas anteriores y las nuevas se ejecutan automáticamente cuando se añade una nueva funcionalidad,
comprobando así que la nueva funcionalidad no ha introducido errores.
● El papel del cliente en el proceso de pruebas es ayudar a desarrollar pruebas de aceptación de las historias que han
de ser implementadas en la próxima versión del sistema.
● El cliente que es parte del equipo de pruebas, escribe pruebas simultáneamente al desarrollo. Por consiguiente,
todo nuevo código es validado para asegurarse de que es lo que necesita el cliente.
● Problemas: las personas que adoptan el papel de clientes disponen de tiempo limitado. Ellos pueden sentir que la
presentación de los requisitos era suficiente contribución y por tanto pueden ser reacios a involucrarse en el
proceso de prueba.
13
La automatización de pruebas
La automatización de pruebas significa que las pruebas se escriben como componentes ejecutables antes de que la tarea
se implemente. Estos componentes de prueba deben ser independientes, deberían simular la presentación de la entrada
para ser probado y debe comprobar que el resultado cumple con las especificaciones de salida. Un marco de prueba
automatizada (por ejemplo Junit) es un sistema que hace que sea fácil de escribir pruebas ejecutables y presentar un
conjunto de pruebas para su ejecución.
Cuando se automatizan las pruebas, siempre hay un conjunto de pruebas que puede ser rápida y fácilmente ejecutado.
Siempre que se agrega alguna funcionalidad al sistema, las pruebas se pueden corren y los problemas que ha introducido
el nuevo código puede ser atrapadas inmediatamente
Dificultades en pruebas XP
● Los programadores prefieren programación a las pruebas y a veces se toman atajos al escribir pruebas. Por ejemplo,
pueden escribir ensayos incompletos que no comprueben todas las posibles excepciones que puedan ocurrir.
● Algunas pruebas pueden ser muy difíciles de escribir de forma incremental. Por ejemplo, en una interfaz de usuario
compleja, es a menudo difícil de escribir pruebas unitarias para el código que implementa la “lógica de
visualización” y flujo de trabajo entre las pantallas.
● Es difícil juzgar la integridad de un conjunto de pruebas. Aunque se tengan muchas pruebas del sistema, la prueba
de conjunto puede no proporcionar una cobertura completa.
Programación en pares
● La principal responsabilidad de los directores de proyectos de software es la gestión del proyecto para que el
software se entregue a tiempo y dentro del presupuesto previsto para el proyecto
● El enfoque estándar para la gestión de proyectos es el plan direccionado. Gerentes elaboran un plan para el
proyecto mostrando qué debería ser entregado, cuándo debería ser entregado y quién trabajará en el desarrollo
del proyecto
● La gestión de proyectos ágil requiere un enfoque diferente, que está adaptado para desarrollo incremental y las
fortalezas particulares de los métodos ágiles.
Scrum
El enfoque de Scrum es un método ágil general, pero su atención se centra en la gestión del desarrollo iterativo en lugar
de prácticas ágiles específicas. Tiene 3 FASES
● La fase inicial es una fase en fase de anteproyecto, donde se establecen los objetivos generales del proyecto y se
diseña la arquitectura de software.
● Esto es seguido por una serie de ciclos, donde cada ciclo desarrolla un incremento del sistema.
● La fase de cierre del proyecto concluye el proyecto, completa documentación requerida, tales como marcos de
ayuda del sistema y manuales de usuario y evalúa las lecciones aprendidas del proyecto.
El scrum master aísla al cliente de quienes desarrollan y transmite sus devoluciones a los desarrolladores.
El ciclo de Sprint
● Una vez que éstos están de acuerdo, el equipo se organizan para desarrollar el software. Durante esta etapa, el
equipo está aislado del cliente y la organización, con toda comunicaciones canalizadas a través del denominado
'Scrum Master‘.
● El papel del Scrum Master es proteger el equipo de desarrollo de las distracciones externas.
● Al final del sprint, el trabajo realizado es revisado y se presenta a las partes interesadas. El siguiente ciclo de sprint
comienza entonces.
El 'Scrum Master' es un facilitador que organiza reuniones diarias, rastrea la acumulación de trabajo por hacer, registra las
decisiones, mide el progreso y se comunica con los clientes y la gestión fuera del equipo.
Todo el equipo asiste a las reuniones diarias cortas donde todos los miembros del equipo comparten información, describen
su progreso desde la última reunión, los problemas que han surgido y que se ha previsto para el día siguiente.
Esto significa que todos en el equipo saben lo que está pasando y, si surgen problemas, puede volver a planear el trabajo a
corto plazo para hacer frente a ellos.
15
Beneficios de Scrum
● Los métodos ágiles han demostrado ser un éxito para los proyectos pequeños y medianos que pueden ser
desarrolladas por un equipo pequeño co-ubicado.
● A veces se argumenta que el éxito de estos métodos viene a causa de la mejora de las comunicaciones, que es
posible cuando todos trabajan juntos.
● La ampliación de los métodos ágiles implica el cambio de éstos para hacer frente a grandes proyectos, más largos
en los que hay varios equipos de desarrollo, tal vez trabajar en diferentes lugares.
● Los grandes sistemas suelen ser colecciones de sistemas de independientes en los que equipos separados
desarrollan cada sistema. Con frecuencia, estos equipos están trabajando en diferentes lugares, a veces en
diferentes zonas horarias.
● Los sistemas grandes son "sistemas abandonados”, que interactúan con una serie de sistemas existentes. Muchos
de los requisitos del sistema tienen que ver con esta interacción por lo que no se prestan realmente a la flexibilidad
y el desarrollo incremental.
● Si varios sistemas se integran para crear un sistema, una parte importante del desarrollo tiene que ver con la
configuración del sistema en lugar de desarrollo de código inicial.
● Grandes sistemas y sus procesos de desarrollo están a menudo limitados por las reglas y regulaciones externas que
limitan la forma en que se pueden desarrollar.
● Los sistemas grandes tienen un tiempo de desarrollo largo. Es difícil mantener equipos coherentes que conocen el
sistema a lo largo de ese período ya que, inevitablemente, la gente se mueve a otros trabajos y proyectos.
● Los sistemas grandes suelen tener un conjunto diverso de partes interesadas. Es prácticamente imposible incluir
todas estas diferentes partes interesadas en el proceso de desarrollo.
La "expansión" tiene que ver con el uso de los métodos ágiles de desarrollo de sistemas de software grandes que no pueden
ser desarrollados por un equipo pequeño.
La "ampliación” se refiere a cómo los métodos ágiles pueden introducirse a través de una gran organización con muchos
años de experiencia en desarrollo de software.
Al escalar los métodos ágiles es esencial para mantener los fundamentos ágiles. Planificación flexible, versiones frecuentes
del sistema, integración continua, desarrollo basado en pruebas y las buenas comunicaciones del equipo.
● Para el desarrollo de grandes sistemas, no es posible centrarse únicamente en el código del sistema. Se tiene que
hacer más por adelantado de diseño y documentación del sistema
16
● Los mecanismos de comunicación entre los equipos tienen que ser diseñados y utilizados. Este procedimiento incluirá
conferencias telefónicas y de vídeo regulares entre los miembros del equipo y las reuniones electrónicas cortas
frecuentes donde los equipos se actualizan entre sí sobre los progresos.
● La integración continua, donde se revisa cada vez cualquier desarrollador realiza un cambio es prácticamente
imposible.
● Los administradores de proyectos que no cuentan con experiencia en métodos ágiles pueden ser reacios a aceptar el
riesgo de un nuevo enfoque.
● Las grandes organizaciones suelen tener procedimientos y normas de calidad que se espera que todos los proyectos
sigan y, por su carácter burocrático, éstos tienden a ser incompatibles con los métodos ágiles.
● Los métodos ágiles parecen funcionar mejor cuando los miembros del equipo tienen un nivel relativamente alto de
habilidad. Sin embargo, dentro de las grandes organizaciones, lo más probable es que se tenga una amplia gama de
habilidades y capacidades.
● Existe resistencia cultural a los métodos ágiles, especialmente en aquellas organizaciones que tienen una larga historia
de uso de los procesos de ingeniería de sistemas convencionales.
INGENIERÍA DE REQUERIMIENTOS
El proceso de establecimiento de los servicios que el cliente necesita de un sistema y las limitaciones con las que opera y
desarrolla. Con requisitos que son las descripciones de los servicios del sistema y las limitaciones que se generan durante
el proceso de ingeniería de requerimientos.
Requerimiento: declaración abstracta de un servicio o de una restricción de un sistema a una especificación funcional
matemática detallada. Los requerimientos pueden ser ambiguos, por lo que: deben estar abiertos a la interpretación y
deben estar definidos con detalle
● Requerimiento del usuario: ser escritos en lenguaje natural, más los diagramas de los servicios que proporciona el
sistema y sus limitaciones operacionales. Es el que nos da el usuario, será ambiguo y que cuando se analice por el
ing de requerimientos se convertirá en requerimientos del sistema
● Requerimiento del sistema: Es un documento estructurado que establece las descripciones detalladas de las
funciones del sistema, servicios y limitaciones operativas. Deben estar completos, ser verificables, sin conflictos
entre ellos, son formados a partir de los del usuario, por el Ing. en requerimientos para transformarlos en uno de
sistema.
Imprecisión de requerimientos: Surgen problemas cuando los requerimientos no se expresan con precisión. Los requisitos
ambiguos se pueden interpretar de distintas maneras.
Requerimientos funcionales
● Describe una funcionalidad que el cliente requiere del producto del software que estamos desarrollando, puede
ser de usuario o de sistema.
● Depende del tipo de software, los usuarios esperados y el tipo de sistema en el que se utiliza el software.
● Cómo debería actuar en cada situación particular.
17
Requerimiento no funcional
● Las propiedades y limitaciones que va a tener el producto de software durante su operación, son transversales a
los del sistema. Ej-> necesidad de tiempo de respuesta, cantidad de usuarios que van acceder.
● Pueden especificar un mandato a un IDE en particular, lenguaje de programación o método de desarrollo
● Pueden afectar a una arquitectura general de un sistema en lugar de los componentes individuales
● Puede generar una serie de requerimientos funcionales relacionados que definen los servicios de sistema que se
requieren, o generar requerimientos que restrinjan a otros existentes.
Son propiedades transversales, y son más críticos que los funcionales, características que debe cumplir el producto de
acuerdo al producto que es, por ejemplo, si es una página como mercado libre, deberá poder soportar cierta cantidad de
usuarios.
Tipos:
● Requerimiento del producto: especificación de que el producto entregado debe comportarse de una manera
particular, ejemplo velocidad de ejecución.
● Requerimientos organizacionales: consecuencia de las políticas y procedimientos de la organización.
● Requerimientos externos: surgen de factores externos al sistema, ejemplo: legislativos
Objetivos: es una declaración general de lo que el cliente quiere, son útiles para los desarrolladores ya que transmiten las
intenciones del usuario con el sistema
Requerimiento no funcional verificable: declaración mediante una cierta medida que se puede probar de forma objetiva.
Requerimiento de usabilidad: el sistema debe ser fácil de usar por el usuario luego de entrenamiento y organizado para
que los errores de usuario se reduzcan al mínimo.
18
Requerimientos de dominio:
● Compresibilidad: si se expresan en lenguaje del dominio de la aplicación, a veces los ingenieros no lo entienden.
● Implícito: los especialistas del dominio entienden tan bien el problema que no explican las especificaciones.
Documento de requerimientos
Declaración oficial de lo que se requiere de los desarrolladores del sistema. Debe incluir tanto una definición de los
requisitos del usuario y una especificación de los requisitos del sistema. No es un documento de diseño, establece lo que
el sistema debe hacer y no cómo hacerlo. Siempre tiene que estar actualizado.
La información del documento depende del tipo de sistema y el enfoque de desarrollo utilizado. Los sistemas desarrollados
por incrementos, suelen tener menos detalle en el documento.
Las normas para documentos son diseñadas por estándar IEEE. Aplicables a los registros para los grandes proyectos de Ing
de sistemas.
- Algunos métodos ágiles dicen que no sirve por que los requerimientos cambian mucho
- Métodos como XP, usan historias de usuario. Practico para los sistemas de negocios, pero problemático para los
que requieren de mucho analisis antes de la entrega o sistemas desarrollados por varios equipos.
19
La estructura de un documento de requerimientos
Especificación de requerimientos: proceso de escribir los requerimientos del sistema del usuario y en un documento de
requisitos.
- Los requerimientos de usuario tienen que ser comprensibles por los usuarios finales y los clientes quienes no tienen
una formación técnica.
- Los requerimientos del sistema son requerimientos más detallados y pueden incluir más información técnica.
- Los requerimientos pueden ser parte de un contrato para el desarrollo del sistema, deben ser lo más completo
posible.
20
Maneras de escribir una especificación de requerimientos del sistema
Diseño y requerimientos
- En principio, los requerimientos deberán establecer lo que el sistema debe hacer y el diseño debe describir cómo
se hace esto.
- Los requerimientos se escriben como sentencias en lenguaje natural complementados con diagramas y tablas.
- Se utiliza para la escritura de los requisitos, ya que es expresiva, intuitiva y universal. Esto significa que los requisitos
pueden ser entendidos por los usuarios y clientes.
- Falta de claridad, la precisión es difícil sin hacer que el documento sea difícil de leer.
- Confusión de requerimientos, requisitos funcionales y no funcionales tienden a ser confusos.
- Fusión de requerimientos, Varios requerimientos diferentes pueden expresarse juntos
21
Especificación estructurada
- La libertad del escritor de los requerimientos es limitada y los requerimientos están escritos de una manera
estándar.
- Esto funciona bien para algunos tipos de requerimientos, por ejemplo, requerimientos para el sistema de control
embebido, pero a veces es demasiado rígido para la escritura de requerimientos del sistema de negocios.
Especificación estructurada:
● Acción no se puede explicar en lenguaje natural porque pueden implementarse cosas erróneas y es peligroso,
entonces uso la especificación tabular (abajo)
● Todo requerimiento deberá tener su porqué!!!! Es importante para el que haga la implementación
Especificación tabular
22
Procesos de ingeniería de requerimientos
Los procesos utilizados para IR varían ampliamente dependiendo del dominio de la aplicación, las personas involucradas y
la organización el desarrollo de los requisitos.
Sin embargo, hay una serie de actividades genéricas comunes a todos los procesos:
- Obtención de requerimientos;
- El análisis de requerimientos;
- La validación de requerimientos ;
- La gestión de requerimientos. involucra poder observar el cambio de los requerimientos(modificaciones), también
las relaciones entre sí (uno puede generar otro requerimiento), tambien pueden contraponerse requerimientos
distintos
En la práctica, IR es una actividad iterativa en el que se intercalan estos procesos.
Entrevistas
Las entrevistas formales o informales con las partes interesadas son parte de la mayoría de los procesos de la IR.
Tipos de entrevistas
Entrevistas efectivas
• Tener la mente abierta, evitar las ideas preconcebidas acerca de los requerimientos y están dispuestos a escuchar a las
partes interesadas.
• Preguntar al entrevistado y obtener discusiones usando una pregunta clave, una propuesta de requerimientos, o si
trabajan juntos en un sistema prototipo.
Entrevistas en la práctica
• Las entrevistas son buenas para conseguir una comprensión global de lo que los actores hacen y cómo podrían
interactuar con el sistema.
• Las entrevistas no son buenas para la comprensión de los requerimientos de dominio
23
• Los técnicos pueden no entender la terminología de dominio específico;
• Algunos dominios del conocimiento pueden ser tan familiares que la gente encuentra difícil dar detalles o piensan que
no es necesario hacerlo.
Escenarios (es una especie de relato). Los escenarios son ejemplos reales de cómo se puede utilizar un sistema.
Casos de uso
Es una funcionalidad provista por un sistema.
Un diagrama de casos de uso es (lo de abajo) y me permite relacionar los roles con las funcionalidades, me permite ver que
tiene que hacer cada uno y que permisos tienen.
24
Personitas = actores ->Definen perfiles o roles
Etnografía
La etnografía es una técnica de observación que se usa para entender los procesos operacionales y ayudar a derivar
requerimientos de apoyo para dichos procesos.
• Los requerimientos que se derivan de la forma en que las personas trabajan realmente en vez de la forma en la cual las
definiciones del proceso indican que debería trabajar.
• Los requerimientos que se derivan de la cooperación y el conocimiento de las actividades de otras personas.
• Los estudios etnográficos pueden revelar detalles críticos de procesos, que con frecuencia se pierden con otras técnicas
de adquisición de requerimientos.
Validación de requerimientos
Proceso de verificar que los requerimientos definen realmente el sistema que quiere el cliente.
Falta de validación de requerimientos implica costos altos:
• La solución de un error de los requerimientos después de entrega puede llegar a costar hasta 100 veces el costo de
arreglar un error de ejecución.
• Que no sea útil
• Que no sea lo que el cliente necesite
¡Ya no sirve si es a nivel de un producto funcional, si o si hacerlo a nivel de requerimientos!
25
Comprobación
Validez. ¿El sistema provee las funciones que mejor ayudan a las necesidades del cliente?
Consistencia. ¿Existen conflictos de los requerimientos?
Integridad. ¿Están todas las funciones requeridas por el cliente incluidas? Tiene que estar todo
Realismo. ¿Pueden implementarse los requerimientos dado el presupuesto y la tecnología disponible? Tiene que ser
factible de implementar
La verificabilidad. ¿Se pueden comprobar los requisitos? Ningún requerimiento tiene sentido si no puede ser verificado
Técnicas de validación
Críticas de requerimientos
• Las revisiones periódicas deben ser sostenidas mientras la definición de requerimientos se formula.
• Tanto el cliente como el personal del proyecto deben participar en las revisiones.
• Las revisiones pueden ser formales (con documentos completos) o informales. Buenas comunicaciones entre los
desarrolladores, clientes y usuarios pueden resolver problemas en una etapa temprana
Requerimientos
Gestión de requerimientos
● Nuevos requerimientos surgen como un sistema y están siendo desarrollados después de que haya entrado en uso.
Es necesario hacer un seguimiento de las necesidades individuales y mantener vínculos entre necesidades dependientes
para que pueda evaluar el impacto de los cambios de requisitos. Es necesario establecer un proceso formal para hacer
propuestas de cambio y que los vinculen con los requisitos del sistema.
El nuevo hardware se puede introducir, puede ser necesario para interconectar el sistema con otros sistemas, las
prioridades de negocio pueden cambiar (con los consiguientes cambios en el apoyo al sistema es necesario), y la nueva
legislación y los reglamentos se pueden introducir tal que el sistema debe cumplirlos necesariamente.
Las personas que pagan por un sistema y los usuarios de dicho sistema rara vez son las mismas personas. Los clientes del
sistema imponen requerimientos debido a las limitaciones organizativas y presupuestarias. Estos pueden estar en conflicto
con los requisitos de los usuarios finales y, después de la entrega, las nuevas características pueden tener que ser añadidas
para el soporte al usuario si el sistema quiere cumplir sus objetivos.
26
USABILIDAD
Facilidad con que las personas pueden utilizar una herramienta particular u otro objeto fabricado por humanos con el fin
de alcanzar un objetivo concreto
La usabilidad es la cualidad que tiene un sistema por la cual permite a sus usuarios alcanzar objetivos específicos con:
efectividad, eficiencia y satisfacción. El concepto en torno al cual gravita la usabilidad es la calidad de uso. La usabilidad se
considera como un requerimiento
El grado de usabilidad de un sistema es una medida empírica y relativa de su usabilidad. Se mide a partir de pruebas
empíricas y relativas:
Empírica: porque no se basa en opiniones o sensaciones, sino en pruebas de usabilidad realizadas en laboratorio u
observadas mediante trabajo de campo.
Relativa: porque el resultado no es ni bueno ni malo, sino que depende de las metas planteadas
Principios
Facilidad de aprendizaje
Facilidad con la que nuevos usuarios desarrollan una interacción efectiva con el sistema o producto Está relacionada con:
● La predicibilidad
● La sintetización
● La familiaridad
● La generalización de los conocimientos previos
● La consistencia (organización)
Facilidad de uso
Facilidad con la que el usuario hace uso de la herramienta, con menos pasos o más naturales a su formación específica.
Está relacionada con:
● La eficacia
● La eficiencia
Flexibilidad
Relativa a la variedad de posibilidades con las que el usuario y el sistema pueden intercambiar información. Abarca la
posibilidad de diálogo, la multiplicidad de vías para realizar la tarea, similitud con tareas anteriores y la optimización entre
el usuario y el sistema.
Robustez
Es el nivel de apoyo al usuario que facilita el cumplimiento de sus objetivos. Está relacionado con la capacidad de
observación del usuario, de recuperación de información y de ajuste de la tarea al usuario.
27
La usabilidad
Es un atributo de calidad que, dependiendo de los usuarios, las tareas y el contexto, mide:
● la facilidad de aprendizaje
● La eficiencia motriz y cognitiva
● La capacidad de recordar lo aprendido
● El manejo de errores
● La satisfacción subjetiva
28
DCU - Objetivos
● Satisfacer las necesidades de todos sus usuarios potenciales
● Adaptar la tecnología utilizada a las expectativas de los usuarios
● Crear interfaces que faciliten la consecución de los objetivos de los usuarios
DCU - FASES
● Entender y especificar el contexto de uso: identificar a las personas a las que se dirige el producto, para qué lo
usarán y en qué condiciones.
● Especificar requisitos: identificar los objetivos del usuario y del proveedor del producto a satisfacer.
● Producir soluciones de diseño: esta fase se puede subdividir en diferentes etapas secuenciales, desde las primeras
soluciones conceptuales hasta la solución final de diseño; generalmente utilizando técnicas de prototipado.
● Evaluar: es la fase más importante del proceso, en la que se validan las soluciones de diseño (el sistema satisface
los requisitos), o por el contrario se detectan problemas de usabilidad, normalmente a través de pruebas con
usuarios.
DCU - BENEFICIOS
● Aumento de la productividad: un sistema diseñado siguiendo los principios de usabilidad, y adaptado de manera de
trabajar del usuario, permitirá más efectividad en lugar de perder el tiempo luchando con un complejo conjunto de
funciones. Un sistema usable permitirá al usuario concentrarse en la tarea en lugar de la herramienta.
● Reducción de errores: una significativa proporción de error humano a menudo se le puede atribuir a una interfaz de
usuario mal diseñada. Evitar incoherencias, ambigüedades u otras faltas del diseño de la interfaz generan menor
cantidad de errores del usuario.
● Menor capacitación y entrenamiento: un sistema bien diseñado y usable puede reforzar el aprendizaje, reduciendo
así el tiempo de formación y la necesidad de apoyo humano.
● Aceptación: mejorar la aceptación del usuario es a menudo una medida de resultado indirecta del diseño de un sistema
utilizable. La mayoría de los usuarios prefieren utilizar, un sistema bien diseñado que proporcione información que
pueda ser fácilmente accedida y que se presenta en un formato que sea fácil de asimilar y utilizar.
29
DCU - PRINCIPIOS BÁSICOS
● Participación activa de los usuarios: entendimiento de estos y de las tareas que requieren. Al incorporar a los usuarios
finales al proceso desde el inicio, me mejora además la aceptación y el compromiso con el sistema, al sentir que ha
sido diseñado teniendo en cuenta sus necesidades y no ha sido impuesto.
● Iteración en el diseño: esto implica recibir realimentación por parte de los usuarios finales después de su uso en varias
etapas, las cuales pueden ir desde simples maquetas con papel hasta prototipos de software con mayor grado de
fidelidad. La respuesta de cada ciclo de iteración se utiliza para desarrollar el siguiente diseño. Se intenta además lograr
las condiciones más similares al mundo real en el cual se desenvolverán los usuarios con el sistema.
● Utilizar un equipo multidisciplinario: el DCU es un proceso de colaboración que se beneficia de la participación activa
de diversas partes cada una de las cuales tiene conocimiento y experiencia específicos para compartir con el resto. El
equipo podría incluir gerentes, especialistas en usabilidad, usuarios finales, ingenieros de software, diseñadores
gráficos, diseñadores de interacción y personal de capacitación y apoyo.
Para que el diseño de un producto sea exitoso se deben tener en cuenta los tres niveles de usuarios
Prototipado
Una vez que las partes interesadas han sido identificadas y se ha hecho una investigación completa de sus necesidades, los
diseñadores pueden desarrollar soluciones con diseños alternativos, los cuales pueden ser evaluados por los usuarios.
Estas alternativas pueden ser simples dibujos en lápiz y papel en la fase inicial del proceso.
También es posible escuchar a los usuarios discutir sobre los diseños alternativos presentados, lo cual posibilita amplificar
la comprensión de los diseñadores y pueden proporcionar información que no se obtuvo en las entrevistas iniciales, en
otras palabras las observaciones y el análisis de necesidades ya realizado.
Proceso de evaluación
A medida que avanza el ciclo del diseño, los prototipos (versiones iniciales y limitadas del producto) pueden ser producidos
y luego probados por los usuarios.
● Eficacia: ¿Cuántas veces los usuarios logran terminar las tareas? ¿Lograron terminar las tareas sin dificultad?
● Facilidad de Aprendizaje (Learnability):¿Cuán fácil resulta para los usuarios llevar a cabo tareas básicas la primera vez
que se enfrentan al diseño?
30
● Eficiencia: Una vez que los usuarios han aprendido el funcionamiento básico del diseño, ¿cuánto tardan en la
realización de tareas?
● Cualidad de ser recordado (Memorability): Cuando los usuarios vuelven a usar el diseño después de un periodo sin
hacerlo, ¿cuánto tardan en volver a adquirir el conocimiento necesario para usarlo eficientemente?
● Tasa de errores de usuario: Durante la realización de una tarea, ¿cuántos errores comete el usuario?, ¿Qué tan graves
son las consecuencias de esos errores?, ¿Qué tan rápido puede el usuario deshacer las consecuencias de sus propios
errores?
● Satisfacción subjetiva: ¿Cuán agradable y sencillo le ha parecido al usuario la realización de las tareas?
Las evaluaciones también revelarán la satisfacción de los usuarios con el producto. Esto se logra solamente a través de
comentarios recogidos en un procesointeractivo e iterativo con la participación de los usuarios
PRUEBAS DE USABILIDAD
● Se utilizan metodologías que requieren la participación de usuarios reales o de personas que concuerdan con el perfil
de los futuros usuarios.
● Valiosa la observación con un equipo multidisciplinario (más valiosa que encuestas con valoración)
● La Investigación Etnográfica: se observa a los usuarios en el lugar donde normalmente se utiliza el sistema (por
ejemplo, trabajo, hogar, etc.) para recopilar datos sobre quiénes son sus usuarios, cuáles son las tareas y metas que
se han relacionado con el sistema, y el contexto en el que trabajan para lograr sus objetivos. A partir de esta
investigación cualitativa, se puede desarrollar perfiles de usuario, personajes arquetípicos (los usuarios), los escenarios
y descripciones de tareas
● El Diseño Participativo: si bien no se considera una técnica en sí misma, es más bien una forma de realización del DCU,
el diseño participativo emplea a uno o más usuarios representativos durante todo el proceso de desarrollo. Este
enfoque posiciona al usuario final en el corazón del proceso de diseño, desde el inicio mismo del proyecto,
aprovechando el conocimiento del usuario, habilidades, e incluso las reacciones emocionales en el diseño.
● Los Grupos Focales (Focus Group): son utilizados en las primeras etapas de un proyecto para evaluar conceptos
preliminares con usuarios representativos. El objetivo es identificar si los conceptos principales, son satisfactorios o
no, y cómo podrían ser más aceptables y útiles Se explora sobre cómo los usuarios finales piensan y sienten. Un grupo
focal es bueno para la información general, cualitativa, pero no para aprender sobre los problemas de rendimiento y
los comportamientos reales del sistema. Las pruebas de usabilidad se consideran mejores para la observación de los
comportamientos y la medición de los problemas de rendimiento
● Las entrevistas: con usuarios son una poderosa herramienta cualitativa, pero no para evaluar la usabilidad de un
diseño, sino para descubrir deseos, motivaciones, valores y experiencias de nuestros usuarios. Durante estas
entrevistas, el entrevistador debe mostrarse neutral y no dirigir o condicionar las respuestas del entrevistado. Lo que
se pretende es descubrir información que oriente en el diseño, no confirmar creencias sobre cómo son los usuarios.
● Las encuestas: también son una herramienta útil y se pueden utilizar en cualquier momento del ciclo de vida, pero se
utiliza con mayor frecuencia en las primeras etapas para comprender mejor el potencial usuario. Son una herramienta
de investigación cuantitativa que complementan a las entrevistas, y permiten medir con validez estadística los
conceptos hallados con técnicas cualitativas
● Card sorting: consiste en solicitar a un grupo de participantes (los cuales deben tener un perfil acorde con la audiencia
a la que se dirige el producto) que agrupen los conceptos representados en tarjetas por su similitud semántica. Con el
objetivo de identificar qué conceptos, de los representados en cada tarjeta, tienen relación semántica entre sí, e
incluso cuál es el grado de esa relación.
El card sorting es una prueba destinada a comprender la forma en que los usuarios estructuran la información para
asegurar que será comprendida fácilmente, por tanto tiene lugar en etapas tempranas del proyecto
Usability Testing -> Emplea técnicas para recoger datos empíricos mediante la observación de usuarios finales que utilizan
el sistema para realizar tareas en tiempo real.
1. Pruebas formales realizadas como verdaderos experimentos, con el fin de confirmar o refutar hipótesis específicas.
31
2. Menos formal, pero riguroso, emplea a un ciclo repetitivo de pruebas destinadas a exponer las deficiencias de
usabilidad y moldear el producto
"think-aloud“ (pensamiento en voz alta), consiste en solicitar al participante que exprese verbalmente durante la prueba
qué está pensando, qué no entiende, por qué lleva a cabo una acción o duda.
Se realizan después de la liberación formal del sistema. La idea es recoger datos que se utilizarán para la próxima versión,
a través de encuestas, entrevistas y observaciones. Una vez estructurados, los estudios de seguimiento son,
probablemente, las apreciaciones más adecuadas y más precisas de la facilidad de uso de un sistema.
La Evaluación Heurística
Se realiza por inspección, varios expertos inspeccionan y analizan el diseño en busca de potenciales problemas de
usabilidad, comprobando para ello el cumplimiento de principios de diseño usable (principios heurísticos) previamente
establecidos
4. Consistencia y estándares: Los usuarios no deben tener que preguntarse si las diversas palabras, situaciones, o
acciones significan las misma cosa. Que se sigan las normas y convenciones de la plataforma sobre la que está
implementando el sistema.
33
5. Prevención de errores: Antes que diseñar buenos mensajes de error, es mejor evitar que el problema ocurra.
6. Reconocer es mejor que recordar: Minimizar la carga de memoria del usuario haciendo que los objetos, las acciones y
las opciones estén visibles. El usuario no debería tener que recordar la información de una parte del diálogo a otra.
7. Flexibilidad y eficiencia de uso: Los aceleradores, no vistos por el usuario principiante, mejoran la interacción para el
usuario experto de tal manera que el sistema puede servir para usuarios inexpertos y experimentados. Es importante
que el sistema permita personalizar acciones frecuentes.
8. Diseño estético y minimalista: Los diálogos no deberían contener información irrelevante. Cada unidad extra de
información en un diálogo compite con la información importante, disminuyendo su visibilidad relativa.
9. Ayudar a reconocer, diagnosticar y recuperarse de errores: Los mensajes de error deben estar expresados en lenguaje
simple (sin códigos), indicando con precisión el problema y sugiriendo una solución.
10. Ayuda y documentación: Aunque es mejor que se pueda usar el sistema sin documentación, es necesario proveer al
usuario de ayuda y documentación. Esta tiene que ser fácil de buscar y entender, centrada en la tareas del usuario,
con información de las etapas a realizar y no muy extensa.
MODELADO DE SISTEMAS
La modelación de sistemas
La modelación de sistemas es el proceso de elaboración de modelos abstractos de un sistema, con cada modelo que
presenta una vista o perspectiva diferente de ese sistema. Se representa mediante algún tipo de notación gráfica, casi
siempre basada en anotaciones en el Lenguaje Unificado de Modelado (UML). Ayuda al analista a entender la funcionalidad
del sistema y se pueden utilizar modelos para comunicarse con los clientes.
Modelos de sistemas
Se utilizan durante la ingeniería de requisitos para ayudar a explicar los requisitos propuestos a otros actores del sistema.
Los ingenieros utilizan estos modelos para discutir las propuestas de diseño y documentar el sistema de aplicación.
En un proceso de ingeniería basado en modelos, es posible generar una implementación completa o parcial del sistema
desde el modelo del Sistema
• Los diagramas de actividades, que muestran las actividades involucradas en un proceso o en el procesamiento de datos.
34
• Diagramas de casos de uso, los cuales muestran las interacciones entre un sistema y su entorno.
• Los diagramas de secuencia, que muestran las interacciones entre los actores y el sistema y entre los componentes del
sistema.
• Los diagramas de clases, que muestran las clases de objetos en el sistema y las asociaciones entre estas clases.
• Diagramas de estado, que muestran cómo el sistema reacciona a los acontecimientos internos y externos.
Se utilizan modelos de contexto para ilustrar el contexto operativo de un sistema, muestran lo que se encuentra fuera de
los límites del sistema. Las cuestiones organizacionales pueden influir en la decisión sobre dónde situar los límites del
sistema.
Se establecen para definir lo que está dentro y lo que está fuera del sistema, muestran otros sistemas que se utilizan o
dependen del sistema que está siendo desarrollado. La posición de los límites del sistema tiene un efecto profundo en los
requisitos del sistema.
La definición del límite del sistema es fundamental Si los límites del sistema aumentan y / o disminuyen cambia la carga de
trabajo de las diferentes partes de una organización.
• Los modelos de contexto, simplemente muestran los otros sistemas en ambiente, no cómo se utiliza el sistema que
está siendo desarrollado en ese entorno.
• Los modelos de proceso revelan cómo se utiliza el sistema en desarrollo en los procesos de negocio
• Diagramas de actividades de UML se pueden utilizar para definir los modelos de procesos de negocio.
35
Modelos de interacción
• El modelado de la interacción de usuario es importante ya que ayuda a identificar las necesidades de los usuarios.
• El modelado de interacción de sistema a sistema resalta los problemas de comunicación que puedan surgir.
• El modelo de interacción de componentes ayuda a comprender si la estructura del sistema propuesto es adecuada para
ofrecer el rendimiento y la fiabilidad del sistema necesario.
• Los diagramas de casos y diagramas de secuencia se pueden utilizar para el modelado de la interacción.
Los casos de uso se desarrollaron originalmente para apoyar la obtención de requisitos y están incorporadas en el UML.
Cada caso de uso representa una tarea discreta que implica la interacción externa con un sistema.
• Representación esquemática para proporcionar una visión general de los casos de uso
• Representación textual para proporcionar una visión detallada
Los casos de uso en el MHC – PMS que implica el papel “Medico Recepcionista”
Los diagramas de secuencia son parte de UML y se utilizan para modelar las interacciones entre los actores y los objetos
dentro de un sistema.
Un diagrama de secuencia muestra la secuencia de interacciones que tienen lugar durante un caso de uso en particular.
Los objetos y los actores involucrados están listados en la parte superior del diagrama, con una línea de puntos trazada
verticalmente a partir de estos y las interacciones entre los objetos se indican mediante flechas anotadas.
36
Diagrama de secuencia para la transferencia de datos
Muestran la organización de un sistema en función de los componentes que conforman este sistema y sus relaciones. Son
modelos estáticos, que muestran la estructura del sistema.
Se utilizan en el desarrollo de un modelo de sistema orientado a objetos para mostrar las clases de un sistema y las
asociaciones entre estas clases.
• Una clase de objeto es una definición general de un tipo de objeto del sistema.
• Una asociación es una relación entre clases.
• Los objetos representan algo en el mundo real, tal como un paciente, una prescripción, médico, etc.
37
Clases y asociaciones en el MHC – PMS
La clase de consulta
Generalización
Es una técnica que utilizamos para gestionar la complejidad. En lugar de definir las características detalladas de cada
entidad, ponemos estas características en las clases mas generales (animales, coches, casas, etc.). Esto nos permite inferir
que los diferentes miembros de estas clases tienen algunas características comunes.
En los sistemas de modelado, a menudo es útil examinar las clases de un sistema para ver si hay posibilidades de
generalización. En lenguajes orientados a objetos, la generalización se realiza utilizando los mecanismos de herencia.
En una generalización, los atributos y las operaciones asociadas a las clases de nivel superior también están asociadas a las
clases de menor nivel. Las clases de nivel inferior son subclases que heredan los atributos y operaciones de sus superclases.
Estas clases de nivel inferior son mas especificas y pueden añadir atributos y operaciones.
Jerarquía de generalización
38
Jerarquía de generalización con características agregadas
Agregación
Un modelo de agregación muestra como las clases se componen de otras clases. Estos modelos son similares a la parte de
la relación en las modelos de datos semánticos.
Modelos de comportamiento
Son los modelos del comportamiento dinámico de un sistema, cuando se esta ejecutando. Muestran lo que ocurre cuando
un sistema responde a un estímulo de su entorno.
Muchos sistemas empresariales son sistemas de procesamiento de datos. Son controlados por la entrada de datos al
sistema, con relativamente poco procesamiento de eventos externos.
Estos modelos muestran la secuencia de las acciones involucradas en el procesamiento de datos de entrada y la salida
asociada. Son particularmente útiles durante el análisis de los requisitos, ya que pueden ser utilizados para mostrar el
procesamiento de extremo a extremo en un sistema.
39
Procesamiento de pedidos
Sistemas de tiempo real son a menudo gestionados por eventos, con un procesamiento de datos mínimo.
Modelado por eventos muestra cómo un sistema responde a acontecimientos externos e internos. Se basa en la suposición
de que un sistema tiene un número finito de estados y que los acontecimientos (estímulos) puede causar una transición de
un estado a otro.
Estos modelan el comportamiento del sistema en respuesta a eventos externos e internos. Muestran las respuestas del
sistema a los estímulos tan a menudo se utilizan para el modelado de sistemas de tiempo real.
Modelos de máquinas de estado muestran los estados del sistema como nodos y eventos como arcos entre estos nodos.
Cuando ocurre un evento, el sistema pasa de un estado a otro.
40
Los estados y los estímulos para el horno de microondas(a)
41
DIAGRAMAS UML
Un caso de uso especifica un conjunto de secuencias de acciones, incluyendo variantes, que el sistema puede ejecutar y
que produce un resultado observable de valor para un particular actor.
Es un diagrama de comportamiento
• Se utiliza para representar los actores externos que interactúan con el sistema de información
• Muestra de manera visual las distintas funciones que puede realizar un usuario (más bien un tipo de usuario) de un
Sistema de Información.
Finalidad
Elementos
Actores: un actor es algo o alguien externo al sistema que interactúa de forma directa con el sistema.
Casos de uso: Es una secuencia de acciones que hace el sistema y que producen un resultado que puede percibir un usuario.
Relaciones: Conectan los casos de uso con los actores o los casos de uso entre sí.
Cuando conectan un actor con un caso de uso representa que ese actor interactúa de alguna manera con ese caso de uso
y se representa con una línea continua
Cuando conectan casos de uso entre sí se pueden diferenciar dos tipos de relaciones: <<include>> o <<extend>>.
<<include>>: Se utiliza para representar que un caso de uso utiliza siempre a otro caso de uso.
42
Descripción de requisitos
Se describe cada caso de uso junto con la secuencia de pasos necesaria para completarlo y las posibles excepciones.
Diseño de una aplicación que gestione los tramites a realizar en una clínica veterinaria
• Se deben almacenar los datos de contacto de los clientes: Nombre, Apellidos, DNI, Fecha de nacimiento, Teléfono o
Email.
• Se debe almacenar la información de las mascotas. Cada cliente puede tener más de una mascota, una mascota
pertenece a un único cliente.
• Es posible cambiar el dueño de una mascota por otro.
• Estos datos son introducidos y gestionados por los auxiliares.
• Al dar de alta un nuevo animal, se comprobará en el registro del REIAC (Red Española de Identificación de Animales de
Compañía) si el animal está correctamente dado de alta. Este proceso únicamente se hará en animales que tengan la
obligación de estar identificados.
• Para toda consulta debe registrar Tiempo de consulta, Profesional, Animal tratado, Importe, Resolución, Recetas.
• Si el animal queda internado, el cliente podrá acceder a su estado en tiempo real y podrá comunicarse con una cámara
para ver su situación actual. La gestión de estas cámaras no corresponde al sistema.
43
• Las recetas y otros documentos relacionados con el servicio se incluirán en un gestor de contenidos que ya está en
funcionamiento en la clínica veterinaria.
• El cliente podrá realizar el pago mediante la aplicación. Si el pago tarda más de una semana se efectuará un recargo
sobre el precio inicial.
• El cliente podrá obtener un histórico de todas las consultas que se han realizado para sus mascotas.
44
Diagrama de casos de uso del actor Veterinario
Diagrama de clases
Es un diagrama de estructura
• Se utiliza para representar los elementos que componen un sistema de información desde un punto de vista estático.
• No incluye la forma en la que se comportan los distintos elementos a lo largo de la ejecución
• Define las clases que se utilizarán en la fase de construcción y la manera en que se relacionan las mismas.
Muestra:
o La representación de datos y su interacción.
o El modelo lógico de los datos de un sistema.
Elementos:
Clases: elemento principal del diagrama y representa una clase dentro del paradigma de la orientación a objetos. Define
un grupo de objetos que comparten características, condiciones y significado. Una clase está compuesta por tres
elementos: nombre de la clase, atributos, funciones.
(+) Pública. Representa que se puede acceder al atributo o función desde cualquier lugar de la aplicación.
(-) Privada. Representa que se puede acceder al atributo o función únicamente desde la misma clase.
(#) Protegida. Representa que el atributo o función puede ser accedida únicamente desde la misma clase o desde las clases
que hereden de ella (clases derivadas).
Relaciones
45
• Las relaciones se representan con una línea que une las clases
Propiedades :
• Multiplicidad. Es decir, el número de elementos de una clase que participan en una relación. Se puede indicar un
número, un rango y se utiliza n o * para identificar un número cualquiera.
• Nombre de la asociación. En ocasiones se escribe una indicación de la asociación que ayuda a entender la relación
que tienen dos clases. Suelen utilizarse verbos.
Tipos de relaciones
• Asociación
• Agregación
• Composición
• Herencia
Asociación
Este tipo de relación es el más común y se utiliza para representar dependencia semántica. Se representa con una simple
línea continua que une las clases que están incluidas en la asociación.
Agregación
Es una representación jerárquica que indica a un objeto y las partes que componen ese objeto. Representa relaciones en
las que un objeto es parte de otro, pero tiene existencia en sí mismo. Se representa con una línea que tiene un rombo en
la clase que es una agregación de la otra (en la clase que contiene las otras).
46
Composición
Representa una relación jerárquica entre un objeto y las partes que lo componen de una forma más fuerte que en la
agregación. Cuando el elemento contenedor desaparece, desaparecen todos los contenidos. No tienen sentido por sí
mismos.
Contenedor y contenidos tienen los mismos tiempos de vida. Se representa con una línea continua con un rombo relleno
en la clase que es compuesta.
Herencia
Este tipo de relaciones permiten que una clase (clase hija o subclase) reciba los atributos y métodos de otra clase (clase
padre o superclase). Estos atributos y métodos recibidos se suman a los que la clase tiene por sí misma. Se utiliza en
relaciones “es un”.
47
Diagrama de secuencia
• Representar el intercambio de mensajes entre los distintos objetos del sistema para cumplir con una funcionalidad.
• Definir el comportamiento dinámico del sistema de información.
• Definir como se realiza un caso de uso.
• Comprender el diagrama de clases.
Objeto
Mensaje
48
Ejemplo:
Diagrama de clases
49
Proceso de alquiler de Películas
Diagrama de secuencia
DISEÑO ARQUITECTONICO
ARQUITECTURA DE SOFTWARE
El l diseño arquitectónico es un proceso de diseño que permite la identificación de los sub-sistemas que componen un
sistema y su comunicación. El resultado de este proceso de diseño es una descripción de la arquitectura de software.
Diseño arquitectónico
• Rendimiento
o Reducir al mínimo las operaciones de comunicaciones. Uso de grano grueso en lugar de componentes de
grano fino.
• Seguridad
o Una arquitectura con los procesos críticos en las capas interiores.
• Disponibilidad
o Incluir componentes redundantes y los mecanismos de tolerancia a fallos.
• Mantenibilidad
o Uso de grano fino, los componentes reemplazables.
Concerniente a la descomposición del sistema en sub-sistemas. El diseño arquitectónico se expresa normalmente como un
diagrama de bloques que presentan un panorama general de la estructura del sistema.
Modelos más específicos muestran cómo los sub-sistemas comparten los datos, se distribuyen y la interfaz con los demás
también pueden ser desarrollados.
51
Box y diagramas
Muy abstracto - que no muestran la naturaleza de los componentes ni las relaciones de las propiedades visibles
externamente de los sub-sistemas. Sin embargo, útil para la comunicación con las partes interesadas y para la planificación
de proyectos.
Diseño arquitectónico es un proceso creativo, por lo que el proceso es diferente dependiendo del tipo de sistema que se
está desarrollado. Sin embargo, es común una serie de decisiones, en todos los procesos de diseño.
Reutilización de la arquitectura
• Sistemas en el mismo dominio a menudo tienen arquitecturas similares que reflejan conceptos del dominio.
• La aplicación de líneas de producción se construye en torno a un núcleo con arquitectura particular, con variantes que
satisfagan las necesidades del cliente.
Estilos arquitectónicos
Modelos arquitectónicos
52
Aplicación Web con arquitectura MVC
Modelo repositorio
Características:
Ventajas
Desventajas
• Sub-sistemas deben ponerse de acuerdo sobre un modelo repositorio de datos. Inevitablemente, un compromiso;
• La evolución de datos es difícil y costosa;
• No hay lugar para las políticas de gestión específicas;
• Difícil de distribuir de manera eficiente.
53
Modelo Cliente – Servidor
• Sistema distribuido que muestra cómo el modelo de datos y procesamiento se distribuye a través de una gama de
componentes.
• Conjunto de servidores independientes que ofrecen servicios específicos, tales como la impresión, gestión de datos,
etc.
• Conjunto de clientes que piden a éstos los servicios.
• Red que permite a los clientes acceder a los servidores.
Características:
Ventajas
Desventajas
• No hay un modelo de datos compartidos, así que los sub-sistemas utilizan diferentes datos de la organización.
Intercambio de datos puede ser ineficaz;
• Redundantes en la gestión de cada servidor;
• No hay registro central de nombres y servicios - que puede ser difícil de averiguar qué servidores y servicios están
disponibles.
Modelo de capas
Sistema de Gestión
54
Sistema de biblioteca
Cada componente de procesamiento (filtro) es discreto y realiza un tipo de transformación de datos. Los datos fluyen
(como en una tubería) de un componente a otro para su procesamiento.
55
Arquitectura del sistema de información por capas
56
Arquitectura de compilador de tuberías y filtros
57