SlideShare a Scribd company logo
1 of 58
A Summary of Software Architecture guide <@Triet Ho/> 1
Introduction This presentation (58 slides) is a summary of Microsoft Application Architecture Guide 2nd Edition book (560 pages). http://msdn.microsoft.com/en-us/library/ff650706.aspx Use these slides as a reference if you want to want to get overview of Software Architecture. Common What and Why, common Application Types and Considerations when design a specific Application Type Notes: This presentation is designed for reading offline, not a seminar or a training. Confidential 2
What Is Software Architecture Software application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability.  It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application. Confidential 3
Why Is Architecture Important? Like any other complex structure, software must be built on a solid foundation. Failing to consider key scenarios, failing to design for common problems, or failing to appreciate the long term consequences of key decisions can put your application at risk.  Modern tools and platforms help to simplify the task of building applications, but they do not replace the need to design your application carefully, based on your specific scenarios and requirements.  The risks exposed by poor architecture include software that is unstable, is unable to support existing or future business requirements, or is difficult to deploy or manage in a production environment. Confidential 4
The Goals of Architecture Application architecture seeks to build a bridge between business requirements and technical requirements by understanding use cases, and then finding ways to implement those use cases in the software.  The goal of architecture is to identify the requirements that affect the structure of the application. Keep in mind that the architecture should: Expose the structure of the system but hide the implementation details. Realize all of the use cases and scenarios. Try to address the requirements of various stakeholders. Handle both functional and quality requirements. Confidential 5
The Architectural Landscape It is important to understand the key forces that are shaping architectural decisions today, and which will change how architectural decisions are made in the future. Consider the following key trends: User empowerment. A design that supports user empowerment is flexible, configurable, and focused on the user experience. Market maturity. Take advantage of market maturity by taking advantage of existing platform and technology options. Flexible design. Increasingly, flexible designs take advantage of loose coupling to allow reuse and to improve maintainability Future trends. When building your architecture, understand the future trends that might affect your design after deployment. Confidential 6
Key Architecture Principles Build to change instead of building to last. Model to analyze and reduce risk. Use models and visualizations as a communication and collaboration tool. Identify key engineering decisions. Confidential 7
Key Design Principles Separation of concerns. Divide your application into distinct features with as little overlap in functionality as possible. Single Responsibility principle. Each component or module should be responsible for only a specific feature or functionality, or aggregation of cohesive functionality Principle of Least Knowledge A component or object should not know about internal details of other components or objects. Don’t repeat yourself (DRY). You should only need to specify intent in one place. The functionality should not be duplicated in any other component. Minimize upfront design. Only design what is necessary. If your application requirements are unclear, or if there is a possibility of the design evolving over time, avoid making a large design effort prematurely. This principle is sometimes known as YAGNI ("You ain’tgonna need it"). Confidential 8
Key Design Considerations Determine the Application Type Determine the Deployment Strategy Determine the Appropriate Technologies Determine the Quality Attributes  (security, performance, and usability) Determine the Crosscutting Concerns  (Instrumentation and logging, Authentication, Authorization, Exception management, Communication, Caching.) Confidential 9
What Is an Architectural Style? An architectural style, sometimes called an architectural pattern, is a set of principles - a coarse grained pattern that provides an abstract framework for a family of systems. An architectural style improves partitioning and promotes design reuse by providing solutions to frequently recurring problems.  You can think of architecture styles and patterns as sets of principles that shape an application Confidential 10
Summary of Key Architectural Styles Confidential 11
Inputs, Outputs, and Design Steps Confidential 12
Inputs, Outputs, and Design Steps Identify Architecture Objectives. Clear objectives help you to focus on your architecture and on solving the right problems in your design. Key Scenarios. Use key scenarios to focus your design on what matters most, and to evaluate your candidate architectures when they are ready. Application Overview. Identify your application type, deployment architecture, architecture styles, and technologies in order to connect your design to the real world in which the application will operate. Key Issues. Identify key issues based on quality attributes and crosscutting concerns. Candidate Solutions. Create an architecture spike or prototype that evolves and improves the solution and evaluate it against your key scenarios, issues, and deployment constraints before beginning the next iteration of your architecture. Confidential 13
Whiteboard Your Architecture If you cannot whiteboard the architecture then it suggests that it is not well understood Confidential 14
Logical Layered Design Confidential 15
Logical Layered Design Presentation layer. This layer contains the user oriented functionality responsible for managing user interaction with the system, and generally consists of components that provide a common bridge into the core business logic encapsulated in the business layer. Business layer. This layer implements the core functionality of the system, and encapsulates the relevant business logic. It generally consists of components, some of which may expose service interfaces that other callers can use. Data layer. This layer provides access to data hosted within the boundaries of the system, and data exposed by other networked systems; perhaps accessed through services. The data layer exposes generic interfaces that the components in the business layer can consume. Confidential 16
Services and Layers Confidential 17
Design Steps for a Layered Structure Step 1 – Choose Your Layering Strategy Step 2 – Determine the Layers You Require Step 3 – Decide How to Distribute Layers and Components Step 4 – Determine If You Need to Collapse Layers Step 5 – Determine Rules for Interaction between Layers Step 6 – Identify Cross Cutting Concerns Step 7 – Define the Interfaces between Layers Step 8 – Choose Your Deployment Strategy Step 9 – Choose Communication Protocols Confidential 18
Presentation Layer Guidelines Confidential 19
Presentation Layer Guidelines General Design Considerations Choose the appropriate application type Choose the appropriate UI technology Use the relevant patterns Design for separation of concerns. Consider human interface guidelines Adhere to user driven design principles Confidential 20
Presentation Layer Guidelines Specific Design Issues Caching Communication Composition Exception Management Navigation User Experience User Interface Validation Confidential 21
Business Layer Guidelines Confidential 22
Business Layer Guidelines Application façade. This optional component typically provides a simplified interface to the business logic components, often by combining multiple business operations into a single operation that makes it easier to use the business logic. Business Logic components. Business logic is defined as any application logic that is concerned with the retrieval, processing, transformation, and management of application data; application of business rules and policies; and ensuring data consistency and validity. Business Workflow components. Business workflow components define and coordinate long running, multistep business processes, and can be implemented using business process management tools. Business Entity components. or—more generally—business objects, encapsulate the business logic and data necessary to represent real world elements. Confidential 23
Business Layer Guidelines General Design Considerations Decide if you need a separate business layer. Identify the responsibilities and consumers of your business layer. Do not mix different types of components in your business layer. Reduce round trips when accessing a remote business layer Avoid tight coupling between layers Confidential 24
Business Layer Guidelines Specific Design Issues Authentication Authorization Caching Coupling and Cohesion Exception Management Logging, Auditing, and Instrumentation Validation Confidential 25
Data Layer Guidelines Confidential 26
Data Layer Guidelines Data Access components. These components abstract the logic required to access the underlying data stores. They centralize common data access functionality in order to make the application easier to configure and maintain. Service agents. When a business component must access data provided by an external service, you might need to implement code to manage the semantics of communicating with that particular service. Service agents implement data access components that isolate the varying requirements for calling services from your application, and may provide additional services such as caching, offline support, and basic mapping between the format of the data exposed by the service and the format your application requires. Confidential 27
Data Layer Guidelines General Design Considerations Choose an appropriate data access technology. Use abstraction to implement a loosely coupled interface to the data access layer. Encapsulate data access functionality within the data access layer. Decide how to map application entities to data source structures Consider consolidating data structures. Decide how you will manage connections. Determine how you will handle data exceptions Consider security risks. Reduce round trips. Consider performance and scalability objectives. Confidential 28
Data Layer Guidelines Specific Design Issues Batching Binary Large Objects (BLOBs) Connections Data Format Exception Management Object Relational Mapping Queries Stored Procedures Stored Procedures vs. Dynamic SQL Transactions Validation XML Confidential 29
Service Layer Guidelines Confidential 30
Service Layer Guidelines Service interfaces. Services expose a service interface to which all inbound messages are sent. You can think of a service interface as a façade that exposes the business logic implemented in the application (typically, logic in the business layer) to potential consumers. Message types. When exchanging data across the service layer, data structures are wrapped by message structures that support different types of operations. The services layer will also usually include data types and contracts that define the data types used in messages. Confidential 31
Service Layer Guidelines Design Considerations Design services to be application-scoped and not component-scoped Design services and data contracts for extensibility and without the assumption that you know who the client is. Design only for the service contract Separate service layer concerns from infrastructure concerns Compose entities from standard elements Design to assume the possibility of invalid requests. Ensure that the service can detect and manage repeated messages Ensure that the service can manage messages arriving out of order Confidential 32
Service Layer Guidelines Specific Design Issues Authentication Authorization Communication Exception Management Messaging Channels Message Construction Message Endpoint Message Protection l Message Routing Message Transformation Service Interface Validation Confidential 33
Application Archetypes Summary Mobile applications.  Applications of this type can be developed as thin client or rich client applications. Rich client mobile applications can support disconnected or occasionally connected scenarios. Web or thin client applications support connected scenarios only. Device resources may prove to be a constraint when designing mobile applications Rich client applications. Applications of this type are usually developed as standalone applications with a graphical user interface that displays data using a range of controls. Rich client applications can be designed for disconnected and occasionally connected scenarios if they need to access remote data or functionality. Rich Internet applications Applications of this type can be developed to support multiple platforms and multiple browsers, displaying rich media or graphical content. Rich Internet applications run in a browser sandbox that restricts access to some features of the client. Confidential 34
Application Archetypes Summary Service applications Services expose shared business functionality and allow clients to access them from a local or a remote system. Service operations are called using messages, based on XML schemas, passed over a transport channel. The goal of this type of application is to achieve loose coupling between the client and the server. Web applications.  Applications of this type typically support connected scenarios and can support different browsers running on a range of operating systems and platforms. Confidential 35
Application Type Considerations Confidential 36
Application Type Considerations Confidential 37
Web Application Archetype Confidential 38
Designing Web Applications General Design Considerations Partition your application logically. Use abstraction to implement loose coupling between layers. Understand how components will communicate with each other Consider caching to minimize server round trips. Consider logging and instrumentation Consider authenticating users across trust boundaries Do not pass sensitive data in plaintext across the network Design your Web application to run using a least-privileged account Confidential 39
Designing Web Applications Specific Design Issues Application Request Processing Authentication Authorization Caching Exception Management Logging and Instrumentation Navigation Page Layout Page Rendering Session Management Validation Confidential 40
Designing Web Applications Other Considerations: Design Considerations for Layers Presentation Layer, Business Layer, Data Layer, Service Layer Testing and Testability Considerations Technology Considerations Deployment Considerations Non-distributed Deployment, Distributed Deployment, Load Balancing Confidential 41
Rich Client Application Archetype Confidential 42
Rich Client Application Archetype General Design Considerations Choose an appropriate technology based on application requirements. Separate presentation logic from interface implementation. Identify the presentation tasks and presentation flows. Design to provide a suitable and usable interface. Apply separation of concerns across all layers. Reuse common presentation logic. Loosely couple your client from any remote services it uses Avoid tight coupling to objects in other layers Reduce round trips when accessing remote layers Confidential 43
Rich Client Application Archetype Specific Design Issues Business Layer Communication Composition Configuration Management Data Access Exception Management Maintainability Presentation Layer State Management Workflow Confidential 44
Rich Client Application Archetype Other Considerations Security Considerations protecting sensitive data, user authentication and authorization, guarding against attack from malicious code and users, and auditing and logging events and user activity. Data Handling Considerations Caching Data, Data Concurrency, Data Binding Offline/Occasionally Connected Considerations Technology Considerations Deployment Considerations Stand-alone Deployment, Client/Server Deployment, N-Tier Deployment, Deployment Technologies Confidential 45
Rich Internet Application Archetype Confidential 46
Designing Rich Internet Applications General Design Considerations Choose a RIA based on audience, rich interface, and ease of deployment. Design to use a Web infrastructure utilizing services Design to take advantage of client processing power Design for execution within the browser sandbox Determine the complexity of your UI requirements Use scenarios to increase application performance or responsiveness. Design for scenarios where the plug-in is not installed Confidential 47
Designing Rich Internet Applications Specific Design Issues Business Layer Caching Communication Composition Data Access Exception Management Logging Media and Graphics Mobile Portability Presentation State Management Validation Confidential 48
Designing Rich Internet Applications Other Considerations Security Considerations Data Handling Considerations Read-only reference data, Transient data. Technology Considerations Versions and Target Platforms, Security Deployment Considerations Installation of the RIA Plug-In, Distributed Deployment, Load Balancing, Web Farm Considerations Confidential 49
Mobile Application Archetype Confidential 50
Designing Mobile Applications General Design Considerations Decide if you will build a rich client, a thin Web client, or rich Internet application (RIA). Determine the device types you will support. Consider occasionally connected and limited-bandwidth scenarios when appropriate. Design a UI appropriate for mobile devices, taking into account platform constraints. Design a layered architecture appropriate for mobile devices that improves reuse and maintainability. Consider device resource constraints such as battery life, memory size, and processor speed. Confidential 51
Designing Mobile Applications Specific Design Issues Authentication and Authorization Caching Communication Configuration Management Data Access Device Specifics Exception Management Logging Porting Applications Power Management Synchronization Testing User Interface Validation Confidential 52
Designing Mobile Applications Other considerations Technology Considerations Deployment Considerations Confidential 53
Service Archetype Confidential 54
Designing Service Applications General Design Considerations Consider using a layered approach to designing service applications and avoid tight coupling across layers. Design coarse-grained operations Design data contracts for extensibility and reuse. Design only for the service contract Design services to be autonomous Design to assume the possibility of invalid requests Design services based on policy and with explicit boundaries Separate service concerns from infrastructure operational concerns Use separate assemblies for major components in the service layer Avoid using data services to expose individual tables in a database Design workflow services to use interfaces supported by your workflow engine. Confidential 55
Designing Service Applications Specific Design Issues Authentication Authorization Business Layer Communication Data Layer Exception Management Message Construction Message Endpoint Message Protection Message Transformation Message Exchange Patterns Representational State Transfer Service Layer SOAP Validation Confidential 56
Other considerations Technology Considerations Deployment Considerations Confidential 57
Thank you! - 2011 trietho@gmail.com 58

More Related Content

What's hot

Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software EngineeringVarsha Ajith
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design Arslan Anwar
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patternsPallav Kumar
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineeringPreeti Mishra
 
Software engineering fundamentals
Software engineering fundamentalsSoftware engineering fundamentals
Software engineering fundamentalsJigyasaAgrawal7
 
Software Architecture Views and Viewpoints
Software Architecture Views and ViewpointsSoftware Architecture Views and Viewpoints
Software Architecture Views and ViewpointsHenry Muccini
 
An Open Source Workshop
An Open Source WorkshopAn Open Source Workshop
An Open Source Workshophalehmahbod
 
Linux principles and philosophy
Linux principles and philosophyLinux principles and philosophy
Linux principles and philosophyaliabintouq
 
User Interface Design COMP 1650
User Interface Design COMP 1650User Interface Design COMP 1650
User Interface Design COMP 1650Shane Min Zaw
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design IntroductionUsman Khan
 
Aspect Oriented Software Development
Aspect Oriented Software DevelopmentAspect Oriented Software Development
Aspect Oriented Software DevelopmentJignesh Patel
 
Patterns of Evolutionary Architecture
Patterns of Evolutionary ArchitecturePatterns of Evolutionary Architecture
Patterns of Evolutionary ArchitectureShawn Button
 
Ch17-Software Engineering 9
Ch17-Software Engineering 9Ch17-Software Engineering 9
Ch17-Software Engineering 9Ian Sommerville
 
React Redux Tutorial | Redux Tutorial for Beginners | React Redux Training | ...
React Redux Tutorial | Redux Tutorial for Beginners | React Redux Training | ...React Redux Tutorial | Redux Tutorial for Beginners | React Redux Training | ...
React Redux Tutorial | Redux Tutorial for Beginners | React Redux Training | ...Edureka!
 
Architecture business cycle
Architecture business cycleArchitecture business cycle
Architecture business cycleHimanshu
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and DesignRa'Fat Al-Msie'deen
 
Software Designing - Software Engineering
Software Designing - Software EngineeringSoftware Designing - Software Engineering
Software Designing - Software EngineeringPurvik Rana
 

What's hot (20)

Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software Engineering
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
 
software-architecture-patterns
software-architecture-patternssoftware-architecture-patterns
software-architecture-patterns
 
Ch16 component based software engineering
Ch16 component based software engineeringCh16 component based software engineering
Ch16 component based software engineering
 
Class notes
Class notesClass notes
Class notes
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 
Software engineering fundamentals
Software engineering fundamentalsSoftware engineering fundamentals
Software engineering fundamentals
 
Software Architecture Views and Viewpoints
Software Architecture Views and ViewpointsSoftware Architecture Views and Viewpoints
Software Architecture Views and Viewpoints
 
An Open Source Workshop
An Open Source WorkshopAn Open Source Workshop
An Open Source Workshop
 
Linux principles and philosophy
Linux principles and philosophyLinux principles and philosophy
Linux principles and philosophy
 
User Interface Design COMP 1650
User Interface Design COMP 1650User Interface Design COMP 1650
User Interface Design COMP 1650
 
Design patterns tutorials
Design patterns tutorialsDesign patterns tutorials
Design patterns tutorials
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design Introduction
 
Aspect Oriented Software Development
Aspect Oriented Software DevelopmentAspect Oriented Software Development
Aspect Oriented Software Development
 
Patterns of Evolutionary Architecture
Patterns of Evolutionary ArchitecturePatterns of Evolutionary Architecture
Patterns of Evolutionary Architecture
 
Ch17-Software Engineering 9
Ch17-Software Engineering 9Ch17-Software Engineering 9
Ch17-Software Engineering 9
 
React Redux Tutorial | Redux Tutorial for Beginners | React Redux Training | ...
React Redux Tutorial | Redux Tutorial for Beginners | React Redux Training | ...React Redux Tutorial | Redux Tutorial for Beginners | React Redux Training | ...
React Redux Tutorial | Redux Tutorial for Beginners | React Redux Training | ...
 
Architecture business cycle
Architecture business cycleArchitecture business cycle
Architecture business cycle
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
 
Software Designing - Software Engineering
Software Designing - Software EngineeringSoftware Designing - Software Engineering
Software Designing - Software Engineering
 

Viewers also liked

architecture of mobile software applications
architecture of mobile software applicationsarchitecture of mobile software applications
architecture of mobile software applicationsHassan Dar
 
An Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryAn Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryJohn Ortiz
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software ArchitectureMarkus Voelter
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An OverviewOliver Stadie
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture IntroductionSARCCOM
 
Software architecture in an agile environment
Software architecture in an agile environmentSoftware architecture in an agile environment
Software architecture in an agile environmentRaffaele Garofalo
 
Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)Dion Hinchcliffe
 
Software Architecture: Styles
Software Architecture: StylesSoftware Architecture: Styles
Software Architecture: StylesHenry Muccini
 
A Software Architect's View On Diagramming
A Software Architect's View On DiagrammingA Software Architect's View On Diagramming
A Software Architect's View On Diagrammingmeghantaylor
 
Three Software Architecture Styles
Three Software Architecture StylesThree Software Architecture Styles
Three Software Architecture StylesJorgen Thelin
 
Building a sustainable, cross-platform mobile application strategy - SoCon 20...
Building a sustainable, cross-platform mobile application strategy - SoCon 20...Building a sustainable, cross-platform mobile application strategy - SoCon 20...
Building a sustainable, cross-platform mobile application strategy - SoCon 20...Jeff Haynie
 
Card scrum v1.0
Card scrum v1.0Card scrum v1.0
Card scrum v1.0tusjain
 
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOPUNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOPAmit Midha
 
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOPUNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOPAmit Midha
 
UNDERSTANDING ENTERPRISE ARCHITECTURE CONCEPTS AND MODELING -TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE CONCEPTS AND MODELING -TRAINING WORKSHOPUNDERSTANDING ENTERPRISE ARCHITECTURE CONCEPTS AND MODELING -TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE CONCEPTS AND MODELING -TRAINING WORKSHOPAmit Midha
 
TP2 concept design in service production
TP2 concept design in service productionTP2 concept design in service production
TP2 concept design in service productionIntelligent_Furniture
 
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)Gelis Wu
 
Rapid Prototyping and Usability Testing - HUXPA
Rapid Prototyping and Usability Testing - HUXPARapid Prototyping and Usability Testing - HUXPA
Rapid Prototyping and Usability Testing - HUXPADerrick Bowen
 

Viewers also liked (20)

architecture of mobile software applications
architecture of mobile software applicationsarchitecture of mobile software applications
architecture of mobile software applications
 
An Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryAn Introduction to Software Architecture - Summary
An Introduction to Software Architecture - Summary
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An Overview
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
 
Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture Introduction
 
Software architecture in an agile environment
Software architecture in an agile environmentSoftware architecture in an agile environment
Software architecture in an agile environment
 
Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)Transforming Software Architecture for the 21st Century (September 2009)
Transforming Software Architecture for the 21st Century (September 2009)
 
Software Architecture: Styles
Software Architecture: StylesSoftware Architecture: Styles
Software Architecture: Styles
 
A Software Architect's View On Diagramming
A Software Architect's View On DiagrammingA Software Architect's View On Diagramming
A Software Architect's View On Diagramming
 
Three Software Architecture Styles
Three Software Architecture StylesThree Software Architecture Styles
Three Software Architecture Styles
 
Building a sustainable, cross-platform mobile application strategy - SoCon 20...
Building a sustainable, cross-platform mobile application strategy - SoCon 20...Building a sustainable, cross-platform mobile application strategy - SoCon 20...
Building a sustainable, cross-platform mobile application strategy - SoCon 20...
 
Card scrum v1.0
Card scrum v1.0Card scrum v1.0
Card scrum v1.0
 
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOPUNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
 
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOPUNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE FRAMEWORKS TRAINING WORKSHOP
 
UNDERSTANDING ENTERPRISE ARCHITECTURE CONCEPTS AND MODELING -TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE CONCEPTS AND MODELING -TRAINING WORKSHOPUNDERSTANDING ENTERPRISE ARCHITECTURE CONCEPTS AND MODELING -TRAINING WORKSHOP
UNDERSTANDING ENTERPRISE ARCHITECTURE CONCEPTS AND MODELING -TRAINING WORKSHOP
 
Designing Mobile Applications
Designing Mobile ApplicationsDesigning Mobile Applications
Designing Mobile Applications
 
TP2 concept design in service production
TP2 concept design in service productionTP2 concept design in service production
TP2 concept design in service production
 
如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)如何培養架構性思考(談軟體架構師必經之路)
如何培養架構性思考(談軟體架構師必經之路)
 
Rapid Prototyping and Usability Testing - HUXPA
Rapid Prototyping and Usability Testing - HUXPARapid Prototyping and Usability Testing - HUXPA
Rapid Prototyping and Usability Testing - HUXPA
 

Similar to A summary of software architecture guide

OOSAD Chapter 6 Object Oriented Design.pptx
OOSAD Chapter 6 Object Oriented Design.pptxOOSAD Chapter 6 Object Oriented Design.pptx
OOSAD Chapter 6 Object Oriented Design.pptxBereketMuniye
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfputtipavan23022023
 
Togaf 9.1 architecture
Togaf 9.1 architectureTogaf 9.1 architecture
Togaf 9.1 architectureNarayan Sau
 
Cloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from MicrosoftCloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from MicrosoftKesavan Munuswamy
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part iBisrat Girma
 
Lecture # 8 software design and architecture (SDA).ppt
Lecture # 8 software design and architecture (SDA).pptLecture # 8 software design and architecture (SDA).ppt
Lecture # 8 software design and architecture (SDA).pptesrabilgic2
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introductionVishal Singh
 
Software architecture-patterns
Software architecture-patternsSoftware architecture-patterns
Software architecture-patternspedro
 
Software arquitectura patron diseño
Software arquitectura patron diseñoSoftware arquitectura patron diseño
Software arquitectura patron diseñopedro
 
Project Requriement Management Vs Agile software development
Project Requriement Management Vs  Agile software developmentProject Requriement Management Vs  Agile software development
Project Requriement Management Vs Agile software developmentbizpresenter
 
IRJET- Software Architecture and Software Design
IRJET- Software Architecture and Software DesignIRJET- Software Architecture and Software Design
IRJET- Software Architecture and Software DesignIRJET Journal
 
76 May 2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx
76 May  2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx76 May  2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx
76 May 2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docxevonnehoggarth79783
 
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...David J Rosenthal
 
Notes on software engineering
Notes on software engineeringNotes on software engineering
Notes on software engineeringErtan Deniz
 
Introduction Software and Software Engineering
Introduction Software and Software EngineeringIntroduction Software and Software Engineering
Introduction Software and Software Engineeringinfinitetechnology20
 

Similar to A summary of software architecture guide (20)

CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
Chapter 08
Chapter 08Chapter 08
Chapter 08
 
Chapter1
Chapter1Chapter1
Chapter1
 
OOSAD Chapter 6 Object Oriented Design.pptx
OOSAD Chapter 6 Object Oriented Design.pptxOOSAD Chapter 6 Object Oriented Design.pptx
OOSAD Chapter 6 Object Oriented Design.pptx
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
 
Togaf 9.1 architecture
Togaf 9.1 architectureTogaf 9.1 architecture
Togaf 9.1 architecture
 
Cloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from MicrosoftCloud Design Patterns Book from Microsoft
Cloud Design Patterns Book from Microsoft
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
Lecture # 8 software design and architecture (SDA).ppt
Lecture # 8 software design and architecture (SDA).pptLecture # 8 software design and architecture (SDA).ppt
Lecture # 8 software design and architecture (SDA).ppt
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
 
Software architecture-patterns
Software architecture-patternsSoftware architecture-patterns
Software architecture-patterns
 
Software arquitectura patron diseño
Software arquitectura patron diseñoSoftware arquitectura patron diseño
Software arquitectura patron diseño
 
Project Requriement Management Vs Agile software development
Project Requriement Management Vs  Agile software developmentProject Requriement Management Vs  Agile software development
Project Requriement Management Vs Agile software development
 
IRJET- Software Architecture and Software Design
IRJET- Software Architecture and Software DesignIRJET- Software Architecture and Software Design
IRJET- Software Architecture and Software Design
 
76 May 2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx
76 May  2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx76 May  2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx
76 May 2007Vol. 50, No. 5 COMMUNICATIONS OF THE ACM COMMUNIC.docx
 
06 fse design
06 fse design06 fse design
06 fse design
 
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
Cloud Design Patterns - PRESCRIPTIVE ARCHITECTURE GUIDANCE FOR CLOUD APPLICAT...
 
Notes on software engineering
Notes on software engineeringNotes on software engineering
Notes on software engineering
 
Unit2 2
Unit2 2Unit2 2
Unit2 2
 
Introduction Software and Software Engineering
Introduction Software and Software EngineeringIntroduction Software and Software Engineering
Introduction Software and Software Engineering
 

Recently uploaded

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Recently uploaded (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

A summary of software architecture guide

  • 1. A Summary of Software Architecture guide <@Triet Ho/> 1
  • 2. Introduction This presentation (58 slides) is a summary of Microsoft Application Architecture Guide 2nd Edition book (560 pages). http://msdn.microsoft.com/en-us/library/ff650706.aspx Use these slides as a reference if you want to want to get overview of Software Architecture. Common What and Why, common Application Types and Considerations when design a specific Application Type Notes: This presentation is designed for reading offline, not a seminar or a training. Confidential 2
  • 3. What Is Software Architecture Software application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application. Confidential 3
  • 4. Why Is Architecture Important? Like any other complex structure, software must be built on a solid foundation. Failing to consider key scenarios, failing to design for common problems, or failing to appreciate the long term consequences of key decisions can put your application at risk. Modern tools and platforms help to simplify the task of building applications, but they do not replace the need to design your application carefully, based on your specific scenarios and requirements. The risks exposed by poor architecture include software that is unstable, is unable to support existing or future business requirements, or is difficult to deploy or manage in a production environment. Confidential 4
  • 5. The Goals of Architecture Application architecture seeks to build a bridge between business requirements and technical requirements by understanding use cases, and then finding ways to implement those use cases in the software. The goal of architecture is to identify the requirements that affect the structure of the application. Keep in mind that the architecture should: Expose the structure of the system but hide the implementation details. Realize all of the use cases and scenarios. Try to address the requirements of various stakeholders. Handle both functional and quality requirements. Confidential 5
  • 6. The Architectural Landscape It is important to understand the key forces that are shaping architectural decisions today, and which will change how architectural decisions are made in the future. Consider the following key trends: User empowerment. A design that supports user empowerment is flexible, configurable, and focused on the user experience. Market maturity. Take advantage of market maturity by taking advantage of existing platform and technology options. Flexible design. Increasingly, flexible designs take advantage of loose coupling to allow reuse and to improve maintainability Future trends. When building your architecture, understand the future trends that might affect your design after deployment. Confidential 6
  • 7. Key Architecture Principles Build to change instead of building to last. Model to analyze and reduce risk. Use models and visualizations as a communication and collaboration tool. Identify key engineering decisions. Confidential 7
  • 8. Key Design Principles Separation of concerns. Divide your application into distinct features with as little overlap in functionality as possible. Single Responsibility principle. Each component or module should be responsible for only a specific feature or functionality, or aggregation of cohesive functionality Principle of Least Knowledge A component or object should not know about internal details of other components or objects. Don’t repeat yourself (DRY). You should only need to specify intent in one place. The functionality should not be duplicated in any other component. Minimize upfront design. Only design what is necessary. If your application requirements are unclear, or if there is a possibility of the design evolving over time, avoid making a large design effort prematurely. This principle is sometimes known as YAGNI ("You ain’tgonna need it"). Confidential 8
  • 9. Key Design Considerations Determine the Application Type Determine the Deployment Strategy Determine the Appropriate Technologies Determine the Quality Attributes (security, performance, and usability) Determine the Crosscutting Concerns (Instrumentation and logging, Authentication, Authorization, Exception management, Communication, Caching.) Confidential 9
  • 10. What Is an Architectural Style? An architectural style, sometimes called an architectural pattern, is a set of principles - a coarse grained pattern that provides an abstract framework for a family of systems. An architectural style improves partitioning and promotes design reuse by providing solutions to frequently recurring problems. You can think of architecture styles and patterns as sets of principles that shape an application Confidential 10
  • 11. Summary of Key Architectural Styles Confidential 11
  • 12. Inputs, Outputs, and Design Steps Confidential 12
  • 13. Inputs, Outputs, and Design Steps Identify Architecture Objectives. Clear objectives help you to focus on your architecture and on solving the right problems in your design. Key Scenarios. Use key scenarios to focus your design on what matters most, and to evaluate your candidate architectures when they are ready. Application Overview. Identify your application type, deployment architecture, architecture styles, and technologies in order to connect your design to the real world in which the application will operate. Key Issues. Identify key issues based on quality attributes and crosscutting concerns. Candidate Solutions. Create an architecture spike or prototype that evolves and improves the solution and evaluate it against your key scenarios, issues, and deployment constraints before beginning the next iteration of your architecture. Confidential 13
  • 14. Whiteboard Your Architecture If you cannot whiteboard the architecture then it suggests that it is not well understood Confidential 14
  • 15. Logical Layered Design Confidential 15
  • 16. Logical Layered Design Presentation layer. This layer contains the user oriented functionality responsible for managing user interaction with the system, and generally consists of components that provide a common bridge into the core business logic encapsulated in the business layer. Business layer. This layer implements the core functionality of the system, and encapsulates the relevant business logic. It generally consists of components, some of which may expose service interfaces that other callers can use. Data layer. This layer provides access to data hosted within the boundaries of the system, and data exposed by other networked systems; perhaps accessed through services. The data layer exposes generic interfaces that the components in the business layer can consume. Confidential 16
  • 17. Services and Layers Confidential 17
  • 18. Design Steps for a Layered Structure Step 1 – Choose Your Layering Strategy Step 2 – Determine the Layers You Require Step 3 – Decide How to Distribute Layers and Components Step 4 – Determine If You Need to Collapse Layers Step 5 – Determine Rules for Interaction between Layers Step 6 – Identify Cross Cutting Concerns Step 7 – Define the Interfaces between Layers Step 8 – Choose Your Deployment Strategy Step 9 – Choose Communication Protocols Confidential 18
  • 19. Presentation Layer Guidelines Confidential 19
  • 20. Presentation Layer Guidelines General Design Considerations Choose the appropriate application type Choose the appropriate UI technology Use the relevant patterns Design for separation of concerns. Consider human interface guidelines Adhere to user driven design principles Confidential 20
  • 21. Presentation Layer Guidelines Specific Design Issues Caching Communication Composition Exception Management Navigation User Experience User Interface Validation Confidential 21
  • 22. Business Layer Guidelines Confidential 22
  • 23. Business Layer Guidelines Application façade. This optional component typically provides a simplified interface to the business logic components, often by combining multiple business operations into a single operation that makes it easier to use the business logic. Business Logic components. Business logic is defined as any application logic that is concerned with the retrieval, processing, transformation, and management of application data; application of business rules and policies; and ensuring data consistency and validity. Business Workflow components. Business workflow components define and coordinate long running, multistep business processes, and can be implemented using business process management tools. Business Entity components. or—more generally—business objects, encapsulate the business logic and data necessary to represent real world elements. Confidential 23
  • 24. Business Layer Guidelines General Design Considerations Decide if you need a separate business layer. Identify the responsibilities and consumers of your business layer. Do not mix different types of components in your business layer. Reduce round trips when accessing a remote business layer Avoid tight coupling between layers Confidential 24
  • 25. Business Layer Guidelines Specific Design Issues Authentication Authorization Caching Coupling and Cohesion Exception Management Logging, Auditing, and Instrumentation Validation Confidential 25
  • 26. Data Layer Guidelines Confidential 26
  • 27. Data Layer Guidelines Data Access components. These components abstract the logic required to access the underlying data stores. They centralize common data access functionality in order to make the application easier to configure and maintain. Service agents. When a business component must access data provided by an external service, you might need to implement code to manage the semantics of communicating with that particular service. Service agents implement data access components that isolate the varying requirements for calling services from your application, and may provide additional services such as caching, offline support, and basic mapping between the format of the data exposed by the service and the format your application requires. Confidential 27
  • 28. Data Layer Guidelines General Design Considerations Choose an appropriate data access technology. Use abstraction to implement a loosely coupled interface to the data access layer. Encapsulate data access functionality within the data access layer. Decide how to map application entities to data source structures Consider consolidating data structures. Decide how you will manage connections. Determine how you will handle data exceptions Consider security risks. Reduce round trips. Consider performance and scalability objectives. Confidential 28
  • 29. Data Layer Guidelines Specific Design Issues Batching Binary Large Objects (BLOBs) Connections Data Format Exception Management Object Relational Mapping Queries Stored Procedures Stored Procedures vs. Dynamic SQL Transactions Validation XML Confidential 29
  • 30. Service Layer Guidelines Confidential 30
  • 31. Service Layer Guidelines Service interfaces. Services expose a service interface to which all inbound messages are sent. You can think of a service interface as a façade that exposes the business logic implemented in the application (typically, logic in the business layer) to potential consumers. Message types. When exchanging data across the service layer, data structures are wrapped by message structures that support different types of operations. The services layer will also usually include data types and contracts that define the data types used in messages. Confidential 31
  • 32. Service Layer Guidelines Design Considerations Design services to be application-scoped and not component-scoped Design services and data contracts for extensibility and without the assumption that you know who the client is. Design only for the service contract Separate service layer concerns from infrastructure concerns Compose entities from standard elements Design to assume the possibility of invalid requests. Ensure that the service can detect and manage repeated messages Ensure that the service can manage messages arriving out of order Confidential 32
  • 33. Service Layer Guidelines Specific Design Issues Authentication Authorization Communication Exception Management Messaging Channels Message Construction Message Endpoint Message Protection l Message Routing Message Transformation Service Interface Validation Confidential 33
  • 34. Application Archetypes Summary Mobile applications. Applications of this type can be developed as thin client or rich client applications. Rich client mobile applications can support disconnected or occasionally connected scenarios. Web or thin client applications support connected scenarios only. Device resources may prove to be a constraint when designing mobile applications Rich client applications. Applications of this type are usually developed as standalone applications with a graphical user interface that displays data using a range of controls. Rich client applications can be designed for disconnected and occasionally connected scenarios if they need to access remote data or functionality. Rich Internet applications Applications of this type can be developed to support multiple platforms and multiple browsers, displaying rich media or graphical content. Rich Internet applications run in a browser sandbox that restricts access to some features of the client. Confidential 34
  • 35. Application Archetypes Summary Service applications Services expose shared business functionality and allow clients to access them from a local or a remote system. Service operations are called using messages, based on XML schemas, passed over a transport channel. The goal of this type of application is to achieve loose coupling between the client and the server. Web applications. Applications of this type typically support connected scenarios and can support different browsers running on a range of operating systems and platforms. Confidential 35
  • 38. Web Application Archetype Confidential 38
  • 39. Designing Web Applications General Design Considerations Partition your application logically. Use abstraction to implement loose coupling between layers. Understand how components will communicate with each other Consider caching to minimize server round trips. Consider logging and instrumentation Consider authenticating users across trust boundaries Do not pass sensitive data in plaintext across the network Design your Web application to run using a least-privileged account Confidential 39
  • 40. Designing Web Applications Specific Design Issues Application Request Processing Authentication Authorization Caching Exception Management Logging and Instrumentation Navigation Page Layout Page Rendering Session Management Validation Confidential 40
  • 41. Designing Web Applications Other Considerations: Design Considerations for Layers Presentation Layer, Business Layer, Data Layer, Service Layer Testing and Testability Considerations Technology Considerations Deployment Considerations Non-distributed Deployment, Distributed Deployment, Load Balancing Confidential 41
  • 42. Rich Client Application Archetype Confidential 42
  • 43. Rich Client Application Archetype General Design Considerations Choose an appropriate technology based on application requirements. Separate presentation logic from interface implementation. Identify the presentation tasks and presentation flows. Design to provide a suitable and usable interface. Apply separation of concerns across all layers. Reuse common presentation logic. Loosely couple your client from any remote services it uses Avoid tight coupling to objects in other layers Reduce round trips when accessing remote layers Confidential 43
  • 44. Rich Client Application Archetype Specific Design Issues Business Layer Communication Composition Configuration Management Data Access Exception Management Maintainability Presentation Layer State Management Workflow Confidential 44
  • 45. Rich Client Application Archetype Other Considerations Security Considerations protecting sensitive data, user authentication and authorization, guarding against attack from malicious code and users, and auditing and logging events and user activity. Data Handling Considerations Caching Data, Data Concurrency, Data Binding Offline/Occasionally Connected Considerations Technology Considerations Deployment Considerations Stand-alone Deployment, Client/Server Deployment, N-Tier Deployment, Deployment Technologies Confidential 45
  • 46. Rich Internet Application Archetype Confidential 46
  • 47. Designing Rich Internet Applications General Design Considerations Choose a RIA based on audience, rich interface, and ease of deployment. Design to use a Web infrastructure utilizing services Design to take advantage of client processing power Design for execution within the browser sandbox Determine the complexity of your UI requirements Use scenarios to increase application performance or responsiveness. Design for scenarios where the plug-in is not installed Confidential 47
  • 48. Designing Rich Internet Applications Specific Design Issues Business Layer Caching Communication Composition Data Access Exception Management Logging Media and Graphics Mobile Portability Presentation State Management Validation Confidential 48
  • 49. Designing Rich Internet Applications Other Considerations Security Considerations Data Handling Considerations Read-only reference data, Transient data. Technology Considerations Versions and Target Platforms, Security Deployment Considerations Installation of the RIA Plug-In, Distributed Deployment, Load Balancing, Web Farm Considerations Confidential 49
  • 50. Mobile Application Archetype Confidential 50
  • 51. Designing Mobile Applications General Design Considerations Decide if you will build a rich client, a thin Web client, or rich Internet application (RIA). Determine the device types you will support. Consider occasionally connected and limited-bandwidth scenarios when appropriate. Design a UI appropriate for mobile devices, taking into account platform constraints. Design a layered architecture appropriate for mobile devices that improves reuse and maintainability. Consider device resource constraints such as battery life, memory size, and processor speed. Confidential 51
  • 52. Designing Mobile Applications Specific Design Issues Authentication and Authorization Caching Communication Configuration Management Data Access Device Specifics Exception Management Logging Porting Applications Power Management Synchronization Testing User Interface Validation Confidential 52
  • 53. Designing Mobile Applications Other considerations Technology Considerations Deployment Considerations Confidential 53
  • 55. Designing Service Applications General Design Considerations Consider using a layered approach to designing service applications and avoid tight coupling across layers. Design coarse-grained operations Design data contracts for extensibility and reuse. Design only for the service contract Design services to be autonomous Design to assume the possibility of invalid requests Design services based on policy and with explicit boundaries Separate service concerns from infrastructure operational concerns Use separate assemblies for major components in the service layer Avoid using data services to expose individual tables in a database Design workflow services to use interfaces supported by your workflow engine. Confidential 55
  • 56. Designing Service Applications Specific Design Issues Authentication Authorization Business Layer Communication Data Layer Exception Management Message Construction Message Endpoint Message Protection Message Transformation Message Exchange Patterns Representational State Transfer Service Layer SOAP Validation Confidential 56
  • 57. Other considerations Technology Considerations Deployment Considerations Confidential 57
  • 58. Thank you! - 2011 trietho@gmail.com 58