Está en la página 1de 20

1

Ingeniera de Software Orientada a


Objetos
Dr. Ricardo R. Quintero Meza
(De los Requisitos al diseo
-la Arquitectura Lgica-)

2
De los Requisitos al Diseo-
iterativamente
3
Iterativamente haz lo que debe ser y hazlo
bien
Los requisitos y el anlisis orientado a objetos se
han enfocado en aprender a hacer del sistema lo
que debe ser (do the right thing).

El siguiente paso en contraste- se deber enfocar
en hacerlo bien (do the thing right).

En las primeras iteraciones debera enfocarse
ms en do the right thing (entender el problema),
en las ltimas en do the thing right (disearlo
bien).
4
Arquitectura Lgica y los diagramas
de paquetes UML
5
Introduccin
Al pasar del anlisis al diseo se debera
empezar primero con el diseo a gran
escala.
En este nivel, el diseo de un sistema OO
tpico debera fundamentarse en varios
estilos arquitectnicos.
6
Influencia de artefactos
: Register
enterItem
(itemID, quantity)
: ProductCatalog
spec = getProductSpec( itemID )
Require-
ments
Business
Modeling
Design
Sample UP Artifact Relationships
Vision Glossary
The logical architecture is influenced by the
constraints and non-functional requirements
captured in the Supp. Spec.
Domain
Model
*
*
Supplementary
Specification
Use-Case Model
Register
...
makeNewSale()
enterItem(...)
...
ProductCatalog
...
getProductSpec(...)
...
1
1
class diagrams
(a static view)
interaction diagrams
(a dynamic view)
UI
package diagrams
of the logical
architecture
(a static view)
Domain
Tech
Services
Design Model
7
Arquitectura lgica
La Arquitectura lgica es la organizacin a
gran-escala de las clases software en
paquetes (o namespaces), subsistemas y
capas.
La Arquitectura Lgica se recomienda est
basada en algn estilo arquitectnico:
Capas
Repositorio
Cliente-Servidor
Pipe & Filter, etc.

8
Ejemplo de Arquitectura Lgica
Domain
UI
Swing
not the Java
Swing libraries, but
our GUI classes
based on Swing
Web
Sales Payments Taxes
Technical Services
Persistence Logging RulesEngine
9
Qu es una capa?
Una capa (layer) es un agrupamiento de
grano-grueso de clases, paquetes o
subsistemas que tienen un conjunto
cohesivo de responsabilidades con
relacin a un aspecto del sistema.
Las capas suelen ser organizadas en capas
de alto nivel (capa UI) que llaman a los
servicios de capas de bajo nivel
(normalmente no a la inversa).
10
Qu es una capa?
En una Arquitectura estricta de capas, una
capa solamente llama a servicios de la capa
directa inferior (suele tenerse en protocolos
de red, no en sistemas de informacin).
En una Arquitectura relajada de capas, las
capas de alto nivel llaman a varias capas de
nivel inferior (ms comn en sistemas de
informacin).
11
Qu es una capa?
Las capas tpicas en un sistema OO incluyen:
User Interface.
Application Logic and Domain Objects: objetos software
que representan objetos del dominio (tal como el objeto
Sale) que satisfacen los requisitos de la aplicacin (tal
como calcular el total de una venta).
Technical Services: objetos de propsito general y
subsistemas que proveen servicios de soporte tcnico (tal
como la interfaz a una base de datos). Estos servicios
suelen ser independientes de la aplicacin y reutilizables a
travs de varios sistemas.

12
Capas comunes en un Sistema de Informacin
UI
(AKA Presentation, View)
Application
(AKA Workflow, Process,
Mediation, App Controller)
Domain
(AKA Business,
Application Logic, Model)
Technical Services
(AKA Technical Infrastructure,
High-level Technical Services)
Foundation
(AKA Core Services, Base Services,
Low-level Technical Services/Infrastructure)
width implies range of applicability
GUI windows
reports
speech interface
HTML, XML, XSLT, JSP, Javascript, ...
handles presentation layer requests
workflow
session state
window/page transitions
consolidation/transformation of disparate
data for presentation
handles application layer requests
implementation of domain rules
domain services (POS, Inventory)
- services may be used by just one
application, but there is also the possibility
of multi-application services
(relatively) high-level technical services
and frameworks
Persistence, Security
low-level technical services, utilities,
and frameworks
data structures, threads, math,
file, DB, and network I/O
more
app
specific
d
e
p
e
n
d
e
n
c
y
Business Infrastructure
(AKA Low-level Business Services)
very general low-level business services
used in many business domains
CurrencyConverter
13
Aplicando UML:Diagramas de Paquetes
Los Diagramas de Paquetes suelen utilizarse para ilustrar la
Arquitectura Lgica de un sistema (capas, subsistemas,
paquetes, etc.).
Una capa puede modelarse como un paquete UML.
Un paquete UML ofrece una forma de agrupar elementos
(puede agrupar lo que sea: clases, paquetes, UC, etc.)
Es comn mostrar dependencias o acoplamientos entre
paquetes de tal forma que los desarrolladores pueden ver el
acoplamiento a gran escala del sistema.
Las asociaciones de dependencia UML se utiliza para ello.
Un paquete UML representa un namespace. El nombre
cualificado del elemento contenido incluye sus paquetes.
Ej.- java::util::Date
14
Notaciones alternativas para paquetes
anidados
Domain::Sales
UI::Web UI::Swing
Sales
Web Swing
UI
Domain
Domain UI
Swing
Sales
Web
15
Cdigo: mapeando la organizacin del
cdigo a capas y paquetes UML
Muchos lenguajes OO (Java, C#) ofrecen soporte para paquetes (llamados namespaces
en C#).
Ej.- Java:

// --- UI Layer
com.mycompany.nextgen.ui.swing
com.mycompany.nextgen.ui.web

// --- DOMAIN Layer
// packages specific to the NextGen project
com.mycompany.nextgen.domain.sales
com.mycompany.nextgen.domain.payments

// --- TECHNICAL SERVICES Layer
// our home-grown persistence (database) access layer
com.mycompany.service.persistence

// third party
org.apache.log4j org.apache.soap.rpc

// --- FOUNDATION Layer
// foundation packages that our team creates
com.mycompany.util

17
Definicin: Tiers, capas, particiones
Persistence Security Logging
Technical Services
POS Inventory
Tax
Domain
Vertical Layers
Horizontal Partitions
18
Lnea gua: el principio de Separacin
Model-View
Qu tipo de visibilidad deberan tener otros
paquetes a la capa UI?
Cmo deberan las clases no-windows
comunicarse con las ventanas?
19
Lnea gua: el principio de Separacin
Model-View
Principio de Separacin Model-View:
1. No conectes o acoples objetos no-UI
directamente a objetos UI.
2. No pongas lgica de aplicacin en los mtodos
de los objetos UI. Los objetos UI deberan
solamente inicializar elementos UI, recibir
eventos UI y delegar solicitudes para lgica de
aplicacin a objetos no-UI (como los objetos de
dominio).
20
Cul es la conexin entre SSD,
Operaciones de Sistema y Capas?
Los eventos de sistema se corresponden
con operaciones de sistema.
Los SSDs ilustran las operaciones de
sistema, pero ocultan los objetos UI
especficos. Sin embargo, normalmente
existirn objetos en la capa UI que capturan
estas solicitudes de operaciones de sistema.
Los objetos UI entonces delegan la
solicitud de la capa UI a la capa de
dominio para su manejo.
21
Cul es la conexin entre SSD, Operaciones de
Sistema y Capas?
Domain
UI
Swing
ProcessSale
Frame
...
...
Register
makeNewSale()
enterItem()
...
: Cashier
makeNewSale()
enterItem()
endSale()
makeNewSale()
enterItem()
endSale()
enterItem(id, quantity)
:System
: Cashier
endSale()
description, total
makeNewSale()
the system operations handled by the system in an SSD represent the
operation calls on the Application or Domain layer from the UI layer

También podría gustarte