Principles of software architecture

13
© Quovantis Technologies Pvt. Ltd. Principles of Software Architecture

description

This presentation describes all the attributes one needs to consider before architecting and designing a solution. It goes over all the perspectives an architect has to take like Reliability, Flexibility, Maintainability etc. of a solution before putting the functional architecture in place.

Transcript of Principles of software architecture

Page 1: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Principles of Software Architecture

Page 2: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

What is Architecture? The software

architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.

2

Page 3: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Perspectives

Solution Architecture

Business/

Trends

IT Needs

Requirements

3

Page 4: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Solution Architecture Strategy

Understand

Requirements

Suggest Technology Stack

Create Application Architectur

e

Create Developm

ent Guidelines

Develop &

Stabilize

4

Page 5: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Architectural Attributes

Maintainability

Performance

Scalability

Reliability

Security

Flexibility

5

Page 6: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Maintainability

ModularizationSingle Responsibility PrincipleOpen-Closed PrincipleDependency Inversion Principle

6

“The aptitude of a system to undergo repair and evolution.”

Page 7: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Performance

Caching – W3Asynchronous BehaviorCoarse Grained InterfacesData PartitioningData Structure and Algorithm DesignMinimize ReflectionEfficient Resource Management

7

“The responsiveness of the system”

Page 8: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Scalability

LayeringLoose CouplingStateless DesignData PartitioningOut of Process Caching/Replicated Cache

8

“The ability to maintain performance while system demand increases”

Page 9: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Reliability

ClusteringRobustnessServer MonitoringGeographical Monitoring

9

“The ability of the system to keep operating over time”

Page 10: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Security

10

Secure CommunicationsAuthenticationAuthorizationInput ValidationAuditingThreat Modeling

STRIDEDREAD

“The system’s ability to resist unauthorized attempts at usage”

Page 11: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Flexibility

LayeringLoose CouplingSingle Responsibility PrincipleOpen-Closed PrincipleCode To InterfaceInterface Segregation Principle

11

“The ease with which a system can be modified for use in applications or environments other than those for which it was specifically designed”

Page 12: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Trade-Offs

12

Page 13: Principles of software architecture

© Quovantis Technologies Pvt. Ltd.

Thank you!

Presented By

Tarun Kohli

http://www.quovantis.comhttp://blogs.quovantis.com