SOFTWARE ARCHITECTURE AND DESIGN TAYYABA SANA Lecture#1
Learning Goals Learn key concepts of software design and architecture . Experiencing the software design and architecture design process. Providing insight in best practices and difficulties in software architecture design.
Learning outcomes Rationale for software design Software analysis and design methods Software design models Design principles OO design Design patterns
Learning Outcomes Rationale for software architecture Modeling Software architecture(ADLs). Software architectural views Software architectural documentation Software architecture design method Synthesizing Software architecture Software architecture patterns Evaluation of software architecture
Learning outcomes Modeling method Pattern Evaluation
Project(2-3 member group) Method Deliverables Select Problem domain Proposal Problem analysis and domain analysis RS and FS Architectural view modeling Architectural design Software design models Detailed design Applying architectural /design patterns improved design Evaluating software architectures presentation
Rationale for software architecture Marcus Vitruvius polio Author of De Architectura(ten books of architecture) Structure must exhibit three properties strong Usable beautiful
Tools Building a large palace vs building a large software Does any comparison exist?
To build a palace you need Architectural Design Architecture realization Building Architecture
To build a software System Data structures Programmers But can not build without design because of Large Systems(Distributed) Many people work on same problem Complex Millions of lines of codes Budget and time issues etc.
To build a Software you need Architectural Design Architecture realization Building Architecture
SDLC Requirement phase Analysis Design Implementation Testing Where is Architecture?
SDLC Requirement phase what customer Wants? Architecture Design High level design Analysis What is domain? Design How? (detailed) Implementation Do Testing Test Where is Architecture?
Rationale for software Architecture Abstraction specification Stakeholders communication Coping with evolution Guides software development process Organization of the development project Large scale reuse
Abstraction specifications Abstraction means to View only relevant information Architecture represents high level abstract specification helps to cope with complexity Improves understanding of software system Examples?
Stakeholders Communication Stake holders of a system End users Managers Programmers Architects etc. Architecture is common medium of communication between different stake holders Improves understanding of system between different stakeholders
Coping with evolution Helps dealing with changes and evolution Changes will be limited to abstraction boundaries Balanced between fixed and adaptable parts of the system
Guide for software development process Architecture is explicit Focuses on architectural components Analyze and design based on architectural components
Organization of the development project The architecture influences the organizational structure for development/maintenance efforts Examples include Team divisions Budgeting, planning Work breakdown structures Documentation organization Basis for integration, testing, deployment, maintenance
Large scale reuse Software architecture is abstract specification Represents set of systems Can be reused for systems exhibiting similar structure and requirements Can produce software product lines
Dicussions? Architecture is just paper Architecture Vs. Design Architecture Vs. infrastructure Architecture Vs. Technology Architecture Vs. Structure Architecture -View Architecture Vs. Art
Architecture is just paper… Every System has Architecture ,either Visible or not Architecture eventually resides in executable code A systems' architecture may be visualized in models, which can be executable
Architecture Vs. Design All architecture is design but not vise versa Design Detailed Design High level design
Architecture vs infrastructure Infrastructure is important part of architecture Infrastructure could be a view on architecture Architecture is more than infrastructure
Architecture Vs. Technology Architecture is more than list of products Architecture implementation is shaped by technology Architecture is not directly bound to technology
Architecture Vs. Structure Architecture includes structure but not every structure is architecture Architecture is abstraction of underlying structure Architecture is more than structures.
Architecture-views Architectural is flat only in trivial systems Multiple stakeholder multiple concerns Multiple architectural views Complex systems usually have more than one architectural views
Architecture Vs. Art Complexity is maximum in today’s systems Creative part is minimal in these systems Architecture design is explicit rational activity
Software Architecture In Software Architecture in Practice (2nd edition), Bass, Clements, and Kazman define architecture as follows: “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. Architecture is concerned with the public side of interfaces; private details of elements—details having to do solely with internal implementation—are not architectural.”