Skip to Content

Flexible Software Design

Systems Development for Changing Requirements

By Bruce Johnson, Walter W. Woolfolk, Robert Miller, Cindy Johnson

Auerbach Publications – 2005 – 464 pages

Purchasing Options:

  • Add to CartHardback: $115.95
    978-0-8493-2650-9
    June 16th 2005

Description

A developer's knowledge of a computing system's requirements is necessarily imperfect because organizations change. Many requirements lie in the future and are unknowable at the time the system is designed and built. To avoid burdensome maintenance costs developers must therefore rely on a system's ability to change gracefully-its flexibility. Flexible Software Design: Systems Development for Changing Requirements demonstrates the design principles and techniques that enable the design of software that empowers business staff to make functional changes to their systems with little or no professional IT intervention.

The book concentrates on the design aspects of system development, the area with the most flexibility leverage. Divided into four parts, the text begins by introducing the fundamental concepts of flexibility, explaining the reality of imperfect knowledge and how development participants must change their thinking to implement flexible software. The second part covers design guidelines, stable identifiers, stable information structures, the Generic Entity Cloud concept, and regulatory mechanisms that give business staff control over system modifications. Part three relates strategic information systems planning to flexible systems. It examines the elicitation of requirements and the relevance of agile methods in a flexible systems environment. It also discusses practical aspects of stable identifier design and compares the testing of traditional and flexible software. In part four, the book concludes with details of the flexible UniverSIS system and an explanation of the applications and extensions of the Generic Entity Cloud tools.

The combination of smart design and smart work offered in Flexible Software Design can materially benefit your organization by radically reducing the systems maintenance burden.

Contents

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 References

Name: Flexible Software Design: Systems Development for Changing Requirements (Hardback)Auerbach Publications 
Description: By Bruce Johnson, Walter W. Woolfolk, Robert Miller, Cindy Johnson. A developer's knowledge of a computing system's requirements is necessarily imperfect because organizations change. Many requirements lie in the future and are unknowable at the time the system is designed and built. To avoid burdensome...
Categories: Software Engineering & Systems Development, Systems & Computer Architecture