Date post: | 28-Nov-2014 |
Category: |
Technology |
Upload: | prasad-chitta |
View: | 1,530 times |
Download: | 0 times |
Software Architecture Simplified
By Prasad Chitta
Techno Functional Consultant
Agenda
Section1 - Foundation
Section2 - Styles
Section3 - Standards
Software Architecture Foundation
• What is “software architecture”– What is Software?– What is Architecture?
• Why “Software Architecture” > software + architecture?
• How “Software Architecture” contrasts and compares with “Building Architecture”
Software, Architecture
• Software = that acquires, processes or presents “data” – Data = observed fact – Appears as system, application, component, platform,
module etc., • Architecture = key decisions related to building
something NEW– Vitruvius defines three principles - firmitas, utilitas,
venustas (durability, utility, beauty)– Chiefly describes “structure of components” and their
“inter-relationships”
Software Architecture defined• Architecture is the fundamental organization of a system embodied in its
components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. [IEEE 1471]– A system is a collection of components organized to accomplish a specific function
or set of functions. The term system encompasses individual applications, systems in the traditional sense, subsystems, systems of systems, product lines, product families, whole enterprises, and other aggregations of interest. A system exists to fulfill one or more missions in its environment. [IEEE 1471] • A mission is a use or operation for which a system is intended by one or more stakeholders
to meet some set of objectives. [IEEE 1471]– A stakeholder is an individual, team, or organization (or classes thereof) with interests in, or concerns
relative to, a system. [IEEE 1471]
– The environment, or context, determines the setting and circumstances of developmental, operational, political, and other influences upon that system. [IEEE 1471]
Software vs. BuildingsSoftware Architecture Building Architecture
Even after realization software is still invisible!
After realization building is visible
Durability means capability to adopt the change
Durability means capability to withstand the change
Software is dynamic and involves behavior Buildings are static (no behavior!)
Aesthetics of software architecture appear in non functional attributes of the software
Aesthetics of a building as well are non-functional
Goal is to achieve the purpose / function of the software in most elegant manner
Same here…
Multiple viewpoints from different stakeholders
Same here…
Viewpoints
Software
Application (modules)
Business process (logical /
functional)
Information flow (data)
Deployment (physical)
A “Software Architecture” describes static and dynamic aspects of a system from multiple view points for a common understanding between all the stakeholders involved.
Agenda
Section1 - Foundation
Section2 - Styles
Section3 - Standards
Architectural Styles – a list• Software is all about “data” and its
“processing”• Data flow Styles include
– Batch Sequential– Pipes and filters
• Data Centered Styles– Repository– Blackboard
• Virtual Machine– Interpreter– Rule based
• Call & Return– Main & Sub program– Object oriented– Layered
• Independent Components– Event Driven– Communicating processes– Messaging Systems
• Publish Subscribe style– Peer to peer
– Service oriented– Shared nothing – Etc.,
• Combining these basic styles, heterogeneous and hierarchical architectural styles can be derived
Scenarios for Creating Architecture
• Descriptive Architecture– “As is”– Most of the times, a system exists, but the
architecture is not available in a usable format. • Prescriptive Architecture– “To be”– A reference model is taken and style applied to
create a reference architecture, then a software architecture and a system architecture are derived from it.
But, Why?
• Non functional Properties visible at runtime
Performance
• Overall System security and compliance
Security
• Other properties like portability, flexibility, testability etc.,
Portability
Creating an architecture considers the “quality attributes” beyond functionality and usability. For the defined properties, different styles provide proven and predictable results.
Good Architecture
• Focus on significant decisions • Balances the conflicting stakeholder needs• Optimizes available resources • Considers scenarios from multiple view points
• And most importantly – evolves with the environment!
Agenda
Section1 - Foundation
Section2 - Styles
Section3 - Standards
Standards, Frameworks, Methodologies, …
• Now we know, Software Architects produce “models” from multiple viewpoints of a software considering various functional and non-functional properties of the system.
• They use some well known styles, patterns which have proven solutions for the common problems within the domain of software solutions
• The overall process adds value to either building a new software or modifying an existing software within an enterprise.
• That means, multiple stakeholders need to understand the
architecture consistently across the globe in larger organizations / enterprise.
List of Standards
• ISO 1471• TOGAF• DoDAF• Etc.,
• Standards are good they give consistency of notation • Standards can be “open” or “closed i.e, proprietary” • Standards sometimes hinder the “creativity”
Framework, methodology
• A framework provides skeletal structure for developing, documenting and visualizing the architecture like templates etc.,
• Architecture development methodologies give directives to build the architectures or review the architectures by providing the checklists etc.,
Agenda
Section1 - Foundation
Section2 - Styles
Section3 - Standards
Human Aspects
• Practicing software architecture is just not a science or engineering! It is an ART as well.
• Soft skills like interpersonal skills are very important for an Architect
• Software Architecture influences and influenced by the organization structure
• Sometimes it becomes political as well….
Case Studies
• Developing an elastic enterprise architecture for a green field pensions provider on a pay per policy model
• As is and To be architecture for a de-merger of metering business from a gas utility organization
Thank YouReach Me on: http://www.linkedin.com/in/prasadchittaBlog: http://technofunctionalconsulting.blogspot.com
Software Architecture is the art and science of realizing optimal information processing within the given context.
It is a challenging career option….