martes, 17 de junio de 2014

Diseño de software



Diseño de software
-El diseño es el primer paso de la fase de desarrollo de cualquier producto o sistema de ingeniería. 

-El diseño de software es la actividad de ciclo de vida de ingeniería de software en la que los requerimientos de software son analizados para causar una descripción de la estructura interna del software que servirá como base para su construcción. Más precisamente, un diseño de software (el resultado) debe describir la arquitectura de software - es decir cómo el software está en estado de descomposición y organizado en los componentes - y las interfaces entre esos componentes. También debe describir los componentes en un nivel del detalle que permiten su construcción. 

Conceptos Básicos del Diseño
v  -Proceso de aplicar distintas técnicas y principios con el propósito de definir un dispositivo, proceso o sistema con los suficientes detalles como para permitir su realización física

v  -El diseño de software, al igual que los métodos de diseño de todas las ingenierías, cambian continuamente al aparecer nuevos métodos, mejores análisis y ampliar los conocimientos. El problema es que el diseño de software se encuentra en una etapa relativamente temprana en su evolución. La idea de realizar diseño de software en lugar de “programar”, surgió a principios de los años 60, por lo que a las metodologías de diseño les falta la profundidad y la flexibilidad que tiene el diseño en otras ingenierías. Pero, ya existen técnicas de diseño de software para poder evaluar la calidad del software. 
v  El diseño del software se encuentra en el núcleo técnico de la ingeniería del software y se aplica independientemente del modelo de diseño de software que se utilice. Una vez que se analizan y especifican los requisitos del software, el diseño del software es la primera de las tres actividades técnicas - diseño, generación de código y pruebas- que se requieren para construir y verificar el software.
v  Es una descripción de la estructura del software que se va a implementar, los datos que son parte del sistema, las interfaces entre los componentes del sistema, y algunas veces, los algoritmos utilizados.

v  Los diseñadores no obtienen inmediatamente un diseño detallado, sino que lo desarrollan de manera iterativa a través de diversas versiones.

v  El proceso de diseño incluye agregar formalidad y detalles durante el desarrollo del diseño, y regresar a los diseños anteriores y corregirlos

v  Diseño de datos: transforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de datos necesarias para implementar el software.

v  Diseño arquitectónico: define la relación entre los principales elementos estructurales del programa.

v  Diseño de interfaz: describe cómo se comunica el software consigo mismo, con los sistemas que operan con él y con los operadores que lo emplean.

v  Diseño procedimental: transforma elementos estructurales de la arquitectura del programa en una descripción procedimental de los componentes de software.

A continuación, se listan una serie de criterios para determinar la calidad del software.

1) Un diseño debe tener una organización jerárquica.

2) Un diseño debe ser modular, es decir, el software debe estar dividido en elementos que realicen funciones específicas.

3) Un diseño debe tener representaciones distintas y separadas de los datos y de los procedimientos.

4) Un diseño debe llevar a módulos que exhiban características funcionales independientes.

5) Un diseño debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los módulos y el exterior.

6) Un diseño debe obtenerse mediante un método que sea reproducible y que esté dirigido por la información obtenida durante el análisis de requerimientos. 

Importancia del diseño del Software
El diseño de software tiene un papel importante en el desarrollo de software, ya que permite que ingenieros de software produzcan modelos distintos que moldean una clase de plano de la solución a ser implementado. Podemos analizar y valorar a estos modelos para determinar cual de estos permitirá o no, cumplir con una gama de requerimientos
El diseño arquitectónico puede representarse al usar uno o más de muchos modelos diferentes. Los modelos estructurales representan la arquitectura como una colección organizada de componentes del programa. Los modelos del marco de trabajo repetible incrementan el grado de abstracción del diseño al intentar identificar marcos de trabajo repetibles del diseño arquitectónico que se encuentran en tipos de aplicaciones similares.

El diseño es técnicamente la parte central de la ingeniería del software. Durante el diseño se desarrollan, revisan y se documentan los refinamientos progresivos de las estructuras de datos, dela estructura del programa y de los detalles procedimentales. El diseño da como resultado representaciones cuya calidad puede ser evaluada.

El diseño es la única forma mediante la que podemos traducir con precisión los requisitos del cliente en un producto o sistema acabado. El diseño de software es la base de todas las partes posteriores del desarrollo y de la fase de prueba

Trazabilidad de los requisitos en el diseño
La trazabilidad es la medida en la cual se puede establecer una relación entre dos productos o más del proceso de desarrollo.
Permite ver donde se originó un requerimiento. En otras palabras, todos los documentos de requerimientos, documentos de diseño, código y guiones de prueba deberán apuntar a su fuente de origen.
La trazabilidad software es una antigua práctica, recomendada para medianos o grandes desarrollos de software, que trata sobre cómo enlazar o relacionar los requisitos con otros elementos del ciclo de vida, principalmente, casos de prueba y código.
Por otro lado, estando en etapa de implementación y en caso de que haya un cambio en los requerimientos, la trazabilidad permitirá hacer una evaluación en el diseño y en la implementación. Si el cambio se da cuando el sistema está implementado, la trazabilidad permitirá hacer una evaluación de cómo serán afectados los involucrados. 

Atributos de calidad
Son las cualidades o propiedades de calidad que la aplicación debe satisfacer. La calidad de una aplicación se mide en función de sus atributos de calidad.  Para facilitar su medición durante la verificación, deben expresarse cuantitativa o cualitativamente.
Entre los atributos de calidad más relevantes están los siguientes:
 Seguridad: Se refiere a los permisos de acceder a ciertos procesos de la aplicación y para eso requiere autenticación, autorización y algún nivel de encriptación. 
Performance: Generalmente este atributo se puede medir en unidades de rendimiento de procesos (Throughput), tiempo de respuesta y retardos. 
Modificable: Se refiere a que tan fácil es modificar la aplicación y con ello cambiar el comportamiento del software.
 Disponibilidad: Está relacionada con la confiabilidad por ejemplo cuando una aplicación no está disponible cuando se necesita no cumple con las expectativas ni los requerimientos funcionales de la misma.
Integración: Está relacionado a como se puede comunicar y trabajar en conjunto la aplicación nueva a las aplicaciones que ya se tienen oa nuevas aplicaciones.
 Escalabilidad: Como se comporta la aplicación al momento de aumentar el ambiente de trabajo, por ejemplo más usuarios más proceso, más carga, etc

Estándares de Calidad
Son normas y protocolos internacionales que deben cumplir productos de cualquier indole para su distribución y consumo por el cliente final.
Los estándares no son más que los niveles mínimo y máximo deseados, o aceptables de calidad que debe tener el resultado de una acción, una actividad, un programa, o un servicio. En otras palabras, el estándar es la norma técnica que se utilizará como parámetro de evaluación de la calidad.
Una vez programadas las actividades de solución al problema de gestión, los círculos de calidad deberán definir los estándares de calidad del resultado, o los resultados esperados.