Software Architecture Notes
All Topics (20)
- 1.what is Software Architecture
- 2. Why Do We Need Software Architecture?
- 3. What Does Software Architecture Decide?
- 4. Types of Software Architecture
- 5. Software Development Methodology (SDM)
- 6.Why is SDM Needed?
- 7. Benefits of SDM(Software Development Methodology)
- 8. Types of Software Development Methodologies
- 9. Software Quality Models (SQM)
- 10. Software Architecture Evaluation
- 11. Software Components and Connectors (C&C)
- 12. Common Software Architecture Frameworks
- 13. Architecture Business Cycle (ABC)
- 14. What is an Architectural Pattern?
- 15. What Is a Reference Model?
- 16. Software Architecture Model
- 17. Structure Model
- 18. Framework Model
- 19. Dynamic Model
- 20. Process Model
6.Why is SDM Needed?
Software development is complex. Without a proper methodology, projects may face delays, errors, or higher costs.
Main Reasons
1 Organized Development
Provides a clear structure for each phase of development.
2 Time Management
Helps ensure that each stage is completed on schedule.
3 Team Coordination
Developers, testers, and designers follow the same workflow.
4 Improved Quality
Includes testing and review processes to maintain quality.
5 Cost Efficiency
Detecting errors early reduces development cost.
6 Customer Satisfaction
Ensures the software meets client requirements.
7. Benefits of SDM(Software Development Methodology)
-
Planned & Organized Development – Structured workflow.
-
Reduced Risk – Errors are detected early.
-
High Quality Output – Proper testing improves reliability.
-
Better Team Collaboration – Teams follow the same process.
-
Flexibility – Some models allow changes during development.
-
Customer Satisfaction – Software meets client expectations.
8. Types of Software Development Methodologies
1. Waterfall Model
The Waterfall Model is a sequential approach where each phase must be completed before the next begins.
Process
Requirements
β¬
Design
β¬
Coding
β¬
Testing
β¬
Deployment
β¬
Maintenance
Use Case
Projects where requirements are fixed and clearly defined.
Advantages
-
Simple and easy to understand
-
Clear documentation
2. Agile Methodology
Agile is an iterative and flexible development approach where software is developed in small increments called Sprints.
The Agile methodology was popularized by the Agile Alliance.
Process
Plan → Design → Develop → Test → Review → Repeat
Features
-
Continuous feedback
-
Quick updates
-
Frequent releases
Advantages
-
Faster delivery
-
Adaptable to changing requirements
3. Scrum Framework
Scrum is a framework used within Agile methodology to manage development work in short cycles called Sprints (1–4 weeks).
Scrum Cycle
Product Backlog
β¬
Sprint Planning
β¬
Sprint (1–4 Weeks)
β¬
Daily Scrum Meeting
β¬
Sprint Review
β¬
Sprint Retrospective
Benefits
-
Improves team communication
-
Faster problem resolution
4. V-Model (Verification and Validation Model)
The V-Model is an extension of the Waterfall Model where testing is planned parallel to development.
Structure
Requirements ↔ Acceptance Testing
System Design ↔ System Testing
Architecture Design ↔ Integration Testing
Coding ↔ Unit Testing
Advantages
-
Early testing
-
Higher product quality
5. Spiral Model
The Spiral Model focuses on risk analysis and iterative development.
Process
Planning
β¬
Risk Analysis
β¬
Development
β¬
Evaluation
β¬
Repeat
Use Case
Large and high-risk projects.
6. RAD (Rapid Application Development)
RAD focuses on rapid prototyping and quick development cycles.
Features
-
Fast development
-
Frequent user feedback
-
Reusable components
Best For
Projects where fast delivery is required.
7. DevOps
DevOps integrates software development and IT operations to enable continuous delivery and automation.
The term DevOps was introduced by Patrick Debois.
DevOps Cycle
Plan
β¬
Code
β¬
Build
β¬
Test
β¬
Release
β¬
Deploy
β¬
Monitor
β¬
Repeat
Benefits
-
Faster releases
-
Continuous monitoring
-
Automation of processes
9. Software Quality Models (SQM)
Software Quality Models (SQM) are structured frameworks used to evaluate and measure the quality of software products. They define a set of characteristics, sub-characteristics, and metrics that help ensure the software meets customer expectations, performs reliably, and remains maintainable and efficient.
In simple terms:
A software quality model provides a standard to determine how “good” a software product is based on measurable attributes.
Why Software Quality Models are Needed
Software development is complex, and poor-quality software can lead to:
- Frequent failures and bugs
- High maintenance costs
- Security vulnerabilities
- Reduced customer satisfaction
- Increased project delays
Importance of SQM
- Improves Reliability
Helps detect defects early and ensures stable performance. - Enhances Customer Satisfaction
Ensures software meets both functional and non-functional requirements. - Reduces Maintenance Cost
Minimizes errors after deployment. - Provides Measurable Evaluation Criteria
Enables objective assessment of software quality. - Guides Process Improvement
Identifies weak areas and improves development practices.
Key Software Quality Characteristics
Most software quality models evaluate the following attributes:
- Functionality: Accuracy and compliance with requirements
- Reliability: Consistent performance under specified conditions
- Usability: Ease of learning and using the system
- Efficiency: Optimal use of resources and fast execution
- Maintainability: Ease of modification and fixing issues
- Portability: Ability to run on different platforms
Types of Software Quality Models
1. McCall’s Quality Model (1977)
One of the earliest software quality models, consisting of 11 quality factors grouped into three categories:
- Product Operation (e.g., correctness, reliability, efficiency)
- Product Revision (e.g., maintainability, flexibility, testability)
- Product Transition (e.g., portability, reusability, interoperability)
Use:
Evaluates software during and after development.
Advantages:
- Clear hierarchical structure
- Easy to understand and apply
2. Boehm’s Quality Model (1978)
Focuses on high-level characteristics and their sub-characteristics.
Hierarchy Structure:
βββ Utility → Reliability, Efficiency, Usability
βββ Maintainability → Flexibility, Testability
βββ Portability → Adaptability, Installability
Use:
Emphasizes maintainability and adaptability in software systems.
Advantages:
- Suitable for large-scale systems
- Provides a structured approach to quality evaluation
3. ISO 9126 / ISO 25010 Quality Model
An international standard widely used in the software industry.
ISO 25010 Quality Characteristics:
- Functional Suitability
- Performance Efficiency
- Compatibility
- Usability
- Reliability
- Security
- Maintainability
- Portability
Use:
Applied in modern software development projects.
Advantages:
- Comprehensive coverage
- Includes both functional and non-functional requirements
- Strong focus on security
4. Dromey’s Quality Model
This model links software components directly to quality attributes.
Key Features:
- Focuses on quality at the module/component level
- Ensures each part contributes to overall software quality
- Helps identify defects early in development
Use:
Improves quality during the development phase.
Advantages:
- Supports targeted improvements
- Component-based evaluation
10. Software Architecture Evaluation
Software Architecture Evaluation is the process of assessing the architecture of a software system to ensure it meets both:
- Functional requirements (what the system does)
- Non-functional requirements (how the system performs, such as reliability, scalability, and security)
It analyzes the strengths, weaknesses, and design decisions to identify potential problems early in the development lifecycle.
In simple terms:
It is a systematic method to measure the effectiveness, efficiency, and quality of a software architecture before, during, or after development.
1. Importance of Software Architecture Evaluation
Software Architecture Evaluation ensures that the system is robust, scalable, maintainable, and high-performing.
Key Importance:
- Quality Assurance
Confirms that the architecture satisfies key quality attributes such as:- Performance
- Reliability
- Maintainability
- Scalability
- Security
- Risk Management
Detects technical and design risks early to avoid failures or costly redesign. - Decision Support
Helps stakeholders understand trade-offs and design decisions for better planning. - Cost and Time Savings
Early detection of issues reduces rework, saving time and development cost. - Future-Proofing
Ensures the system is flexible, extensible, and adaptable to future needs.
2. Key Aspects of Software Architecture Evaluation
Evaluation focuses on multiple important dimensions:
1. Quality Attributes (Non-Functional Requirements)
- Performance: Speed and response time
- Reliability: Continuous operation without failure
- Security: Protection against unauthorized access
- Maintainability: Ease of modification and debugging
- Scalability: Ability to handle increased load
2. Stakeholder Requirements
- Includes needs of:
- Developers
- Users
- Project managers
- Business stakeholders
- Ensures both functional and non-functional requirements are satisfied.
3. System Structure
- Analysis of:
- Components
- Modules
- Connectors
- Interactions and relationships
4. Risk and Trade-offs
- Identifies design compromises
- Evaluates how decisions affect system quality
3. Risk Management in Software Architecture Evaluation
Risk management is the process of identifying, analyzing, reducing, and monitoring risks in the architecture.
Types of Risks
1. Technical Risks
- Use of new or untested technology
- Failure to meet performance requirements
- Security vulnerabilities
2. Design Risks
- Poor modularity
- High coupling between components
- Difficult maintenance or scalability
3. Project Risks
- Development delays
- Budget overruns
- Changing or unclear requirements
Risk Management Process
- Identification
Detect possible weaknesses- Example: Single point of failure
- Analysis
Evaluate:- Severity
- Probability of occurrence
- Mitigation
Reduce risks using:- Better design
- Redundancy
- Alternative solutions
- Monitoring
Continuously track risks throughout development
4. Ensuring Quality in Architecture Evaluation
Ensuring quality means verifying that the architecture satisfies all requirements effectively.
Key Quality Attributes
- Performance – Fast response and efficient resource usage
- Reliability – Continuous and error-free operation
- Maintainability – Easy to update and debug
- Scalability – Handles growth in users or data
- Security – Protection from threats and attacks
- Usability – Easy and user-friendly interface
Process for Ensuring Quality
- Define Quality Requirements
Collect and document expectations from stakeholders - Evaluate Architecture
Compare system design with quality attributes - Scenario-Based Testing
Test using real-world and extreme conditions - Trade-off Analysis
Balance conflicting attributes- Example: High performance vs high security
5. Methods of Software Architecture Evaluation
1. ATAM (Architecture Tradeoff Analysis Method)
- Focuses on trade-offs between quality attributes
- Evaluates impact of design decisions
Use: Performance, security, maintainability analysis
2. SAAM (Software Architecture Analysis Method)
- Focuses on:
- Modularity
- Functional requirements
- Best for early-stage evaluation
3. CBAM (Cost-Benefit Analysis Method)
- Compares cost vs benefits of different designs
- Helps choose the most economical solution
4. Scenario-Based Evaluation
- Uses real-life scenarios to test architecture
- Evaluates:
- Flexibility
- Reliability
- Robustness
6. Typical Steps in Architecture Evaluation
- Identify stakeholders and gather requirements
- Analyze system structure (components and interactions)
- Identify quality attributes and risks
- Evaluate architecture using scenarios and benchmarks
- Document:
- Strengths
- Weaknesses
- Risks
- Provide recommendations for improvement or redesign