jueves, 23 de octubre de 2014

Fundamentos del diseño del software








Muchas notaciones y lenguajes existen para representar el diseño de artefactos de software. Algunos describen un diseño estructural organizado, otros representan el inicio del software. Estas notaciones son generalmente usadas durante un diseño natural y se pueden usar durante ambos casos. Una representan notaciones que son usadas en el contexto de específicos métodos en las estrategias de diseño y métodos de sub áreas, pero estas categorías son caracterizadas en notaciones para describir la estructura estática y la dinámicas vistas.






Importancia del Software

El software es imprescindible para cualquier sistema informático o basado en Informática, puesto que sin él, este no funcionaría. Es el software quien dá las órdenes, quien indica que debe hacer cada máquina con sus elementos, cuando y como. Un ordenador sin software sería simplemente un conjunto de chips, cables, periféricos e interruptores totalmente inerte y sin función alguna. Es el software quien ordena todo ese material, lo reconoce, le asigna una función según sus características, y permite que funcione todo en su conjunto. Imaginaos una orquesta tocando una pieza: el director sería la parte central del ordenador, los músicos, el hardware periférico, y el software, la partitura de esa pieza. Está claro que sin partitura no habrá música, pero también que sin músicos tampoco. Continuando el símil, si en el caso de las partituras son los compositores quienes las crean, en el caso de la informática son los programadores, quienes diseñan el software para que cumpla con la función deseada. En grandes programas, como por ejemplo los sistemas operativos, existen equipos de cientos y miles de personas que trabajan en ellos durante largos periodos de tiempo, sobre todo debido a su complejidad. Y de hecho empresas como Apple, Microsoft, Google… son básicamente empresas dedicadas al software y su desarrollo, lo cual nos permite hacernos una pequeña idea del valor del software. Contra esta corriente de grandes empresas que obtienen beneficio económico del software, hay una corriente mundial que aboga por el software libre o gratuito, pero bueno, esa es otra historia.

Conceptos generales de diseño

El software no es el único campo donde el diseño se encuentra inmiscuido. En general podemos ver el diseño como una forma para resolución de problema El problema sin solución definitiva es interesante en términos de comprensión del diseño. Un numero de otras nociones y conceptos son también de interés en la comprensión del diseño en su sentido general, objetivo, limitaciones, alternativas, representaciones y soluciones.



Trazabilidad de requisitos del software

El objetivo de un equipo de desarrollo no es  que el sistema “funcione bien”, el objetivo de un buen software es  “satisfacer las necesidades cambiantes de los usuarios y de la empresa”, para ello  es importante que el personal encargado de gestionar los requisitos, desde la fase inicial debe detectar las necesidades iniciales del cliente y luego plasmar en el documento de gestión de requisitos, todos los requerimientos expuesto por el cliente, lo cual es una tarea complicada, primero en la mayoría de los casos el cliente no sabe exactamente lo que quiere y los requisitos siempre se expresan en lenguaje natural, para luego llevarlos a texto plano, otro factor es que muchos de estos requisitos tienden a cambiar durante el proceso de desarrollo, surgen nuevas funcionalidades por parte del cliente o usuario final que siempre hacen hincapié en que son necesarias.

Por estos motivos la trazabilidad de requisitos juega un papel importante en el desarrollo de software, es decir permite la posibilidad de rastrear requerimientos a lo largo del desarrollo, evaluando el impacto de los cambios de en los requerimientos. La trazabilidad se define como la habilidad para describir y seguir la vida de un requisito en ambos sentidos, hacia sus orígenes o hacia su implementación, a través de todas las especificaciones generadas durante el proceso de desarrollo. Sin embargo es una práctica que los equipos de desarrollo les cuestan aplicar, debido a que no existe una cultura para ejercer la trazabilidad, se considera un asunto difícil de implementar y esta visto como una pérdida de tiempo, ocasionando como consecuencia que se pierda el rastro del requisito y en muchos casos pueden verse afectados otros requisitos ya que pueden existir dependencias entre ellos.

Existen diferentes técnicas y modelos para soportar la práctica de la trazabilidad en el proceso de desarrollo de software.         La más común de las técnicas que se puede aplicar a cualquier modelo de desarrollo, es la construcción de matrices de trazado.  Las matrices van a hacer posible el análisis de la correlación entre elementos de un mismo modelo y entre diferentes niveles de abstracción. Otro ejemplo de técnicas de trazabilidad es la matriz CRUD (Create, Retrieve, Update and Delete), la cual va a permitir analizar las operaciones que se deben de realizar sobre la base de datos, a partir de la correlación entre tablas, funciones y otros elementos de la base de datos.
La construcción de estas matrices trae beneficios más allá de un simple registro de las dependencias entre los elementos del sistema. A partir de ellas es posible analizar ciertas características como, el nivel de especificación de requisitos, el nivel de participación de los usuarios, costo asociado a cada fase de desarrollo, la arquitectura requerida, plan de pruebas etc.

1.      En el proceso de trazabilidad consta de tres métodos importantes que son: 
Definición de Trazos: se relaciona con la especificación de los objetos auditables y sus trazas.

2.      Producción de Trazos: se refiere a la captura de las trazas, usualmente mediante un registro explícito de los objetos, relaciones y la extracción.

3.      Extracción de Trazos: se relaciona con el proceso actual de la traza, la recuperación de información y auditorías.

Para automatizar cualquier parte de un proceso es necesario definir un modelo de trazabilidad, el modelo es el componente central alrededor del cual los procedimientos, métodos y herramientas de trazado se organizan. Un modelo debe de cubrir los tres aspectos importantes mencionados en el punto anterior, definir, producir y extraer los trazos con la finalidad de crear un modelo de trazabilidad, centrado en la historia de usuario.

A continuación se citan los modelos para el proceso de trazabilidad:

1.      Modelo de Estructura Contributiva: este tipo de modelo trabaja con la trazabilidad  de requerimientos basados en personas, transforma en  “trazables”, las fuentes humanas de los requerimientos, la información relacionada con los requerimientos y los requerimientos relacionados con el trabajo personal.

2.      Modelo Centrado de documentos: este modelo representa los trazos como relaciones entre los diferentes tipos de documentos, un ejemplo puede ser un modelo de hipertexto. Este tipo de modelo va a garantizar que se utilice y se recupere la información en su formato digital.

3.      Modelo Guiado por BD: este modelo es utilizado para registrar la información de los trazos en BD para su futura extracción, la ventaja de este modelo es que va a facilitar su utilización a una gran diversidad de usuarios y entornos, seleccionando los elementos y trazos más importantes para cada ocasión.

Implementar en el desarrollo de software, herramientas para la gestión de la trazabilidad de requisitos es clave para mejorar la productividad como la calidad en el desarrollo de un proyecto de software.    La gran mayoría de la herramientas de gestión de requisitos que existen en el mercado son sofisticadas, complejas, sensitivos al tiempo, manejan una dependencia interna y pueden estar evolucionando continuamente.
La mayoría de las herramientas que existen en el mercado, gestionan requisitos, pero pocas se especializan en gestionar la trazabilidad de los requerimientos.

Según una encuesta realizada por el INCOSE las herramientas para el análisis de la trazabilidad debe de cumplir con las siguientes funciones:

a)    Identificar requisitos no relacionados: la herramienta debe de tener la capacidad para crear, detectar vínculos en la trazabilidad de requisitos y relaciones sospechosas para descubrir requisitos huérfanos.

b)    Seguimiento de las relaciones: permitir la visibilidad de los vínculos desde el origen hasta la ejecución, le permite al usuario tener la capacidad de seguir los enlaces para ver de dónde viene y a dónde va el requisito.

c)    Verificación de requisitos: a lo largo de la vida de un proyecto, la herramienta de gestión de requisitos se van a utilizar  para verificar que los requisitos se han cumplido.

d)    Requisitos de verificación del desempeño de los elementos del sistema: una vez que los requisitos se han asignado a los elementos del sistema, la herramienta de gestión de requisitos debe de apoyar la verificación de los requisitos y presentar un informe acerca de las verificaciones

Calidad de atributos


Varios atributos son generalmente considerados importantes que permiten obtener un diseño de software con alta calidad, existen algunas características que son ( mantenible, portabilidad, probable) y (correctos, robusto). Cabe destacar que existen diferencias entre calidad de atributos que son (rendimiento, seguridad, funcionalidad y usabilidad), y los que son (portabilidad, reutilización, integralidad y pruebas), y las características relacionadas con la arquitectura (integridad conceptual, correcto, completo).

Participantes en el proceso de desarrollo de software.

Pues el software libre lo puede desarrollar cualquier persona o equipo de trabajo claro siempre y cuando sepan hacerlo y pues no tenga un propietario ya que al ser de licencia libre se pueda descargar y distribuirlo a las personas que se quiera sin que tenga ninguna restricción de cualquier tipo.

Los que trabajan desarrollando software saben que cada unos de las personas que están involucradas en el proceso de desarrollo tienen particularidades y su manera de pensar, por lo cual se maneja de la forma Project manager, marketing manager, auditor.





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.

No hay comentarios:

Publicar un comentario