2. Diseño de software
Es el proceso por el que un agente crea una
especificación de un artefacto de software, pensado
para cumplir unos objetivos, utilizando un conjunto de
componentes primitivos y sujeto a restricciones.
Objetivo Principal
Es conseguir que el software sea fácil de mantener, y si es posible reutilizarlo
en futuras aplicaciones. Para conseguir ambos objetivos, la etapa de
diseño es la más importante de la fase de desarrollo de software.
2
3. Actividades habituales en el diseño de un Sistema
Diseño arquitectónico: Se abordan aspectos estructurales y de organización del
sistema y su posible subdivisión en subsistemas o módulos. Además se tienen que
establecer las relaciones entre los subsistemas creados y definir las interfaces entre ellos.
Diseño detallado: Se aborda la estructura de cada uno de los módulos en los que quedó
subdividido el sistema global.
Diseño procedimental: Se abordan la organización de las operaciones o servicios que
ofrecerá cada uno de los módulos.
Diseño de datos: Se aborda la organización de la base de datos del sistema. Se parte del
diccionario de datos y de los diagramas E - R de la especificación del sistema. El diseño
de datos es muy importante para conseguir que el sistema sea utilizable y fácilmente
mantenible.
Diseño de la interfaz de usuario: Aborda la organización de la interfaz del usuario, para
conseguir un diseño más ergonómico. Es decir, se intenta conseguir un dialogo mas
ergonómico entre el usuario y el computador.
3
4. Diseño
Abstracción
• Proceso o resultado de la generalización
reduciendo el contenido de información de
un concepto o un fenómeno observable
Refinamiento
• proceso de elaboración. Una jerarquía se
desarrolla descomponiendo una declaración
macroscópica de función de un modo sensato
hasta que se logre obtener declaraciones del
lenguaje de programación.
Modularidad
• La arquitectura de
software está dividida en
componentes llamados
módulos.
Arquitectura
• se refiere a la estructura global
del software y las maneras en
que esa estructura proporciona
integridad conceptual al
sistema.
4
5. Diseño
Jerarquía de
control
• Un estructura de programa que representa la
organización de un componente e implica una
jerarquía de control.
Estructural
Partitioning
• La estructura de programa puede ser dividida
horizontal y verticalmente. Las particiones
horizontales definen ramas separadas de jerarquía
modular para cada función importante
Estructura de
datos
• es una representación de la
relación lógica entre los
elementos individuales de
los datos
Procedimient
o de software
• centra en el procesamiento de
cada módulo individualmente.
5
6. Diseño Orientado a Objetos
El diseño orientado a objetos (DOO) es una fase de la metodología
orientada a objetos para el desarrollo de software. Un programa orientado
a objetos se caracteriza por la interacción de esos objetos.
El diseño orientado a objetos es la disciplina que define los objetos y sus
interacciones para resolver un problema de negocio que fue identificado y
documentado durante el análisis orientado a objetos (AOO)
6
7. Fases del
DOO
Diseño de la Estructura de
Objetos (DEO)
Diseño del Comportamiento
de Objetos (DCO)
Qué clases se implantarán
Qué estructura de datos usará
cada clase
Qué operaciones ofrecerá cada
clase y cuáles serán sus
métodos
Cómo se implantará la herencia
de clases
Cuáles son las variantes
En el DOO se
identifican
7
8. Conceptos Básicos
Clase
Es la implantación de un tipo de objeto. Especifica la estructura de datos y métodos
operativos permitidos para cada objeto.
Operación
Proceso que se puede solicitar como unidad (tipo de servicio solicitado)
Método
Es la especificación de cómo se llevan a cabo las funciones de una clase. (código de
programación).
Los datos se almacenan dentro de él y se tiene acceso a ellos y se modifica
mediante operaciones permisibles.
Esa restricción se debe al encapsulado, que protege los datos del uso arbitrario o no
pretendido.
Los usuarios ven el comportamiento del objeto en términos de las operaciones que
se pueden aplicar a los objetos, y los resultados de tales operaciones (interfaz).
8
9. Conceptos Básicos
Herencia de clase
Es una implantación de la generalización, donde las propiedades de un tipo
se aplican a sus subtipos. Hace que la estructura de datos y operaciones
sean disponibles para su reutilización por las subclases.
Herencia Múltiple
Una clase puede heredar estructuras de datos y operaciones de más de una
superclase.
Selección del Método
Cuando se envía solicitud a un objeto, el software selecciona los métodos a
usar. El método no se almacena en el objeto. Se asocia con la clase. La
herencia permite que una clase reutilice características de superclases.
9
10. Conceptos Básicos
Polimorfismo
Se aplica a una operación que adopta varias formas de implantación, de
acuerdo al objeto. Puede hacer una solicitud de una operación sin conocer el
método que debe ser llamado. Esos detalles quedan ocultos para el usuario.
Reutilización
Se toma el código existente y se adapta a la circunstancia. Permiten que se
adapten las clases. Si se va a crear una clase, se debe pensar en “cómo se
usará en el futuro”. Y se debe crear para que se pueda adaptar con facilidad
a necesidades futuras.
10