Documentos de Académico
Documentos de Profesional
Documentos de Cultura
carmenxu_fdz
Según su destinatario
• Usuario final. Desarrollado para un usuario concreto con las características que
este solicitó en un principio (software hecho a medida).
• Para distribución. Desarrollado para un público masivo, el cual dispone de una
serie de características que la mayoría de los usuarios podría necesitar (software
genérico).
Según derechos de autor
• Software de código cerrado. Existe una forma libre de acceder al código fuente
el cual solo está disponible para el desarrollador, de forma que no está permitida
su modificación, adaptación e incluso lectura para terceros.
• Software de código abierto. Su código fuente y otros derechos han sido
publicados bajo una licencia de código abierto o forman parte del dominio
público, de forma que los usuarios pueden utilizar, modificar y/o redistribuir el
software, ya sea en su forma original o modificada.
• Software de dominio público. No tiene propietario, por lo que no tiene derechos
de autor, licencias ni restricciones de distribución. Se diferencia del software de
código abierto en que este último si conserva los derechos de autor.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9908468
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
1.2 CARACTERÍSTICAS DEL SOFTWARE
Dado que el software es un producto lógico, dispone de una serie de características que lo difieren del
hardware. El software desarrolla con intelecto, no se fabrica; se deteriora, no se desgasta. Si se quiere
reducir el deterioro del software, hay que mejorar su diseño. El software crea modelos de la realidad.
Aunque la industria se mueve hacia la construcción basada en componentes, la mayor parte del software
se desarrolla para un uso individualizado. El software está formado por múltiples piezas que deben
encajar perfectamente.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
1.3 PROCESO DE PRODUCCIÓN
La estructura del proceso establece el fundamento del proceso general de la Ingeniería de software
mediante la identificación de un número pequeño de actividades estructurales que se aplican en cualquier
proyecto de IS, independientemente de su tamaño o complejidad.
La estructura del proceso también contempla una serie de actividades sombrilla que se dan durante el
proceso. Un proceso general de IS contiene las siguientes actividades:
• Comunicación. Se busca entender los objetivos de los participantes respecto del proyecto, y
reunir los requerimientos que ayuden a definir las características y funciones del software.
• Planeación. Se define un plan de proyecto que describe los riesgos probables, las actividades y
tareas a realizar, los productos y recursos que se pueden utilizar y una programación de las
actividades
• Modelado. Representación de un sistema con el fin de entender mejor los requerimientos y
características del sistema.
• Construcción. Combina la generación de código con las pruebas a realizar para detectar errores
en el software.
• Despliegue. El software se entrega al cliente para que este proporcione retroalimentación.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9908468
Todos los planes de suscripción incluyen descargas sin publicidad con coins
Fundamentos de Ingeniería de...
Banco de apuntes de la
2. CONCEPTO DE INGENIERÍA DEL SOFTWARE
La Ingeniería de software surge de una serie de necesidades que tenían los desarrolladores a lo largo
de los años 80, algunas de ellas eran:
• Calidad. Muchos de los productos software no funcionaban correctamente.
• Mantenimiento del software existente.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
• Aumento de la demanda de software nuevo.
• Adaptación a las nuevas tecnologías.
• Incremento de la complejidad.
2.2 DEFINICIÓN DE IS
Sistema. Conjunto de elementos relacionados entre sí y con el medio, que forman una unidad o un todo
organizativo.
Sistema basado en computadora. Conjunto o disposición de elementos organizados para cumplir una
meta predefinida al procesar información.
Sistema software. Conjunto de piezas o elementos software relacionados entre sí y organizados en
subsistemas.
Modelo. Representación de un sistema en un determinado lenguaje. De un mismo sistema se pueden
construir muchos modelos.
Principio. Elementos adquiridos mediante el conocimiento, que definen las características que debe
poseer un modelo para ser una representación adecuada de un sistema. Es decir, en base a la experiencia
anterior, se pueden definir principios acerca de qué característica son buenas y cuales no a la hora de
construir un sistema software, y como conseguir esas características.
Herramienta. Instrumentos que permiten la representación de modelos. Normalmente serán lenguajes
(gráficos o no) que permiten representar modelos, y también programas que nos ayudan a trabajar con
esos lenguajes.
Técnicas. Modo de utilización de las herramientas.
Método. Proporcionan la experiencia técnica para elaborar el producto software, se basan en principios
fundamentales e incluyen actividades de modelado. Son similares a las técnicas, pero está más
relacionados con los principios y establecen que actividades deben llevarse a cabo para cumplir los
objetivos.
Proceso. Estructura que debe establecerse para la obtención eficaz de un producto de ingeniería
software (la obtención del software va a ser consecuencia de un proceso de desarrollo).
Heurísticas. Conjunto de reglas empíricas, que al ser aplicadas producen modelos que se adecuan a los
principios. Los humanos normalmente utilizamos heurísticas. No están basados en los principios y no
siempre tienen que dar buenos resultados, pero la experiencia nos dice que muchas veces si lo hacen
(nos dan buenas pistas).
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9908468
Todos los planes de suscripción incluyen descargas sin publicidad con coins
3. EL PROCESO DE DESARROLLO DE SOFTWARE
Proceso de desarrollo software. Conjunto de actividades, acciones y tareas que se realizan cuando va
a crearse un producto o sistema software.
Actividad. Busca el logro de objetivos amplios e independientes del tipo de aplicación a desarrollar y de
su complejidad.
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Acción. Tiene objetivos más concretos, y es un conjunto de tareas que producen un producto importante
como resultado.
Tarea. Objetivo pequeño y bien definido que produce un resultado tangible.
ACTIVIDADES ESTRUCTURALES
ACTIVIDADES SOMBRILLA
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9908468
Todos los planes de suscripción incluyen descargas sin publicidad con coins
3.2.2 FLUJO DEL PROCESO
Describe la manera en la que se organizan las actividades estructurales, acciones y tareas dentro
de cada proceso con respecto a la secuencia y el tiempo.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9908468
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
3.3.2 MODELO INCREMENTAL
Tiene estructura secuencial y combina elementos de los flujos de proceso lineal y paralelo. Aplica
secuencias lineales de forma escalonada a medida que avanza el calendario de actividades.
Cada secuencia lineal produce un “incremento” de software que es susceptible de entregarse de
forma similar a los incrementos producidos en un flujo de proceso evolutivo.
Cuando se usa un modelo incremental, es frecuente que el primer incremento sea el producto
fundamental, es decir, se abordan los requerimientos básicos, pero no se proporcionan muchas
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
características suplementarias.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9908468
Todos los planes de suscripción incluyen descargas sin publicidad con coins
MODELO DE PROTOTIPOS
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
producto?). Tipos de prototipos:
• Prototipo evolutivo: se acabará
usando como producto final.
• Prototipo desechable: usados
dentro de otros modelos de
proceso.
Se usa para:
• Facilitar la obtención y validación de requisitos (desechable).
• Estudios de viabilidad (desechable).
• Propuestas de soluciones (diseños) alternativas (desechable).
• En casos muy concretos como producto final (evolutivo).
Presentan todas las características (ventajas) de los modelos evolutivos, pero con los
siguientes inconvenientes: crea falsas expectativas por parte del cliente/usuario
(desechable) y conlleva decisiones de diseño del prototipo que pasen a formar parte del
producto final (evolutivo). Su uso vendrá determinado por: tipo y complejidad de la
aplicación, características del cliente y la disponibilidad de herramientas para su
construcción.
Con el empleo del modelo espiral, el software se desarrolla en una serie de entregas
evolutivas. Durante las primeras iteraciones, lo que se entrega puede ser un modelo o
prototipo. En las iteraciones posteriores se producen versiones cada vez más completas
del sistema.
Características (además de la de los procesos evolutivos):
• Centrado en el análisis de riesgo,
haciendo uso de construcción de
prototipos para su estudio.
• La espiral puede continuar una
vez finalizado todo el proceso y
entregado el producto para
llevar a cabo la etapa de
mantenimiento.
• Es un enfoque adecuado para el
desarrollo de sistemas a gran
escala.
Inconvenientes:
• Modelo de proceso predictivo no adaptable a la complejidad ni al tipo de sistema.
• Requiere un equipo de desarrollo con gran experiencia en análisis de riesgo.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9908468
Todos los planes de suscripción incluyen descargas sin publicidad con coins
3.4 PROCESO UNIFICADO
Es un modelo evolutivo compuesto por cuatro fases o etapas. Además, es un intento por obtener los
mejores rasgos y características de los modelos tradicionales del proceso software, pero de forma que
implemente muchos de los mejores principios del desarrollo ágil de software.
El proceso unificado reconoce la importancia de la comunicación con el cliente y los métodos directos
para describir su punto de vista respecto de un sistema. Por otro lado, hace énfasis en la importancia de
la arquitectura del software. Sugiere un flujo del proceso iterativo e incremental, lo que da la sensación
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
evolutiva que resulta esencial en el desarrollo moderno del software.
3.4.1 CARACTERÍSTICAS
Además de todas las de los modelos de los procesos evolutivos, tiene las siguientes características
particulares:
• En un modelo de proceso adaptable a la complejidad y al tipo de sistema.
• Centrado en la arquitectura, mostrando y decidiendo los distintos aspectos
arquitectónicos que presenta un sistema software en etapas tempranas, para que sirvan
de base a las demás.
• Dirigido por casos de uso, desarrollándose en cada iteración determinados casos de uso
(ya veremos que son los casos de uso). Eligiendo para iteraciones tempranas los casos de
uso que determinan la arquitectura.
El desarrollo ágil de software envuelve un enfoque para la toma de decisiones en los proyectos de
software, que se refiere a métodos de ingeniería del software basados en el desarrollo iterativo e
incremental, donde los requisitos y soluciones evolucionan con el tiempo según la necesidad del proyecto.
Así, el trabajo es realizado mediante la colaboración de equipos autoorganizados y multidisciplinarios,
inmersos en un proceso de toma de decisiones a corto plazo.
Características Beneficios
• Proceso iterativo e incremental: evolutivo • Desarrollo guiado por valor
• Entregas frecuentes • Mejor manejo de riesgos e
incertidumbres
• Trabajo en equipo
• Mejora la productividad
• Autonomía del equipo de desarrollo
• Revisiones y reuniones retrospectivas
frecuentes
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9908468
Todos los planes de suscripción incluyen descargas sin publicidad con coins
3.5.1 MÉTODOS Y TÉCNICAS
Scrum. Es un marco de trabajo que promueve la colaboración en los equipos para lograr
desarrollar productos complejos.
Programación externa. Es una metodología que tiene como principal objetivo aumentar la
productividad a la hora de desarrollar un producto software. Da prioridad a los trabajos que
producen un resultado directo y en los cuales se reduce la burocracia que pueda existir en el
entorno de trabajo.
Programación en pareja. Requiere que dos programadores participen en un esfuerzo combinado
de desarrollo en un sitio de trabajo. Cada miembro realiza una acción que el otro no está
haciendo en un momento determinado.
TDD (Test Drive Development). Es un enfoque evolutivo del desarrollo que combina el desarrollo
de prueba donde primero escribe una prueba antes de escribir el código de producción
suficiente para cumplir con esa prueba y refactorización.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-9908468
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.