"Flexible Software Design: Systems Development for Changing Requirements" 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 the regulation that prevents IT intervention. Part three relates strategic planning to flexible systems. It examines the elicitation of requirements and the relevance of agile methods in a flexible environment. In part four, the book details the flexible UniverSIS system and explains the applications and extensions of the Generic Entity Cloud tools.
Review By: Arvind Pal Singh
"Flexible Software Design" covers techniques to improve flexibility in software systems. Targeting multiple audiences--IT professionals, business professionals, managers, and academicians--the authors discuss software flexibility, stable information structures, and strategies for achieving flexible software systems. They describe UniverSIS system and Evaluator facility for readers who wish to practice those principles. (One of the authors is a developer of the UniverSIS.) Frequently ignored aspects of flexible design are dealt with in a very organized manner, suitable for both beginners and experienced professionals. Lots of examples make the presented concepts easier to understand.
IT industry professionals realize the need to reduce efforts, manpower, and budget resources for software maintenance projects. This book shows “how not to do” maintenance.
Due to rapidly changing business requirements, it is important to understand flexible or organic, adaptable systems. This understanding helps systems to flex with their real world counterparts. After reading this well organized book, readers should have a better understanding of system requirements and the software development cycle.
Resynchronization within maintenance is the primary activity of a software system, and ease of maintenance should be one of the central considerations in the software cycle. The authors stress the need for shifting focus to future changes in business requirements, rather than stressing functional accuracy.
With its focus on flexible software design and methodologies, this book doesn't relate directly to QA testing. It is about a shift in thinking, so that ease of maintenance is one of the most important considerations made at the beginning of a software project.