INTRODUCTION TO FLEXIBILITY The Serious Problems with IT Today The Industrywide Maintenance Problem What Is Wrong with Nonflexible Systems? Two Cautionary Tales The Typical IT Environment: No Time to Do It Right - Time to Do It Over! Summary The Reality of Imperfect Knowledge Flexibility: An Improved Way of Thinking What Is Flexible Software? Change or Die Evolution of Flexibility IT Misconceptions and Flexibility Concepts Summary Outcome, Not Methodology Mired in Methodology Software Engineering Shifts Summary Realignment of Roles Roles and Responsibilities in Traditional and Flexible Development Flexibility Attitudes Summary UniverSIS: a Flexible System Background Success Stories Two System Features Summary WHAT IS REQUIRED TO ACHIEVE FLEXIBILITY Guidelines for Flexible Software Design Treat "Design" as a Noun Design for the Long Haul Observe Consistent Standards Use N-Tiered Architecture Employ Individual Data Objects Take Advantage of Reusable Logic Code General-Purpose Routines Recognize the Limits of Flexibility Summary The Importance of Stable Identifiers Information-Free Stable Identifiers Types of Unstable Identifiers Identifiers and the Relational Data Model Summary Regulation: Managing Artificial Limits Business Rules as Artificial Limits General Regulation of Business Rules Cardinality Regulation: Variable Cardinality, Many-to-Many Associations Summary Appendix: Using Regulation to Make a Flexible System Appendix: Business Rules Manifesto Stable Information Structures Structure/Process Differentiation: Generic Structures Recursive Relationships Typing and Generic Entities Recognizing Certain Forms of Data Bottom-Up Derivation of Generic Entities Summary The Generic-Entity Cloud (GEC) What Is a Generic-Entity Cloud? Three-Node Generic-Entity Cloud Externals Six-Node Generic-Entity Cloud GECs, Attributes, and Flexibility Externals Connected to Generic-Type Node Summary HOW TO DESIGN FLEXIBLE SOFTWARE SYSTEMS Flexibility and Strategic Systems Planning The Myth of the Isolated System Traditional Planning Approach Stable Enterprise Model Strategic Systems Planning for Flexibility Summary Requirements Determination for Flexible Systems Myth of Perfect Knowledge Definition of Effective Requirements Identifying Dynamic Requirements Agile Methodologies Summary System Design with an Eye on Flexibility Structure-Oriented Techniques for Flexible Software Design Process-Oriented Techniques for Flexible Software Design Summary Appendix: Dynamic Condition Search Program Listing (in Java) Implementing Stable Identifiers The Basic Rule Applying the Basic Rule Circumvention Paths - Back to the Beginning Summary Testing and Maintenance of Flexible Software Errors Encountered in Testing Two Phases of Testing Summary Identifying, Managing, and Acquiring Quality Flexible Software Flexibility and Quality Managing System Development/Acquisition to Achieve Flexibility Procuring Flexible Software Summary FLEXIBILITY: DELVING DEEPER A Closer Look at UniverSIS Navigation and Security Documents Required Admission Credentials Contact Management Correspondence Correspondence Tracks Selected-ID Lists Tests Employee Profile Grades Summary Evaluator: a Flexible Tool for Maintaining Business Rules Record Rules Evaluate Evaluator: the Details Working through Examples Summary Tuition-Remission Case Study: Traditional versus Flexible Traditional Approach Flexible Approach Comparison of Traditional and Flexible Approaches Summary Regulatory GECs (Generic Entity Clouds) Attached versus Detached Regulation GEC Validation Tables Generic Validation Table GECs When to Use Attached or Detached Regulation Value-to-Value Translation Summary GEC Applications and Extensions Developing a GEC GEC with Business Rules Multi-Ring GEC The Atomic GEC SubGECs Summary GEC Aids The GECAnalyzer The GECBuilder The GECPhazer Summary Appendix A: Bibliography and Referencesures Summary WHAT IS REQUIRED TO ACHIEVE FLEXIBILITY Guidelines for Flexible Software Design Treat "Design" as a Noun Design for the Long Haul Observe Consistent Standards Use N-Tiered Architecture Employ Individual Data Objects Take Advantage of Reusable Logic Code General-Purpose Routines Recognize the Limits of Flexibility Summary The Importance of Stable Identifiers Information-Free Stable Identifiers Types of Unstable Identifiers Identifiers and the Relational Data Model Summary Regulation: Managing Artificial Limits Business Rules as Artificial Limits General Regulation of Business Rules Cardinality Regulation: Variable Cardinality, Many-to-Many Associations Summary Appendix: Using Regulation to Make a Flexible System Appendix: Business Rules Manifesto Stable Information Structures Structure/Process Differentiation: Generic Structures Recursive Relationships Typing and Generic Entities Recognizing Certain Forms of Data Bottom-Up Derivation of Generic Entities Summary The Generic-Entity Cloud (GEC) What Is a Generic-Entity Cloud? Three-Node Generic-Entity Cloud Externals Six-Node Generic-Entity Cloud GECs, Attributes, and Flexibility Externals Connected to Generic-Type Node Summary HOW TO DESIGN FLEXIBLE SOFTWARE SYSTEMS Flexibility and Strategic Systems Planning The Myth of the Isolated System Traditional Planning Approach Stable Enterprise Model Strategic Systems Planning for Flexibility Summary Requirements Determination for Flexible Systems Myth of Perfect Knowledge Definition of Effective Requirements Identifying Dynamic Requirements Agile Methodologies Summary System Design with an Eye on Flexibility Structure-Oriented Techniques for Flexible Software Design Process-Oriented Techniques for Flexible Software Design Summary Appendix: Dynamic Condition Search Program Listing (in Java) Implementing Stable Identifiers The Basic Rule Applying the Basic Rule Circumvention Paths - Back to the Beginning Summary Testing and Maintenance of Flexible Software Errors Encountered in Testing Two Phases of Testing Summary Identifying, Managing, and Acquiring Quality Flexible Software Flexibility and Quality Managing System Development/Acquisition to Achieve Flexibility Procuring Flexible Software Summary FLEXIBILITY: DELVING DEEPER A Closer Look at UniverSIS Navigation and Security Documents Required Admission Credentials Contact Management Correspondence Correspondence Tracks Selected-ID Lists Tests Employee Profile Grades Summary Evaluator: a Flexible Tool for Maintaining Business Rules Record Rules Evaluate Evaluator: the Details Working through Examples Summary Tuition-Remission Case Study: Traditional versus Flexible Traditional Approach Flexible Approach Comparison of Traditional and Flexible Approaches Summary Regulatory GECs (Generic Entity Clouds) Attached versus Detached Regulation GEC Validation Tables Generic Validation Table GECs When to Use Attached or Detached Regulation Value-to-Value Translation Summary GEC Applications and Extensions Developing a GEC GEC with Business Rules Multi-Ring GEC The Atomic GEC SubGECs Summary GEC Aids The GECAnalyzer The GECBuilder The GECPhazer Summary Appendix A: Bibliography and Referencesm Appendix: Business Rules Manifesto Stable Information Structures Structure/Process Differentiation: Generic Structures Recursive Relationships Typing and Generic Entities Recognizing Certain Forms of Data Bottom-Up Derivation of Generic Entities Summary The Generic-Entity Cloud (GEC) What Is a Generic-Entity Cloud? Three-Node Generic-Entity Cloud Externals Six-Node Generic-Entity Cloud GECs, Attributes, and Flexibility Externals Connected to Generic-Type Node Summary HOW TO DESIGN FLEXIBLE SOFTWARE SYSTEMS Flexibility and Strategic Systems Planning The Myth of the Isolated System Traditional Planning Approach Stable Enterprise Model Strategic Systems Planning for Flexibility Summary Requirements Determination for Flexible Systems Myth of Perfect Knowledge Definition of Effective Requirements Identifying Dynamic Requirements Agile Methodo.
Flexible Software Design : Systems Development for Changing Requirements