Professional Documents
Culture Documents
A Definition of Software Architecture The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them (Bass, Clements, Kazman)
References: Len Bass, Paul Clements, Rick Kazman, Software Architecture in Practice, Addison Wesley Larman, Applying UML and Patterns, Ch 30 Deepak Alur, John Crupi, Dan Malks, Core J2EE Patterns
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
1/49
2/49
3/49
Implications of Definition 1
Architecture is an abstraction of systems. Architecture defines components and how they interact. Architecture suppresses purely local information about components; private details are not architectural. Systems have many structures (views). No single structure can be the architecture. The set of candidate structures is not fixed or prescribed: whatever is useful for analysis, communication, or understanding.
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
4/49
Implications of Definition 2
Components have properties Assumptions that one component can make of another. Include provided services (functionality) required services performance characteristics fault handling shared resource usage
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
5/49
Implications of Definition 3
Components have Relationships Relationships are more general than connectors. Relationships may be runtime (connectors). sends data to invokes signals Relationships may also be nonruntime. is a submodule of encapsulates information inherits from
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
6/49
Implications of Definition 4
Every system has an architecture. Every system is composed of components and relationships among them. In the simplest case, a system is composed of a single component, related only to itself. Just having an architecture is different from having
8/49
Component-Oriented Technology
Systems thinking:
software processes technology componentware (or component orientation) provides key elements of the solution to today's critical software problems.
10/49
11/49
12/49
13/49
BOM Business Object Model -UML RAS Pattern Refinement Assistant-UML REF Refinement Assistant-UML GEN Translative Generator IX Implement, Deploy, and Test Environment
14/49
Architectural Requirements Quality attributes criteria for architecture selection there are four classes of system qualities quality is largely dependent on architectural decisions not all aspects of all qualities are affected by architecture architecture can only permit, not guarantee, any quality attribute: "What the architecture give, the implementation can take away."
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
15/49
Qualities Attributes Fitness of a product for its intended use. There are four classes of system qualities. 1. Runtime qualities 2. Nonruntime qualities 3. Business qualities 4. Architecture qualities
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
16/49
17/49
18/49
Business Qualities Architectural Qualities Cost, schedule Conceptual integrity: system is constructed from a Marketability small number of architectural structures that interact Appropriatness in a small number of ways. for organization
achieved via a single architect, or a small, well coordinated architecture team. Correctness/completeness: Architecture should allow satisfaction of all the (behavioral and quality) requirements. Buildability: The system must be buildable with given resources.
19/49
[Shaw, 1995]
component
Dynamic view -- change from time to time
Technical standard
connector
component
Operational Rqmts
rationale
Stakeholders needs
[Boehm, 1995]
CPSC689
20
21/49
Architectural models (views) 1 In a house, there are plans for rooms electrical wiring plumbing ventilation Each of these constitutes a view (model) of the house. used by different people used to achieve different qualities in the house serves as a description and prescription So it is with software architecture.
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
22/49
Architectural views 2 Which structures are used, and why? Common views include module process uses calls data flow class physical
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
23/49
Module view Components: modules, work assignments Relations: is a submodule of, shares a secret with Used: as a basis of team structure and resource allocation Affected attributes include: maintainability, understandability
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
24/49
Process view Components: tasks, processes Relations: synchronizes with,excludes, preempts Used: to tune system runtime performance, exploit multiprocessing hardware Affected attributes include: performance
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
25/49
Uses view Components: procedures Relations: assumes the correct presence of Used: to engineer subsets, supersets Affected attributes include: reusability, testability, incremental development
26/49
Calls view Components: procedures Relation: invokes Used: to trace control flow; for debugging Affected attributes include: buildability, testability, maintainability, understandability
27/49
Data Flow view Components: programs, modules Relation: may send data to Used: for traceability of functionality Affected attributes include: performance, correctness, accuracy
28/49
Class view Components: objects Relation: inherits from, is instance of Used: to exploit similarity among objects Affected attributes include: development time, maintainability
29/49
Physical view Components: tasks, processes, processors Relation: resides on same processor Used: to manage process to processor allocation Affected attributes include: performance, availability
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
30/49
What Are models Used For? Documentation vehicle for current development future development managers customers Engineering tool to help achieve qualities
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
31/49
Client/Server
Components Client request information from a server knows the server identity Server responds to the requests from clients doesn't know the clients' identity
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
33/49
Client/Server
Advantages users only get information on demand design addresses presentation details different ways to view the same data Disadvantages need for more sophisticated security, systems management applications development requires more resources to implement and support
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
34/49
Improve performance, flexibility, maintainability, reusability, and scalability changes must only be written once and placed on the middle tier server to be available throughout the systems distributed database integrity more easily enforced access to resources based on names
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
38/49
39/49
Trends
Moving from single tier or
architecture Moving from monolithic model to object based application model Moving from fat client to HTML based thin Client
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
40/49
J2EE
In competition with the CORBA standard, Java inherited all the conquests of the CORBA group in the area of innovative software paradigms for distributed system software design and glued them in a universally used language: The Java community response to CORBA standards: J2EE
41/49
RMI/IIOP
JDBC
JAF
JAF
J2SE
RMI
RMI/IIOP
J2SE
JDBC
JNDI
JMS
J2SE
Database
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
42/49
JDBC
J2SE
JNDI
JMS
JTA
JNDI
JMS
JTA
JavaMail
JavaMail
43/49
44/49
45/49
46/49
47/49
48/49
49/49
50/49
51/49