Está en la página 1de 39

ARQUITECTURA Y DISEÑO DE

SOFTWARE

Moisés López Bermúdez, Mg. Ing.Soft.


Unidad 1
FUNDAMENTOS DEL DISEÑO DE
SOFTWARE
Unidad 1

OBJETIVO

Conocer los conceptos y principios


aplicados al diseño de software
focalizando el modelo de negocio e
interacción con los requisitos de
usuario.

23/6/2020 19:21:32 3
Unidad 1
Tema 1
FUNDAMENTOS DEL DISEÑO DE
SOFTWARE
Tema 1

OBJETIVO

Conocer los fundamentos de diseño


de Software: conceptos generales,
procesos para diseñar y los principios
de diseño de software que se deben
aplicar.

23/6/2020 19:21:32 5
Tema1:Fundamentos de diseño
de Software
• Subtema 1: Conceptos generales de diseño
Subtema 2: El contexto del diseño de software
Subtema 3: Procesos de diseño de software
Subtema 4: Principios de diseño de software

23/6/2020 19:21:32 6
sobre este curso ...

¡Palabra!
Clave

23/6/2020 19:21:32 7
Entonces¿Qué es el diseño?

• ¿Arte?
• Ingenieria?
• Mezcla de ambos?

• Piensa por 15 segundos ...

23/6/2020 19:21:32 8
¿Es el diseño creativo como los
artistas?

"El diseño está dirigido a los seres


humanos. Diseñar es resolver
problemas humanos
identificándolos y ejecutando la
mejor solución."

Ivan Chermayeff

23/6/2020 19:21:32 9
¿Es el diseño lo que hacen los innovadores?
" En el vocabulario de la mayoría de las
personas, diseño significa barniz.

Es el interior decorando. Es el tejido de la


cortina del sofá. “Diseño es el alma
fundamental de una creación hecha por
el hombre que termina expresándose
en sucesivas capas externas del
producto o servicio."
El difunto Steve Jobs(Apple)
23/6/2020 19:21:32 10
¿Es el diseño lo que hacen los arquitectos?

Algunos arquitectos tienen una


noción preconcebida de lo que
debería ser un edificio: diseñan
desde el exterior como si el edificio
fuera una pieza de escultura.
Curtis W. Fentress

23/6/2020 19:21:32 http: //www.businesswire.com/ multimedia / home / 20090106005735 / de / 1739565 11


Software Diseño Perspectiva

"Hay dos formas de construir un


diseño de software:
• una es hacerla tan simple que
obviamente no haya deficiencias.
• la otra es hacerla tan complicada
que no haya deficiencias obvias.
El primer método es mucho más
difícil."
-CAR Hoare
23/6/2020 19:21:32 12
Aprendizaje Resultados:
1. trabajo en equipo

Trabajo de partes
interesadas del proyecto
de software, que incluye
clientes, usuarios y
desarrollores.

¡Evaluar la efectividad del


equipo!

23/6/2020 19:21:32 13
Los resultados del aprendizaje:
2. Problemas y soluciones

Reconocer las diferencias


entre problemas y
soluciones, y lidiar con
sus interacciones.

23/6/2020 19:21:32 http: //www.geekologie.com/ 2007/02 /rubiks_cube_for_the_lazy_perso.php 14


Los resultados del aprendizaje:
3. Métodos ágiles

¡Use métodos ágiles para


desarrollar un sistema
real para un cliente!

La posición de yoga del día - Kak Asana Desde


http://yogaanywhere.org/blog/2012/04/yoga-pose-of-the-day-kak-asana-crow-
posture-and-bak-asana-crane-pose/ /

23/6/2020 19:21:32 15
Los resultados del aprendizaje:
4. Orientado a objetos Diseño

Demostrar conceptos básicos


de diseño orientado a
objetos.
como:
» modelos de dominio.
» diagramas de clases,
» diagramas de interacción
(secuencia y comunicación).

23/6/2020 19:21:32 16
http: //enterprisegeeks.com/ blog / 2009/07 /
Los resultados del aprendizaje:
5. Fundamental Diseño

Principios, métodos, patrones


y estrategias de diseño
fundamentales en la creación
de un sistema de software y
sus documentos de respaldo.

http: //www.amazon.com/ Design-Patterns-Elements-Reusable-Object-Oriented /dp/ 0201633612


23/6/2020 19:21:32 17
Los resultados del aprendizaje:
6) Patrones

Identifique criterios
para el diseño de un
sistema de software y
seleccione
patrones, cree Primer uso de un freno de aire en
marcos y divida el competición - Mercedes-Benz 300
SLR en Le Mans, 1955. Desde http:
software //justacarguy.blogspot.com/2010/04/
air-brakes-were-first-deployed-at-
1955.html.

23/6/2020 19:21:32 18
Aprendizaje Resultados:
7) Análisis de diseño

Analizar y explicar la viabilidad y


solidez de un software.

23/6/2020 19:21:32 http: //en.wikipedia.org/ wiki /Archivo: Wrightfallingwater.jpg 19


Trabajo atrasado
• No tenemos días de retraso.
– Es como la industria: se entrega en la
fecha definida.

23/6/2020 19:21:32 20
"Deberes" Asignación

• Ver en el curso virtual aula moodle!

23/6/2020 19:21:32 32
Conceptos generales de diseño
Las palabras de uno de los metodólogos pioneros del diseño, J. Christopher Jones, tomado de su
trabajo clásico, Métodos de diseño: Semillas de futuros humanos ( Design Methods: Seeds of Human
Futures , Jones, 1970).

“El problema fundamental es que los diseñadores están obligados a utilizar la


información actual para predecir un estado futuro que no se producirá a menos
que sus predicciones sean correctas.

El resultado final del diseño debe ser asumido antes de que se puedan explorar los
medios para lograrlo''.

23/6/2020 19:21:32 22
La interacción entre la humanidad y el 'mundo' circundante ha
tomado históricamente dos caminos:
• El camino de Ciencias se ha preocupado por estudiar las cosas que existen, con la
observación y la experimentación como actividades clave. En su forma "clásica", el
enfoque científico es la resolución de problemas.

• El camino de Ingeniería ha estado mucho más preocupado por crear nuevo cosas,
siendo las actividades clave involucradas la de construcción y evaluación. estas
actividades se dirigen mucho más hacia el logro de un objetivo (un Producto).

23/6/2020 19:21:32 23
La naturaleza complementaria de las actividades científicas y de ingeniería
Esfuerzos humanos /
interacción con el
Camino de la ciencia mundo Camino de la ingeniería

Estudio de las cosas como son Fabricación de cosas 'nuevas' (pirámides,


(astronomía, biología, química, etc.) barcos, automóviles, teléfonos,
software,etc.)
Observación Construcción
Medición Evaluación
Experimentación Mejores herramientas

Mejor comprensión de los materiales. medida, etc.

23/6/2020 19:21:32 24
Diseño de ingeniería - Simple Definición

• "Diseño" especifica la estrategia


de "cómo" los requisitos serán
implementados.

• El diseño es a la vez un "Proceso"


y un "Artefacto"

23/6/2020 19:21:32 25
Donde hacer Diseños ¿Viene de?

• Intuición/Evolución

• Adopción

• Ingenieria

23/6/2020 19:21:32 26
"Diseño" es "codificación?"
si o no porque?

• Nuevamente, piense por 15 segundos ...

NO LO ES

23/6/2020 19:21:32 27
Diseño ¿Viene de?

• La tarea principal para el diseñador es especificar la


mejor solución a un problema.

• Producir una descripción(documentos, gráficos) de


cómo la solución estará organizada.

23/6/2020 19:21:32 28
Requisitos externos
UN MODELO DEL PROCESO DE DISEÑO
Especificación de requisitos
1 Aclarar la
naturaleza 2 Analice las
de los necesidades y
requisitos cree el modelo de
'caja negra' de
problema
Especificación funcional
4 Validar
Lista de desajustes solución
3 Postule una
(incluido el uso
solución de
de prototipos)
diseño de 'caja
blanca'
Modelo caja blanca

5 Implementación del
plan de diseño
utilizando un adecuado
23/6/2020 19:21:32 forma de software 29
MODELO DE PROCESO DE DISEÑO

• Formular una solución.


• Construir un modelo de la solución.
• Evaluar el modelo contra el requisito original
• Elaborar el modelo para producir una especificación
detallada de la solución.

23/6/2020 19:21:32 30
Los diseñadores de pirámides y catedrales casi seguramente habrán intercambiado
ideas con sus pares y aprendido de ellos, aunque solo con el surgimiento de prácticas de
ingeniería hubo nuevas entradas significativas para los procesos de aprendizaje del
diseñador como las siguientes:

1. El primero de ellos fue el conocimiento obtenido de la investigación científica.

2. El segundo fue el concepto de reutilizar. Una consecuencia de la revolución


industrial, fue la idea de 'estandarizar' los componentes..
Los canales de comunicación del diseñador

Es que un diseñador de software puede necesitar adquirir cierto grado de


"conocimiento de dominio" como parte rutinaria de la entrada necesaria para
emprender cualquier tarea de diseño en particular. El diseñador de software puede
necesitar responder a muchos canales de comunicación con otras personas.

• Especificación de requisitos
• Planes para la realización del diseño.
• Restricciones
• Conocimiento del dominio

23/6/2020 19:21:33 32
POR EJEMPLO
En un proyecto grande que emplea muchos programadores, los planes de diseño
necesitarán capturar una gama más amplia de factores que los que necesitará el
proyecto de una persona. Por lo general, dichos planes se ocuparán de describir:

▪ La estructura estática del sistema, incluidos los subprogramas que se


utilizarán y sus jerarquía.

▪ Cualquier objeto de datos para ser utilizado en el sistema.

▪ Los algoritmos a utilizar;

▪ Interacciones entre componentes.

23/6/2020 19:21:33 33
PROCESOS DE DISEÑO DE SOFTWARE

¿Qué es el software?
Se consideraba que el software abarcaba todas las formas relacionadas con la
generación de 'código binario ejecutable' destinado a la ejecución en una sola máquina.
De hecho, esta suposición estaba implícita en todas las primeras reflexiones sobre el
diseño de software.

La estructura de tales sistemas se fijó en gran medida cuando se compiló el código, por
lo tanto, las ideas de los diseñadores se dirigieron a producir una única unidad
monolítica de código binario.

23/6/2020 19:21:33 34
.

Propiedades del software como factores principales que afectan su desarrollo:

• Complejidad. Esto se ve como una propiedad esencial del software, en el que no dos partes son iguales
y un sistema puede poseer muchos estados durante la ejecución.

• Conformidad. Se espera que el software sea 'flexible' y se ajuste a los estándares impuesto por otros
componentes, como hardware, o por cuerpos externos, o por software existente.

• Posibilidad de cambiar. El software sufre una necesidad constante de cambio, en parte debido a la
aparente facilidad para hacer cambios (y técnicas relativamente pobres para costarlos).

• Invisibilidad. Debido a que el software es 'invisible', cualquier forma de representación que sea usado
para describirlo carecerá de cualquier forma de visual enlace que puede proporcionar una relación
fácilmente comprendida entre la representación y el sistema.
23/6/2020 19:21:33 35
La construcción de un modelo para una solución propuesta le permite al diseñador explorar
las limitaciones potenciales de la solución, así como evaluar su comportamiento y estructura.
Especificación de
requisitos

Descripción del
programa Proceso de
Decisiones del diseñador
diseño

Restricciones (recursos, organización,


experiencia, reutilización del software
existente
Cuando se desarrollan sistemas más grandes, el proceso de diseño puede dividirse en
dos fases distintas,

FASE 1: El diseñador desarrolla un modelo altamente abstracto de una solución (el diseño
'arquitectónico' o 'lógico') en el que solo se incluyen las propiedades (CAJA NEGRA)

FASE 2: Los "fragmentos" abstractos del problema que se identificaron en la primera fase
se asignan a unidades basadas en la tecnología (el diseño "detallado" o "físico"), por lo que
Se denomina caja blanca. El resultado de esta fase proporciona las especificaciones para
los programadores.

23/6/2020 19:21:33 37
LAS PRINCIPALES FASES DEL PROCESO DE DISEÑO DE SOFTWARE

Especificación Decisiones de
Detalles de
de requisitos diseño
diseño lógico
arquitectónico

Decisiones de
Detalles de
diseño
diseño físico
detalladas

23/6/2020 19:21:33 38
Restricciones sobre el proceso de diseño y el producto.

• Algunos pueden estar determinados por el entorno de


tiempo de entrega

• Cuando también se pretende que el sistema se construya


reutilizando los componentes de software existentes.
• La necesidad de ajustarse a un 'estilo arquitectónico'
particular de diseño, para ayudar en el mantenimiento futuro.

23/6/2020 19:21:33 39

También podría gustarte