Software Development and Professional Practice [electronic resource] /
Dooley, John,1952-author.
Software Development and Professional Practice reveals how to design and code great software. What factors do you take into account? What makes a good design? What methods and processes are out there for designing software? Is designing small programs different than designing large ones? How can you tell a good design from a bad one? You'll learn the principles of good software design, and how to turn those principles back into great code. Software Development and Professional Practice is also about code construction—how to write great programs and make them work. What, you say? You've already written eight gazillion programs! Of course I know how to write code! Well, in this book you'll re-examine what you already do, and you'll investigate ways to improve. Using the Java language, you'll look deeply into coding standards, debugging, unit testing, modularity, and other characteristics of good programs. You'll also talk about reading code. How do you read code? What makes a program readable? Can good, readable code replace documentation? How much documentation do you really need? This book introduces you to software engineering—the application of engineering principles to the development of software. What are these engineering principles? First, all engineering efforts follow a defined process. So, you'll be spending a bit of time talking about how you run a software development project and the different phases of a project. Secondly, all engineering work has a basis in the application of science and mathematics to real-world problems. And so does software development! You'll therefore take the time to examine how to design and implement programs that solve specific problems. Finally, this book is also about human-computer interaction and user interface design issues. A poor user interface can ruin any desire to actually use a program; in this book, you'll figure out why and how to avoid those errors. Software Development and Professional Practice covers many of the topics described for the ACM Computing Curricula 2001 course C292c Software Development and Professional Practice. It is designed to be both a textbook and a manual for the working professional.
Description based upon print version of record.
Title Page; Copyright Page; Dedication Page; Contents at a Glance; Table of Contents; About the Author; About the Technical Reviewer; Acknowledgments; Preface; CHAPTER 1 Introduction to Software Development; What We're Doing; So, How to Develop Software?; Conclusion; References; CHAPTER 2 Process Life Cycle Models; A Model That's not a Model At All: Code and Fix; Cruising over the Waterfall; Backing Up the Waterfall; Loops Are Your Friend; Evolving the Incremental Model; Agile Is as Agile Does; eXtreme Programming (XP); XP Overview; XP Motivation; The Four Variables; The Four Values
The 15 PrinciplesThe Four Basic Activities; Implementing XP: The 12 Practices; The XP Life Cycle; Scrum, mate; Conclusion; References; CHAPTER 3 Project Management Essentials; Project Planning; Project Organization; Risk Analysis; Resource Requirements; Work Breakdown and Task Estimates; Project Schedule; Project Oversight; Status Reviews and Presentations; Defects; The Post-Mortem; Conclusion; References; CHAPTER 4 Requirements; What Types of Requirements Are We Talking About Here?; Functional Specification?; But I Don't Like Writing!; That Natural Language Thing
Outline of a Functional SpecificationOverview; Disclaimer; Author's Name; Scenarios of Typical Usage; Detailed Screen-By-Screen Specifications; Non-requirements; Open Issues; Design and Feature Ideas; Backlog; One More Thing; Types of Requirements; User Requirements; Domain Requirements; Non-functional Requirements; Non-requirements; Requirements Digging; Why Requirements Digging Is Hard; Problems of Scope; Problems of Understanding; Problems of Volatility; Non-technical Problems; Analyzing the Requirements; Conclusion; References; CHAPTER 5 Software Architecture
General Architectural PatternsPipe-and-filter Architecture; An Object-Oriented Architectural Pattern; An MVC Example: Let's Hunt!; The Problem; Model; View; Controller; Model; The Client-Server Architectural Pattern; The Layered Approach; The Main Program: Subroutine Architectural Pattern; Conclusion; References; CHAPTER 6 Design Principles; The Design Process; Desirable Design Characteristics (Things Your Design Should Favor); Design Heuristics; Designers and Creativity; Conclusion; References; CHAPTER 7 Structured Design; Structured Programming; Stepwise Refinement
Example of Stepwise Refinement: The Eight-Queens ProblemProposed Solution 1; Proposed Solution 2; Proposed Solution 3; Refinement 1; Refinement 2; Modular Decomposition; Example: Keyword in Context: Indexes for You and Me; Top-Down Decomposition; Modular Decomposition of KWIC; Conclusion; References; Appendix: The Complete Non-Recursive Eight-Queens Program; CHAPTER 8 Object-Oriented Analysis and Design; An Object-Oriented Analysis and Design Process; Doing the Process; The Problem Statement; The Feature List; Use Cases; Decompose the Problem; Class Diagrams; Code Anyone?; Conclusion
References
Includes bibliographical references and index.
Software Development and Professional Practice reveals how to design and code great software. What factors do you take into account? What makes a good design? What methods and processes are out there for designing software? Is designing small programs different than designing large ones? How can you tell a good design from a bad one? You'll learn the principles of good software design, and how to turn those principles back into great code. Software Development and Professional Practice is also about code construction—how to write great programs and make them work. What, you say? You've already written eight gazillion programs! Of course I know how to write code! Well, in this book you'll re-examine what you already do, and you'll investigate ways to improve. Using the Java language, you'll look deeply into coding standards, debugging, unit testing, modularity, and other characteristics of good programs. You'll also talk about reading code. How do you read code? What makes a program readable? Can good, readable code replace documentation? How much documentation do you really need? This book introduces you to software engineering—the application of engineering principles to the development of software. What are these engineering principles? First, all engineering efforts follow a defined process. So, you'll be spending a bit of time talking about how you run a software development project and the different phases of a project. Secondly, all engineering work has a basis in the application of science and mathematics to real-world problems. And so does software development! You'll therefore take the time to examine how to design and implement programs that solve specific problems. Finally, this book is also about human-computer interaction and user interface design issues. A poor user interface can ruin any desire to actually use a program; in this book, you'll figure out why and how to avoid those errors. Software Development and Professional Practice covers many of the topics described for the ACM Computing Curricula 2001 course C292c Software Development and Professional Practice. It is designed to be both a textbook and a manual for the working professional.
Java (Computer program language).
Software engineering.
Computer programming.
Java.
Software Engineering/Programming and Operating Systems.
Programming Techniques.