4
T
H
C
O
F
F
E
E
Fundamentos Básicos para
el Diseño de Software
Presentación realizada por:
Ambar Ruz
C.I: 27.315.670.
Ingeniería de Sistemas
4
T
H
C
O
F
F
E
E
¿Qué es el Diseño de
Software?
4
T
H
C
O
F
F
E
E
Diseño de Software
Visto como un proceso, 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 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.
4
T
H
C
O
F
F
E
E
Una fase muy importante en el ciclo de vida de un proyecto es el Diseño
del Software. Se trata de una etapa fundamental y en muchas ocasiones la
más importante en el desarrollo de Software. Es el momento en que los
profesionales tienen que aportar sus conocimientos, experiencia y
creatividad para llegar a una solución que cumpla con los requerimientos
funcionales y no funcionales establecidos en la fase de la toma de
requisitos.
El diseño del Software tiene un impacto directo sobre la capacidad del
sistema para cumplir o no el total de requerimientos establecidos. Un
error de diseño en esta fase puede acarrear problemas en todo el
proyecto y provocar que este caiga en una espiral de continuos cambios y
de rehacer constantemente el trabajo.
Importancia del Diseño
de Software
4
T
H
C
O
F
F
E
E
D e b e m o s t e n e r c l a r o s t o d o s l o s
r e q u e r i m i e n t o s q u e a f e c t a n a l
D i s e ñ o d e l S o f t w a r e .
Entendimiento de los
requisitos
4
T
H
C
O
F
F
E
E
No deberíamos de inventar nada que ya esté inventado. Para
ello debemos conocer y aplicar los patrones de diseño. Estos
son soluciones (ya probadas y documentadas) a problemas de
desarrollo conocidos. Los patrones de diseño son técnicas
para resolver problemas comunes en el desarrollo de
software. Estas técnicas son las soluciones a problemas de
diseño que nos podemos encontrar, con facilidad, durante la
implementación de nuestro código.
CALIDAD:
No existe una definición única de calidad, ya que es un
concepto relativo (es una compleja mezcla de factores que
varía para las diferentes aplicaciones y los clientes que las
solicitan), es un concepto multidimensional, referido a
muchas cualidades, está ligada a restricciones, está ligada
también a compromisos aceptables, por último, no es ni
totalmente subjetiva ni objetiva. La calidad del diseño deberá
ir evaluándose mientras se va creando y no cuando ya esté
terminado.
PATRONES DE DISEÑO:
4
T
H
C
O
F
F
E
E
El diseño deberá ser modular dividiéndose en estructuras
que realicen funciones específicas. Esto facilitará la
reutilización. Además deberá realizarse de manera que
permita cambios y que permita la extensión de
funcionalidades sin afectar a otras. Una muy buena
práctica para esto es exponer las funcionalidades a través
de interfaces.
DISEÑOS ÁGILES:
No es necesario definir el diseño completo al inicio. Se
puede partir de un diseño general e ir construyéndolo a
medida que avanza el desarrollo, de esta manera se
adaptará a cambios y evoluciones. Separar
completamente el diseño de la codificación tiene sus
riesgos y siempre es mejor contar con profesionales que
puedan diseñar y codificar
MODULARIDAD:
4
T
H
C
O
F
F
E
E
Es fundamental poder comunicar el diseño a otras
personas involucradas en el desarrollo. La documentación
se realiza por medio de distintas vistas de más alto o bajo
nivel. Estas vistas contienen normalmente diagramas
además de información que apoyan a su compresión.
DOCUMENTACIÓN:
4
T
H
C
O
F
F
E
E
ESTRATEGIAS
DE DISEÑO DE
SOFTWARE
4
T
H
C
O
F
F
E
E
✓ Diseño preliminar: es la transformación de los requisitos en los
datos y arquitectura del software.
✓ Diseño detallado: se ocupa del refinamiento y de la
representación arquitectónica que lleva una estructura de datos
refinada y a las representaciones algorítmicas del software
Aquí se traducen los requisitos en
una representación del software
realizándose en dos etapas:
4
T
H
C
O
F
F
E
E
Es una representación de la relación lógica existente entre los
elementos individuales de datos. Establece la organización,
métodos de acceso, el grado de asociatividad y las
alternativas de procedimiento para la información. Las
estructuras de datos nos ayudan a resolver un problema de
manera más sencilla gracias a que las reglas que las rigen
nunca cambian, así que puedes asumir que ciertas cosas son
siempre ciertas.
PROCEDIMIENTO DEL SOFTWARE
Se centra sobre los detalles de procesamiento de cada
módulo individual. Debe proporcionar una especificación
precisa del procesamiento, incluyendo la secuencia de
sucesos, los puntos concretos de decisiones. Debe incluir
referencias a todos los módulos subordinados del módulo
que describe.
ESTRUCTURA DE DATOS
4
T
H
C
O
F
F
E
E
Ocultamiento de la
información
Todos los fundamentos del diseño anteriores sirven
para incentivar los diseños modulares. Un diseño
modular: reduce la complejidad, facilitar los cambios,
implementación más sencilla y permite el desarrollo
paralelo de parte diferente de un sistema. Para la
definición de módulos en una arquitectura de
software se utiliza la abstracción y el ocultamiento de
información es por eso que a continuación se
detalla los tipos de módulos.
• Módulo secuenciales: ejecutan secuencialmente
una tarea
• Módulos incrementales: puede ser interrumpido
antes de que terminen por el software de la
aplicación y restablece posteriormente su ejecución
en el punto que se interrumpió.
• Módulo paralelo: se ejecuta a la vez que otro
módulo en entorno multiprocesadores
Capacidad que obtienen los módulos de
transmitir información contenida en ellas
pero solamente información necesaria.
Implica que hay que definir un conjunto de
módulos independientes, que se
comuniquen con los otros mediante la
información que sea necesaria para realizar
la función del software.
4
T
H
C
O
F
F
E
E
MUCHAS GRACIAS
AMBAR RUZ
27.315.670
ambarruz88@gmail.com

Fundamentos Basicos para el Diseño de Software

  • 1.
    4 T H C O F F E E Fundamentos Básicos para elDiseño de Software Presentación realizada por: Ambar Ruz C.I: 27.315.670. Ingeniería de Sistemas
  • 2.
    4 T H C O F F E E ¿Qué es elDiseño de Software?
  • 3.
    4 T H C O F F E E Diseño de Software Vistocomo un proceso, 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 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.
  • 4.
    4 T H C O F F E E Una fase muyimportante en el ciclo de vida de un proyecto es el Diseño del Software. Se trata de una etapa fundamental y en muchas ocasiones la más importante en el desarrollo de Software. Es el momento en que los profesionales tienen que aportar sus conocimientos, experiencia y creatividad para llegar a una solución que cumpla con los requerimientos funcionales y no funcionales establecidos en la fase de la toma de requisitos. El diseño del Software tiene un impacto directo sobre la capacidad del sistema para cumplir o no el total de requerimientos establecidos. Un error de diseño en esta fase puede acarrear problemas en todo el proyecto y provocar que este caiga en una espiral de continuos cambios y de rehacer constantemente el trabajo. Importancia del Diseño de Software
  • 5.
    4 T H C O F F E E D e be m o s t e n e r c l a r o s t o d o s l o s r e q u e r i m i e n t o s q u e a f e c t a n a l D i s e ñ o d e l S o f t w a r e . Entendimiento de los requisitos
  • 6.
    4 T H C O F F E E No deberíamos deinventar nada que ya esté inventado. Para ello debemos conocer y aplicar los patrones de diseño. Estos son soluciones (ya probadas y documentadas) a problemas de desarrollo conocidos. Los patrones de diseño son técnicas para resolver problemas comunes en el desarrollo de software. Estas técnicas son las soluciones a problemas de diseño que nos podemos encontrar, con facilidad, durante la implementación de nuestro código. CALIDAD: No existe una definición única de calidad, ya que es un concepto relativo (es una compleja mezcla de factores que varía para las diferentes aplicaciones y los clientes que las solicitan), es un concepto multidimensional, referido a muchas cualidades, está ligada a restricciones, está ligada también a compromisos aceptables, por último, no es ni totalmente subjetiva ni objetiva. La calidad del diseño deberá ir evaluándose mientras se va creando y no cuando ya esté terminado. PATRONES DE DISEÑO:
  • 7.
    4 T H C O F F E E El diseño deberáser modular dividiéndose en estructuras que realicen funciones específicas. Esto facilitará la reutilización. Además deberá realizarse de manera que permita cambios y que permita la extensión de funcionalidades sin afectar a otras. Una muy buena práctica para esto es exponer las funcionalidades a través de interfaces. DISEÑOS ÁGILES: No es necesario definir el diseño completo al inicio. Se puede partir de un diseño general e ir construyéndolo a medida que avanza el desarrollo, de esta manera se adaptará a cambios y evoluciones. Separar completamente el diseño de la codificación tiene sus riesgos y siempre es mejor contar con profesionales que puedan diseñar y codificar MODULARIDAD:
  • 8.
    4 T H C O F F E E Es fundamental podercomunicar el diseño a otras personas involucradas en el desarrollo. La documentación se realiza por medio de distintas vistas de más alto o bajo nivel. Estas vistas contienen normalmente diagramas además de información que apoyan a su compresión. DOCUMENTACIÓN:
  • 9.
  • 10.
    4 T H C O F F E E ✓ Diseño preliminar:es la transformación de los requisitos en los datos y arquitectura del software. ✓ Diseño detallado: se ocupa del refinamiento y de la representación arquitectónica que lleva una estructura de datos refinada y a las representaciones algorítmicas del software Aquí se traducen los requisitos en una representación del software realizándose en dos etapas:
  • 11.
    4 T H C O F F E E Es una representaciónde la relación lógica existente entre los elementos individuales de datos. Establece la organización, métodos de acceso, el grado de asociatividad y las alternativas de procedimiento para la información. Las estructuras de datos nos ayudan a resolver un problema de manera más sencilla gracias a que las reglas que las rigen nunca cambian, así que puedes asumir que ciertas cosas son siempre ciertas. PROCEDIMIENTO DEL SOFTWARE Se centra sobre los detalles de procesamiento de cada módulo individual. Debe proporcionar una especificación precisa del procesamiento, incluyendo la secuencia de sucesos, los puntos concretos de decisiones. Debe incluir referencias a todos los módulos subordinados del módulo que describe. ESTRUCTURA DE DATOS
  • 12.
    4 T H C O F F E E Ocultamiento de la información Todoslos fundamentos del diseño anteriores sirven para incentivar los diseños modulares. Un diseño modular: reduce la complejidad, facilitar los cambios, implementación más sencilla y permite el desarrollo paralelo de parte diferente de un sistema. Para la definición de módulos en una arquitectura de software se utiliza la abstracción y el ocultamiento de información es por eso que a continuación se detalla los tipos de módulos. • Módulo secuenciales: ejecutan secuencialmente una tarea • Módulos incrementales: puede ser interrumpido antes de que terminen por el software de la aplicación y restablece posteriormente su ejecución en el punto que se interrumpió. • Módulo paralelo: se ejecuta a la vez que otro módulo en entorno multiprocesadores Capacidad que obtienen los módulos de transmitir información contenida en ellas pero solamente información necesaria. Implica que hay que definir un conjunto de módulos independientes, que se comuniquen con los otros mediante la información que sea necesaria para realizar la función del software.
  • 13.