Software Durability

Book description

Software evolution is a time-consuming and costly process due to its complex architecture. Software designers need to produce software that is effective as well as durable. Durability and effectiveness of software are the foremost priorities and challenges for developers.

This book comprises real-life case studies of durability issues and their solutions that bring to light loopholes and show how to fix them, to enhance durability. Existing literature on software durability tells us that the first step is to recognise the problem. It gives information about durability, risk, estimation, knowledge, and governance based on five main characteristics: dependability, trustworthiness, usability, security, and human trust. The book serves as a complete package to get acquainted with assurance and risk management from a software durability perspective. It enhances our understanding of the concept of durability, its multi-dimensional approach, threats and their types, risk, mitigation techniques, and suggestive measures.

The book reviews the emerging trends in the software development process in the context of durability concepts such as automated code reviews, coding standards, and software durability standards and their testing, cost management solutions, low-code or no-code solutions, and durability assurance.

Table of contents

  1. Cover Page
  2. Title Page
  3. Copyright Page
  4. Dedication
  5. Preface
  6. Acknowledgments
  7. Contents
  8. Key Features of the Book
  9. 1. Software Durability Concepts
    1. 1.1 Objectives
    2. 1.2 Durability: The Need for a New Paradigm
      1. 1.2.1 Emergence of Software Durability
      2. 1.2.2 Pertinent Gaps
      3. 1.2.3 Formulation of the Issue
    3. 1.3 Software Perspective
      1. 1.3.1 Software Components
      2. 1.3.2 Software Characteristics
      3. 1.3.3 Software Types
      4. 1.3.4 Software Myths
    4. 1.4 Software Durability
      1. 1.4.1 Definition
      2. 1.4.2 Durability Factors
      3. 1.4.3 Durability Planning
    5. 1.5 Durability Evaluation
    6. 1.6 Models of Durable Software
      1. Celia Chen, 2017 [1]
      2. Kelty C., Erickson S., 2015 [2]
      3. Nathan Ensmenger, 2014 [3]
      4. J. J., Cusick, 2013 [4]
      5. E. V. Bartlett, 2013 [5]
      6. Ernie Hayden et al., 2014 [6]
      7. Van Der Linden, 2010 [7]
      8. Malik Hneif, 2011 [8]
      9. Basil Vandegriend, 2006 [9]
      10. Robert C. Feenstra et al., 2009 [10]
      11. Ruth Thomas, 1994 [11]
    7. 1.7 Experts' View
    8. 1.8 Conclusion
    9. Points to Remember
    10. Review Questions
      1. Objective Type Questions
    11. References
    12. Useful Links
  10. 2. Assuring Software Durability
    1. 2.1 Objectives
    2. 2.2 Five Touch Points for Software Durability
      1. 2.2.1 Software Dependability
      2. 2.2.2 Software Trustworthiness
      3. 2.2.3 Software Usability
      4. 2.2.4 Software Security
      5. 2.2.5 Human Trust
    3. 2.3 Quality Assurance: Durability Perspective
      1. 2.3.1 Software Quality-Durability Assurance
      2. 2.3.2 Major Assurance Activities
      3. 2.3.3 Benefits
      4. 2.3.4 Disadvantage
    4. 2.4 Durability Assurance Framework
      1. 2.4.1 The Framework
      2. 2.4.2 Premise
      3. 2.4.3 Generic Guidelines
      4. 2.4.4 Framework Development
    5. 2.5 Risk Management Activities in the Early Development of Durable Software Design
      1. 2.5.1 Design Planning
      2. 2.5.2 Design Inputs
      3. 2.5.3 Design Outputs
      4. 2.5.4 Design Verification
      5. 2.5.5 Design Validation
      6. 2.5.6 Design Finalization and Packaging
      7. 2.5.7 Design Transfer
      8. 2.5.8 Design Review
    6. 2.6 Importance of the Frameworks
    7. 2.7 Conclusion
    8. Points to Remember
    9. Review Questions
      1. Objective Type Questions
      2. Short Answer Type Questions
      3. Descriptive Questions
    10. References
    11. Useful Links
  11. 3. Integrating Dependability with Software Durability
    1. 3.1 Objectives
    2. 3.2 Fundamental Principles
      1. 3.2.1 The Evolution of Dependability Concept
      2. 3.2.2 Dependability Features
      3. 3.2.3 Dependability and Durability Characteristics
      4. 3.2.4 Systems, Software, Dependability, and Durability
    3. 3.3 Dependability Analysis into Durability Concept
      1. 3.3.1 Anticipating Faults
      2. 3.3.2 Generalizing the Notion of Hazard
      3. 3.3.3 Fault Tree Analysis
      4. 3.3.4 Failure Modes, Effects, and Criticality Analysis
      5. 3.3.5 Hazard and Operability Analysis
    4. 3.4 The Beginnings of Durability and Dependability Integration
      1. 3.4.1 Faults and Durable Software Cycle
      2. 3.4.2 Formal Techniques
      3. 3.4.3 Durability-Dependability Unified Model
      4. 3.4.4 Verification by Model Checking
      5. 3.4.5 Correctness by Construction
      6. 3.4.6 Managing Fault Avoidance and Elimination
      7. 3.4.7 Misconceptions
      8. 3.4.8 Prescriptive Standards
    5. 3.5 Conclusion
    6. Points to Remember
    7. Review Questions
      1. Objective Type Questions
      2. Short Answer Type Questions
      3. Descriptive Questions
    8. References
    9. Useful Links
  12. 4. Integrating Trustworthiness with Software Durability
    1. 4.1 Objectives
    2. 4.2 Fundamental Principles
      1. 4.2.1 The Evolution of Trustworthiness Concepts
      2. 4.2.2 Trustworthiness and Durability Characteristics
      3. 4.2.3 Systems, Software, Trustworthiness, and Durability
    3. 4.3 Designing for Trustworthy Software: Durability Perspective
      1. 4.3.1 Trustworthy Software
      2. 4.3.2 Extended Trustworthy Computing Initiative
      3. 4.3.3 Robust Software in Durability Context
    4. 4.4 Tools and Techniques of Durable Design for Trustworthy Software
      1. 4.4.1 The Eight Basic (B8) Tools
      2. 4.4.2 Financial Perspective
    5. 4.5 Conclusion
      1. Points to Remember
      2. Review Questions
        1. Objective Type Questions
        2. Short Answer Type Questions
        3. Descriptive Questions
    6. References
    7. Useful Links
  13. 5. Integrating Usability with Software Durability
    1. 5.1 Objectives
    2. 5.2 Fundamental Principles
      1. 5.2.1 The Evolution of Usability Concept
      2. 5.2.2 Usability Analysis into Durability Concept
      3. 5.2.3 Durability and Usability Characteristics
      4. 5.2.4 Systems, Software, Usability and Durability
    3. 5.3 Usability Evaluation: Durability Perspective
      1. 5.3.1 User-Based Evaluations
      2. 5.3.2 Inspection-Based Evaluations
      3. 5.3.3 Model-Based Evaluations
    4. 5.4 Usability Management Framework
    5. 5.5 Hierarchical Usability Model
    6. 5.6 Conclusion
      1. Points to Remember
      2. Review Questions
        1. Objective Type Questions
        2. Short Answer Type Questions
        3. Descriptive Questions
    7. References
    8. Useful Links
  14. 6. Integrating Security with Software Durability
    1. 6.1 Objectives
    2. 6.2 Fundamental Principles
      1. 6.2.1 The Evolution of Security Concept
      2. 6.2.2 Security Analysis into Durability Concept
      3. 6.2.3 Security and Durability Characteristics
      4. 6.2.4 Systems, Software, Security and Durability
    3. 6.3 Previous Models/Frameworks
    4. 6.4 Challenges for Security-Durability Modeling
      1. 6.4.1 Types of Information Loss
      2. 6.4.2 Security Challenges: Durability Perspective
    5. 6.5 Security Durability Risks at the Design Phase
      1. 6.5.1 Risk Scenario of Durable Software
      2. 6.5.2 Security Risks Identification at Design-level
      3. 6.5.3 Need for Identification
      4. 6.5.4 Major Security Risks in the Design Phase
      5. 6.5.5 Relation between Security Risk and Security Characteristics
    6. 6.6 Managing Software Security Risk: Durability Perspective
      1. 6.6.1 Development Risk
      2. 6.6.2 Development Environment
      3. 6.6.3 Program Constraints
      4. 6.6.4 Governance, Management, and Compliance
    7. 6.7 Security Durability Blueprints
      1. 6.7.1 Identify Goals
      2. 6.7.2 Security Durability Management
      3. 6.7.3 Security Durability Metrics
      4. 6.7.4 Security Durability Assurance
      5. 6.7.5 Change Management
    8. 6.8 Security Durability Integrate with Development Process
      1. 6.8.1 Secure and Durable Serviceability
      2. 6.8.2 Service Oriented Design Properties: Durability Perspective
      3. 6.8.3 Requirement Gathering
      4. 6.8.4 Simplify Security Durability
    9. 6.9 Practices for Integrating Durability Concept
      1. 6.9.1 Quantum Security Technique
      2. 6.9.2 Usable-Security of Software
      3. 6.9.3 Sustainable-Security of Software
      4. 6.9.4 Security Tactics of Software
    10. 6.10 Conclusion
    11. Points to Remember
    12. Review Questions
      1. Objective Type Questions
      2. Short Answer Type Questions
      3. Descriptive Questions
    13. References
    14. Useful Links
  15. 7. Integrating Human Trust with Software Durability
    1. 7.1 Objectives
    2. 7.2 Fundamental Principles
      1. 7.2.1 The Evolution of the Human Trust Concept
      2. 7.2.2 Human Trust Analysis into Durability Concept
      3. 7.2.3 Durability and Human Trust Characteristics
      4. 7.2.4 Systems, Software, Human Trust, and Durability
    3. 7.3 Organizational Roles and Responsibilities
      1. 7.3.1 Pre-Development
      2. 7.3.2 Account Manager
      3. 7.3.3 Business Analyst
      4. 7.3.4 Software Architect
      5. 7.3.5 Delivery Manager
      6. 7.3.6 Domain Expert
      7. 7.3.7 Software Developer
    4. 7.4 Significant Elements of Human Trust Management
      1. 7.4.1 Human Computer Trust
      2. 7.4.2 System Trust Solutions
      3. 7.4.3 Managing Human Trust
      4. 7.4.4 Human Computer Trust Model
      5. 7.4.5 The Importance of Human Trust
    5. 7.5 Conclusion
    6. Points to Remember
    7. Review Questions
      1. Objective Type Questions
      2. Short Answer Type Questions
      3. Descriptive Questions
    8. References
    9. Useful Links
  16. 8. Software Durability Assessment Methodology
    1. 8.1 Objectives
    2. 8.2 Software Durability Assessment
    3. 8.3 Measurement Categories
      1. 8.3.1 Indirect Parameters
      2. 8.3.2 Direct Parameters
    4. 8.4 Multi Criteria Decision Analysis
    5. 8.5 Pertinent Work on Decision Making Analysis
    6. 8.6 Durability Assessment through Decision Making Technique
    7. 8.7 Durability Assessment Mechanism
      1. 8.7.1 Mechanism Selection and Description
      2. 8.7.2 Implementation Procedure
    8. 8.8 Benefits of Durability Assessment
      1. 8.8.1 Source Code Durability
      2. 8.8.2 Documentation, User Interface, and Durability
      3. 8.8.3 Security and Privacy
      4. 8.8.4 Durable Performance
      5. 8.8.5 Business Logic
      6. 8.8.6 Architecture Durability
      7. 8.8.7 Data Durability
      8. 8.8.8 Interoperability
    9. 8.9 Conclusion
      1. Points to Remember
      2. Review Questions
        1. Objective Type Questions
        2. Short Answer Type Questions
        3. Descriptive Questions
    10. References
    11. Useful Links
  17. 9. A Case Study on Software Durability Assessment
    1. 9.1 Objectives
    2. 9.2 Evaluating the Weights of Characteristics
      1. 9.2.1 Construction of Pair-Wise Comparison Matrices
      2. 9.2.2 Aggregation of Pair-Wise Comparison Matrices
      3. 9.2.3 Defuzzification Procedure and Independent Weights
      4. 9.2.4 Dependent Weights of Each Characteristic
    3. 9.3 Procedure for Improving Durability of Software
    4. 9.4 Ratings of the Characteristics
      1. 9.4.1 Fuzzified Average Ratings
      2. 9.4.2 Defuzzification and Independent Ratings
      3. 9.4.3 Dependent Rating of Each Characteristic
    5. 9.5 Assessment of Software Durability
    6. 9.6 Sensitivity Analysis
    7. 9.7 Statistical Investigation
      1. 9.7.1 Design Module of an Experiment
      2. 9.7.2 Pre-Tryout
      3. 9.7.3 Review and Revision
      4. 9.7.4 Tryout
      5. 9.7.5 Statistical Analysis
    8. 9.8 Conclusion
      1. Points to Remember
      2. Review Questions
        1. Objective Type Questions
        2. Short Answer Type Questions
        3. Descriptive Questions
    9. Refereces
    10. Useful Links
  18. 10. Software Durability Testing
    1. 10.1 Objectives
    2. 10.2 Durability Testing
      1. 10.2.1 Purpose
      2. 10.2.2 Challenges
      3. 10.2.3 Benefits and Limitations
    3. 10.3 Basic Steps to Perform Durability Testing
      1. 10.3.1 Establish the Test Environment
      2. 10.3.2 Creation of Test Plan and Test Scenarios
      3. 10.3.3 Test Cycle Estimation
      4. 10.3.4 Risk Analysis
      5. 10.3.5 Test Schedule
      6. 10.3.6 Test Execution
      7. 10.3.7 Review and Revision
      8. 10.3.8 Test Cycle Closure
    4. 10.4 Durability Testing Execution Procedure
    5. 10.5 Types of Durability Testing
      1. 10.5.1 Testing Load
      2. 10.5.2 Testing Stress
      3. 10.5.3 Testing Performance
      4. 10.5.4 Testing Volume
      5. 10.5.5 Testing Scalability
      6. 10.5.6 Testing Reliability
      7. 10.5.7 Testing Traceability
      8. 10.5.8 Testing Interpretability
    6. 10.6 Basics of Code Durability
      1. 10.6.1 Durable Code
      2. 10.6.2 Code Reviews
      3. 10.6.3 Understanding Code Review
      4. 10.6.4 Common Code Review Approaches
      5. 10.6.5 Importance of Code Durability
      6. 10.6.6 Measuring Code Durability
      7. 10.6.7 Characteristics of Code Durability
      8. 10.6.8 Maintaining Code Durability
      9. 10.6.9 Improving Code Durability
    7. 10.7 Building Durable Software through Source Code Analysis
    8. 10.8 The Gap in Practices
    9. 10.9 The Framework
      1. 10.9.1 Phase-I: Execute and Monitor
      2. 10.9.2 Phase-II: Classify and Control
      3. 10.9.3 Phase-III: Refine and Manage
    10. 10.10 Significance of the Framework
    11. 10.11 Conclusion
      1. Points to Remember
    12. Review Questions
    13. References
    14. Useful Links
  19. 11. Future Prospects of Durability into Software Engineering
    1. 11.1 Objectives
    2. 11.2 Issues and Challenges
    3. 11.3 Durability Meets the Practitioners' Expectations
      1. 11.3.1 Get Practitioner's Software to Market Faster
      2. 11.3.2 Bring in Domain Knowledge
      3. 11.3.3 Core Expertise
      4. 11.3.4 Cut Costs
      5. 11.3.5 Take it a Notch Higher
    4. 11.4 Needs and Importance
      1. 11.4.1 Software is Now Cheap and Fast
      2. 11.4.2 Non-durable Software is Liable to be discarded by Users
      3. 11.4.3 Software Failure Costs may be Enormous
      4. 11.4.4 Non-durable Software is Difficult to Improve
      5. 11.4.5 Inefficiency is Predictable
      6. 11.4.6 Non-durable Software may Cause Information Loss
    5. 11.5 Evolving Trends in the Development Process and Integration with Durability Concept
      1. 11.5.1 Automated Code Reviews
      2. 11.5.2 Coding Standards
      3. 11.5.3 Cybersecurity with DevSecOps
      4. 11.5.4 Software Durability Standards
      5. 11.5.5 Cost Management Solution
      6. 11.5.6 Low-code or No-code Solutions
      7. 11.5.7 Durability Assurance Solutions
      8. 11.5.8 Cross-Platform Development Tools
      9. 11.5.9 Continuous Delivery and Deployment
    6. 11.6 Significant Contributions of the Book
    7. 11.7 Impact of the Book
    8. 11.8 Successful Strategies for Software Developers
    9. 11.9 Recommendations for Security Practitioners
    10. 11.10 Conclusion
      1. Points to Remember
      2. Review Questions
    11. References
    12. Useful Links
  20. Index

Product information

  • Title: Software Durability
  • Author(s): Rajeev Kumar, Suhel Ahmad Khan, Raees Ahmad Khan
  • Release date: April 2023
  • Publisher(s): CRC Press
  • ISBN: 9781000887075