0%

Book Description

The field of software engineering may value team productivity over individual growth, but legendary computer scientist Randall Hyde wants to make promising programmers into masters of their craft. To that end, Engineering Software—the latest volume in Hyde’s highly regarded Write Great Code series—offers his signature in-depth coverage of everything from development methodologies and strategic productivity to object-oriented design requirements and system documentation.

You’ll learn:

•Why following the software craftsmanship model can lead you to do your best work
•How to utilize traceability to enforce consistency within your documentation
•The steps for creating your own UML requirements with use-case analysis
•How to leverage the IEEE documentation standards to create better software

This advanced apprenticeship in the skills, attitudes, and ethics of quality software development reveals the right way to apply engineering principles to programming. Hyde will teach you the rules, and show you when to break them. Along the way, he offers illuminating insights into best practices while empowering you to invent new ones.

Brimming with resources and packed with examples, Engineering Software is your go-to guide for writing code that will set you apart from your peers.

Table of Contents

  1. Cover Page
  2. Title Page
  3. Copyright Page
  4. About the Author
  5. About the Technical Reviewer
  6. BRIEF CONTENTS
  7. CONTENTS IN DETAIL
  8. ACKNOWLEDGMENTS
  9. INTRODUCTION
    1. Assumptions and Prerequisites
    2. What Is Great Code?
    3. Programmer Classifications
    4. So You Want to Be a Great Programmer
    5. A Final Note on Ethics and Character
    6. For More Information
  10. PART I: PERSONAL SOFTWARE ENGINEERING
  11. 1 SOFTWARE DEVELOPMENT METAPHORS
    1. 1.1 What Is Software?
    2. 1.2 Parallels to Other Fields
    3. 1.3 Software Engineering
    4. 1.4 Software Craftsmanship
    5. 1.5 The Path to Writing Great Code
    6. 1.6 For More Information
  12. 2 PRODUCTIVITY
    1. 2.1 What Is Productivity?
    2. 2.2 Programmer Productivity vs. Team Productivity
    3. 2.3 Man-Hours and Real Time
    4. 2.4 Conceptual and Scope Complexity
    5. 2.5 Predicting Productivity
    6. 2.6 Metrics and Why We Need Them
    7. 2.7 How Do We Beat 10 Lines per Day?
    8. 2.8 Estimating Development Time
    9. 2.9 Crisis Mode Project Management
    10. 2.10 How to Be More Productive
    11. 2.11 For More Information
  13. 3 SOFTWARE DEVELOPMENT MODELS
    1. 3.1 The Software Development Life Cycle
    2. 3.2 The Software Development Model
    3. 3.3 Software Development Methodologies
    4. 3.4 Models and Methodologies for the Great Programmer
    5. 3.5 For More Information
  14. PART II: UML
  15. 4 AN INTRODUCTION TO UML AND USE CASES
    1. 4.1 The UML Standard
    2. 4.2 The UML Use Case Model
    3. 4.3 The UML System Boundary Diagrams
    4. 4.4 Beyond Use Cases
    5. 4.5 For More Information
  16. 5 UML ACTIVITY DIAGRAMS
    1. 5.1 UML Activity State Symbols
    2. 5.2 Extending UML Activity Diagrams
    3. 5.3 For More Information
  17. 6 UML CLASS DIAGRAMS
    1. 6.1 Object-Oriented Analysis and Design in UML
    2. 6.2 Visibility in a Class Diagram
    3. 6.3 Class Attributes
    4. 6.4 Class Operations
    5. 6.5 UML Class Relationships
    6. 6.6 Objects
    7. 6.7 For More Information
  18. 7 UML INTERACTION DIAGRAMS
    1. 7.1 Sequence Diagrams
    2. 7.2 Collaboration Diagrams
    3. 7.3 For More Information
  19. 8 MISCELLANEOUS UML DIAGRAMS
    1. 8.1 Component Diagrams
    2. 8.2 Package Diagrams
    3. 8.3 Deployment Diagrams
    4. 8.4 Composite Structure Diagrams
    5. 8.5 Statechart Diagrams
    6. 8.6 More UML
    7. 8.7 For More Information
  20. PART III: DOCUMENTATION
  21. 9 SYSTEM DOCUMENTATION
    1. 9.1 System Documentation Types
    2. 9.2 Traceability
    3. 9.3 Validation, Verification, and Reviews
    4. 9.4 Reducing Development Costs Using Documentation
    5. 9.5 For More Information
  22. 10 REQUIREMENTS DOCUMENTATION
    1. 10.1 Requirement Origins and Traceability
    2. 10.2 Design Goals
    3. 10.3 The System Requirements Specification Document
    4. 10.4 The Software Requirements Specification Document
    5. 10.5 Creating Requirements
    6. 10.6 Use Cases
    7. 10.7 Creating DAQ Software Requirements from the Use Cases
    8. 10.8 (Selected) DAQ Software Requirements (from SRS)
    9. 10.9 Updating the Traceability Matrix with Requirement Information
    10. 10.10 For More Information
  23. 11 SOFTWARE DESIGN DESCRIPTION DOCUMENTATION
    1. 11.1 IEEE Std 1016-1998 vs. IEEE Std 1016-2009
    2. 11.2 IEEE 1016-2009 Conceptual Model
    3. 11.3 SDD Required Contents
    4. 11.4 SDD Traceability and Tags
    5. 11.5 A Suggested SDD Outline
    6. 11.6 A Sample SDD
    7. 11.7 Updating the Traceability Matrix with Design Information
    8. 11.8 Creating a Software Design
    9. 11.9 For More Information
  24. 12 SOFTWARE TEST DOCUMENTATION
    1. 12.1 The Software Test Documents in Std 829
    2. 12.2 Test Plans
    3. 12.3 Software Review List Documentation
    4. 12.4 Software Test Case Documentation
    5. 12.5 Software Test Procedure Documentation
    6. 12.6 Level Test Logs
    7. 12.7 Anomaly Reports
    8. 12.8 Test Reports
    9. 12.9 Do You Really Need All of This?
    10. 12.10 For More Information
  25. AFTERWORD: DESIGNING GREAT CODE
  26. GLOSSARY
  27. INDEX
  28. Footnotes
3.138.141.202