Herramientas de análisis y diseño de software

El análisis y el diseño de software incluyen todas las actividades que ayudan a transformar la especificación de requisitos en implementación. Las especificaciones de requisitos especifican todas las expectativas funcionales y no funcionales del software. Estas especificaciones de requisitos vienen en forma de documentos legibles y comprensibles para humanos, a los que una computadora no tiene nada que ver.

El análisis y diseño de software es la etapa intermedia, que ayuda a que los requisitos legibles por humanos se transformen en código real.

Veamos algunas herramientas de análisis y diseño utilizadas por los diseñadores de software:

Diagrama de flujo de datos

El diagrama de flujo de datos es una representación gráfica del flujo de datos en un sistema de información. Es capaz de representar el flujo de datos entrantes, el flujo de datos salientes y los datos almacenados. El DFD no menciona nada sobre cómo fluyen los datos a través del sistema.

Existe una diferencia importante entre DFD y Diagrama de flujo. El diagrama de flujo muestra el flujo de control en los módulos del programa. Los DFD representan el flujo de datos en el sistema en varios niveles. DFD no contiene ningún elemento de control o rama.

Tipos de DFD

Los diagramas de flujo de datos son lógicos o físicos.

  • Logical DFD - Este tipo de DFD se concentra en el proceso del sistema y el flujo de datos en el sistema. Por ejemplo, en un sistema de software bancario, cómo se mueven los datos entre diferentes entidades.
  • Physical DFD- Este tipo de DFD muestra cómo se implementa realmente el flujo de datos en el sistema. Es más específico y cercano a la implementación.

Componentes DFD

DFD puede representar el origen, el destino, el almacenamiento y el flujo de datos utilizando el siguiente conjunto de componentes:

  • Entities- Las entidades son fuente y destino de datos de información. Las entidades están representadas por rectángulos con sus respectivos nombres.
  • Process - Las actividades y acciones realizadas sobre los datos se representan mediante un círculo o rectángulos de borde redondeado.
  • Data Storage - Hay dos variantes de almacenamiento de datos: puede representarse como un rectángulo sin ambos lados más pequeños o como un rectángulo de lados abiertos al que le falta un solo lado.
  • Data Flow- El movimiento de datos se muestra mediante flechas puntiagudas. El movimiento de datos se muestra desde la base de la flecha como su origen hacia la punta de la flecha como destino.

Niveles de DFD

  • Level 0- El DFD de nivel de abstracción más alto se conoce como DFD de nivel 0, que describe todo el sistema de información como un diagrama que oculta todos los detalles subyacentes. Los DFD de nivel 0 también se conocen como DFD de nivel de contexto.
  • Level 1- El DFD de nivel 0 se divide en DFD de nivel 1 más específico. El DFD de nivel 1 describe los módulos básicos del sistema y el flujo de datos entre varios módulos. El DFD de nivel 1 también menciona procesos básicos y fuentes de información.
  • Level 2 - En este nivel, DFD muestra cómo fluyen los datos dentro de los módulos mencionados en el Nivel 1.

    Los DFD de nivel superior se pueden transformar en DFD de nivel inferior más específicos con un nivel más profundo de comprensión, a menos que se alcance el nivel de especificación deseado.

Gráficos de estructura

El diagrama de estructura es un diagrama derivado del diagrama de flujo de datos. Representa el sistema con más detalle que DFD. Desglosa todo el sistema en módulos funcionales más bajos, describe las funciones y subfunciones de cada módulo del sistema con mayor detalle que DFD.

El diagrama de estructura representa la estructura jerárquica de los módulos. En cada capa se realiza una tarea específica.

Estos son los símbolos utilizados en la construcción de gráficos de estructura:

  • Module- Representa proceso o subrutina o tarea. Un módulo de control se ramifica a más de un submódulo. Los módulos de biblioteca son reutilizables e invocables desde cualquier módulo.
  • Condition- Está representado por un pequeño diamante en la base del módulo. Muestra que el módulo de control puede seleccionar cualquiera de las subrutinas en función de alguna condición.
  • Jump - Se muestra una flecha apuntando dentro del módulo para representar que el control saltará en el medio del submódulo.
  • Loop- Una flecha curva representa un bucle en el módulo. Todos los submódulos cubiertos por el ciclo repiten la ejecución del módulo.
  • Data flow - Una flecha dirigida con un círculo vacío al final representa el flujo de datos.
  • Control flow - Una flecha dirigida con un círculo relleno al final representa el flujo de control.

Diagrama HIPO

El diagrama HIPO (Hierarchical Input Process Output) es una combinación de dos métodos organizados para analizar el sistema y proporcionar los medios de documentación. El modelo HIPO fue desarrollado por IBM en el año 1970.

El diagrama HIPO representa la jerarquía de módulos en el sistema de software. El analista utiliza el diagrama HIPO para obtener una vista de alto nivel de las funciones del sistema. Descompone funciones en subfunciones de manera jerárquica. Describe las funciones realizadas por el sistema.

Los diagramas HIPO son buenos para fines de documentación. Su representación gráfica hace que sea más fácil para los diseñadores y gerentes tener una idea pictórica de la estructura del sistema.

A diferencia del diagrama IPO (Input Process Output), que representa el flujo de control y datos en un módulo, HIPO no proporciona ninguna información sobre el flujo de datos o el flujo de control.

Ejemplo

Ambas partes del diagrama HIPO, la presentación jerárquica y el gráfico IPO se utilizan para el diseño de la estructura del programa de software, así como para la documentación del mismo.

Ingles estructurado

La mayoría de los programadores desconocen el panorama general del software, por lo que solo confían en lo que sus gerentes les dicen que hagan. Es responsabilidad de la administración de software superior proporcionar información precisa a los programadores para desarrollar un código preciso pero rápido.

Otras formas de métodos, que utilizan gráficos o diagramas, a veces pueden ser interpretadas de manera diferente por diferentes personas.

Por lo tanto, los analistas y diseñadores del software crean herramientas como el inglés estructurado. No es más que la descripción de lo que se requiere para codificar y cómo codificarlo. El inglés estructurado ayuda al programador a escribir código sin errores.

Otras formas de métodos, que utilizan gráficos o diagramas, a veces pueden ser interpretadas de manera diferente por diferentes personas. Aquí, tanto el inglés estructurado como el pseudocódigo intentan mitigar esa brecha de comprensión.

El inglés estructurado es el paradigma de programación estructurada que utiliza palabras en inglés simple. No es el código definitivo, sino una especie de descripción de lo que se requiere para codificar y cómo codificarlo. Los siguientes son algunos tokens de programación estructurada.

IF-THEN-ELSE,  
DO-WHILE-UNTIL

Analyst utiliza la misma variable y el mismo nombre de datos, que se almacenan en el Diccionario de datos, lo que facilita mucho la escritura y la comprensión del código.

Ejemplo

Tomamos el mismo ejemplo de autenticación de cliente en el entorno de compras en línea. Este procedimiento para autenticar al cliente se puede escribir en inglés estructurado como:

Enter Customer_Name
SEEK Customer_Name in Customer_Name_DB file
IF Customer_Name found THEN
   Call procedure USER_PASSWORD_AUTHENTICATE()
ELSE
   PRINT error message
   Call procedure NEW_CUSTOMER_REQUEST()
ENDIF

El código escrito en inglés estructurado se parece más al inglés hablado del día a día. No se puede implementar directamente como un código de software. El inglés estructurado es independiente del lenguaje de programación.

Pseudocódigo

El pseudocódigo se escribe más parecido al lenguaje de programación. Puede considerarse como un lenguaje de programación aumentado, lleno de comentarios y descripciones.

El pseudocódigo evita la declaración de variables, pero se escriben utilizando algunas construcciones reales del lenguaje de programación, como C, Fortran, Pascal, etc.

El pseudocódigo contiene más detalles de programación que el inglés estructurado. Proporciona un método para realizar la tarea, como si una computadora estuviera ejecutando el código.

Ejemplo

Programa para imprimir Fibonacci hasta n números.

void function Fibonacci
Get value of n;
Set value of a to 1;
Set value of b to 1;
Initialize I to 0
for (i=0; i< n; i++)
{
   if a greater than b 
   {
      Increase b by a;
      Print b;
   } 
   else if b greater than a
   {
      increase a by b;
      print a;
   }
}

Tablas de decisiones

Una tabla de decisión representa las condiciones y las acciones respectivas que se deben tomar para abordarlas, en un formato tabular estructurado.

Es una herramienta poderosa para depurar y prevenir errores. Ayuda a agrupar información similar en una sola tabla y luego, al combinar tablas, brinda una toma de decisiones fácil y conveniente.

Crear tabla de decisiones

Para crear la tabla de decisiones, el desarrollador debe seguir cuatro pasos básicos:

  • Identificar todas las posibles condiciones a abordar
  • Determinar acciones para todas las condiciones identificadas
  • Crear reglas máximas posibles
  • Definir acción para cada regla

Las tablas de decisiones deben ser verificadas por los usuarios finales y últimamente se pueden simplificar eliminando reglas y acciones duplicadas.

Ejemplo

Tomemos un ejemplo simple del problema diario con nuestra conectividad a Internet. Comenzamos identificando todos los problemas que pueden surgir al iniciar Internet y sus respectivas posibles soluciones.

Enumeramos todos los posibles problemas en las condiciones de la columna y las posibles acciones en la columna Acciones.

Condiciones / Acciones Reglas
Condiciones Muestra conectado norte norte norte norte Y Y Y Y
Ping está funcionando norte norte Y Y norte norte Y Y
Abre el sitio web Y norte Y norte Y norte Y norte
Comportamiento Compruebe el cable de red X
Compruebe el enrutador de Internet X X X X
Reiniciar el navegador web X
Póngase en contacto con el proveedor de servicios X X X X X X
No hacer nada
Tabla: Tabla de decisiones: solución de problemas de Internet interna

Modelo entidad-relación

El modelo Entidad-Relación es un tipo de modelo de base de datos basado en la noción de entidades del mundo real y la relación entre ellas. Podemos mapear el escenario del mundo real en el modelo de base de datos ER. ER Model crea un conjunto de entidades con sus atributos, un conjunto de restricciones y relación entre ellos.

El modelo ER se utiliza mejor para el diseño conceptual de bases de datos. El modelo ER se puede representar de la siguiente manera:

  • Entity - Una entidad en ER Model es un ser del mundo real, que tiene algunas propiedades llamadas attributes. Cada atributo está definido por su correspondiente conjunto de valores, llamadodomain.

    Por ejemplo, considere la base de datos de una escuela. Aquí, un estudiante es una entidad. El estudiante tiene varios atributos como nombre, identificación, edad y clase, etc.

  • Relationship - La asociación lógica entre entidades se llama relationship. Las relaciones se asignan con entidades de varias formas. Las cardinalidades de mapeo definen el número de asociaciones entre dos entidades.

    Mapeo de cardinalidades:

    • doce y cincuenta y nueve de la noche
    • uno a muchos
    • muchos a uno
    • muchos a muchos

Diccionario de datos

El diccionario de datos es la recopilación centralizada de información sobre datos. Almacena el significado y el origen de los datos, su relación con otros datos, el formato de datos para su uso, etc. El diccionario de datos tiene definiciones rigurosas de todos los nombres para facilitar al usuario y a los diseñadores de software.

A menudo se hace referencia al diccionario de datos como repositorio de metadatos (datos sobre datos). Se crea junto con el modelo DFD (Diagrama de flujo de datos) del programa de software y se espera que se actualice siempre que se cambie o actualice DFD.

Requisito del diccionario de datos

Se hace referencia a los datos a través del diccionario de datos mientras se diseña e implementa el software. El diccionario de datos elimina cualquier posibilidad de ambigüedad. Ayuda a mantener sincronizado el trabajo de los programadores y diseñadores mientras se usa la misma referencia de objeto en todas partes del programa.

El diccionario de datos proporciona una forma de documentación para el sistema de base de datos completo en un solo lugar. La validación de DFD se realiza mediante un diccionario de datos.

Contenido

El diccionario de datos debe contener información sobre lo siguiente

  • Flujo de datos
  • Estructura de datos
  • Elementos de datos
  • Almacenes de datos
  • Procesamiento de datos

El flujo de datos se describe mediante DFD como se estudió anteriormente y se representa en forma algebraica como se describe.

= Compuesto de
{} Repetición
() Opcional
+ Y
[/] O

Ejemplo

Dirección = Número de casa + (Calle / Área) + Ciudad + Estado

ID del curso = Número del curso + Nombre del curso + Nivel del curso + Calificaciones del curso

Elementos de datos

Los elementos de datos consisten en el nombre y las descripciones de los elementos de control y datos, almacenes de datos internos o externos, etc.con los siguientes detalles:

  • Nombre principal
  • Nombre secundario (alias)
  • Caso de uso (cómo y dónde usarlo)
  • Descripción del contenido (notación, etc.)
  • Información adicional (valores predeterminados, restricciones, etc.)

Almacén de datos

Almacena la información desde donde los datos ingresan al sistema y existen fuera del sistema. El almacén de datos puede incluir:

  • Files
    • Interna al software.
    • Externo al software pero en la misma máquina.
    • Externo al software y al sistema, ubicado en una máquina diferente.
  • Tables
    • Convenio de denominación
    • Propiedad de indexación

Procesamiento de datos

Hay dos tipos de procesamiento de datos:

  • Logical: Como lo ve el usuario
  • Physical: Como lo ve el software