Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
Unidad 1: Ingeniería del Software ........................................................................................................................... 3
Qué es el software............................................................................................................................................... 3
Características del software ................................................................................................................................ 3
Ingeniería de software ........................................................................................................................................ 3
Importancia de aplicar un Proceso de Ingeniería............................................................................................ 3
Crisis del software: .......................................................................................................................................... 3
Proceso de software ............................................................................................................................................ 3
Modelo de proceso de software ......................................................................................................................... 4
Proceso unificado de desarrollo .......................................................................................................................... 4
Calidad en un producto de software ................................................................................................................... 5
Relación Calidad-Métrica ................................................................................................................................ 6
Estudios de factibilidad ................................................................................................................................... 7
Unidad 2: Ingeniería de requerimientos de software ............................................................................................. 7
Requerimientos funcionales y no funcionales .................................................................................................... 7
Requerimientos funcionales............................................................................................................................ 7
Requerimientos no funcionales....................................................................................................................... 7
Requerimientos del dominio ........................................................................................................................... 8
Requerimientos del usuario ............................................................................................................................ 8
Requerimientos del sistema ............................................................................................................................ 8
Requerimientos verificables ............................................................................................................................ 9
Documentos de requerimientos de software ................................................................................................. 9
Proceso de ingeniería de requerimientos ........................................................................................................... 9
SRS/ERS.............................................................................................................................................................. 10
Características de un SRS: ............................................................................................................................. 10
Unidad 3: Captura y gestión de requerimientos ................................................................................................... 11
Obtención y Análisis de Requerimientos e Interfaces ...................................................................................... 11
Validación de Requerimientos .......................................................................................................................... 12
Gestión de requerimientos ............................................................................................................................... 12
Técnicas de recolección de información ........................................................................................................... 13
Entrevistas ..................................................................................................................................................... 13
Cuestionarios ................................................................................................................................................. 14
Desarrollo Conjunto de Aplicaciones (JAD) ................................................................................................... 14
Brainstorming (tormenta de ideas) ............................................................................................................... 14
Unidad 4: UML y herramientas CASE .................................................................................................................... 15
Desarrollo de software orientado a objetos ..................................................................................................... 15
Modelos de Casos de Uso ................................................................................................................................. 16
Actores .............................................................................................................................................................. 16
Casos de uso ...................................................................................................................................................... 16
¿Qué es UML? ................................................................................................................................................... 16
Ejemplos de diagramas UML: ............................................................................................................................ 17
Diagrama de clases ........................................................................................................................................ 17
Diagrama de objetos ..................................................................................................................................... 17
Diagramas de casos de uso ........................................................................................................................... 17
Diagrama de Estados ..................................................................................................................................... 17
Diagrama de secuencias ................................................................................................................................ 17
Diagramas de actividades .............................................................................................................................. 17
Diagrama de colaboraciones ......................................................................................................................... 17
Diagrama de componentes ........................................................................................................................... 17
Diagramas de distribución ............................................................................................................................. 18
Unidad 5: Captura y gestión de requerimientos ................................................................................................... 18
Importancia de los métodos formales .............................................................................................................. 18
¿Qué son los métodos formales? .................................................................................................................. 18
Qué es el OCL .................................................................................................................................................... 18
Unidad 1: Ingeniería del Software
Qué es el software
El software es una serie de instrucciones que cuando se ejecutan, proporcionan características,
funciones y el que se busca para ciertas tareas. Estas estructuras permiten que los programas
manipulen de forma adecuada información para satisfacer una necesidad dada. Para entender la
definición de lo que es el software, es importante hacer una diferencia entre estos sistemas
lógicos y los seres humanos, o sistemas físicos, siendo así también diferenciados del hardware.
Ingeniería de software
Aplicación sistemática de un conjunto de técnicas y procedimientos para mejorar el desarrollo de
software. El uso de los principios de ingeniería para obtener productos software de forma mantenible
(costeable), fiable y eficaz.
Proceso de software
Es un conjunto de actividades y resultados asociados que producen un producto de software. Define
quién hace qué, cuándo y cómo para alcanzar cierto objetivo.
Existen 4 actividades fundamentales de procesos que son comunes para todos los proyectos de
software.
1. Especificación del software, donde los clientes e ingenieros definen el software a producir
y las restricciones sobre su operación.
2. Desarrollo del software donde el software se diseña y programa.
3. Validación del software donde el software se válida para asegurar que es lo que el cliente
requiere.
4. Evolución del software donde el software se modifica para adaptarlo a los cambios
requeridos por el cliente y el mercado.
Diferentes tipos de sistemas necesitan diferentes procesos de desarrollo, así que cada actividad
puede organizarse de diferentes formas y describirse en diferentes niveles de detalle según la
necesidad.
1. Modelo de flujo de trabajo: muestra la secuencia de actividades en el proceso junto con sus
entradas, salidas y dependencias. Representa las acciones humanas.
3. Modelo de rollación: representa los roles de las personas involucradas en el proceso del
software y las actividades de las que son responsables.
La mayor parte de los modelos de procesos del software se basan en uno de los tres modelos
generales o paradigmas de desarrollo:
1. El enfoque en cascada: Considera las actividades anteriores y las representa como fases de
procesos separados, tales como la especificación de requerimientos, el diseño del software, la
implementación, las pruebas, etc. Después de cada etapa, se “firma” y el desarrollo continúa.
3. Ingeniería del software basada en componentes: Esta técnica supone que las partes del
sistema existen y se enfoca en la integración de aquellas partes más que desarrollarlas.
3. Fase de construcción: está compuesta por varias iteraciones, en las cuales se van
incorporando cada vez más casos de uso, de acuerdo a los factores de riesgo que se
analizaron en la primera fase. Este enfoque permite contar en forma temprana con el
sistema que va a satisfacer esos casos de uso que identificados.
4. Fase de transición: este re se refiere a cuando el sistema está instalado, siendo una
versión beta del sistema o el programa completo.
El proceso unificado de desarrollo agrupa las actividades en 9 flujos de trabajo principales, los cuales
son:
1. Modelo de negocio: describe e identifica quiénes participan y las actividades que
requieren automatizaciones.
2. Requerimiento: define lo que debe hacer el sistema y se identifican las funciones
requeridas y las restricciones que tiene.
3. Análisis y diseño: describe como el sistema será realizado con respecto a la funcionalidad
prevista y las restricciones impuestas, siendo estas programadas.
4. Prueba: Busca los defectos a lo largo de todo el ciclo de vida
5. Instalación o despliegue: se termina de confeccionar el producto y se le hace el empaque,
instalación, se capacita a los usuarios.
6. Administración del proyecto: involucra actividades con las que se busca producir un
software que satisfaga las necesidades de los clientes.
7. Administración de configuración y cambios: describe como controlar los elementos
producidos por todos los integrantes del equipo de trabajo, en cuanto: utilización de los
elementos, control de versiones, etc.
8. Ambiente: contiene actividades que describen los procesos y herramientas que
soportarán el equipo de trabajo del proyecto, así como el procedimiento para
implementar el proceso en una empresa.
2. Un producto útil que entrega contenido, funciones, y características que el usuario final
desea, de manera confiable y sin errores. Un producto útil siempre satisface el conjunto de
requerimientos en forma explícita por los participantes.
3. Agregar valor para el producto y para el usuario de un producto, el software de alta calidad
proporciona beneficios a la organización que lo produce, así como a la comunidad que lo vaya a usar.
La organización que elabora el software obtiene valor agregado porque el software de alta calidad
requiere menor esfuerzo de mantenimiento, menos errores que corregir, poca asistencia al cliente,
etc.
Relación Calidad-Métrica
“Medida cuantitativa del grado en que un sistema/componente/proceso posee un atributo dado.”
Las métricas sirven para evaluar y gestionar el progreso y desempeño con respecto al objetivo del
proyecto en curso, permitiendo valorar la calidad del producto.
Un proceso efectivo de medición permite definir planes viables de desarrollo de productos y
prestación de servicios de calidad, así como distinguir situaciones reales de riesgo, permitiendo una
buena toma de decisiones.
● La calidad de un producto de software puede depender de varios factores, entre estos se
encuentra que cumpla principalmente con los requerimientos del usuario y los estándares de
calidad durante el proceso de desarrollo. La calidad se puede evaluar mediante el uso de
métricas a través de diferentes procesos enfocados en el área del producto a analizar y
gestionar, la información proporcionada por estas métricas es de utilidad para los
desarrolladores y la optimización del producto de ser necesario.
Métrica directa: Métrica de un atributo que no depende de ninguna otra métrica de otro
atributo.
Métricas ampliadas de punto de función: Es una ampliación de la medida del punto de función
que se puede aplicar a sistemas y aplicaciones de ingeniería del software. La medida de punto
de característica se acomoda a aplicaciones en donde la complejidad del algoritmo es alta. Las
aplicaciones de software de tiempo real, de control de procesos, y empotradas tienden a
tener alta complejidad de algoritmos y por lo tanto son adecuadas para el punto de
característica.
Estudios de factibilidad
La ingeniería de requerimiento es una disciplina que abarca todas las actividades para la obtención de
requerimientos para el sistema a desarrollar.
El proceso de la ingeniería de requerimiento abarca ciertos pasos:
1) Viabilidad: En este proceso se determina si el sistema a desarrollar es viable o no.
2) Elicitación: En este paso se determina los requerimientos de usuarios.
3) Validación: En este paso los usuarios determinan si todos los requerimientos que se
obtuvieron son válidos.
4) Gestión de requisitos: En este paso se manejan los cambios que surgen mientras el
desarrollo del sistema se va realizando.
SRS/ERS
Documento oficial para los desarrolladores del sistema donde se encuentran los requerimientos del
usuario del sistema y la especificación detallada de los requerimientos que se deben implementar.
No existe SRS perfecta.
Características de un SRS:
Correcto: Cada requerimiento en el SRS debe representar un requerimiento real del sistema a
construir.
No ambiguo: La redacción de los requerimientos debe ser clara de modo que no se pueda
malinterpretar.
Completo: Deben estar incluidos todos los requerimientos, deben estar definidas todas las
respuestas del software a todos tipos de datos de datos en todas las situaciones, todas las
referencias deben estar incluidas y se debe evitar la postergación de una sección del SRS, y si,
es postergado se debe aclarar el responsable de determinar el contenido y cuándo se hará.
Verificable: Cada uno de los requerimientos establecidos en él debe ser verificable.
Consistente: Ningún subconjunto de requerimientos debe tener conflictos.
Entendible para todos: Se debe incorporar documentación entendible por usuarios, o sea en
lenguaje informal.
Modificable: Debe permitir la modificación fácil, completa y consistente.
Rastreable: Debe ser claro el origen de cada requerimiento y facilitar la referencia de cada
requisito para un desarrollo futuro o modificación.
Anotado: Se deben incorporar anotaciones para guiar el desarrollo.
Validación de Requerimientos
Esto trata de mostrar que éstos realmente definen el sistema que el cliente desea. Coincide
parcialmente con el análisis ya que éste implica encontrar problemas con los requerimientos. La
validación de requerimientos es importante debido a que los errores en el documento de
requerimientos pueden conducir a importantes costes al repetir el trabajo cuando son descubiertos
durante el desarrollo o después de que el sistema esté en uso.
Durante el proceso de validación de requerimientos, se deben llevar a cabo verificaciones sobre
requerimientos en el documento de requerimientos. Estas verificaciones comprenden:
Verificaciones de validez: Un usuario puede pensar que se necesita un sistema para llevar a
cabo ciertas funciones
Verificación de consistencia: Los requerimientos en el documento no deben contradecirse (no
debe haber contradictorias de la misma función del sistema)
Verificaciones de completitud: El documento de requerimientos debe incluir requerimientos
que definan todas las funciones y restricciones propuestas por el usuario del sistema
Verificaciones de realismo: Utilizando el conocimiento de la tecnología existente, los
requerimientos deben verificarse para asegurar que se pueden implementar, esto debe tener
en cuenta el presupuesto y la confección de agendas para el desarrollo del sistema
Verificabilidad: Para reducir la posibilidad de discusiones entre el cliente y el contratista, los
requerimientos del sistema siempre deben redactarse de tal forma que sean verificables
Pueden utilizarse, en conjunto o de forma individual, varias técnicas de validación de requerimientos:
1. Revisiones de requerimientos: Los requerimientos son analizados sistemáticamente por un
equipo de revisores.
2. Construcción de prototipos: En este enfoque de validación, se muestra un modelo
ejecutable del sistema a los usuarios finales y a los clientes.
3. Generación de casos de prueba: Los requerimientos deben poder probarse. Desarrollar
pruebas para los requerimientos del usuario antes de que se escriba código es una parte
fundamental de la programación extrema.
Gestión de requerimientos
La gestión de requerimientos es el proceso de comprender y controlar los cambios en los
requerimientos del sistema. Es necesario mantenerse al tanto de los requerimientos particulares y
mantener vínculos entre los requerimientos dependientes de forma que se pueda evaluar el impacto
de los cambios en los requerimientos.
Durante el proceso del software, la comprensión del problema por parte de los stakeholders está
cambiando constantemente. Estos requerimientos deben entonces evolucionar para reflejar esta
perspectiva cambiante del problema.
Además, una vez que un sistema se ha instalado, inevitablemente surgen nuevos requerimientos. Es
difícil para los usuarios y clientes del sistema anticipar qué efectos tendrá el sistema nuevo en la
organización. Cuando los usuarios finales tienen experiencia con un sistema, descubren nuevas
necesidades y prioridades:
1. Normalmente, los sistemas grandes tienen una comunidad de usuarios diversa donde los
usuarios tienen diferentes requerimientos y prioridades.
2. Las personas que pagan por el sistema y los usuarios raramente son la misma persona. Los
clientes del sistema imponen requerimientos debido a las restricciones organizacionales y de
presupuesto.
3. El entorno de negocios y técnico del sistema cambia después de la instalación, y estos
cambios se deben reflejar en el sistema.
Actores
Un actor es una agrupación uniforme de personas, sistemas o máquinas que interactúan con el
sistema que estamos construyendo de la misma forma. Los actores son externos al sistema que
desarrollamos, por lo tanto, al identificarlos, estamos empezando a delimitar el sistema y definir su
alcance.
Es importante saber la diferencia entre usuario y actor, el segundo es una clase de rol, mientras que
el primero es quien cuando usa el sistema, asume el rol.
El usuario puede acceder al sistema como varios actores. También puede ocurrir que un actor sea
una máquina, o un software que controle una cosa en específico.
Casos de uso
Un caso de uso es iniciado por un actor, a partir de ese momento, ese actor junto a otros,
intercambian datos o control con el sistema, participando de ese caso de uso. El nombre del caso de
uso debe ser un verbo, seguido generalmente por el principal objeto del sistema es que afectado por
el caso.
¿Qué es UML?
Lenguaje de modelado unificado, es un lenguaje estándar para representar planos de software, que
representa distintas vistas de un mismo modelo. Esas vistas es una proyección de la organización de
la estructura del sistema, centrada en un aspecto en particular.
Por lo tanto, UML es un lenguaje utilizado para modelar un sistema real o software. Y tiene 4
funciones en específico:
1. Visualizar: como es un lenguaje gráfico, facilita la comunicación entre los distintos miembros
de un proyecto. Permite elevar el nivel de abstracción para obtener una visión más general de
una parte de un proyecto.
2. Especificar: construir modelos precisos, formales y completos.
3. Construir.
4. Documentar: Sirve para mejorar la comprensión del código, futuras aplicaciones, corrección
de errores, realizar pruebas.
Ejemplos de diagramas UML:
Diagrama de clases
Es una estructura estática de un sistema. Expresa cosas que existen o un grupo de cosas (clases), que
tienen ciertas propiedades (atributos) y acciones similares. Estas clases pueden ser cosas tangibles,
como cosas abstractas.
Diagrama de objetos
Están vinculados con los diagramas de clases. Son una instancia de clase, por lo que un diagrama de
objetos puede ser visto como una instancia de un diagrama de clases. Los diagramas de objetos
describen la estructura estática de un sistema en un momento en particular.
Diagramas de casos de uso
Un caso de uso es una descripción de las acciones de un sistema desde el punto de vista del usuario.
Es una herramienta que permite visualizar aciertos y errores a la hora de expresar los requerimientos
del sistema vista desde la perspectiva del usuario. Estos diagramas modelan la funcionalidad del
sistema, usando actores y casos de uso.
Diagrama de Estados
En cualquier momento, un objeto se encuentra en un estado particular, la luz está encendida o
apagada, el auto en movimiento o detenido, etc.
Diagrama de secuencias
Los diagramas de clases y los de objetos representan información estática. No obstante, en un
sistema funcional, los objetos interactúan entre sí, y tales interacciones suceden con el tiempo. El
diagrama de secuencias UML muestra la mecánica de la interacción con base en tiempos.
Diagramas de actividades
Un diagrama de actividades ilustra la naturaleza dinámica de un sistema mediante el modelado del
flujo ocurrente de actividad en actividad. Una actividad representa una operación en alguna clase del
sistema, y que resulta en un cambio en el estado del sistema. Típicamente, los diagramas de actividad
son utilizados para modelar el flujo de trabajo interno de una operación.
Diagrama de colaboraciones
El diagrama de colaboraciones describe las interacciones entre los objetos en términos de mensajes
secuenciados. Los diagramas de colaboración representan una combinación de información tomadas
de los diagramas de clases, secuencias, CU, comportamiento, etc.
Diagrama de componentes
Un diagrama de componentes, representa de forma estática el sistema de información.
Habitualmente se utiliza después de haber creado el diagrama de clases, pues necesita información
de este diagrama como pueden ser las propias clases.
Este diagrama proporciona una vista de alto nivel de los componentes dentro de un sistema. Los
componentes pueden ser un componente de software, como una base de datos o una interfaz de
usuario; o un componente de hardware como un circuito, microchip o dispositivo; o una unidad de
negocio como un proveedor, nómina o envío.
Diagramas de distribución
El diagrama de distribución UML muestra la arquitectura física de un sistema informático. Puede
representar a los equipos y a los dispositivos, y también mostrar sus interconexiones y el software
que se encontrará en cada máquina.
El uso de métodos formales permite plantear de manera clara qué definen el comportamiento en
términos del "qué debe hacer" y no del "cómo se hace". Gracia a este proceso, se puede verificar
propiedades derivadas de cada módulo, mediante técnicas de razonamiento, asociadas a los modelos
formales.
Para los procesos de especificación, se reconoce las siguientes clasificaciones:
•Lenguajes basados en modelos y estados, que permiten especificar el sistema mediante un
concepto formal de estados y operaciones sobre estados. Los datos y relaciones/funciones se
escriben en detalle y sus propiedades se expresan en lógica de primer orden. Por ejemplo,
VDM, Z, B, OCL.
•Lenguajes basados en especificaciones algebraicas. Proponen una descripción de estructuras
de datos, estableciendo tipos y operaciones sobre esos tipos. Para cada tipo se define un
conjunto de valores y operaciones sobre esos valores. Las operaciones de un tipo se definen a
través de un conjunto de axiomas o ecuaciones que especifican las restricciones que deben
satisfacer esas operaciones. Ejemplos: Learch, OBJ, TADs.
Lenguajes de especificación de comportamiento:
◦métodos basados en algebra de procesos: modelan la interacción entre procesos
concurrentes. Esto ha potenciado su difusión en la especificación de sistemas de
comunicación y de sistemas distribuidos y concurrentes.
◦métodos en redes de petri: una red de petri es un formalismo basado en autómatas, es decir,
un modelo basado en flujos de información. Permiten expresar eventos concurrentes.
◦métodos basados en lógica temporal: se usan para especificar sistemas concurrentes y
reactivos. Los sistemas reactivos son aquellos que mantienen una continua interacción con su
entorno respondiendo a estímulos externos.
Qué es el OCL
El OCL es un lenguaje para la descripción formal de expresiones en los modelos UML. Fue adoptado
en octubre de 2003 por el grupo OMG como parte UML 2.0. Sus expresiones pueden representar
invariantes, precondiciones, postcondiciones, inicializaciones, guardias, reglas de derivación, así
como consultas a objetos para determinar sus condiciones de estado.