You are on page 1of 51

What is Software Architecture ?

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

Evolution of Enterprise Application Architectures

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

2/49

What is Software Architecture ?

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

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

an architecture that is known to everyone. New issues:


architecture versus specification of the architecture architecture recovery and conformance rationale for the architecture
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
7/49

Evolution of Enterprise Application Architectures


Mainstream software practice has evolved from procedural to object-oriented to component-oriented development With the increasing adoption of enterprise Java and Microsoft .Net, component orientation is the next major paradigm. In corporate development, most new-start projects are adopting component orientation because it is supported by the majority of commercial development environments. Reasons object orientation has a very weak notion of software architecture, which leads to serious shortcomings

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

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.

Componentware introduces the generating business rules.


Component infrastructures Software patterns Software architecture Component-based development
Kljent Server Sistemi (Softverske Arhitekture) @ 2007
9/49

Doc. Dr Ljubomir Lazi

Procedural Paradigm and Object-Oriented Paradigm

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

10/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

11/49

Distributed System Software Design Convergent Component

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

12/49

Distributed System Software Design Development Model

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

13/49

Distributed System Software Design Integrated Development Environment

BOM Business Object Model -UML RAS Pattern Refinement Assistant-UML REF Refinement Assistant-UML GEN Translative Generator IX Implement, Deploy, and Test Environment

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

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

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

17/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

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.

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

19/49

[Perry and Wolf, 1992]

[Shaw, 1995]

rules, patterns, styles


Properties, relationships

Framework view -- look as a whole

component
Dynamic view -- change from time to time

Technical standard

connector

component
Operational Rqmts

rationale

Process mode -- how to build up

[US Army, 1996]

Stakeholders needs

[Boehm, 1995]

CPSC689

20

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

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

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

26/49

Calls view Components: procedures Relation: invokes Used: to trace control flow; for debugging Affected attributes include: buildability, testability, maintainability, understandability

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

27/49

Data Flow view Components: programs, modules Relation: may send data to Used: for traceability of functionality Affected attributes include: performance, correctness, accuracy

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

28/49

Class view Components: objects Relation: inherits from, is instance of Used: to exploit similarity among objects Affected attributes include: development time, maintainability

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

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

Architectural views Summary


Views are related to each other in complicated ways. Offer a separation of concerns useful for managing large and complex systems. Some views are combined in small systems (e.g: logical and modular) Some views are not needed for small systems (e.g: process view, physical view). Lesson: Choose the views that are useful to the system being built and to the achievement of qualities that are important to you.
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
32/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

Two tier Client/Server architectures


Processing management split between user system interface environment and database management server environment. Tier 1: user system interface In user's desktop environment Tier 2: database management services In a server
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
35/49

Two tier Client/Server architectures


Limitations performance deteriorate when number of clients is large (>100 users) flexibility and choice of DBMS for applications reduced (by processing management at server level stored procedures) limited flexibility in moving (repartitioning) program functionality from one server to another
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
36/49

Three tier Client/Server architectures


Tier 1: user system interface Tier 2: middletier provides process management (business logic and rules execution) and functions (e.g: queuing, application execution, and database staging) Tier 3: database management services
Doc. Dr Ljubomir Lazi Kljent Server Sistemi (Softverske Arhitekture) @ 2007
37/49

Three tier architectures middle tier


Centralizes process logic

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

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

39/49

Trends
Moving from single tier or

two tier to multitier

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

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

41/49

J2EE Application Server


Applet Container Applet
HTTP/ HTTPS

Web Container JSP Servlet RMI

EJB Container EJB


RMI/IIOP

RMI/IIOP

JDBC

App Client Container App HTTP/ HTTPS Client

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

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

43/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

44/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

45/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

46/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

47/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

48/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

49/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

50/49

Doc. Dr Ljubomir Lazi

Kljent Server Sistemi (Softverske Arhitekture) @ 2007

51/49

You might also like