Developing Information Systems Accurately: A Wholistic Approach

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

This textbook shows how to develop the functional requirements of (information) systems. It emphasizes the importance to consider the complete development path of a functional requirement, i.e. not only the individual development steps but also their proper combination and their alignment.


The book consists of two parts: Part I presents the underlying theory while Part II contains various illustrative case studies. Part I starts with an introduction to the topic (Chapter 1). Then it explains how to develop functional requirements that represent the conceptual dynamics of an information system (Chapters 2 and 3). Chapters 4 and 5 explain how to model the conceptual statics of an information system. Chapter 6 gives some directions for implementation. Finally, Chapter 7 explains how a ‘technical manager’ can organize and manage the development process. 


As an illustration of the theory, Part II contains three substantial case studies. The first one (Chapter 8) presents a stepwise development starting from an informal situation sketch via a simple domain model towards a precisely specified, full-fledged conceptual data model, which finally is translated to an SQL database. In the second case study (Chapter 9) the author converts the well-known non-trivial use case Process Sale from Larman into a textual System Sequence Description (SSD). For validation purposes, that textual SSD is subsequently translated into natural language and into a graphical SSD. The third case study (Chapter 10) shows the applicability of the author’s approach to a control system and also illustrates the typical situation that the requirements are constantly changing during development.


This book is written for (under)graduate students in software engineering or information systems who want to learn how to carry out adequate problem analysis, to make good system specifications, and/or to understand how to organize and manage an IS-development process. It also targets practitioners who want to improve their problem analysis abilities and/or their ability to make good system specifications. To this end, it includes more than 150 explanatory figures and is accompanied by a Web site which provides additional course material such as slides, additional exercises, solutions to exercises, and the code for the figures used in the book.


Author(s): Bert de Brock
Publisher: Springer
Year: 2023

Language: English
Pages: 264
City: Cham

Foreword
Preface
Why I Wrote This Book
Organization of the Book
Acknowledgments
Global Contents
Contents
About the Author
Abbreviations
Symbols
Chapter 1: Introduction
1.1 Subject of the Book
1.2 Scope of the Book
1.3 Global Contents of the Book
1.4 Contents in Terms of Computing Disciplines and ACM Curricula
1.5 Intended Audience
1.6 Intended Learning Outcomes
1.7 Sketch of the Problem Area
1.8 Our Approach
1.9 Goals on Different Levels
1.10 Functional and Quality Requirements
1.11 Summary
Part I: Theory
Chapter 2: Developing a Functional Requirement
2.1 Development Path for an Individual FR: An Overview
2.2 User Wishes
2.2.1 Elementary User Wishes
2.2.2 Parameterized User Wishes
2.3 User Stories
2.4 Use Cases
2.4.1 Main Success Scenario and Alternative Scenarios
2.4.2 Core Ingredients of a Use Case
2.4.3 Other Potential Ingredients of a Use Case
2.4.4 Some Guidelines for Writing Use Cases (Do´s)
2.4.5 Common Mistakes in Use Cases (Don´ts)
2.5 System Sequence Descriptions
2.5.1 A Grammar for Textual SSDs
2.5.2 Distinct Types of Basic Steps
2.5.3 Structuring Textual SSDs
2.6 The Conceptual Notion of a Form
2.6.1 Input Forms
2.6.2 Input Lists
2.6.3 Dynamic Aspects
2.6.4 Search Forms
2.7 The Scenario Integration Problem
2.8 Validation of Textual SSDs
2.8.1 Generating Natural Language from Textual SSDs
2.8.2 Generating Graphical SSDs from Textual SSDs
2.9 Overview of Our Approach to Develop a User Wish
2.10 Summary
Chapter 3: Development Patterns
3.1 Outline of a General Development Pattern
3.2 Indicating the eUW and the Parameters Separately
3.3 Communicating with Other Actors
3.4 Personalization (`Me, Myself, and I´)
3.5 CRUDA-Patterns
3.5.1 Create
3.5.2 Read
3.5.3 Update
3.5.4 Delete
3.5.5 Archive
3.6 Summary
Chapter 4: Domain Modelling
4.1 Domain Models
4.2 Finding/Discovering/Determining Relevant Candidates
4.3 Some Noteworthy Cases
4.3.1 Many-to-Many Associations
4.3.2 Ternary Associations and Beyond
4.3.3 Individual Items Versus `Catalogue´ Items
4.3.4 Directed Graphs
4.3.5 Trees and the Like
4.3.6 Other Concepts Related to Themselves
4.3.7 Generalization and Specialization
4.4 Summary
Chapter 5: Conceptual Data Models
5.1 Introduction
5.2 From Domain Models to Conceptual Data Models: An Example
5.3 From Domain Models to Conceptual Data Models: General Case
5.4 Using Arrows for Conceptual Data Models
5.5 On Functional Dependencies and Normal Forms
5.6 Some Noteworthy Cases Worked Out
5.6.1 Transforming Many-to-Many Associations
5.6.2 Treating Associations in General
5.6.3 Individual Items Versus `Catalogue´ Items
5.6.4 Directed Graphs
5.6.5 Trees and the Like
5.6.6 Other Concepts Related to Themselves
5.6.7 Generalization and Specialization
5.7 Validation of a Conceptual Data Model via Natural Language
5.8 Summary
Chapter 6: Directions for Implementation
6.1 Parchment Scrolls
6.2 Paper Notebooks
6.3 Interaction with a (Software) System
6.4 SQL-Databases
6.4.1 From Conceptual Data Models to Data Models in SQL
6.4.2 Modification
6.4.3 Retrieval
6.4.4 From Textual SSDs to Stored Procedures
6.5 Generating an Initial Class Diagram
6.6 Summary
Chapter 7: Organizing and Managing the Development Process
7.1 Sketch of the Problem Area
7.2 Some History and Trends
7.2.1 Waterfall Methods
7.2.2 Parallel Development
7.2.3 CASE Tools, CASE Workbenches, and CASE Environments
7.2.4 Prototyping
7.2.5 Iterative Development and Incremental Development
7.2.6 Agile Development
7.2.7 DevOps
7.2.8 History and Trends in Conclusion
7.3 Wider Management Issues
7.4 Summary
Part II: Case Studies
Chapter 8: A Non-trivial University Example Worked Out
8.1 Initial Sketch of the Situation
8.2 Analysis of the Initial Situation Sketch
8.3 A Simple Domain Model for the Situation
8.4 From Domain Model to an Initial Conceptual Data Model
8.5 A Refined Conceptual Data Model Including References
8.6 Uniqueness Constraints
8.7 Conceptual Data Model with `All´ Relevant Properties
8.8 Possible Values for the Properties
8.9 Remaining Integrity Rules
8.9.1 Informally
8.9.2 More Formally
8.10 The Conceptual Data Model Explained in Natural Language
8.11 Specification in SQL
Chapter 9: Converting a Large Use Case
9.1 Converting a Large Use Case to a Textual SSD
9.2 Converting a Large Textual SSD to Natural Language
9.3 Converting a Large Textual SSD to a Graphical SSD
Chapter 10: Development Example Where Requirements Constantly Change
10.1 Initial Description
10.2 No Unnecessary Starts or Stops
10.3 Variable Thresholds per Room
10.4 Variable Thresholds per Room Type
10.5 Storing the Measurements
10.6 A Corresponding Textual SSD and Graphical SSD
10.7 Where Does the Timestamp Come from?
10.8 Synchronous Feedback from the Actuators
10.9 Asynchronous Feedback from the Actuators
10.10 A Schedule for Threshold Changes?
10.11 Interactions Between Our System and Its Environment
10.12 Looking Back: Typical Ingredients of an IS and a Control System
Appendix: Our Plantuml Tutorial
A.1 From Textual SSDs to Graphical SSDs
A.2 Domain Models
A.3 Conceptual Data Models
A.3.1 Generating a Visualization of a Concrete Graph
A.3.2 Commutative and Non-commutative Diagrams
A.4 Class Diagrams
A.5 System as Interface + Kernel
A.6 Use Case Diagrams
Glossary
References
Index