SlideShare a Scribd company logo
1 of 43
Introduction to Software Architecture
2
Lecture Objectives
 What is software architecture?
 What are popular architecture styles?
 Quality attributes of a system?
 Architecture Design Guidelines?
1.1 Overview
4
Overview
Goal of SW Design - is to build a model that meets all
customer requirements and leads to successful
implementation
 Software systems grow in
 Scale
 Complexity
 Distribution
 How to deal with complexity?
 Software engineering!
5
What is architectural design?
Any software, regardless of application domain, should have an
architectural design that guides its construction and development.
What is architectural design?
» It defines the relationship between major structural elements
» It also define the styles and design patterns used to achieve requirements.
» Also the constraints that affects the way architecture can be implemented.
6
What is architecture design?
Who is responsible for developing architecture design?
» Software architect and designer.
» They map the SW system requirements into architecture design.
» They apply various design strategies to divide and conquer the
complexities.
The architecture of a system is its 'skeleton'. It's the highest level of
abstraction of a system.
Software architecture is more about the design of the entire system, while
software design emphasizes on module/component/class level.
7
Why is SW architecture Design is important?
There are several reasons:
» Poor design
 May result in deficient product (does not meet system requirements)
 Is not adaptive to future requirement changes
 Not reusable
 Exhibits unpredictable behaviour or perform badly
» Good design!!
» reduces the risks associated with software production
» helps development team works together in an orderly fashion
» makes the system traceable for implementation and testing,
and leads to software products that have higher quality
attributes.
8
Software Development Life Cycle (SDLC)
9
Software Requirements Specification
10
Software Requirements Specification
 Serves as contract between
 Developer and Customer
 Specifies
 Functional requirements
 Non-functional requirements
 Speed
 Reliability
 Security
 Program size ...
 System constraints and pre-condition
11
Software Design Description (SDD)
 What Is Outcome Of Software Architecture Design?
 Software Design Description (SDD): an overall representation of
the software to be build.
 Describes high and low level design
 Components of the system
 Modules of each components
 Detailed information of each module
 Data attributes
 Operations
 Developer
 DB oriented application - data dictionary
 Tables, columns and definition of terms.
12
Software Design Description (SDD)
 A sample outline of SDD (IEEE 1016)
 Design overview, purpose and scope
 Decomposition description (module, data, and process)
 Dependency and connection
 Attributes
 User interfaces
 Detailed design
13
Design
 In summary, SDLC consists of
Specification Analysis
Design
Implementation
Testing, Maintenance
 We are interested in Design
14
Two Steps in Software Design
 Further split into two steps
 Architectural Design
 Detailed Design/Tactical design
 Architecture design is front strategy for the detailed
design
 Arch. Design: describe user accessible components and
the interconnections among them that are visible to
stakeholders.
 Detailed Design: specify the internal details of each
component and might introduce new invisible
components – to the stakeholder, into the design.
15
Example
 Architecture Decision:
 A priority queue for all customers
 Detailed Design Decision:
 The priority queue implemented using
 Array?
 Linked List?
 Double Linked List?
 ...
Motivation of Architecture Design
• Question: can we directly start with detailed design?
• Most likely NO! for large scaled systems
• Example: build a house, many styles available:
– Victorian, Colonial, Cap Cod, California Ranch
– Depending on the system spec., a style has to be chosen
16
1.2 Software architecture: Bridging
requirements and implementation
18
Introduction to Software Architecture
19
Introduction to Software Architecture
 Software Arch: very important in software development
 Highlights early design decisions
 Shows how system is structured
 Covers functional and non-functional requirements
 Blueprint guideline for development
20
Box-Line Diagram
21
Software Architect
 Who does the architectural design?
 System Analyst or Software Architect
 Jobs of Software Architect:
 System static partition and decomposition
 Establishing dynamic control between subsystems
 Considering and evaluating all alternative architectural styles
 Analysis of trade-off on quality attributes
22
Formal Definition of SW Architecture
 By IEEE 1471
 “the fundamental organization of a system embodied in its
components, their relationships to each other, and to the
environment, and the principle guiding its design and evolution”
1.3 Architectural Styles
24
Architecture Style
 What is architecture style?
 An architecture style (also known as an "architecture
pattern") abstracts the common properties of a family of
similar designs.
 It contains a set of rules, constraints, and patterns of how to
structure a system into a set of elements and connectors
 It governs runtime interaction of flow control and data transfer.
25
Architecture Style
 Key components are:
 Elements that perform functions required by a system
 Connectors that enable communication, coordination, and cooperation
among elements
 Constraints that define how elements are integrated to form the system
 Attributes that describe the advantages and disadvantages of the chosen
structure
26
Why Architecture Style?
 Saves cost and time on design!
 Think about house example
 Architecture style represents
 Layout topology of elements
 Once overall structure determined, rest are easy
27
Example
 Data Flow
 Batch sequence, Pipe & Filter, Process Control
 Data Centered
 Repository and Blackboard
 Object Oriented
 Hierarchy
 Layered, Virtual Machine Main/Subroutine
 Asynchronous Communication
 Event-Based, Buffered Messaging
 Interaction Oriented
 MVC, PAC
28
How to decide architecture style?
 Depends on how quality attributes are satisfied.
 Each architecture style has its advantages,
disadvantages, and potential risks. Choosing the right
style to satisfy required functions and quality
attributes is very important.
 Quality attributes are identified in the requirement
analysis process.
 Three categories
 Implementation attributes
 Runtime attributes
 Business attributes
1.4 Quality Attributes
30
Implementation Attributes
 Interoperability
 Universal accessibility and ability to exchange data among
internal components and the outside world
 Requires loose dependency of infrastructure
Implementation Attributes (cont..)
 Maintainability & Extensibility
 The ability to modify the system and conveniently extend it
 Testability
 Whether the system allows easy debugging
 Portability
 Can the system be deployed on different platforms
 Scalability
 Can system adapt to increase of requests
 Flexibility
 Ease of modification of system to cater to a different environment
32
Run-Time Attributes
 Availability
 If system is available 24/7
 Can be enhanced by replication
 Security
 The ability to defend against attacks
 Performance
 Time efficiency and resource efficiency
 Usability
 Completeness, correctness, compatibility and user friendliness
33
Business Attributes
 Time to market:
 The time it takes from requirement analysis to the product is
released
 Cost:
 Expense of the building, maintaining, and operating the system,
 Lifetime:
 The period of time that the product is alive before retirement.
34
Quality Attribute Trade-Off
 Many quality attributes conflicts with each other!
 Example:
 Space vs. Time:
 For example, to increase the time efficiency of a hash table or algorithm
means to decrease its space efficiency.
 Reliability vs. performance
 Java Program – array boundary check => performance down
 C/C++ has no such checking and fast
 Scalability vs. performance
 Sacrifice performance for consistency
1.5 Software architecture design
guidelines
36
Guideline 1
Think of What to Do before How to Do It.
 System requirements (functional and non-functional
requirements) must be nailed down before design starts
 Notice, different stakeholders have different opinions,
e.g.,.
 Investor: system release date, budget
 Developer: system performance, easy to maintain
 User: user friendly
 Clarify priority of all requirements before design
37
Guideline 2: Think about abstract design
before thinking about concrete design.
 Always starts with abstraction
 Use multiple level of abstraction if necessary
 Nail down the interface but leave room of change for
implementation
 Using an abstract architectural design of a system to
communicate with stakeholders helps avoid overhauling
the system design in later stages of the software
development cycle.
 Make all implementation decisions depend on the
abstract interfaces instead of concrete ones because those
are more stable
38
Guideline 3: Think of non-functional
requirements early in design process
 Speed, Reliability, Security have to be considered first
 Otherwise, very hard to change your design to reflect
these requirements
 The earlier, the better.
 It is not possible to find a design that meets all quality
attributes.
 Balance the quality attributes, and consider
heterogeneous architecture styles when necessary.
39
Guideline 4: Think of reusability and
extensibility!
 User requirements can change frequently
 Extensibility is very important
 Leave room for expansion
 we need to consider how to reuse existing software
components to increase the reliability and cost-
effectiveness of new systems.
 Always try hard to make software extensible in the
future.
40
Guideline 5: High Cohesion and Loose
Coupling
 Try to promote high cohesion within each element and
loose-coupling between elements.
 One component (module) should be assigned ONE
functionality only
 Design should be logically clear!
 The less correlation between modules, the better!
 Easy debugging and maintenance
 Also allows great extensibility
Guideline 6: Tolerate refinement of
design.
• Never expect to have software design completely
perfect within one step.
• We may need to use prototyping and iteration to
refine the software design.
Guideline 7: Avoid ambiguous design and
over-detailed design.
• Ambiguous design lacks constraints
• Over-detailed design restricts implementation.
43
Thanks!

More Related Content

What's hot

Software architecture design ppt
Software architecture design pptSoftware architecture design ppt
Software architecture design pptfarazimlak
 
Unit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleUnit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleDhivyaa C.R
 
EC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniquesEC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniquesRajalakshmiSermadurai
 
Domain specific Software Architecture
Domain specific Software Architecture Domain specific Software Architecture
Domain specific Software Architecture DIPEN SAINI
 
Formal approaches to software architecture design thesis presentation
Formal approaches to software architecture design   thesis presentationFormal approaches to software architecture design   thesis presentation
Formal approaches to software architecture design thesis presentationNacha Chondamrongkul
 
Ian Sommerville, Software Engineering, 9th Edition Ch1
Ian Sommerville,  Software Engineering, 9th Edition Ch1Ian Sommerville,  Software Engineering, 9th Edition Ch1
Ian Sommerville, Software Engineering, 9th Edition Ch1Mohammed Romi
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guideTriet Ho
 
Software design, software engineering
Software design, software engineeringSoftware design, software engineering
Software design, software engineeringRupesh Vaishnav
 
Ch 4 software engineering
Ch 4 software engineeringCh 4 software engineering
Ch 4 software engineeringMohammed Romi
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for BegginersChinh Ngo Nguyen
 
Ch7-Software Engineering 9
Ch7-Software Engineering 9Ch7-Software Engineering 9
Ch7-Software Engineering 9Ian Sommerville
 
An Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryAn Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryJohn Ortiz
 
CS8494 SOFTWARE ENGINEERING Unit-1
CS8494 SOFTWARE ENGINEERING Unit-1CS8494 SOFTWARE ENGINEERING Unit-1
CS8494 SOFTWARE ENGINEERING Unit-1SIMONTHOMAS S
 
Quality Attribute: Testability
Quality Attribute: TestabilityQuality Attribute: Testability
Quality Attribute: TestabilityPranay Singh
 

What's hot (20)

Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Software architecture design ppt
Software architecture design pptSoftware architecture design ppt
Software architecture design ppt
 
Unit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleUnit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycle
 
EC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniquesEC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniques
 
Domain specific Software Architecture
Domain specific Software Architecture Domain specific Software Architecture
Domain specific Software Architecture
 
Formal approaches to software architecture design thesis presentation
Formal approaches to software architecture design   thesis presentationFormal approaches to software architecture design   thesis presentation
Formal approaches to software architecture design thesis presentation
 
Ian Sommerville, Software Engineering, 9th Edition Ch1
Ian Sommerville,  Software Engineering, 9th Edition Ch1Ian Sommerville,  Software Engineering, 9th Edition Ch1
Ian Sommerville, Software Engineering, 9th Edition Ch1
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guide
 
Ch7
Ch7Ch7
Ch7
 
Software design, software engineering
Software design, software engineeringSoftware design, software engineering
Software design, software engineering
 
Ch 4 software engineering
Ch 4 software engineeringCh 4 software engineering
Ch 4 software engineering
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for Begginers
 
Ch7-Software Engineering 9
Ch7-Software Engineering 9Ch7-Software Engineering 9
Ch7-Software Engineering 9
 
An Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryAn Introduction to Software Architecture - Summary
An Introduction to Software Architecture - Summary
 
CS8494 SOFTWARE ENGINEERING Unit-1
CS8494 SOFTWARE ENGINEERING Unit-1CS8494 SOFTWARE ENGINEERING Unit-1
CS8494 SOFTWARE ENGINEERING Unit-1
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Quality Attribute: Testability
Quality Attribute: TestabilityQuality Attribute: Testability
Quality Attribute: Testability
 
Slides chapter 10
Slides chapter 10Slides chapter 10
Slides chapter 10
 
Unit i software design principles 9
Unit i software design principles 9Unit i software design principles 9
Unit i software design principles 9
 
Software design
Software designSoftware design
Software design
 

Similar to Chapter1

Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptxtaxegap762
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfAkilaGamage2
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models Satya P. Joshi
 
Software engineering
Software engineeringSoftware engineering
Software engineeringStella526835
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxKarthigaiSelviS3
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part iBisrat Girma
 
Slides 6 design of sw arch using add
Slides 6 design of sw arch using addSlides 6 design of sw arch using add
Slides 6 design of sw arch using addJavid iqbal hashmi
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfputtipavan23022023
 
Elementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptxElementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptxethiouniverse
 
SDA 01.pptx
SDA 01.pptxSDA 01.pptx
SDA 01.pptxJuttG6
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notesSudarshan Dhondaley
 
Function Oriented and Object Oriented Design,Modularization techniques
Function Oriented and Object Oriented Design,Modularization techniquesFunction Oriented and Object Oriented Design,Modularization techniques
Function Oriented and Object Oriented Design,Modularization techniquesnimmik4u
 
Software System Engineering - Chapter 15
Software System Engineering - Chapter 15Software System Engineering - Chapter 15
Software System Engineering - Chapter 15Fadhil Ismail
 

Similar to Chapter1 (20)

Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptx
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdf
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models
 
SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Chapter 08
Chapter 08Chapter 08
Chapter 08
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
Slides 6 design of sw arch using add
Slides 6 design of sw arch using addSlides 6 design of sw arch using add
Slides 6 design of sw arch using add
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
 
DESIGN CONCEPTS
DESIGN CONCEPTSDESIGN CONCEPTS
DESIGN CONCEPTS
 
Elementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptxElementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptx
 
SDA 01.pptx
SDA 01.pptxSDA 01.pptx
SDA 01.pptx
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notes
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 
Software design
Software designSoftware design
Software design
 
Function Oriented and Object Oriented Design,Modularization techniques
Function Oriented and Object Oriented Design,Modularization techniquesFunction Oriented and Object Oriented Design,Modularization techniques
Function Oriented and Object Oriented Design,Modularization techniques
 
Software engg unit 3
Software engg unit 3 Software engg unit 3
Software engg unit 3
 
Software System Engineering - Chapter 15
Software System Engineering - Chapter 15Software System Engineering - Chapter 15
Software System Engineering - Chapter 15
 
Architectural design of software
Architectural  design of softwareArchitectural  design of software
Architectural design of software
 

Recently uploaded

Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 

Recently uploaded (20)

Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 

Chapter1

  • 2. 2 Lecture Objectives  What is software architecture?  What are popular architecture styles?  Quality attributes of a system?  Architecture Design Guidelines?
  • 4. 4 Overview Goal of SW Design - is to build a model that meets all customer requirements and leads to successful implementation  Software systems grow in  Scale  Complexity  Distribution  How to deal with complexity?  Software engineering!
  • 5. 5 What is architectural design? Any software, regardless of application domain, should have an architectural design that guides its construction and development. What is architectural design? » It defines the relationship between major structural elements » It also define the styles and design patterns used to achieve requirements. » Also the constraints that affects the way architecture can be implemented.
  • 6. 6 What is architecture design? Who is responsible for developing architecture design? » Software architect and designer. » They map the SW system requirements into architecture design. » They apply various design strategies to divide and conquer the complexities. The architecture of a system is its 'skeleton'. It's the highest level of abstraction of a system. Software architecture is more about the design of the entire system, while software design emphasizes on module/component/class level.
  • 7. 7 Why is SW architecture Design is important? There are several reasons: » Poor design  May result in deficient product (does not meet system requirements)  Is not adaptive to future requirement changes  Not reusable  Exhibits unpredictable behaviour or perform badly » Good design!! » reduces the risks associated with software production » helps development team works together in an orderly fashion » makes the system traceable for implementation and testing, and leads to software products that have higher quality attributes.
  • 10. 10 Software Requirements Specification  Serves as contract between  Developer and Customer  Specifies  Functional requirements  Non-functional requirements  Speed  Reliability  Security  Program size ...  System constraints and pre-condition
  • 11. 11 Software Design Description (SDD)  What Is Outcome Of Software Architecture Design?  Software Design Description (SDD): an overall representation of the software to be build.  Describes high and low level design  Components of the system  Modules of each components  Detailed information of each module  Data attributes  Operations  Developer  DB oriented application - data dictionary  Tables, columns and definition of terms.
  • 12. 12 Software Design Description (SDD)  A sample outline of SDD (IEEE 1016)  Design overview, purpose and scope  Decomposition description (module, data, and process)  Dependency and connection  Attributes  User interfaces  Detailed design
  • 13. 13 Design  In summary, SDLC consists of Specification Analysis Design Implementation Testing, Maintenance  We are interested in Design
  • 14. 14 Two Steps in Software Design  Further split into two steps  Architectural Design  Detailed Design/Tactical design  Architecture design is front strategy for the detailed design  Arch. Design: describe user accessible components and the interconnections among them that are visible to stakeholders.  Detailed Design: specify the internal details of each component and might introduce new invisible components – to the stakeholder, into the design.
  • 15. 15 Example  Architecture Decision:  A priority queue for all customers  Detailed Design Decision:  The priority queue implemented using  Array?  Linked List?  Double Linked List?  ...
  • 16. Motivation of Architecture Design • Question: can we directly start with detailed design? • Most likely NO! for large scaled systems • Example: build a house, many styles available: – Victorian, Colonial, Cap Cod, California Ranch – Depending on the system spec., a style has to be chosen 16
  • 17. 1.2 Software architecture: Bridging requirements and implementation
  • 19. 19 Introduction to Software Architecture  Software Arch: very important in software development  Highlights early design decisions  Shows how system is structured  Covers functional and non-functional requirements  Blueprint guideline for development
  • 21. 21 Software Architect  Who does the architectural design?  System Analyst or Software Architect  Jobs of Software Architect:  System static partition and decomposition  Establishing dynamic control between subsystems  Considering and evaluating all alternative architectural styles  Analysis of trade-off on quality attributes
  • 22. 22 Formal Definition of SW Architecture  By IEEE 1471  “the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principle guiding its design and evolution”
  • 24. 24 Architecture Style  What is architecture style?  An architecture style (also known as an "architecture pattern") abstracts the common properties of a family of similar designs.  It contains a set of rules, constraints, and patterns of how to structure a system into a set of elements and connectors  It governs runtime interaction of flow control and data transfer.
  • 25. 25 Architecture Style  Key components are:  Elements that perform functions required by a system  Connectors that enable communication, coordination, and cooperation among elements  Constraints that define how elements are integrated to form the system  Attributes that describe the advantages and disadvantages of the chosen structure
  • 26. 26 Why Architecture Style?  Saves cost and time on design!  Think about house example  Architecture style represents  Layout topology of elements  Once overall structure determined, rest are easy
  • 27. 27 Example  Data Flow  Batch sequence, Pipe & Filter, Process Control  Data Centered  Repository and Blackboard  Object Oriented  Hierarchy  Layered, Virtual Machine Main/Subroutine  Asynchronous Communication  Event-Based, Buffered Messaging  Interaction Oriented  MVC, PAC
  • 28. 28 How to decide architecture style?  Depends on how quality attributes are satisfied.  Each architecture style has its advantages, disadvantages, and potential risks. Choosing the right style to satisfy required functions and quality attributes is very important.  Quality attributes are identified in the requirement analysis process.  Three categories  Implementation attributes  Runtime attributes  Business attributes
  • 30. 30 Implementation Attributes  Interoperability  Universal accessibility and ability to exchange data among internal components and the outside world  Requires loose dependency of infrastructure
  • 31. Implementation Attributes (cont..)  Maintainability & Extensibility  The ability to modify the system and conveniently extend it  Testability  Whether the system allows easy debugging  Portability  Can the system be deployed on different platforms  Scalability  Can system adapt to increase of requests  Flexibility  Ease of modification of system to cater to a different environment
  • 32. 32 Run-Time Attributes  Availability  If system is available 24/7  Can be enhanced by replication  Security  The ability to defend against attacks  Performance  Time efficiency and resource efficiency  Usability  Completeness, correctness, compatibility and user friendliness
  • 33. 33 Business Attributes  Time to market:  The time it takes from requirement analysis to the product is released  Cost:  Expense of the building, maintaining, and operating the system,  Lifetime:  The period of time that the product is alive before retirement.
  • 34. 34 Quality Attribute Trade-Off  Many quality attributes conflicts with each other!  Example:  Space vs. Time:  For example, to increase the time efficiency of a hash table or algorithm means to decrease its space efficiency.  Reliability vs. performance  Java Program – array boundary check => performance down  C/C++ has no such checking and fast  Scalability vs. performance  Sacrifice performance for consistency
  • 35. 1.5 Software architecture design guidelines
  • 36. 36 Guideline 1 Think of What to Do before How to Do It.  System requirements (functional and non-functional requirements) must be nailed down before design starts  Notice, different stakeholders have different opinions, e.g.,.  Investor: system release date, budget  Developer: system performance, easy to maintain  User: user friendly  Clarify priority of all requirements before design
  • 37. 37 Guideline 2: Think about abstract design before thinking about concrete design.  Always starts with abstraction  Use multiple level of abstraction if necessary  Nail down the interface but leave room of change for implementation  Using an abstract architectural design of a system to communicate with stakeholders helps avoid overhauling the system design in later stages of the software development cycle.  Make all implementation decisions depend on the abstract interfaces instead of concrete ones because those are more stable
  • 38. 38 Guideline 3: Think of non-functional requirements early in design process  Speed, Reliability, Security have to be considered first  Otherwise, very hard to change your design to reflect these requirements  The earlier, the better.  It is not possible to find a design that meets all quality attributes.  Balance the quality attributes, and consider heterogeneous architecture styles when necessary.
  • 39. 39 Guideline 4: Think of reusability and extensibility!  User requirements can change frequently  Extensibility is very important  Leave room for expansion  we need to consider how to reuse existing software components to increase the reliability and cost- effectiveness of new systems.  Always try hard to make software extensible in the future.
  • 40. 40 Guideline 5: High Cohesion and Loose Coupling  Try to promote high cohesion within each element and loose-coupling between elements.  One component (module) should be assigned ONE functionality only  Design should be logically clear!  The less correlation between modules, the better!  Easy debugging and maintenance  Also allows great extensibility
  • 41. Guideline 6: Tolerate refinement of design. • Never expect to have software design completely perfect within one step. • We may need to use prototyping and iteration to refine the software design.
  • 42. Guideline 7: Avoid ambiguous design and over-detailed design. • Ambiguous design lacks constraints • Over-detailed design restricts implementation.

Editor's Notes

  1. Architecture Design vs Detail Design
  2. 1. Wilki: Interoperability is a property referring to the ability of diverse systems and organizations to work together (inter-operate). Tính tương hợp: khả năng các hệ thống khác nhau có thể trao đổi thông tin và sử dụng các thông tin trao đổi đó. Việc thiếu tính tương hợp ngụ ý rằng sản phẩm và các sản phẩm được mô tả không được thiết kế với sự tiêu chuẩn hoá ngay từ đầu. Đối với phần mềm, khái niệm tính tương hợp được sử dụng để mô tả khả năng các chương trình khác nhau trao đổi dữ liệu thông qua một tập các thủ tục nghiệp vụ chung, và để đọc và viết cùng các định dạng tệp và sử dụng cùng các giao thức.
  3. Overhauling: đại tu
  4. Tolerate: tha thu, chap nhan