FUNDAMENTOS DEL DISEÑO
* ¿Qué es el diseño de
software?:
El diseño de software es el
proceso de imaginar y definir soluciones de software para uno o más conjuntos
de problemas. Uno de los componentes principales del diseño de software es el análisis
de requisitos de software (SRA). SRA es una parte del proceso de desarrollo de
software que enumera las especificaciones utilizadas en la ingeniería de
software. Si el software es "semiautomático" o está centrado en el
usuario, el diseño del software puede implicar un diseño de la experiencia del
usuario que produzca un guion gráfico para ayudar a determinar esas especificaciones.
Si el software está completamente automatizado (es decir, sin usuario o
interfaz de usuario), el diseño de un software puede ser tan simple como un
diagrama de flujo o un texto que describa una secuencia planificada de eventos.
También existen métodos semi-estándar como el Lenguaje de modelado unificado y
los conceptos de modelado fundamental. En cualquier caso, parte de la
documentación del plan suele ser producto del diseño. Además, un diseño de
software puede ser independiente de la plataforma o específico de la plataforma,
dependiendo de la disponibilidad de la tecnología utilizada para el diseño.
*
Importancia del diseño de software:
En todo desarrollo de sistema es
importante hacer un diseño del software el cual este tiene un impacto directo
sobre la capacidad del sistema para cumplir o no el total de requerimientos
establecidos, donde un error de diseño así sea lo más mínimo posible puede
ocasionar problemas en todo el proyecto y hacer que caiga en un espiral de
continuos cambios además de tener que rehacer constantemente el trabajo.
* Conceptos básicos del diseño:
Durante las últimas cuatro décadas
se ha experimentado la evolución de un conjunto de conceptos fundamentales de
diseño de software. Aunque el grado de interés en cada concepto ha variado con
los años, todos han experimentado el paso del tiempo. Cada uno de ellos proporcionarán
la base de donde el diseñador podrá aplicar los métodos de diseño más
sofisticados.
Abstracción:
Existen diversos grados de abstracción, entre mayor sea el grado de la misma se
considera una solución general, entre menor sea su grado se hace referencia a aquellos
elementos de mayor especificidad. La
abstracción se divide en dos:
1- Abstracción procedimental: Permiten describir procesos omitiendo detalles específicos.
2- Abstracción de datos: Describe las características de un objeto.
Arquitectura:
Representa la estructura general del software y la forma como interactúan sus
componentes.
Patrón: Un patrón
es aquello que transporta la esencia de una solución probada a un problema
concurrente dentro de cierto contexto en medio de intereses en competencia.
Modularidad:
Es la característica
de un sistema que permite que sea estudiado, visto o entendido como la unión de
varias partes que interactúan entre si y que trabajan solidariamente para
alcanzar un objetivo en común.
Refabricación:
Es el
proceso de cambiar un sistema de software de tal forma que no altere el
comportamiento externo de su código y aún así se mejore su estructura interna.
Estructura
de datos: Es una representación de la relación lógica entre los
elementos individuales de los datos.
* Trazabilidad de los
requisitos en el diseño:
La trazabilidad de requisitos es
una herramienta fundamental para la gestión de requisitos. Es elemental para el
control y como apoyo para la toma de decisiones en el proyecto. Como no es un
entregable o componente del producto, se debe cuidar que su creación y uso sea
lo más eficiente posible.
Se define trazabilidad, o en
algunos textos rastreabilidad, como la asociación del requisito con otros
requisitos y las diferentes instancias con que se relaciona durante la
evolución de las diferentes fases del ciclo de desarrollo del producto o
servicio. Esa asociación se controla en ambos sentidos, de los requisitos a los
resultados y viceversa. La intención principal es poder determinar si todos los
requisitos base han sido considerados y si las instancias que han sido
generadas pueden asociarse con un requisito válido.
Trazabilidad
de requisitos en CMMI (Capability Maturity Model Integration)
En el modelo CMMI es una de las
prácticas específicas del área de proceso de Gestión de requisitos (REQM). Es
necesaria, fundamentalmente, para evaluar el impacto del cambio de los
requisitos en las actividades y productos de trabajo del proyecto. Permite
mostrar las relaciones e interdependencias entre los requisitos, proporcionar
visibilidad a la gerencia sobre el avance en el desarrollo de los entregables y
el cumplimiento de los requisitos, demostrar la satisfacción de los requisitos
con los componentes y pruebas y es de gran ayuda para los que realicen
mantenimientos y actualizaciones posteriores.
En la creación de la trazabilidad
es importante considerar el alcance de aplicación de la traza, los elementos y
relaciones que se deben considerar y la forma en que se llevara la
trazabilidad. Normalmente se piensa en la traza vertical hacia las instancias
que se van creando a partir de los requisitos iniciales, pero en ciertos
contextos es importante conocer la traza hacía componentes del mismo nivel en
forma horizontal, como son las interfaces.
Consideraciones en la trazabilidad
de requisitos:
Los requisitos están relacionados
entre sí. Es importante identificar y establecer el nivel de detalle que se
requiere hacia los diferentes casos de uso, reglas de negocio, funcionalidades,
características y atributos de calidad. Se deben seleccionar aquellas
asociaciones que son de interés para el análisis, que en caso de cambios
permitan identificar fácilmente los elementos que se afectan. Hay que tomar en
cuenta que la trazabilidad de requisitos es un elemento de control, no es la
definición en sí de los requisitos que se puede establecer o documentar de manera
independiente.
Los requisitos se asocian con los
entregables que son desarrollados como componentes de diseño, archivos de
código, casos de prueba, manuales de usuario, procedimientos y componentes del
producto. Se deben considerar aquellos elementos de interés para el diseño y
las pruebas que permitan confirmar que los requisitos han sido adecuadamente
cubiertos. En particular, es de especial apoyo para los equipos que
posteriormente deban realizar el mantenimiento del producto y puedan
identificar fácilmente los componentes de diseño, código o pruebas que se
afectan por el cambio de requisito.
Existen diferentes herramientas
especializadas que facilitan la definición y control de la trazabilidad de los
requisitos, aunque no necesariamente se requiere una herramienta sofisticada
para esta actividad. La herramienta en sí no hace nada. Los que utilizan la
herramienta, y que estén familiarizados con la misma, son los que pueden llevar
esa traza. Para ello se requiere capacitación y práctica para lograr el
resultado de manera efectiva. Normalmente existe una persona responsable de
estudiar y utilizar la herramienta para gestionar los requisitos en el
proyecto.
La trazabilidad es un apoyo para
la evolución del producto y permite controlar el flujo de requisitos hasta la
conclusión del desarrollo. La profundidad y el detalle de su aplicación depende
de cada situación, lo que es importante y no debe olvidarse es que para ser
útil debe estar actualizada y reflejar la realidad del proyecto en tiempo.
* Atributos de calidad: Son las métricas que se centran en
cuantificar tanto la complejidad, como la funcionalidad y eficiencia inmersa en
el desarrollo de software. Inclina sus objetivos a mejorar la comprensión de la
calidad del producto, a estimar la efectividad del proceso y mejorar la calidad
del trabajo. Las métricas empleadas están diseñadas para evaluar los siguientes
atributos de calidad:
Ø Responsabilidad: Consiste en la responsabilidad asignada a una clase en un marco de modelado de un dominio o concepto, de la problemática propuesta.
Ø Complejidad de implementación: Consiste en el grado de dificultad que tiene implementado un diseño de clases determinado.
Ø Reutilización: Consiste en el grado de reutilización presente en una clase o estructura de clase, dentro de un diseño de software.
Ø Acoplamiento: Consiste en el grado de dependencia o interconexión de una clase o estructura de clase, con otras, está muy ligada a la característica de Reutilización.
Ø Complejidad del mantenimiento: Consiste en el grado de esfuerzo necesario a realizar para desarrollar un arreglo, una mejora o una rectificación de algún error de un diseño de software. Puede influir indirecta, pero fuertemente en los costes y la planificación del proyecto.
Ø Cantidad de pruebas: Consiste en el número o el grado de esfuerzo para realizar las pruebas de calidad (Unidad) del producto (componente, módulo, clase, conjunto de clases, etc.) diseñado.
* Participantes en el diseño:
|
Jefe de Proyecto |
Es el encargado
de asignar los recursos, gestionar las prioridades, coordinar las
interacciones con los clientes y usuarios, mantener al equipo del proyecto
enfocado en los objetivos. También establecer un conjunto de prácticas que
aseguran la integridad y calidad del proyecto. Supervisará el establecimiento
de la arquitectura del sistema, la gestión de riesgos y la planificación y
control del proyecto. |
|
Analista de Sistemas |
Es aquel que
captura, especifica y valida requisitos, interactuando con el cliente y los
usuarios mediante entrevistas. Además, elabora el Modelo de Análisis y
Diseño. Seguidamente colabora en la elaboración de las pruebas funcionales y
el modelo de datos. |
|
Analista -Programador |
Construir prototipos. Colaborar en
la elaboración de las pruebas funcionales, modelo de datos y en las
validaciones con el usuario. |
|
Ingeniero de Software |
Gestión de requisitos, gestión de
configuración y cambios, elaborar el modelo de datos, preparar las pruebas
funcionales, elaborar la documentación. Elaborar modelos de implementación y
despliegue |
* Estándares de calidad: La obtención de un software con
calidad implica la utilización de metodologías o procedimientos estándares para
el análisis, diseño, programación y prueba del software que permitan uniformar
la filosofía de trabajo, en aras de lograr una mayor confiabilidad, mantenibilidad
y facilidad de prueba, a la vez que eleven la productividad, tanto para la
labor de desarrollo como para el control de la calidad del software.
Los requisitos del software son la
base de las medidas de calidad. La falta de concordancia con los requisitos es
una falta de calidad. Los estándares o metodologías definen un conjunto de
criterios de desarrollo que guían la forma en que se aplica la ingeniería del software.
Si no se sigue ninguna metodología siempre habrá falta de calidad.
Existen algunos requisitos
implícitos o expectativas que a menudo no se mencionan, o se mencionan de forma
incompleta (por ejemplo el deseo de un buen mantenimiento) que también pueden
implicar una falta de calidad.
La política establecida debe estar sustentada sobre tres
principios básicos: tecnológico, administrativo y ergonómico.
El principio tecnológico define
las técnicas a utilizar en el proceso de desarrollo del software.
El principio administrativo
contempla las funciones de planificación y control del desarrollo del software,
así como la organización del ambiente o centro de ingeniería de software.
El principio ergonómico define la interfaz entre el usuario y
el ambiente automatizado.
La adopción de una buena política
contribuye en gran medida a lograr la calidad del software, pero no la asegura.
Para el aseguramiento de la calidad es necesario su control o evaluación.
El
Estándar de Calidad ISO 9001
Es el estándar que ha sido
adoptado por más de 130 países para su uso, se está convirtiendo en el medio principal
con el que los clientes pueden juzgar la competencia de un desarrollador de
software. Uno de los problemas con el estándar ISO 9001 está en que no es
específico de la industria: está expresado en términos generales, y puede ser
interpretado por los desarrolladores de diversos productos como de artefactos
electrodomésticos, así como también por los desarrolladores de software. Donde
se realza muchos documentos que relacionan el estándar con la industria del
software, pero estos no entran en una gran cantidad de detalles.
Para la industria del software los estándares relevantes son:
ISO 9001: Es un estándar que
describe el sistema de calidad utilizado para mantener el desarrollo de un
producto que implique diseño.
ISO 9000-3: Documento específico
que interpreta el ISO 9001 para el desarrollador de software.
ISO 9004-2: Este documento
proporciona las directrices para el servicio de facilidades del software como
soporte de usuarios.
Factores
de calidad ISO 9126
El estándar ISO 9126 ha sido
desarrollado en un intento de identificar los atributos clave de calidad para el
software. El estándar identifica 6 atributos clave de calidad:
1.
Funcionalidad: El grado en que el
software satisface las necesidades indicadas por los siguientes sub atributos:
idoneidad, corrección, interoperatividad, conformidad y seguridad.
2.
Confiabilidad: Cantidad de tiempo que el
software está disponible para su uso. Está referido por los siguientes sub
atributos: madurez, tolerancia a fallos y facilidad de recuperación.
3.
Usabilidad: Grado en que el software es
fácil de usar. Viene reflejado por los siguientes sub atributos: facilidad de
comprensión, facilidad de aprendizaje y operatividad.
4.
Eficiencia: Grado en que el software
hace óptimo el uso de los recursos del sistema. Está indicado por los
siguientes sub atributos: tiempo de uso y recursos utilizados.
5.
Facilidad de mantenimiento: La facilidad
con que una modificación puede ser realizada. Está indicada por los siguientes
sub atributos: facilidad de análisis, facilidad de cambio, estabilidad y
facilidad de prueba.
6.
Portabilidad: La facilidad con que el
software puede ser llevado de un entorno a otro. Está referido por los
siguientes sub atributos: facilidad de instalación, facilidad de ajuste, facilidad
de adaptación al cambio.
Estándares
de la calidad del proceso de pruebas
ISO 9001: Es un estándar que
describe el sistema de calidad utilizado para mantener el desarrollo de un
producto que implique diseño.
ISO 9000-3: Se trata de un
documento específico que interpreta el ISO 9001 para el desarrollador de software.
ISO 9004-2: Este documento
proporciona las directrices para el servicio de facilidades del software como
soporte de usuarios
Comentarios
Publicar un comentario