Software Architecture Notes

C
DSA
Software Engineering
Software Architecture
Operating System
Big Data
Data Mining and Warehousing
TOC
Ada
CPP
DBMS

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

  1. Improves Reliability
    Helps detect defects early and ensures stable performance.
  2. Enhances Customer Satisfaction
    Ensures software meets both functional and non-functional requirements.
  3. Reduces Maintenance Cost
    Minimizes errors after deployment.
  4. Provides Measurable Evaluation Criteria
    Enables objective assessment of software quality.
  5. 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:

 
Quality
β”œβ”€β”€ 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:

  1. Functional Suitability
  2. Performance Efficiency
  3. Compatibility
  4. Usability
  5. Reliability
  6. Security
  7. Maintainability
  8. 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:

  1. Quality Assurance
    Confirms that the architecture satisfies key quality attributes such as:
    • Performance
    • Reliability
    • Maintainability
    • Scalability
    • Security
  2. Risk Management
    Detects technical and design risks early to avoid failures or costly redesign.
  3. Decision Support
    Helps stakeholders understand trade-offs and design decisions for better planning.
  4. Cost and Time Savings
    Early detection of issues reduces rework, saving time and development cost.
  5. 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

  1. Identification
    Detect possible weaknesses
    • Example: Single point of failure
  2. Analysis
    Evaluate:
    • Severity
    • Probability of occurrence
  3. Mitigation
    Reduce risks using:
    • Better design
    • Redundancy
    • Alternative solutions
  4. 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

  1. Performance – Fast response and efficient resource usage
  2. Reliability – Continuous and error-free operation
  3. Maintainability – Easy to update and debug
  4. Scalability – Handles growth in users or data
  5. Security – Protection from threats and attacks
  6. Usability – Easy and user-friendly interface

Process for Ensuring Quality

  1. Define Quality Requirements
    Collect and document expectations from stakeholders
  2. Evaluate Architecture
    Compare system design with quality attributes
  3. Scenario-Based Testing
    Test using real-world and extreme conditions
  4. 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

  1. Identify stakeholders and gather requirements
  2. Analyze system structure (components and interactions)
  3. Identify quality attributes and risks
  4. Evaluate architecture using scenarios and benchmarks
  5. Document:
    • Strengths
    • Weaknesses
    • Risks
  6. Provide recommendations for improvement or redesign
Page 2 of 4