Software Design

Author(s): James N Helfrich

Edition: 2

Copyright: 2024

Choose Your Format

Choose Your Platform | Help Me Choose

Choose Your Platform | Help Me Choose

Choose Your Platform | Help Me Choose

Ebook Package

$88.00 USD

ISBN 9798765799659

Details Ebook w/KHQ 730 days

Ebook


This product is currently not available.

Ebook Package


This product is currently not available.

Ebook


This product is currently not available.

Software Design teaches students how to design better software at a variety of different levels. Beginning at the algorithm level (in Unit 0) and up through functions (Unit 1), classes (Unit 2 and 3) and finally component and system design (Unit 4), Software Design helps students evaluate the quality of a design, come up with better designs, and appreciate good design when they see it. This is accomplished by providing tools with which students can capture design ideas, analyze designs, and communicate designs to other engineers. Software Design also provides a suite of metrics, each of which providing a lens through which they can see the benefits and deficits of various design options. Additionally, Software Design provides tools and techniques allowing students to build quality into their programs. Each of these tools and techniques build on each other in a carefully orchestrated progression. Finally, Software Design provides a collection of idioms, best practices, and design patterns there were carefully collected from researchers and practitioners the world over.

 

Ancillary Materials Include: 

  • Slide Decks for every chapter. These slides have:

    • All the examples in the textbook

    • All the exercises with solutions

    • All the problems with solutions

  • A growing library of videos for every chapter .

 

Learn more about the text:

 

Chapter 0.0: Software Design

Unit 0: Algorithm Design 
Chapter 0.1 Tool: Flowchart
Chapter 0.2 Tool: Pseudocode 
Chapter 0.3 Metric: Efficiency
Chapter 0.4 Metric: Maintainability
Chapter 0.5 Quality: Test Case 
Chapter 0.6 Quality: Assert
Chapter 0.7 Quality: Trace
Chapter 0.8 Strategy: Decisions
Chapter 0.9 Strategy: Loops
Chapter 0.10 Strategy: Collections

Unit 1: Modularization Design 
Chapter 1.0 Tool: Structure Chart
Chapter 1.1 Tool: Data Flow Diagram
Chapter 1.2 Metric: Cohesion 
Chapter 1.3 Metric: Coupling 
Chapter 1.4 Quality: Driver
Chapter 1.5 Strategy: Source Management 
Chapter 1.6 Strategy: Recursion
Chapter 1.7 Strategy: Top-Down
Chapter 1.8 Strategy: Bottom-Up 
Chapter 1.9 Strategy: Functional

Unit 2: Encapsulation Design 
Chapter 2.0 Tool: Class Diagram I 
Chapter 2.1 Metric: Convenience 
Chapter 2.2 Metric: Fidelity
Chapter 2.3 Metric: Abstraction
Chapter 2.4 Metric: Robustness
Chapter 2.5 Quality: Unit Test I
Chapter 2.6 Quality: Test-Driven
Chapter 2.7 Strategy: Noun Identification
Chapter 2.8 Strategy: Metaphor 
Chapter 2.9 Strategy: Data Protection

Unit 3: Class Relation Design 
Chapter 3.0 Tool: Class Diagram II 
Chapter 3.1 Metric: Adaptability
Chapter 3.2 Metric: Alignment
Chapter 3.3 Metric: Redundancy 
Chapter 3.4 Quality: Unit Test II
Chapter 3.5 Quality: Debugger
Chapter 3.6 Quality: Integration Test 
Chapter 3.7 Strategy: Polymorphism
Chapter 3.8 Strategy: Is-a and Has-a 
Chapter 3.9 Strategy: Large Inheritance Trees
Chapter 3.10 Strategy: Object Creation

Unit 4: Component & System Design 
Chapter 4.0 Tool: Component Diagram
Chapter 4.1 Tool: Design Description 
Chapter 4.2 Quality: V-Model
Chapter 4.3 Strategy: Algorithm Abstraction 
Chapter 4.4 Strategy: Message Passing 
Chapter 4.5 Strategy: Separation of Concerns
Chapter 4.6 Strategy: Command Passing
Chapter 4.7 Strategy: Interfaces 
Chapter 4.8 Strategy: Tokens and Entities
Chapter 4.9 Strategy: Layered System Design
Chapter 4.10 Strategy: State 

Appendix

  • Exercises
  • Instructors Resources
  • Powerpoint
  • Video Samples
James N Helfrich

James Helfrich received his Bachelor’s Degree and Master’s Degree from the University of Pennsylvania, and his PhD from Idaho State University. After working as a Software Developer and Program Manager at the Microsoft Corporation for 11 years on the Office family of product, he began teaching Software Engineering at Brigham Young University  - Idaho. Dr. Helfrich has taught thousands of students and prepared them for high paying software development jobs. Dr. Helfrich has written numerous scholarly articles on a variety of topics and has published four textbooks.

Software Design teaches students how to design better software at a variety of different levels. Beginning at the algorithm level (in Unit 0) and up through functions (Unit 1), classes (Unit 2 and 3) and finally component and system design (Unit 4), Software Design helps students evaluate the quality of a design, come up with better designs, and appreciate good design when they see it. This is accomplished by providing tools with which students can capture design ideas, analyze designs, and communicate designs to other engineers. Software Design also provides a suite of metrics, each of which providing a lens through which they can see the benefits and deficits of various design options. Additionally, Software Design provides tools and techniques allowing students to build quality into their programs. Each of these tools and techniques build on each other in a carefully orchestrated progression. Finally, Software Design provides a collection of idioms, best practices, and design patterns there were carefully collected from researchers and practitioners the world over.

 

Ancillary Materials Include: 

  • Slide Decks for every chapter. These slides have:

    • All the examples in the textbook

    • All the exercises with solutions

    • All the problems with solutions

  • A growing library of videos for every chapter .

 

Learn more about the text:

 

Chapter 0.0: Software Design

Unit 0: Algorithm Design 
Chapter 0.1 Tool: Flowchart
Chapter 0.2 Tool: Pseudocode 
Chapter 0.3 Metric: Efficiency
Chapter 0.4 Metric: Maintainability
Chapter 0.5 Quality: Test Case 
Chapter 0.6 Quality: Assert
Chapter 0.7 Quality: Trace
Chapter 0.8 Strategy: Decisions
Chapter 0.9 Strategy: Loops
Chapter 0.10 Strategy: Collections

Unit 1: Modularization Design 
Chapter 1.0 Tool: Structure Chart
Chapter 1.1 Tool: Data Flow Diagram
Chapter 1.2 Metric: Cohesion 
Chapter 1.3 Metric: Coupling 
Chapter 1.4 Quality: Driver
Chapter 1.5 Strategy: Source Management 
Chapter 1.6 Strategy: Recursion
Chapter 1.7 Strategy: Top-Down
Chapter 1.8 Strategy: Bottom-Up 
Chapter 1.9 Strategy: Functional

Unit 2: Encapsulation Design 
Chapter 2.0 Tool: Class Diagram I 
Chapter 2.1 Metric: Convenience 
Chapter 2.2 Metric: Fidelity
Chapter 2.3 Metric: Abstraction
Chapter 2.4 Metric: Robustness
Chapter 2.5 Quality: Unit Test I
Chapter 2.6 Quality: Test-Driven
Chapter 2.7 Strategy: Noun Identification
Chapter 2.8 Strategy: Metaphor 
Chapter 2.9 Strategy: Data Protection

Unit 3: Class Relation Design 
Chapter 3.0 Tool: Class Diagram II 
Chapter 3.1 Metric: Adaptability
Chapter 3.2 Metric: Alignment
Chapter 3.3 Metric: Redundancy 
Chapter 3.4 Quality: Unit Test II
Chapter 3.5 Quality: Debugger
Chapter 3.6 Quality: Integration Test 
Chapter 3.7 Strategy: Polymorphism
Chapter 3.8 Strategy: Is-a and Has-a 
Chapter 3.9 Strategy: Large Inheritance Trees
Chapter 3.10 Strategy: Object Creation

Unit 4: Component & System Design 
Chapter 4.0 Tool: Component Diagram
Chapter 4.1 Tool: Design Description 
Chapter 4.2 Quality: V-Model
Chapter 4.3 Strategy: Algorithm Abstraction 
Chapter 4.4 Strategy: Message Passing 
Chapter 4.5 Strategy: Separation of Concerns
Chapter 4.6 Strategy: Command Passing
Chapter 4.7 Strategy: Interfaces 
Chapter 4.8 Strategy: Tokens and Entities
Chapter 4.9 Strategy: Layered System Design
Chapter 4.10 Strategy: State 

Appendix

James N Helfrich

James Helfrich received his Bachelor’s Degree and Master’s Degree from the University of Pennsylvania, and his PhD from Idaho State University. After working as a Software Developer and Program Manager at the Microsoft Corporation for 11 years on the Office family of product, he began teaching Software Engineering at Brigham Young University  - Idaho. Dr. Helfrich has taught thousands of students and prepared them for high paying software development jobs. Dr. Helfrich has written numerous scholarly articles on a variety of topics and has published four textbooks.

  • Exercises
  • Instructors Resources
  • Powerpoint
  • Video Samples