El documento describe el proceso de diseño de software, incluyendo actividades como el diseño de datos, diseño arquitectónico y diseño procedimental. También cubre conceptos clave como la abstracción, modularidad, refinamiento y arquitectura de software. El objetivo del diseño de software es traducir los requisitos en una representación que se acerque al código final.
1. REPÚBLICA BOLIVARIANA DE VENEZUELA
INSTITUTO UNIVERSITARIO POLITÉCNICO
“SANTIAGO MARIÑO”
EXTENSIÓN MARACAY
Prof.: Ing. Ángel Lugo
Sistemas II
Autor: Jimmy W. Mass V.
C.I: 21.097.249
Maracay 08 de Julio 2021
2. ¿Qué es?
Es la actividad del ciclo de vida del software
en la cual se analizan los requisitos para
producir una descripción de la estructura
interna del software que sirva de base para su
construcción.
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.
3. Actividades habituales en el diseño de un
Sistema:
• ƒ
El diseño de datos: Se aborda la
organización de la base de datos del
sistema. Es parte del diccionario de datos y
de los diagramas E - R de la especificación
del sistema.
• El diseño arquitectónico: Se abordan
aspectos estructurales y de organización
del sistema y su posible subdivisión en
subsistemas o módulos.
• ƒ
El diseño procedimental: Se abordan la
organización de las operaciones o servicios
que ofrecerá cada uno de los módulos.
4. El diseño del software es un proceso
mediante el que se traducen los requisitos en
una representación del software, que se
acerca mucho al código fuente.
Desde el punto de vista de la gestión del
proyecto, el diseño del software se realiza en
dos etapas:
Diseño detallado: Se aborda la estructura de
cada uno de los módulos en los que quedó
subdividido el sistema global.
El diseño preliminar: Se centra en la
transformación de los requisitos en los datos y
la arquitectura del software.
5. La calidad del diseño se evalúa mediante
una serie de revisiones técnicas formales
(RTF) que son una actividad de garantía del
software cuyos objetivos son:
1. Descubrir los errores en la función, la
lógica o la implementación de cualquier
representación del software.
2. Verificar que el software alcanza sus
requisitos.
3. Garantizar que el software se ha
representado según los estándares
establecidos.
4. Conseguir un software desarrollado de
forma uniforme.
5. Hacer que los proyectos sean manejables.
6. 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. Debe ser modular, es decir, el software
debe estar dividido en elementos que
realicen funciones específicas.
3. Debe tener representaciones distintas y
separadas de los datos y de los
procedimientos.
4. Debe llevar a módulos que exhiban
características funcionales independientes.
5. Debe conducir a interfaces que reduzcan la
complejidad de las conexiones entre los
módulos y el exterior.
6. Debe obtenerse mediante un método que
sea reproducible y que esté dirigido por la
información obtenida durante el análisis de
requerimientos.
7. Abstracción
Cuando se diseña un nuevo sistema
software es importante identificar los
elementos significativos de los que consta y
abstraer la utilidad específica de cada uno,
incluso más allá del sistema software para el
que se está diseñando.
Durante el proceso de diseño se debe
aplicar el concepto de abstracción en todos
los niveles de diseño.
8. Se pueden utilizar fundamentalmente tres
formas de abstracción:
Abstracciones funcionales: sirven para crear
expresiones o acciones parametrizadas
mediante el empleo de funciones o
procedimientos.
Tipos abstractos: sirven para crear los
nuevos tipos de datos que se necesitan para
abordar el diseño del sistema.
Máquinas abstractas: permiten establecer
un nivel de abstracción superior a los dos
anteriores y en él se define de una manera
formal el comportamiento de una maquina.
9. Modularidad.
Los primeros pasos que se debe dar al
abordar un diseño es dividir el sistema en sus
correspondientes módulos o partes
claramente diferenciadas.
• Claridad: siempre es más fácil entender y
manejar cada una de las partes de un
sistema que tratar de entenderlo como un
todo compacto.
• Reducción de Costos: resulta más barato
desarrollar, depurar, documentar, probar y
mantener un sistema modular que otro que
no lo es, excepto si el número de módulos
crece innecesariamente.
• Reutilización: si los módulos se diseñan
teniendo en cuenta otras posibles
aplicaciones resultara inmediata su
reutilización.
10. Refinamiento.
El objetivo global de un nuevo sistema
software expresado en su especificación se
debe refinar en sucesivos pasos hasta que
todo quede expresado en el lenguaje de
programación del computador. Es decir, a
través del refinamiento pasaremos de la
especificación del SRD al lenguaje de
programación del computador.
El proceso de refinamiento se puede dar por
concluido cuando todas las acciones y
expresiones quedan refinadas en función de
otras acciones o expresiones o bien en
función de las instrucciones básicas del
lenguaje empleado
11. Arquitectura del Software
La arquitectura de un software es la
descripción de los elementos que lo forman y
de las interrelaciones entre ellos, esta se
refiere a dos características importantes:
• La estructura jerárquica de los módulos del
software.
• La estructura de datos.
La arquitectura del software se obtiene
mediante un proceso de partición, que
relaciona los problemas del mundo real
(definidos en el análisis de requerimientos)
con las soluciones software para resolver los
problemas software.
Problema a ser resuelto
Solución del Software
12. Jerarquía de Control
Representa la organización de los módulos
de un programa. Esto no representa aspectos
procedimentales del software, tales como la
secuencia de procesos, la ocurrencia u orden
de las decisiones o la repetición de
operaciones.
Para representar la jerarquía de control lo
mas común es usar un diagrama en forma de
árbol.
13. Estructura de Datos.
La estructura de datos es una
representación de la lógica que existe entre
los elementos individuales de información.
Debido a que la estructura de la información
afectará de forma determinante al diseño
procedimental.
La estructura de datos es tan importante
como la estructura del programa en la
representación de la arquitectura del software.
La estructura de datos dicta la organización,
los métodos de acceso, el grado de
asociatividad y las alternativas para el
tratamiento de la información.
14. Procedimientos de Software.
El procedimiento del software se centra
sobre los detalles de procesamiento de cada
modulo individual.
El procedimiento debe proporcionar una
especificación precisa del procesamiento,
incluyendo la secuencia de proceso, las
decisiones y repetición de operaciones.
La representación procedimental del
software se realiza por capas.
15. Ocultamiento de Información.
El principio de ocultamiento de la
información sugiere que los módulos deben
especificarse de forma que la información
(procedimientos y datos) contenida dentro de
un módulo sea inaccesible a otros módulos
que no necesiten tal información.
El uso de ocultamiento de información en el
diseño facilitará las modificaciones, prueba y
mantenimiento del software, ya que como la
mayoría de los datos y procedimientos están
ocultos a otras partes del software, será
menos probable que los errores que se
introduzcan durante la modificación se
propaguen a otros módulos del software.
16. Su objetivo fundamental para cualquier
notación es resultar precisa, clara y sencilla de
interpretar, evitando ambigüedades.
Según el aspecto del sistema que se trata
de describir tenemos varios tipos:
Notaciones estructurales.
Notaciones estáticas.
Notaciones dinámicas.
Notaciones hibridas.
17. Notaciones estructurales:
Estas notaciones sirven para cubrir un primer
nivel del diseño arquitectónico. Se trata de
desglosar y estructurar el sistema en sus
partes fundamentales.
Diagrama de bloques: en la figura a.1 de la
se muestra el diagrama de bloques de un
sistema que está dividido en cuatro bloques y
en el que además se indican las conexiones
que existen entre ellos. En algunos casos
estas conexiones también pueden reflejar una
cierta clasificación o jerarquía de los bloques.
Cajas adosadas: en la figura a.2 se emplean
“cajas adosadas” para delimitar los bloques.
La conexión entre los bloques se pone de
manifiesto cuando entre dos cajas existe una
frontera común.
Figura a.1
Figura a.2
18. Notaciones estáticas
Se usan para describir características
estáticas del sistema tales como la
organización de la información, sin tener en
cuenta su evolución durante el funcionamiento
del sistema.
• Diccionario de datos: se detalla la
estructura interna de los datos que maneja
el sistema.
• Diagramas Entidad - Relación: permite
definir el modelo de datos, las relaciones
entre los datos y en general la organización
de la información
19. Notaciones dinámicas
Permiten describir el comportamiento del
sistema durante su funcionamiento.
La especificación de un sistema es una
descripción del comportamiento requerido
desde un punto de vista externo.
Las notaciones que se emplean para el
diseño son las mismas utilizadas en la
especificación.
Diagrama de flujo de datos
Diagrama de transición de estados
Lenguaje de Descripción de Programas
(PDL)
20. Notaciones hibridas
Estas notaciones tratan de cubrir
simultáneamente aspectos estructurales,
estáticos y dinámicos.
Entre ellas podemos destacar las siguientes:
La metodología de Jackson.
Diseño orientado a los datos de Warnier.
Diseño basado en abstracciones.
Diseño orientado a objetos.
21. El resultado de la etapa de diseño se recoge
en un documento que se utilizara como
elemento de partida para las sucesivas etapas
del proyecto y que denominaremos
Documento de Diseño de Software (SDD).
Las normas de la ESA establecen el empleo
de un Documento de Diseño Arquitectónico
(ADD) para describir el sistema en su conjunto
y otro Documento de Diseño Detallado (DDD)
para describir por separado cada uno de los
componentes del sistema.