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

Entradas populares de este blog

Introducción