Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Plan de Desarrollo de Software
Plan de Desarrollo de Software
3.2.5 Documentación
Plan de desarrollo
del software
Fases principales
ANÁLISIS
DISEÑO
CODIFICACIÓN
PRUEBAS
MANTENIMIENTO
ANÁLISIS
Se determina y define claramente las necesidades del
cliente y se especifica los requisitos que debe cumplir el
so5ware a desarrollar.
La especificación de requisitos debe:
• Ser completa y sin omisiones
• Ser concisa y sin trivialidades
• Evitar ambigüedades. U@lizar lenguaje formal.
• Evitar detalles de diseño o implementación
• Ser entendible por el cliente
• Separar requisitos funcionales y no funcionales
• Dividir y jerarquizar el modelo
• Fijar criterios de validación
DISEÑO
Se descompone y organiza el
sistema en elementos Las actividades habituales son
Diseño arquitectónico
componentes que pueden ser las siguientes:
desarrollados por separado.
PRUEBAS
• El principal objetivo de las pruebas debe ser
conseguir que el programa funcione incorrectamente y
que se descubran defectos.
MANTENIMIENTO
• Durante la explotación del sistema software es necesario
realizar cambios ocasionales.
Tipos de mantenimiento:
• Plan de mantenimiento:
• Plan de implementación: Cómo se Cómo se llevará a cabo el
• Plan de pruebas: Cómo se validará que mantenimiento y
desplegará el software en producción y
el soHware cumple con los requisitos y
cómo se realizará la transición del actualización del software
está libre de errores.
antiguo sistema al nuevo. una vez que se ha
implementado.
describen qué debe describen las describen cómo el describen cómo los
hacer el so1ware y características y software debe apoyar a usuarios interactúan con
cómo debe hacerlo. atributos del software la organización en sus el software y qué
que no tienen una operaciones y objetivos esperan de él.
función específica, pero de negocio.
son importantes para el
correcto
funcionamiento del
sistema. Algunos
ejemplos de requisitos
no funcionales incluyen
la confiabilidad, la
escalabilidad y la
usabilidad.
• El análisis de requerimientos es un proceso iterativo que
implica reunir y validar los requisitos del sistema con el usuario
y otros interesados. Se utilizan diferentes técnicas para
recopilar y analizar los requisitos, como entrevistas, grupos
focales, análisis de documentación y análisis de casos de uso.
Características de un buen análisis de
requerimientos
Completo: Preciso: Verificables: Modificables:
Orientados al
Coherentes: Trackeables: Consistentes: Priorizados:
usuario:
• deben estar bien • deben ser • deben estar • deben ser • deben estar
integrados y no fáciles de basados en las consistentes con ordenados en
contradictorios rastrear y necesidades y los objetivos del función de su
entre sí. monitorear para expectativas de proyecto y con la importancia y
hacer los usuarios para estrategia de la urgencia para
seguimiento al asegurar que el organización. permitir una
progreso y el software cumpla implementación
cumplimiento de con ellas. efectiva y
los requisitos. eficiente.
¿Cuáles son las técnicas para analizar requerimientos
de software y qué herramientas utiliza?
Entrevistas: consisten en conversar con los usuarios, los interesados y otros stakeholders para
recopilar información sobre sus necesidades y expectativas.
Grupos focales: consisten en reunir a un grupo de personas para discutir y analizar los requisitos
del sistema.
Análisis de casos de uso: consiste en describir cómo los usuarios interactúan con el sistema y
qué funcionalidades necesitan para llevar a cabo sus tareas.
Prototipado: consiste en crear una versión básica del sistema para que los usuarios puedan
probarlo y proporcionar retroalimentación.
Para llevar a
cabo el análisis
Hojas de cálculo: se pueden utilizar para recopilar y
organizar los requisitos de manera sencilla.
1. Definiciones
Estos son los términos precisos, las frases y el lenguaje utilizado para expresar la
regla de negocios en particular. Puedes incluirlos en el manual de trabajo.
2. Hechos
Estos son los puntos de partida para implementar un conjunto de reglas de
negocio. Puedes clasificar los hechos según sus relaciones, cualidades y
estructuras.
Tipos de reglas de negocio
3. Restricciones
Puedes usar reglas para establecer límites en ciertos aspectos de un negocio.
Por ejemplo, una empresa puede requerir que los clientes tengan al menos
$10,000 en su cuenta para solicitar una línea de crédito.
4. Derivaciones
Las reglas de negocio también pueden explicar cómo obtener conocimiento de
una fuente en particular. Por ejemplo, una empresa puede tener una regla sobre
cómo los miembros de un equipo pueden recopilar comentarios de los clientes y
convertirlos en informes.
1. Establece los procesos de tu empresa
Para aplicar las reglas de negocio se necesita un excelente
análisis de los procesos que la empresa tenga.
2. Define las reglas de negocio
Una buena práctica es definirlas desde la planeación
¿Cómo estratégica para aumentar la posibilidad de alcanzar los
objetivos.
aplicar las 3. Alinea las reglas de negocio con los objetivos
• La arquitectura en capas se trata de un modelo tradicional para desarrollar software que sigue un enfoque
por niveles. Bajo este modelo, cada uno de esos niveles presta servicios al siguiente nivel superior. Se trata
de un patrón ampliamente utilizado por la industria porque es fácil de desarrollar y, en general, muchas
aplicaciones comerciales almacenan su información en tablas. Por ejemplo, uno de los modelos más
comunes que utilizan este tipo de patrón es el MVC (Model-View-Controller) o, en español, Modelo-Vista-
Controlador, que sigue un enfoque de tres capas. La primera capa se encuentra encima de las bases de
datos y contiene la capa de modelo, que guarda información sobre los tipos de datos de la base de
información. En la segunda capa se encuentra el nivel visual, a menudo formado por CSS, HTML y
JavaScript. Por último, en la tercera capa tenemos el controlador que, como indica su nombre, maneja
como se transforman los datos que se mueven entre la vista y el modelo. Se puede considerar utilizar la
arquitectura de capas en los siguientes escenarios: En aplicaciones empresariales que necesitan adoptar
procesos y estructuras de tecnología de la información tradicionales; Cuando el objetivo es diseñar una
aplicación o sitio web rápidamente y con la cantidad mínima de desarrolladores; En sitios web de
comercio electrónico
2. Patrón de arquitectura por eventos
El patrón anterior funciona traspasando los datos de una capa a otra en una secuencia
predeterminada. En este caso, los programas que utilizan este patrón pasan la mayor parte
del tiempo “esperando a que ocurra algo”, es decir, a que suceda un evento. Un evento
puede ser el clic del ratón, presionar una tecla o el desplazamiento de una barra. El patrón
arquitectónico de eventos se puede utilizar en los siguientes casos: Para la creación de
aplicaciones complejas que tienen sistemas de datos asíncronos; Para aplicaciones
escalables que requieran un flujo de datos sin interrupciones; Interfaces de usuario de todo
tipo.
3. Patrón de arquitectura basada en el espacio
También conocido como arquitectura de plug-in, este patrón permite crear aplicaciones
extensibles a las que se puede agregar funcionalidades y elementos nuevos a través de
módulos o complementos. Este arqueQpo Qene dos componentes principales: el sistema
central (core) y los módulos (plugins). El sistema central conQene los elementos
fundamentales para que la aplicación funcione como se Qene pensado, mientras que los
plugins añaden caracterísQcas adicionales que se instalan al core. Entendiendo esto, solo
puede haber un sistema central al que se le pueden agregar muchos plugins. El patrón de
microkernel es especialmente úQl para: Aplicaciones y si4os web empresariales, ya que
proporciona escalabilidad, portabilidad y extensibilidad; Aplicaciones conectadas o que
requieren una relación entre funciones de bajo nivel y nivel superior.
5. Patrón de arquitectura de microservicios
Las bases de datos SQL son indicadas cuando la cantidad de datos no son extremadamente
grandes, mientras que las NoSQL son ideales para manejar grandes volúmenes de datos.
Las bases de datos NoSQL son escalables por lo que se pueden aumentar su capacidad fácilmente,
sin embargo, las SQL pueden ser escalables, pero con un costo económico más elevado. Las bases
de datos NoSQL utilizan un escalado horizontal (aumentar el número de servidores) mientras que
las SQL utilizan un escalado vertical (aumentar los recursos de un servidor).
¿Cuándo usar una base de datos
NoSQL o SQL?
Planificación gradual: Elaboración gradual. El trabajo que debe desarrollarse a corto plazo se
planifica en detalle, y el trabajo más a largo plazo se planifica a un nivel superior de la EDT.
Juicio de expertos: Participación en el proceso de miembros del equipo u otros expertos con
experiencia y habilidad en el desarrollo de cronogramas del Proyecto.
Salidas
• Identificar los entregables y el trabajo relacionado. Exige analizar el enunciado del alcance
del proyecto detallado y este análisis a su vez. Además, exige un juicio experto para
identificar todo el trabajo, incluidos los productos entregables exigidos por contrato.
• Estructurar y organizar la EDT/WBS. Es una técnica analítica que puede realizarse mediante
el uso de una plantilla de EDT/WBS. La estructura resultante puede adoptar varias formas
de organización, tales como:
• Principales productos entregables y subproyectos como el primer nivel de
descomposición.
• Fases del ciclo de vida del proyecto como el primer nivel de descomposición,
insertando los productos entregables del proyecto en el segundo nivel.
• Usar diferentes enfoques en cada rama de la EDT/WBS, por ejemplo en cada
subproyecto.
La descomposición de todo el trabajo del proyecto
generalmente implica las siguientes actividades:
funcionales Regresión
Teniendo en cuenta la metodología de desarrollo A medida que avance el proyecto, las tareas de
y las iteraciones o fases diseñadas deberás pruebas aumentan su carga, por eso deberás
planificar las pruebas a realizar en cada iteración. planificar cómo ir cubriendo las necesidades de
En metodologías ágiles, esta planificación se irá pruebas de regresión sin que esto signifique
ajustando al inicio de cada sprint, sin embargo, aumentar los recursos. Dos técnicas principales
es bueno dejar ya establecido de forma macro para lograr esto, son la priorización en base a los
los recursos que serán necesarios para objetivos del negocio y el camino crítico de la
implementar las pruebas, tanto en términos de aplicación y la AUTOMATIZACIÓN de pruebas.
personas como equipos y dispositivos.
Tipos y niveles de pruebas
Rendimiento y seguridad
En base a los objetivos del negocio, deberás definir y planificar si se realizarán este tipo de pruebas.
Si la aplicación estará expuesta en la nube, deberás planificar pruebas de rendimiento que permitan
validar que la arquitectura responde de forma adecuada a procesos de alta demanda.
Si la información gestionada por la aplicación es confidencial o su abuso puede tener consecuencias
graves, deberás incluir en tu planificación pruebas de seguridad y validar que no se exponen
vulnerabilidades. Esta definición es recomendable que sea tomada a nivel del proyecto, tanto para
adoptar prácticas seguras de desarrollo como para realizar pruebas de detección de vulnerabilidades
de forma continua.
• Usualmente los sistemas no viven en solitario, sino que interactúan con otros sistemas
Integración existentes tanto internos como externos. Planifica pruebas de integración de forma
adecuada a lo largo del proyecto para validar cuanto antes las interfaces con otros
sistemas.
Extremo a • Validar que los flujos críticos del sistema funcionan correctamente, simulando el uso
de la aplicación más utilizada por los usuarios es una estrategia que asegura
tranquilidad antes de un despliegue. Incluye este tipo de prueba en cada fase del
extremo proyecto, aumentando el alcance de los flujos. Estas pruebas son excelentes
candidatas para ser automatizadas, lo que asegurará mayor capacidad de ejecución.
Identificar herramientas
Cada proyecto debe definir con cuáles herramientas apoyará: la gestión del proyecto, la
definición de las pruebas, el reporte de anomalías detectadas y su seguimiento y la
automatización de pruebas. La identificación de estas herramientas puede ir desde lo más
básico como definir un lugar compartido para almacenar los documentos y los formatos en que
se registrará el plan, los casos y los resultados, hasta la selección de plataformas como MS
Azure DevOps o JIRA para la gestión del proyecto.
Todos sabemos que los proyectos son dinámicos. Cambian las prioridades, hay actividades que se
demoran y surgen contingencias y nuevos requerimientos que se agregan.
Una planificación adecuada nos permitirá realizar cambios de forma preventiva y no de forma
reactiva, así puedes tener el control cuando la presión aumenta y los tiempos son escasos.
Una vez se definan los casos y suite de pruebas, así como los tiempos que estos pueden llevar en
función del método de prueba, es decir si son manuales o automatizadas, recomendamos ajustar
nuestro plan a la realidad cambiante, para ello ten en cuenta los siguientes pasos:
Priorizar casos de prueba y actividades
Al tener priorizadas las actividades por objetivo y nivel de importancia, podrás ajustar la
planificación en los casos en que el calendario se reduzca o se recorten los presupuestos.
Tu plan tiene que ser la herramienta que te permita contestar estas preguntas:
• ¿Qué sucede si se retrasa el desarrollo con las entregas a pruebas?
• ¿Qué sucede si se posterga la fecha de puesta en producción?
Planificar en base a expectativas.
Los proyectos tienen muchos integrantes y no siempre se produce el software de la
misma forma. Hay equipos que cambian, requerimientos más complejos o tecnologías
nuevas que el equipo desconoce. Tomar en cuenta esos aspectos y reforzar las pruebas
de esos requerimientos especiales es un factor de éxito.
3. Ajuste al plan de pruebas
Una vez ejecutado el plan de pruebas, se procede con las actividades
de ajuste y replanificación en caso que sea necesario. Esta actividad es
fundamental, a fin de optimizar tanto el plan como los recursos para
las siguientes etapas y así lograr los resultados esperados. Para ello
proponemos:
Hacer un seguimiento activo del
proyecto de desarrollo, ajustando la
planificación de forma acorde.
En proyectos ágiles, el seguimiento
activo se realiza en las reuniones de Ajustar en base a resultados.
planificación de sprint, pero en otro Los datos mandan. Ajusta la
tipo de proyectos es necesario que el planificación para reforzar las pruebas
analista de QA esté al tanto de los de los objetivos que presentan más
avances y contratiempos del fallas y libera recursos de aquellos que
desarrollo y mantenga una estrecha presentan menores niveles de fallos.
comunicación con los encargados del
desarrollo, para poder ajustar la
planificación de pruebas y actuar
preventivamente.
Actividades para el despliegue y
mantenimiento
Establecer un proceso de gestión de incidentes y Realizar evaluaciones periódicas del desempeño del
problemas para registrar, investigar y resolver sistema y recopilar comentarios de los usuarios
problemas reportados por los usuarios finales. finales para identificar áreas de mejora.
Realizar análisis de causa raíz para identificar y Implementar cambios y mejoras basados en los
abordar las causas subyacentes de los problemas resultados de las evaluaciones para garantizar que
recurrentes. el sistema siga cumpliendo con los requisitos y
expectativas del negocio.
Al seguir estas actividades de manera sistemática y proactiva, se puede garantizar un despliegue exitoso y un
mantenimiento eficiente del proyecto de tecnologías de la información a lo largo de su ciclo de vida.
Documentación