INGENIERIA DE SOFTWARE - (301404A_612)
SEGUNDA FASE - MODELAMIENTO
JORGE LUIS ZARACHE
72.433.142
GRUPO: 301404_16
TUTORA
DIANA JUDITH MENDEZ
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA (UNAD).
ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERA
INGENIERIA SISTEMAS
INGENIERÍA DE SOFTWARE
BOGOTA
2019
DESARROLLO DE LA ACTIVIDAD
1-Resumen de la propuesta de software que trabajarán como grupo y que seleccionaron en
la fase anterior. (Tipo de software y descripción de la propuesta de software).
La Empresa Moreno & Asociados S.A.S. Descripción de la Situación Problema
Descrita en el Contexto del Caso de Estudio. Debido a la insuficiente información
acerca del turismo en territorio nacional, los municipios no pueden exponer sus
servicios turísticos, dar a conocer sus lugares más representativos, diferentes servicios
que se pueden ofrecer, entre otros. El software por desarrollar permite que toda esa
información esté al alcance de los turistas, de esta manera se podría programar una
visita a un municipio específico o a varios. Identificación del Tipo de Software (tipo de
aplicación) Que Propone. Un Software de Gestión es ideal para este caso de estudio,
debido a que es necesario procesar información en base de datos para alojar todos los
datos importantes de cada municipio. El software que propongo es un aplicativo o app
para celulares, originalmente para el sistema Android y a futuro en el sistema 10S. Esta
app permitirá al usuario la portabilidad y la actualización de la información en tiempo
real, el tipo de app sería un servicio web que cumpla con los requerimientos y
características para tener en cuenta en el desarrollo de esta. La página sería diseñada en
cualquier editor de páginas dinámicas web como DreamWeaver, luego incrustada como
un elemento View en un software de desarrollo como Android Studio o B4A. Para su
distribución, la aplicación se subiría al Play Store, se debe socializar a los clientes y
usuarios para hacerla popular y así conseguir muchas descargas.
Descripción de los Requerimientos y Características para Tener en Cuenta en el
Desarrollo de Dicho Software.
2-Modelo de desarrollo de software seleccionado.
Modelo de Desarrollo de Software Seleccionado por Prototipos o Iterativo El modelo de
desarrollo de software que se propone es el modelo por prototipos o iterativo, este tipo
de desarrollo de software cuenta con un sinnúmero de etapas de depuración y
mejoramiento, esto hace que se pueda mostrar al cliente, el proceso. El modelo por
prototipos o iterativo permite refinar sistemas complejos con base en un sistema mínimo
definido al principio del proceso de la especificación del sistema y de los cuales el
cliente no tiene la definición completa de requisitos.
3-Explicación y justificación de la selección del modelo
Prototipos o Iterativo El proceso comienza con la definición de requisitos por parte del
cliente y así se llega a los objetivos globales del sistema. Con base en los requisitos
conocidos se diseña un primer acercamiento a la solución el cual se implementa como
una versión funcional del software. Dicho prototipo es evaluado por el cliente y así
definir nuevos alcances y requisitos.
Por medio de dichas iteraciones, de un prototipo a otro se logra el sistema completo.
Este enfoque tiene ventajas y desventajas entre otras están:
■ El cliente ve lo que parece una versión del software y no tiene en cuenta que para
realizarse un prototipo rápido, se rebaja la calidad del producto software de esa manera
el cliente puede no entender que se debe realizar de nuevo el sistema y querrá tener
como versión final de su sistema el prototipo ya desarrollado.
■ De forma demasiado frecuente la gestión de desarrollo del software es muy lenta.
Documentar el desarrollo suele ser tedioso y puede perderse control por parte de los jefes
de proyectos debido a la cantidad de versiones desarrolladas.
■ Por el otro lado el paradigma por prototipos también cuenta con una aceptación amplia
debido a que el cliente le gusta ver versiones inmediatas de su sistema. También suele
ser muy efectivo para el manejo y la identificación de errores en etapas tempranas del
proceso de desarrollo. Algunos de los beneficios que ofrecen los ciclos iterativos a las
empresas en el momento de poner en marcha un proyecto.
Análisis de avances: al fraccionar el proyecto en etapas, el equipo de trabajo tiene la
posibilidad de analizar los resultados en cada una de ellas e incorporar mejoras para la
entrega final. Todo lo contrario que algunos métodos tradicionales, en los que se fija una
fecha de entrega y el análisis se realiza sobre los resultados finales.
Manejo de riesgos: este modelo de planificación por secciones también permite la
evaluación de riesgos que pueden irrumpir durante la ejecución del proceso. Los ciclos
iterativos son partidarios de soluciones parciales en vez de esperar hasta el final para
realizar un «análisis macro» del proyecto.
Retroalimentación: el llamado «feedback» es unas de las características de los métodos
de vida iterativos. Al plantear un desarrollo dosificado, cada fase propicia el diálogo
entre el equipo de trabajo, el líder del proyecto y, por supuesto, el cliente. Todo lo que
deba analizarse o corregirse debe ir en consonancia con los objetivos propuestos y la
satisfacción del destinatario.
Flexibilidad: no sólo en cuanto a la introducción de cambios, sino también en las
situaciones en que los objetivos no hayan sido claramente definidos desde el inicio. En
estos casos, el proceso mismo puede ser la oportunidad para fijarlos y llevarlos a cabo.
4-Descripción de las Fases del Ciclo de Vida y su Aplicación para la Propuesta de
Desarrollo, de Acuerdo con el Modelo Seleccionado
El modelo por prototipos o iterativo es un modelo derivado del ciclo de vida en cascada.
Este modelo busca reducir el riesgo que surge entre las necesidades del usuario y el
producto final por malentendidos durante la etapa de recogida de requisitos. Consiste en
la iteración de varios ciclos de vida en cascada. Al final de cada iteración se le entrega al
cliente una versión mejorada o con mayores funcionalidades del producto. El cliente es
quien después de cada iteración evalúa el producto y lo corrige o propone mejoras. Estas
iteraciones se repetirán hasta obtener un producto que satisfaga las necesidades del
cliente.
Este modelo se suele utilizar en proyectos en los que los requisitos no están claros por
parte del usuario, por lo que se hace necesaria la creación de distintos prototipos para
presentarlos y conseguir la conformidad del cliente, una de las principales ventajas que
ofrece este modelo es que no hace falta que los requisitos estén totalmente definidos al
inicio del desarrollo, sino que se pueden ir refinando en cada una de las iteraciones,
igual que otros modelos similares tiene las ventajas propias de realizar el desarrollo en
pequeños ciclos, lo que permite gestionar mejor los riesgos, gestionar mejor las
entregas, la primera de las ventajas que ofrece este modelo, el no ser necesario tener los
requisitos definidos desde el principio, puede verse también como un inconveniente ya
que pueden surgir problemas relacionados con la arquitectura.
Ciclo de vida del modelo.
5-Descripción del equipo de trabajo y de los roles que implementarán de acuerdo
al modelo seleccionado.
Jefe de Proyecto.
En proyectos grandes, sin dudas, es preciso dividir la gestión del proyecto (jefe del
proyecto) de la dirección técnica (director de desarrollo) incluso se requiere un director
de planificación debido al volumen y complejidad de las tareas. Sin embargo, en la
propuesta, el rol de jefe de proyecto se encarga de realizar las funciones propias de la
gestión del proyecto y de la planificación. En dependencia de la empresa, si no se
dispone de suficiente personal, este rol debería también dirigir las cuestiones técnicas
por lo que sería el más apropiado para asumir las responsabilidades definidas para el rol
de director de desarrollo. El rol de jefe de proyecto debe además responder a la alta
dirección de la empresa, manteniéndola informada del progreso del equipo, y debe
trabajar estrechamente relacionado con el especialista de calidad que participa en el
proyecto. Además, es el responsable de controlar el trabajo de cada miembro del equipo
y evaluar el cumplimiento de sus planes. Conocimientos y Habilidades del Jefe de
Proyecto.
• Poseer experiencia en el dominio de la aplicación y en el desarrollo del software.
• Poseer habilidades para el análisis y manejo de riesgos, estimación, planificación y
análisis de decisión.
• Poseer habilidades de presentación, comunicación y negociación.
• Mostrar liderazgo y capacidades para la creación de equipos.
• Poseer buenas habilidades para manejo de tiempo y un historial de tomas de
decisiones rápidas y efectivas bajo tensión.
• Poseer buenas habilidades interpersonales y mostrar ser juicioso en la selección del
personal.
• Estar enfocado en la entrega de valor del cliente, de forma tal que exactamente se
cumplan con las necesidades del cliente.
Director de Desarrollo.
El director de desarrollo debe poseer la visión global del proyecto ara ser efectivo, el
director de desarrollo y el jefe del proyecto necesitan trabajar estrechamente vinculados,
el director de desarrollo como líder en los aspectos técnicos y el jefe de proyecto en los
aspectos administrativos.
Conocimientos y Habilidades del Director de Desarrollo.
• Necesita poseer todas las habilidades de un diseñador.
• Estar bien ubicado, poseer madurez, visión y una gran experiencia que permita
detectar problemas rápidamente y ser mesurado al hacer juicios críticos en ausencia de
una completa información. Específicamente, el director de desarrollo de software, o
miembros de este equipo, debe combinar las siguientes habilidades:
Liderazgo
Orientación a Metas
Habilidad de Comunicación
Ser Proactivos.
Poseer experiencia.
Analista.
El rol de analista será responsable de analizar los procesos de negocios, especificar los
requisitos y diseñar la interfaz usuario. Debe estar muy relacionado con el cliente para
determinar claramente las funcionalidades del sistema. Se debe destacar que si en el
grupo es posible contar con personal especializado que pueda asumir el diseño de
interfaz de usuario sería conveniente que se destinara a dicha función, trabajando
estrechamente relacionado con el analista.
Conocimientos y Habilidades del Analista.
Poseer conocimiento del dominio del negocio.
Comprender los requerimientos de todos los interesados en el negocio, sus
estrategias y metas.
Ser un buen facilitador y poseer excelentes habilidades para la comunicación
oral y escrita.
Facilitar el modelamiento del software.
Tomar parte en la definición de requerimientos del producto final del proyecto.
Apreciar y evaluar la situación del cliente donde el producto final del proyecto
será instalado.
Realizar un análisis costo-beneficio para cualquier cambio sugerido en el
proyecto.
Discutir y soportar a quienes compran y venden el producto final del proyecto.
Estar familiarizado con las herramientas utilizadas en la captura del modelo del
negocio.
Estar familiarizado con todas las herramientas usadas para establecer
requerimientos.
Diseñador
Rol del diseñador debe definir las responsabilidades, operaciones, atributos y
relaciones de varias clases y determinar cómo ajustarlas al ambiente de
implementación. Es responsable lector la base de datos definiendo las tablas,
los índices, las vistas, las restricciones, triggers, y los procedimientos o
parámetros de almacenamiento, así como todo aquello que resulte necesario
almacenar, recuperar y borrarlos objetos persistentes.
Conocimientos y Habilidades del Diseñador.
Requerimientos del sistema.
Tecnicas de diseño de software, incluyendo técnicas de análisis y
diseño orientado a objetos y UML.
Tecnicas de diseño de bases de datos.
Tecnologías con las cuales el sistema ha sido implementado.
Comprender la arquitectura del sistema, como fue representada por el
director de desarrollo.
Comprender el rol de probador del sistema.
Conocer en general los principios del manejo de la configuración.
Programador.
El rol de programador debe implementar componentes, localizar y
corregir defectos. De acuerdo con la entidad donde se aplique la
plantilla de roles, es posible que en algunos casos este rol deba asumir
la responsabilidad de implementar componentes y subsistemas de
prueba, así como desarrollar artefactos de instalación.
Conocimientos y habilidades del Programador.
Ser un comunicador persuasivo que sea capaz de detectar y discutir
aspectos sensibles.
Tecnicas de modelamiento del sistema.
Requerimientos del sistema.
Tecnicas de diseño de software, incluyendo técnicas de análisis y
diseño orientado a objetos y UML.
Tecnologías con la cual el sistema ha sido implementado.
Base de datos y técnicas de análisis y diseño orientadas a objetos.
Administraci6n de Base de Datos.
Comprensión del ambiente y el lenguaje de implementación.
Poseer conocimientos y habilidades de programación.
Probador. Es el rol responsable de la planificación, diseño,
implementación y evaluación de la prueba, que incluye generar el plan
y el modelo de prueba, implementar los procedimientos de prueba,
evaluar la envergadura y resultados de las pruebas y su efectividad así
como generar un resumen de la evaluación de la prueba.
Conocimientos y Habilidades del Probador.
• Poseer conocimiento del sistema o aplicación a probar.
• Poseer conocimiento de pruebas y herramientas de pruebas
automáticas.
• Poseer habilidades para el diagnóstico y la solución de problemas.
• Poseer habilidades de programación.
Especialista de Soporte.
Se recomienda que en las empresas exista un departamento de soporte,
donde se designe un especialista que colabore con el equipo de
desarrollo del proyecto, interactuando esencialmente con el director de
desarrollo y el programador.
Conocimientos y Habilidades de Soporte.
Dar soporte (con herramientas y procesos) respecto al
desarrollo de la organización.
Seleccionar y adquirir herramientas.
Configurar los procesos.
Entrenar al personal.
Garantizar soporte técnico sobre: tecnología de información,
política de backup, nuevas tendencias, herramientas CASE de
modelamiento, generación de código, etcétera.
Especialista de Calidad. Se recomienda que en las empresas exista un
departamento de calidad que designe especialista(s) para colaborar con
cada proyecto. Este especialista debe ajustar el plan de calidad definido
por el departamento a las características propias del proyecto para
establecer su plan de calidad. Además, tiene la responsabilidad de
definir, documentar y publicar el proceso de desarrollo a seguir. Debe
influir en el trabajo de todos los roles involucrados en el proceso de
desarrollo, controlar los resultados de las inspecciones y reuniones de
equipo, garantizando que se mantenga actualizada la agenda del
proyecto y que el producto obtenido esté libre de defectos.
Conocimientos y Habilidades del Especialista de Calidad.
Orientación a metas.
Poseer conocimiento del sistema.
Tener experiencia en el dominio de la ingeniería de software.
Dominar alguna metodología de desarrollo de software.
Estar actualizado en las tendencias actuales de los estándares de
calidad y métodos de mejora de procesos.
Especialista de Seguridad.
Se recomienda que en las empresas exista al menos un especialista en
seguridad, teniendo en cuenta que puede dificultarse encontrar
suficiente personal capacitado para tener un departamento dedicado a
estas cuestiones. Este rol tiene la responsabilidad de dictar las políticas
de seguridad y protección que deberán seguirse en el diseño,
implementación e implantación del sistema, y debe trabajar
estrechamente vinculado con el diseñador y el director de desarrollo.
Interesados en el negocio (Clientes).
Los interesados en el negocio son individuos u organizaciones cuyos
intereses puedan resultar afectados positiva o negativamente como
resultado de la ejecución o finalización del proyecto. En este grupo se
encuentran entre otros, los clientes, los usuarios finales y los
inversionistas.
Instalador.
El rol de Instalador tiene la responsabilidad de diseñar y desarrollar los
instaladores del sistema además de elaborar la documentación técnica
como manuales de usuario y textos de ayuda. Se encarga de planificar
la transición del producto a la comunidad de usuarios. Para ser efectivo
debe trabajar estrechamente vinculado con el jefe del proyecto.
Conocimientos y habilidades.
Experiencia en el desarrollo de sistemas.
Habilidades de comunicación y coordinación con el
objetivo de estar actualizado sobre el estado del
desarrollo del producto y comunicar las necesidades de
las actividades de implementación at resto del equipo
de proyecto.
Capacidad de planificación con vistas a asegurar que la
implementación pueda ejecutarse acorde con lo
planificado y con los recursos disponibles.
Poseer experiencia y(o) estar entrenado en la escritura
técnica.
Poseer experiencia o entrenamiento en desarrollar
sistemas de ayuda y(o) sitios Web.
Poseer conocimientos sobre el dominio a documentar.
Poseer buenas habilidades de comunicación porque
frecuentemente requiere hacer entrevistas a
diseñadores, probadores y usuarios con el objetivo de
generar una
Documentación correcta y Útil.
Usuario Final.
El usuario final debe tener una estrecha relación con el implantador
recibiendo de este los manuales correspondientes para comenzar la
explotación del sistema.
6-Descripción de las herramientas y métodos de control que sugieren utilizar dentro del
proceso de desarrollo de software (control de ejecución, control de cumplimiento, control
de calidad, etc).
Herramientas. Las herramientas son aplicaciones que apoyan la administración del proceso de
software. El conjunto de estas herramientas se conoce como ingeniería de software asistida por
computadora (CASE, Computer-Aided Software Engineering), cuyo objetivo es asistir al
desarrollador durante las diferentes actividades del ciclo de vida del proceso de software. Las
herramientas para utilizar como apoyo al proceso del desarrollo del software son: Editor de
Texto: Libre Office
LibreOffice the Document Foundation
Referencia: [Link]
Editor de Imigenes: Gimp
Referencia: [Link]
Editor Vectorial: Inkscape
C.1 en iCW
Generadores de Modelos Gráficos (diagramas): Lucidehart
Las herramientas CASE son indispensables en la administración del proceso de software. La
selección de estas herramientas debe considerar el apoyo a las metodologías utilizadas:
Proveer apoyo explícito para cada paso del método.
Administrar toda la informaci6n que el método requiere obtener o especificar.
Permitir manejar grandes cantidades de información y ser escalable.
Incluir un mecanismo que permita probar que la información recolectada es
consistente.
Apoyar la organización de los diagramas de manera automática.
Permitir usuarios simultáneos en uno o Unas proyectos.
Poder generar una implementación inicial junto con la documentación.
Apoyar la ingeniería en reversa para asegurar que los cambios directos en la
implementación sean consistentes con los modelos administrados. Métodos de
Control.
Introducción.
El proceso de desarrollo de software propuesto está basado en el ciclo de vida
Incremental, ya que combina elementos del modelo en cascada aplicado en
forma iterativa y aplica secuencias.
Lineales de manera escalonada conforme avanza el tiempo. Además, se basa en
el comportamiento del modelo espiral, el cual realiza el Analisis de los riesgos
al final de cada iteración de desarrollo, y con base en el resultado de este
Analisis se realiza el plan de cada incremento. Este proceso se repite después de
la entrega de cada incremento (iteraciones de desarrollo) hasta que se elabore el
producto completo. Para la ejecución del proceso se elaboraron una serie
documentos, diagramas, formatos, instructivos y actas que permiten el registro
de las actividades de cada proceso.
Conclusiones
• No existe consenso sobre cuál es el mejor modelo del proceso software.
Distintos equipos de desarrollo pueden utilizar diferentes modelos de proceso
software para producir el mismo tipo de sistema software. Sin embargo,
algunos modelos son más apropiados para producir ciertos tipos de sistemas, de
forma que si no se utiliza un modelo adecuado puede ocurrir que el sistema
software resultante sea de menor calidad.
• La utilización de un ciclo de vida específico para el desarrollo de software,
basado en las condiciones del tipo de problemas a tratar, constituye uno de los
alcances notables del modelo ofrecido. El ciclo de vida contempla la noción de
fases generales que constituyen un marco de situación, estableciendo fases de
solución para un su problema concreto.
• A la hora de llevar a la realidad una idea de tecnología es fundamental contar
con un buen equipo de desarrollo de software, no funciona tener una buena idea
si no ejecutas debidamente, el éxito del desarrollo del proyecto depende de la
correcta selección y definición del equipo de trabajo y la asignación,
dependiendo de su perfil profesional, los roles que cumplirán, además es
necesario que cuenten con experiencia en el área de disentido de software.
• Es innegable la importancia que tiene el desarrollo de software, productos
tecnológicos que cada día tienen más demanda, en algún momento de nuestra
vida empresarial o laboral, vamos a necesitar algún tipo de desarrollo, sea
porque es necesario actualizarnos o para darle vida a nuestras ideas.
Referencias
[1] [Link]
[2] [Link]
[3] [Link]
[4] [Link]