𝔖 Scriptorium
✦   LIBER   ✦

πŸ“

An Introduction to Software Design: Concepts, Principles, Methodologies, and Techniques

✍ Scribed by Chenglie Hu


Publisher
Springer
Year
2023
Tongue
English
Leaves
368
Edition
1
Category
Library

⬇  Acquire This Volume

No coin nor oath required. For personal study only.

✦ Synopsis


This textbook provides a balanced coverage on software design, including design principles, methodologies, and techniques in contexts of designing modules of small and larger sizes with a multi-paradigm viewpoint emphasizing design trade-off. Commonly used design diagrams and patterns are also covered in terms of the design ideas behind and their effective use. The book also explores what (software) design thinking is, the role it plays in a design process, and ways to promote it. Despite object orientation being still the center of attention, there is a strong promotion throughout the book that software design should consider all appropriate design paradigms and methodologies.

The book is organized in 10 chapters. Chapter 1 is dedicated to an exploration of what software design may be and entail. Next, chapters 2 and 3 are designed to help readers better understand object orientation, and the essentials of object-oriented design. Chapter 4 is then dedicated to the design of methods, while chapters 5, 6, and 8 respectively include topics about the design of objects, modeling with the Unified Modeling Language, and the use of design patterns. Larger software elements are often directly responsible for the formation of software architecture, thus chapter 7 covers four kinds of larger software elements: libraries, components, frameworks, and microservices, and their architectural implications. Chapter 9 finally brings the presentation of software design to an end with a coverage on software architecture focusing on software architectural views. Case studies are important in learning how to design software, hence chapter 10 then gathers some small design case studies that can be used in earlier chapters as appropriate. These case studies can be extended in different ways to provide additional design opportunities.

This textbook book is intended for a junior level undergraduate course on software design, yet the depth of the book makes it also appropriate for a design course at beginning graduate level. Professionals may also find the book useful in their professional development.

✦ Table of Contents


Preface
Contents
1: What Is Software Design?
1.1 Overview
1.2 The Nature of Software Design
1.3 Software Design in the Context of Software Lifecycles
1.4 Software Design in the Context of Analytical Thinking
1.5 Software Design in the Context of Communication
1.6 Software Design in the Context of Design Formalism
1.7 Summary
References
2: The Paradigm of Object Orientation and Beyond
2.1 Overview
2.2 What Is Object Orientation?
2.2.1 Data Abstraction
2.2.2 Object Types
2.2.3 Inheritance
2.3 The Paradigm of Object-Oriented Design
2.4 Embracing Multi-paradigm Design
2.5 Summary
References
3: Essentials of Object-Oriented Design
3.1 Overview
3.2 Data Type, Data Abstraction, and Type-Safe Practices
3.3 More About Interfaces
3.3.1 Software Sustainability
3.3.2 The Role of Interfaces Through the Lens of Data Structures
3.3.3 Programming to an Interface, Not to an Implementation
3.3.4 Interface Segregation
3.3.5 Section Summary
3.4 Abstract Classes and Design of Type Hierarchies
3.4.1 Use of Abstract Classes
3.4.2 A Case Study
3.4.3 Section Summary
3.5 When to Avoid Inheritance
3.6 Subtyping with Consistent Object Behavior
3.6.1 Representation Invariants
3.6.2 Liskov Substitution Principle
3.6.3 Design by Contract
3.7 Lazy Object Creation Allowing Delayed Decision-Making
3.8 Object-Oriented Design in the Large: Design Principles
3.9 Summary
References
4: Design of Methods
4.1 Overview
4.2 Essential Characteristics of a Method
4.2.1 Procedural Abstraction and Modularity
4.2.2 Design Attributes of a Method
4.3 Cohesion of a Method
4.4 Method Coupling
4.4.1 The Phenomenon of Coupling
4.4.2 Effects of Coupling
4.4.3 Categorization of Coupling
4.5 Module Redesign and Code Refactoring
4.6 Method Specification
4.6.1 The Nature of a Module Specification
4.6.2 Method Specification with Some Formalism
4.7 A Case Study: Overriding Equals´´ 4.8 Summary References 5: Design of Objects 5.1 Overview 5.2 The Context and Process 5.3 Essentials of Object Design 5.3.1 Object to Model One Thing 5.3.2 Diverse Object Design Possibilities 5.3.3 Prototyping Object Interaction 5.3.4 Designing Objects Around a Structural Style 5.3.5 More About Object Discovery 5.3.6 Design to Ensure Objects´ Behavioral Correctness 5.4 Design of Control Objects 5.4.1 Highly Centralized vs. Coordinated Controls 5.4.2 Process Control with a Framework 5.4.3 Controls for Event-Driven Systems 5.4.4 Different Control Roles 5.4.5 Objects Are Designed to Control 5.5 Object Cohesion and Coupling 5.5.1 What Are the Issues? 5.5.2 Law of Demeter 5.5.3 Objects with No Overlapping Behavior 5.6 Iterative Design of Objects 5.6.1 Initial Design of Domain Abstractions 5.6.2 Subsequent Design Validation and Refactoring 5.7 Summary Further Reading 6: Software Modeling Languages and Tools 6.1 Overview 6.2 Software Analysis and Modeling 6.3 Developing Effective Use Cases 6.3.1 Use-Case Scenarios 6.3.2 Use of Use Cases 6.3.3 Development of Use Cases 6.3.4 Use-Case Diagrams 6.4 Other UML Diagrams 6.4.1 Class Diagrams 6.4.2 Sequence Diagrams 6.4.3 State (Machine) Diagrams 6.4.4 Activity Diagrams 6.5 Use of UML Diagrams 6.6 Dataflow Diagrams 6.7 Modeling with Customized Diagrams 6.8 Summary References Further Reading 7: Design of Larger Software Elements 7.1 Overview 7.2 Software Interfaces and APIs 7.3 Characterization of Larger Software Elements 7.4 Design of a Library 7.4.1 Software Libraries of Different Kinds 7.4.2 Characteristics, Benefits, and Risks of a Library 7.4.3 Initial Design of a Library 7.4.4 Design of a Library´s API 7.5 Design of Components 7.5.1 Component Concepts, Structures, and Models 7.5.2 Component Design 7.5.3 Component Discovery 7.5.4 Component Composition 7.5.5 Component-Based Architecture 7.6 Design of Application Frameworks 7.6.1 Characteristics of an Application Framework 7.6.2 Framework Design 7.6.3 A Case Study 7.7 Microservices 7.7.1 Some Background Information 7.7.2 The Promises of Microservices 7.7.3 Internal Operations of a Microservice 7.8 Summary Further Reading 8: Software Design Patterns 8.1 Overview 8.2 Creational Design Patterns 8.2.1 Singleton 8.2.2 Abstract Factory 8.2.3 Builder 8.2.4 Prototype 8.2.5 Section Summary 8.3 Structural Design Pattern 8.3.1 Adapter 8.3.2 Proxy 8.3.3 Façade 8.3.4 Decorator 8.3.5 Composite 8.3.6 Bridge 8.3.7 Flyweight 8.3.8 Twin 8.3.9 Section Summary 8.4 Behavioral Design Patterns 8.4.1 Strategy, Servant 8.4.2 Command 8.4.3 State 8.4.4 Visitor 8.4.5 Iterator 8.4.6 Chain of Responsibility 8.4.7 Observer 8.4.8 Mediator 8.4.9 Section Summary 8.5 More About Object Communication 8.6 Summary References 9: Software Architecture and Architectural Views 9.1 Overview 9.2 What Is Software Architecture? 9.2.1 A Characterization of Software Architecture 9.2.2 Architectural Styles 9.2.3 Structural Layers of Software Elements 9.2.4 The Impact of Software Architecture 9.2.5 Architectural Views 9.3 The 4+1 Architectural View Model 9.3.1 An Overview of the View Model 9.3.2 The Logic View 9.3.3 The Process View 9.3.4 The Development View 9.3.5 The Physical View 9.3.6 The+1´´ View
9.4 The C4 View Model
9.4.1 The Layers of the C4 View Model
9.4.2 An Example
9.5 Effective Development of Architectural Views
9.6 Summary
References
Further Reading
10: Design Case Studies
10.1 Overview
10.2 Two Simple Case Studies
10.2.1 A Simple Service Application
10.2.2 A Generic Data Sorting Framework
10.3 A Card Game
10.3.1 Analysis
10.3.2 Two Abstract Classes
10.4 A Framework for Animation
10.4.1 Analysis
10.4.2 Two Examples of Using the Framework
10.5 An Analyzer for Frequencies of Words in a Text
10.5.1 Design Story and Use Cases
10.5.2 Analysis
10.5.3 More Details About Implementation
10.5.4 Details of the Application Control
10.6 Getting People to Sleep
10.6.1 Application Requirements
10.6.2 Use Cases
10.6.3 Logic View of the Design
10.6.4 Process View
10.7 Wheel of Fortune Game
10.7.1 The Requirements
10.7.2 A Use Case
10.7.3 First Three Views in the C4 View Model
10.7.4 The Code View
10.7.5 Console Output
References

✦ Subjects


Software Design; Software Development; Object-Oriented Software Engineering; Software Architecure; Systems Design; Systems Theory; System Analysis


πŸ“œ SIMILAR VOLUMES


An Introduction to Software Design : Con
✍ Chenglie Hu πŸ“‚ Library πŸ“… 2023 πŸ› Springer International Publishing 🌐 English

This textbook provides a balanced coverage on software design, including design principles, methodologies, and techniques in contexts of designing modules of small and larger sizes with a multi-paradigm viewpoint emphasizing design trade-off. Commonly used design diagrams and patterns are also cover

Software Design Methodology: From Princi
✍ Hong Zhu πŸ“‚ Library πŸ“… 2005 🌐 English

Software design methodology has come a long way since the 1960s and 1970s when programmers were limited to Pascal/C and SA/SD to create systems. When creating information systems for today's world, many factors must be taken into consideration including globalization, the software lifecycle, modelin

Software Design Methodology: From Princi
✍ Hong Zhu πŸ“‚ Library πŸ“… 2005 πŸ› MIX 🌐 English

Software design methodology has come a long way since the 1960s and 1970s when programmers were limited to Pascal/C and SA/SD to create systems. When creating information systems for today's world, many factors must be taken into consideration including globalization, the software lifecycle, modelin

The essential guide to user interface de
✍ Wilbert O. Galitz πŸ“‚ Library πŸ“… 2002 πŸ› Wiley Computer Pub 🌐 English

User Interface Design is a very complicated subject. This colossal book mimics closely a telephone book with a large amount of text-heaviness. If you get over the fact that there are a wall of words on most pages, the book actually has some great content and ideas. It generally talks about user int

The essential guide to user interface de
✍ Wilbert O. Galitz πŸ“‚ Library πŸ“… 2002 πŸ› Wiley 🌐 English

β€’ Well-designed graphical user interfaces (GUIs) for business systems can greatly increase user productivity, but designing them can be difficult and time consuming. This book walks developers through the basics of good interface design, using real-world examples from systems that are proven success

The essential guide to user interface de
✍ Wilbert O. Galitz πŸ“‚ Library πŸ“… 2002 πŸ› Wiley Computer Pub 🌐 English

User Interface Design is a very complicated subject. This colossal book mimics closely a telephone book with a large amount of text-heaviness. If you get over the fact that there are a wall of words on most pages, the book actually has some great content and ideas. It generally talks about user int