Building Software

Book description

Providing a framework to guide software professionals through the many aspects of development, Building Software: A Practitioner's Guide shows how to master systems development and manage many of the soft and technical skills that are crucial to the successful delivery of systems and software. It encourages tapping into a wealth of cross-domain and legacy solutions to overcome common problems, such as confusion about requirements and issues of quality, schedule, communication, and people management. The book offers insight into the inner workings of software reliability along with sound advice on ensuring that it meets customer and organizational needs.

Table of contents

  1. Cover
  2. Half Title
  3. Title Page
  4. Copyright Page
  5. Dedication
  6. Table of Contents
  7. Preface
  8. Acknowledgments
  9. Introduction
  10. About the Authors
  11. 1 Failure
    1. A Formal Definition of Failure
    2. Failure Patterns
    3. The Dependability of a Software System
    4. Known but Not Followed: Preventing Failure
      1. Engineering Failures: Oversimplification
      2. Execution Failures: Overruns under Pressure
      3. Functional Failures
      4. Ecosystem Failures: Uncoordinated Efforts within a Team
      5. Changing Playing Fields Cause Unprecedented Failure
      6. Faulty Leadership Causes Failures
        1. Cascading Failures
    5. Monitoring Systems
    6. Reliability in Software
    7. Accountability for Failure
      1. Liability of Failure
    8. Getting out of Failures
    9. Product and Project Failures
    10. Summary
  12. 2 Systems
    1. Application of Systems Thinking in Software
    2. The Law of Requisite Variety
      1. Variety Is Relative
      2. Matching Variety
      3. Choices and Constraints in Software
    3. Most See, Very Few Observe
      1. Hot and Cold
    4. System Dynamics
    5. Going Beyond the Analytical Approach
    6. Management by Exception
    7. Types of Systems
    8. Complexity of Systems
    9. Summary
  13. 3 Strategies
    1. The True System
    2. Aligning Information Strategy with Business Strategy
    3. Everything Important Is Not Strategic
      1. What Is Strategic?
    4. A Few Common Internal Strategic Decisions
      1. Insourcing and Outsourcing
      2. Architectures and Technologies
      3. Build versus Buy
    5. Using Strategies
    6. Failed Strategies
      1. Reducing Failure
    7. Summary
  14. 4 Requirements
    1. Requirements for Products and Projects
    2. Stakeholders
    3. Stand-Ins
      1. Prioritizing Stakeholders
      2. Using Policies
    4. The Nature of Requirements
      1. Formal Requirements
      2. The Element of Trust
      3. The Technical–Business Divide
      4. Phasing of Requirements
      5. Requirements and Scope
      6. Looking Back
      7. Roadmaps
    5. Types of Requirements
      1. Functional and Nonfunctional Requirements
      2. Wants and Needs
    6. Classifying Requirements
    7. A Hierarchy of Requirements
      1. Business Requirements
      2. Systems Requirements
      3. Functional Requirements
      4. Detailed Requirements
    8. Requirements and Process
      1. Approaching Requirements
      2. Oversight
      3. Sign-Offs
      4. Requirements and Development
      5. Revisiting Requirements
    9. Design and Architecture
    10. Changes in Requirements
      1. Reasons for Change
      2. Recognizing Change
      3. Changes and Releases
    11. Requirements and QA
      1. Uncertainty in Requirements
      2. User Acceptance Testing (UAT)
    12. Summary
  15. 5 Architecture and Design
    1. Background
    2. Architecture versus Design
    3. The Importance of Architecture
    4. Software Architecture Document
      1. Architectural Goals
      2. Constraints
      3. Architecture Perspectives
        1. Logical Perspective
        2. Engineering Perspective
        3. Deployment Perspective
    5. Kinds of Architecture
      1. Enterprise Architecture
      2. Service-Oriented Architecture (SOA)
      3. Information Architecture
    6. System Design
    7. Design Document
      1. Class Design
      2. Data Access Design
      3. User Interface Design
    8. The Process of Designing
    9. A Note on Design Patterns
    10. Zachman Framework
    11. What It Takes to Be a Good Architect and Designer
    12. Occam’s Razor
    13. Summary
  16. 6 Data and Information
    1. Nature of the Data
      1. Derived Data
        1. Internal versus External
      2. Formal versus Informal Information
        1. Data Generators and Users
        2. Data-Related Costs
      3. Raw Data
      4. Metadata
        1. Certainty of Data
    2. Determining Information Needs
      1. Selecting the Right Representation
      2. Determining the Many Uses
      3. Organizing Data
        1. Recognizing System Boundaries
      4. Designing Information
        1. Forms and Formality
      5. Psychology of Forms
        1. Reveals the Organization
        2. Forms Need Not Be Visual
        3. Reveals Levels of Ignorance
      6. Managing Information
        1. Reconciling Multiple Sources of Information
        2. Classification of Data
    3. Systems of Record
      1. And in the End, How Useful Is Information?
    4. Summary
  17. 7 Life Cycles
    1. Everything Sequential Is Not a Life Cycle
    2. Coarse-Grained Process Models
    3. Standard Software Life Cycles
      1. Waterfall
        1. Standard Waterfall
        2. Waterfall with Feedback
      2. Iterative, Incremental
        1. Spiral
      3. Rational Unified Process
        1. Vertical Dimension: Disciplines or Workflows
        2. Horizontal Dimension: Phases
    4. Using Life Cycle as a Model
      1. Plans and Life Cycles Are Different
      2. Planning Does Not Work in Firefighting Situations
    5. Choosing the Right Life Cycle
    6. Prototypes Are Important
      1. Throwaway or Reusable Prototypes
    7. Life-Cycle Phases
    8. Some Places in the Life Cycle Are Better Suited to Terminate a Project
    9. Software Shelf Life
    10. Data Shelf Life
    11. Movies versus Software
    12. Summary
  18. 8 The Semantics of Processes
    1. Process and Entropy
    2. Developing Good Processes
      1. Understanding the Process Environment
    3. Take Care of the Basics
      1. Include Communication Mechanisms
      2. Design Feedback and Improvement Mechanisms into the Process
      3. Keep Processes Simple
      4. Build in Applicable Conditions
    4. Benefits of Processes
      1. Process as Learning
      2. Processes as a Growth Vehicle
      3. Learning as Input to Processes
    5. Resistance to Processes
    6. Processes Degenerate into Bureaucracies
    7. Do Processes Help?
    8. Introducing New Processes
    9. Summary
  19. 9 Off-the-Shelf Software
    1. The Involved Parties
    2. Buying Off-the-Shelf Software
    3. Preparing to Buy
    4. Reducing Risk of Failure
      1. The Culture of the Vendor
      2. Metaphor for Selecting an OTS Product
    5. The Dependency Factor
    6. Summary
  20. 10 Customization
    1. Customization versus Enhancements
    2. Customization and Configuration
    3. Customization and Ground-Up Creation
    4. Customization Requirements
    5. Customization Facilities
    6. Handling Upgrades to Customization
    7. Why Customization Projects Fail
    8. Dominance of the Customization Model
    9. Need for a Customization Framework
    10. Pros and Cons of Customization
    11. Customization and Management
    12. Summary
  21. 11 Migration
    1. What Triggers a Migration?
    2. The Strategy of Migration
    3. The Use of Tools
      1. Migration versus Porting
      2. Migration versus Reengineering
      3. Upstream and Downstream
    4. Risks of Migration
    5. Resistance to Migration
    6. Scoping Migration Projects
    7. Migration in Design
    8. Migrating Data
    9. The Right Staff
    10. Summary
  22. 12 Quality and Testing
    1. The Definition of Quality
    2. Quality as Feedback
    3. Products and Processes
      1. Quality in Other Domains
    4. Quality under Constraints
    5. QA Effort Sizing
    6. Dealing with Poor Specifications
    7. Test Plans and Cases
    8. Types of Testing
      1. Systems Testing
      2. Integration Testing
      3. Unit Testing
      4. Black-Box and White-Box Testing
      5. Regression Testing
      6. Regression Problems
    9. Scope of Testing
    10. Automation in Testing
    11. Test Environments
    12. Quality Improvements over Time
    13. Bugs
      1. Handling Change
      2. Specification and Design Bugs
    14. Classification of Bugs
      1. Understanding Bug Discovery
      2. Release Management
    15. Push and Pull: The Equation between Development and QA
    16. Multiple Views of Quality
    17. Quality Assurance (QA) and Testing Skills
    18. Summary: Quality Matters
  23. 13 Communication
    1. The Objectives of Communication
    2. Communication Models
    3. The Problem of Miscommunication
      1. Avoid Picking the Wrong Information
      2. Understanding the Sender’s Responsibility
      3. Imprecise Requests
      4. Misunderstanding the Received Request
      5. Inconsistency in Communication
      6. Omission or Incompleteness
    4. Information Dynamics
      1. Setting Up Artificial Information Hierarchies
      2. Selecting the Right Channel
      3. Choosing the Set Carefully
      4. Unequal Distribution of Information
      5. Private Interests
      6. Hierarchical Information Flows
      7. Need to Know
      8. Information Hiding
    5. Modes of Communication
      1. Nonverbal Communication
      2. Words versus Diagrams
    6. Communication Tools
      1. The Map Is Not the Territory
      2. A Good Worker Needs Many Tools
    7. Channels
      1. Slides and Diagrams
      2. E-Mail
      3. Action Items
    8. Demos
    9. Other Aspects of Communications
      1. Informal Communication
    10. Communicating across Fault Lines
    11. Escalation
    12. Communication Techniques
      1. PGP
      2. Tagmemics
      3. McKinsey’s MECE
      4. The Tree Structure
      5. How to Get the Message across Efficiently
    13. Content
      1. The Minimal Set
    14. Status
      1. Green Status
      2. Red Status
      3. Yellow Status
      4. Snapshot or Predictor
        1. Status as Snapshot
        2. Status as Predictor
        3. Status as “Call to Action”
        4. Status as Information
    15. The Three Popular Vectors
      1. Granularity
    16. Summary
  24. 14 Reports
    1. The History of Reporting
    2. Reporting Hierarchy
    3. What Is a Good Report?
      1. The Need for Good Report Design
      2. Avoiding the Last Mile of Reporting Problem
    4. Types of Reports
      1. Kinds of Reports
    5. Report Design
    6. Quality
    7. Queries
    8. Queries versus Reports
      1. Why a Printout Is Still Preferred to Seeing Data on Screen
    9. Off-the-Shelf (OTS) Reports
    10. Report: Other Aspects
      1. Report Performance
      2. Security of Reports
    11. Summary
  25. 15 Documentation
    1. Types of Documentation
      1. Illuminative Documentation
      2. Instructional Documents
      3. Reference Documentation
      4. Informational Documentation
    2. Problems with Documentation
    3. Summary
  26. 16 Security
    1. The Demand for Security
    2. Security Crosses Conventional Application Boundaries
    3. The Weaker Links
    4. Security Is Linked to Value and Ownership
    5. Identifying the Correct Entities to Protect
    6. The Business Perspective
      1. Priority Varies with Industries
      2. Security Needs to Protect the Right Thing
      3. What Are the Options Outside of Technology?
      4. Understanding Security Costs Is Important
      5. What Is the Vendor’s Role in Security?
      6. Offshore Security
    7. The Technical Perspective
      1. Modularity
      2. Physical versus Logical
      3. Encryption
      4. Access Control
      5. Limiting Disclosure
      6. Production Environments Can Create Problems
      7. Patch and Upgrade Management Are Critical
      8. Multiple Levels of Security
    8. Learning from the Human Security System
    9. A Counter-Intuitive Approach from Field Sports
    10. The Human Perspective
      1. Employee Separation
      2. Specialization
    11. Processes and Procedures
      1. Data Classification
      2. Exceptions
      3. Responding to Attacks
      4. Adherence
    12. Summary
  27. 17 Conclusion
  28. Bibliography
  29. Appendix A Discussion of Terms
    1. Logical versus Physical
    2. Products, Projects, and Processes
    3. Critical versus Important
    4. Horizontal versus Vertical
      1. Problem Solving
    5. Upstream versus Downstream
    6. Import versus Export
    7. Push versus Pull
    8. Roles versus Responsibilities
    9. Scale Up versus Scale Out
    10. Validation versus Verification versus Testing
    11. Asynchronous versus Synchronous
    12. Hierarchical versus Structured
    13. Task versus Activity
    14. Online, Real-Time, Interactive, Batch, Offline
      1. Real-Time versus Batch
    15. Internationalization versus Localization versus Multilingual
    16. High Availability versus Fault Tolerance
  30. Index

Product information

  • Title: Building Software
  • Author(s): Nikhilesh Krishnamurthy, Amitabh Saran
  • Release date: September 2007
  • Publisher(s): Auerbach Publications
  • ISBN: 9781000654462