Architecture What? WEEK# 01 DR. Muhammad Ali Memon Associate Professor, University of Sindh
Building Architectures
Build a Place
What is Architecture? the action or process of building; construction. a plan for organizing space a systematic arrangement of information or ideas. the manner in which the components of a computer or computer system are organized and integrated.
The Architect
You need an architect first.
A software Architect
Structure Matters – Dijkstra 1968 Dijkstra, 1968 : „‟...Correct arrangement of the structure of software systems before simple programming...„‟ Layered Structure Programs are grouped into layers Programs in one layer can only communicate with programs in adjoining layers with easier development and maintenance Edsger Dijkstra 1930-2002
Evolution of software Problem Software problems have changed in nature (algorithmic to general purpose applications) and increased in complexity (to millions and millions lines of code) It has now become very hard/impossible to develop system without architecture
Structure in software
Structure concept in Software 1960s - Structured Programming Adopted into programming languages because it‟s a better way to think about programming 1970s - Structured Design Methodology/guidelines for dividing programs into subroutines. 1980s – Modular programming languages Modular (object-based) programming Grouping of sub-routines into modules with data. 1990s – Towards Software Architectures Object-Oriented Analysis/Design/Programming started being commonly used Software Architecture Design 2000s - Software Architectures Starting to be Common Practice Specialization of concepts
Large scale complex software systems… Large(distributed) systems. Many people working on the same problem Programming in the large Million of lines of code Overly complex Should be delivered on time and budget. Only the coding will not do. According to Brook: Adding more programmers will make a delayed project later.
Architecture Definitions
Definitions Basic artifact shown to the customers and made from the requirements. Breaking down of the system into components And describing the interrelations between the components A prototype of the system Identify the components of the system along with the interraction between them Its an abstraction of the system Earliest artifact
SOFTWARE ARCHITECTURE- Booch 1991 “The logical and physical structure of a system, forged by all the strategic and tactical decisions applied during development.” Architecture is the high level structure of a system.
SOFTWARE ARCHITECTURE- Perry and Wolf Perry and Wolf distinguish between processing elements, data elements, and connecting elements, and this taxonomy of architectural elements largely persists through most other definitions and approaches. SOFTWARE ARCHITECTURE- IEEE “Software architecture is the fundamental organization of a system, embodied in its components, their relationships to each other and their environment, and the principles governing its design and evolution.” SOFTWARE ARCHITECTURE – BASS, CLEMENTS, KAZMAN 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.
23 Pre-architecture life cycle requirements agreement quality development stakeholders (few)
24 Adding architecture, the easy way architecture detailed design implementation requirements agreement quality development stakeholders (few)
25 Architecture in the life cycle requirements architecture quality agreement stakeholders (many) development
Quality This can be compared with the construction of a sky scraper. Due to the complexity of such a building, we need to think about the qualities of the building upfront. For example, if the landlord requires the building to be earthquake resistant, the architect will think about solutions from seismic engineering and add structures to the building that can resist lateral forces. At this point he will not specify the materials or the supplier of those structures as those are construction details
Software Design
WHAT IS SOFTWARE DESIGN Software design is the process by which we create a specification of a software artifact, using a set of primitive components and subject to constraints. The process of defining the architecture, components, interfaces, and other characteristics of a system or component. DIFFERENCE Software architecture deals with high level concepts without regard to any implementation details. Software design on the other hand takes high level concepts and applies concrete details so that software can be implemented. Every architectural work is a kind of design, but the reverse is not true
It's about addressing those architecturally significant requirements (the "what") that will drive (and constrain) the "how" (the design).
SA Provides a design plan of a system Blueprint Implies purpose Is an abstraction that helps in managing the complexity of a system Software architects are limited by Lack of standardized ways to represent architecture Lack of analysis methods to predict whether an architecture will result in an implementation that meets the requirements
QUESTION What do you think would happen if same requirements were given to two different architects of different organizations?
ARCHITECTURE BUSINESS CYCLE (ABC) SA – result of technical, business, and social influences A SA also influences technical, business, and social environment That, subsequently, influence future SAs
Architecture affects following factors: Structure of the developing organization Goals of the developing organization Customer requirements for the next system Architect’s experience for subsequent systems Technical Environment
TERMINOLOGY 1. Architectural style/pattern: Defines element types and how they interact together with a set of constraints Sometimes defines a mapping of functionality to architectural elements An architectural style determines the vocabulary of components and connectors that can be used in instances of that style, together with a set of constraints on how they can be combined. These can include topological constraints on architectural descriptions (e.g., no cycles). Other constraints—say, having to do with execution semantics—might also be part of the style definition E.g. Client Server Architectural Pattern.
The following table lists the major areas of focus and the corresponding architectural styles.
2. Reference/domain specific architecture: Defines element types and how they interact They apply to a particular domain They define how the domain functionality is mapped to architectural(software) elements.
3. Product line architecture: A software product line is a set of software -intensive systems that share a common, managed set of features satisfying the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way. Applies to a set of products within a company Defines element types, how they interact, how the product functionality is mapped to them May also define some of the instances of the architectural Elements. E.g., error-reporting components would be common to many products of the product line