Software Architecture Abimbola Makanjuola SWE 6623/001
Topics • What is Software Architecture? • IEEE Recommended Practice • Patterns and Styles of architecture • Types of architecture
What is Software Architecture? Formal Definition(IEEE-1471-2000) “Software architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.”
What is Software Architecture? More Definitions 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 between them. "Externally visible” properties refers to those assumptions other elements can make of an element, such as its provided services, performance characteristics, fault handling, shared resource usage, and so on.
What is IEEE 1471-2000 Developed by IEEE Society. Article 1471-2000 is the “Recommended Practice for Architectural Description of Software-Intensive Systems” It is only a recommended practice. Organizations should decide how to implement these standards or whether to implement them at all.
Styles and Patterns(Shaw and Garlan) • Pipes and Filters - Input -> Output. - Filters are applied as necessary. • Object Oriented - Components built around abstract data types • Implicit Invocation - Even driven, heavy use of event handlers
Styles and Patterns(Shaw and Garlan) • Layering - Hierarchial layering. - Outside layer acts as a client. - Inside layer provides service. • Repositories - Traditional Database: Transactional control - Blackboard: Data store control • Interpreters - Converting pseudo code into actual code.
Styles and Patterns • Process Control - Maintain specified process outputs at set point.
References • Software Engineering Institue, Carnegie Mellon http://www.sei.cmu.edu/architecture • Wikipedia http://en.wikipedia.org/wiki/Software_architecture • Institute for Software Research http://www.isr.uci.edu/architecture/index.html • Worldwide Institute of Software Architects http://www.wwisa.org/wwisamain/phil.htm • Software Engineering, Theory and Practice, Pfleeger and Atlee