9th
9th Grade
Grade
ESTRUCTURA
DE SOFTWARE
¿QUÉ ES UN PROCESO DE
SOFTWARE?
Un proceso de software es una serie de actividades relacionadas que conducen a la elaboración de un producto de software.
Estas actividades pueden incluir el desarrollo de software desde cero en un lenguaje de programación determinado como PHP o
JavaScript. El nuevo software empresarial con frecuencia se desarrolla extendiendo y modificando el software existente, o
configurando e integrando el software comercial o componentes del sistema.
Existen diferentes procesos de software, pero todos deben incluir cuatro actividades que son fundamentales:
1. Especificación del software tienen que definirse tanto la funcionalidad del software como las restricciones de su operación.
2. Diseño e implementación del software debe desarrollarse el software para cumplir con las especificaciones.
3. Validación del software hay que validar el software para asegurarse de que cumple lo que el cliente quiere.
4. Evolución del software el software tiene que evolucionar para satisfacer las necesidades cambiantes del cliente.
¿QUÉ ES UN PROCESO DE
SOFTWARE?
En la práctica éstas son actividades complejas en sí mismas e incluyen subactividades tales como la validación de requerimientos, el
diseño arquitectónico, la prueba de unidad, etc. También existen actividades de soporte al proceso, como la documentación y el
manejo de la configuración del software.
Cuando los procesos se discuten y describen, por lo general se habla de actividades como especificar un modelo de datos, diseñar una
interfaz de usuario, etc. Pero también las descripciones de los procesos debería incluir:
1. Productos, que son los resultados de una actividad del proceso.
2. Roles, que reflejan las responsabilidades de la gente que interviene en el proceso.
3. Precondiciones y post-condiciones, que son declaraciones válidas antes y después de que se realice una actividad del proceso
o se cree un producto.
¿QUÉ ES UN PROCESO DE
SOFTWARE?
Los procesos de software son complejos, se apoyan en personas con capacidad de juzgar y tomar decisiones. Éstos procesos a su
vez han evolucionado para beneficiarse de las capacidades de la gente en una organización y para algunos sistemas, como los
sistemas críticos, se requieren de un proceso de desarrollo muy estructurado mientras que para los sistemas empresariales, con
requerimientos rápidamente cambiantes, es probable que sea más efectivo un proceso menos formal y flexible.
En ocasiones, los procesos de software se clasifican como dirigidos por un plan (plan driven) o como procesos ágiles.
1. Los procesos dirigidos por un plan son aquellos donde todas las actividades del proceso se planean por anticipado y el avance
se mide contradicho plan.
2. En los procesos ágiles, la planeación es incremental y es más fácil modificar el proceso para reflejar los requerimientos
cambiantes del cliente.
¿QUÉ ES UN MODELO PROCESO DE
SOFTWARE?
Un modelo de proceso de software es una representación simplificada de este proceso. Los modelos no son descripciones
definitivas de los procesos de software. Más bien, son abstracciones del proceso que se utiliza para explicar los diferentes enfoques
del desarrollo de software. Se pueden considerar marcos del proceso que se extienden y se adaptan para crear procesos más
específicos de ingeniería de software .
Existen algunos tipos de modelos los cuáles son:
• Modelo Cascada (Waterfall): Éste toma las actividades fundamentales del proceso de especificación, desarrollo, validación y
evolución y, luego, los representa como fases separadas del proceso, tal como especificación de requerimientos, diseño de
software, implementación, pruebas, etc.
• Desarrollo incremental: Este enfoque vincula las actividades de especificación, desarrollo y validación. El sistema se
desarrolla como una serie de versiones (incrementos), y cada versión añade funcionalidad a la versión anterior. El desarrollo
incremental puede tener un enfoque ágil así como guiado por planes o metodologías ágiles.
ACTIVIDADES DE LA INGENIERÍA DE
SOFTWARE
Los procesos reales para construir un software pueden ser muy complejos y variados. Un proceso no es una secuencia
preestablecida de cómo elaborar software. Es un enfoque adaptable que permite la elección del conjunto apropiado de acciones
para hacer un trabajo, con el objetivo de entregar el software con la mayor calidad y rapidez posible.
¿Cuáles son las actividades de la ingeniería de software?
• Especificación del software: Donde clientes e ingenieros reúnen información y definen el software que se creará, sus
restricciones, características y los objetivos de éste.
• Diseño e implementación del software: Proceso de convertir la idea en un sistema ejecutable. Incluye procesos de diseño y de
programación, a veces también corrección de especificación si tiene un enfoque incremental de desarrollo.
• Validación del software: Las pruebas del programa, donde el sistema se ejecuta a través de datos de prueba simulados, son la
principal técnica de validación.
• Evolución del software: Donde se modifica el software para reflejar los requerimientos cambiantes del cliente y del mercado.
Implica el mantenimiento del mismo la y creación de nuevas versiones con diferentes funcionalidades a base de una versión
anterior.
DESARROLLO INCREMENTAL
Fue propuesto en 1980 y se considera una revolución para la ingeniería de software.
Por ese entonces se tenía como estándar los procesos en secuencia como el modelo waterfall, pero éste se sometía al feedback del
cliente, lo cuál se mostraba riesgoso, además que el modelo en cascada llegaba a ciertos “estados de bloqueo” en los que se debía
esperar a otros para terminar tareas independientes, lo cuál suponía gasto de tiempo productivo.
El enfoque actual del desarrollo incremental se basa en diseñar una implementación inicial, exponer al comentario del usuario, y
luego si lo anterior marchó bien, seguir desarrollando sus diversas versiones hasta que el sistema haga todo lo que el cliente quiere.
Por lo general, se incluyen las funciones esenciales para que sea usado en un ambiente real y así el cliente sepa si es lo que
requiere, de manera que si hay que hacer un cambio, solo el incremento actual debe someterse a éste, además de darse espacio a
definir una nueva función para posteriores incrementos.
En el modelo de desarrollo incremental las actividades de especificación , desarrollo y validación se repiten en cada incremento, a
diferencia con los modelos de procesos secuenciales como el modelo en cascada .
DESARROLLO INCREMENTAL
DESARROLLO INCREMENTAL
El modelo incremental como el estándar para desarrollar software
El desarrollo incremental ahora es en cierta forma el estándar más común para el desarrollo de sistemas ya que se adapta mucho
mejor al contexto cambiante de los negocios de hoy en día. Si lo comparamos con el modelo en cascada, el feedback del cliente se
obtiene más rápido y a su vez los cambios son más fáciles de desarrollar.
Desarrollo incremental basado en un plan, agilidad o una mezcla conjunta:
Si se basa en un plan se identifican por adelantado los incrementos del sistema, mientras que si se adopta un enfoque ágil, se
detectan los primeros incrementos, pero el desarrollo de incrementos posteriores dependerá del avance y las necesidades del
cliente.
Que esté basado en un plan puede ser muy útil para proyectos que tienen contratos y requisitos muy bien definidos. Por ejemplo
desarrollo de software para el estado.
Sin embargo la mayoría de proyectos son muy cambiantes por lo que el avance del proyecto se mide contra el valor entregado al
cliente en cada iteración.
DESARROLLO INCREMENTAL
Etapas o fases del proceso de desarrollo de software usando el modelo incremental
1. Planificación en bloque temporal (denominado iteración). En cada iteración se repite un proceso hasta cumplir un
requerimiento.
2. Cada requerimiento debe contar un análisis, diseño, código, pruebas y documentación para que se pueda cumplir con los
objetivos necesarios.
3. Con cada iteración se busca evolucionar el producto, agregando opciones de requisitos y logrando una mejoría notoria
DESARROLLO INCREMENTAL
DESVENTAJAS
1. Falta de coordinación en los procedimientos, además de un proceso iterativo más informal.
2. Éste sistema suele fallar el sistemas grandes, donde en vez de definir pequeños trozos de avance, se necesita de un marco o
arquitectura estable, donde se defina con claridad las responsabilidades de cada uno de los equipos que trabajan en el
sistema.
3. En un contexto real no siempre se puede usar un software en producción diferente, ya que esto puede alterar los procesos
empresariales normales.
MODELO EN CASCADA
(WATERFALL)
Sugiere un enfoque sistemático y secuencial para el desarrollo del software, que comienza especificando los requerimientos por
parte del cliente y avanza con la planeación, diseño, construcción y despliegue, concluyendo en el software terminado. Debido al
paso de una fase en cascada a otra, este modelo se conoce como “modelo en cascada”.
MODELO EN CASCADA
(WATERFALL)
ETAPAS DEL MODELO
1. Análisis y definición: Se establecen metas, servicios y restricciones del sistema. Se definen con detalle y sirven como
especificación del sistema.
2. Diseño del sistema y del software: El proceso de diseño de sistemas asigna los requerimientos, para sistemas de hardware o de
software, al establecer una arquitectura de sistema global. El diseño del software implica identificar y describir las
abstracciones fundamentales del sistema de software y sus relaciones.
3. Implementación y prueba de unidad: consiste en verificar que cada unidad cumpla con su especificación.
4. Integración y prueba de sistema: Las unidades del programa se prueban como un sistema completo para asegurarse de que
se cumplan los requerimientos de software. Después de probarlo, se libera el sistema de software al cliente.
5. Operación y mantenimiento: El mantenimiento incluye corregir los errores que no se detectaron en etapas anteriores del
ciclo de vida, mejorar la implementación de las unidades del sistema e incrementar los servicios del sistema conforme se
descubren nuevos requerimientos.
MODELO EN CASCADA
(WATERFALL)
CRÍTICAS AL MODELO
1. No hay un seguimiento fiel al flujo del modelo. Los cambios generan confusión conforme el equipo de desarrollo avanza
2. A menudo, es difícil para el cliente enunciar en forma explícita todos los requerimientos, por lo que se forman dificultades
por la incertidumbre inicial al no tener una base sólida.
3. El cliente no tendrá una versión funcional hasta que el proyecto esté muy avanzado.
Hoy en día, el trabajo de software es acelerado y está sujeto a una corriente sin fin de cambios por lo
que el modelo en cascada suele ser inapropiado para este tipo de valor, sin embargo, funciona
útilmente en situaciones donde el avance es lineal hasta el final.
ESPECIFIACIÓN DEL SOFTWARE
Consiste en el proceso de comprender y definir qué servicios se requieren
del sistema, así como la identificación de las restricciones sobre la operación y el desarrollo del sistema.
La especificación de software se considera sub-disciplina del proceso de
software, ya que los errores en esta fase conducen a problemas futuros en diseño e implementación
del sistema.
ESPECIFIACIÓN DEL SOFTWARE
Hay estudios realizados que indican que más del 52% de los proyectos de software se entregan con retrasos y un 16.2% fracasan. Y
los problemas en la fase especificación del software representan el 39.2% de la causas de tales demoras y fracasos
ESPECIFIACIÓN DEL SOFTWARE
Actividades de la ingeniería de requerimientos (Especificación de Software):
1. Estudio de factibilidad: Se realiza una estimación sobre si es posible cubrir las necesidades del usuario con las actuales
tecnologías de software y hardware. También se analiza si el sistema tendrá un costo-beneficio empresarial además de
valorar si puede hacerse bajo las restricciones de presupuesto. Debe ser rápido y relativamente barato con el fin de informar
si se continúa o no con el análisis.
2. Obtención y análisis de requerimientos: Obtención de requerimientos por medio de observación de sistemas ya existentes,
análisis de tareas, etc. Esto puede incluír el desarrollo de uno o más prototipos.
3. Especificación de requerimientos: Transcripción de información en un documento con requerimientos. En éste documento
se incluyen los requerimientos del usuario y del sistema, donde se da una información detallada de la funcionalidad a ofrecer.
4. Validación de requerimientos: Verifica que los requerimientos sean realistas y completos. Durante este proceso se hayan
errores y en consecuencia se han de corregir. Desde luego no todo sigue una línea estricta. Durante la luz salen nuevos
requerimientos, por ello, el análisis, definición y especificación se conectan .