Software Essentials: Design and Construction (Chapman & Hall/CRC Innovations in Software Engineering and Software Development Series)

Software Essentials: Design and Construction (Chapman & Hall/CRC Innovations in Software Engineering and Software Development Series)

By: Adair Dingle (author)Hardback

Up to 2 WeeksUsually despatched within 2 weeks

£56.99 RRP £59.99  You save £3.00 (5%) With FREE Saver Delivery


Winner of a 2015 Alpha Sigma Nu Book Award, Software Essentials: Design and Construction explicitly defines and illustrates the basic elements of software design and construction, providing a solid understanding of control flow, abstract data types (ADTs), memory, type relationships, and dynamic behavior. This text evaluates the benefits and overhead of object-oriented design (OOD) and analyzes software design options. With a structured but hands-on approach, the book: Delineates malleable and stable characteristics of software design Explains how to evaluate the short- and long-term costs and benefits of design decisions Compares and contrasts design solutions, such as composition versus inheritance Includes supportive appendices and a glossary of over 200 common terms Covers key topics such as polymorphism, overloading, and more While extensive examples are given in C# and/or C++, often demonstrating alternative solutions, design-not syntax-remains the focal point of Software Essentials: Design and Construction. About the Cover: Although capacity may be a problem for a doghouse, other requirements are usually minimal. Unlike skyscrapers, doghouses are simple units. They do not require plumbing, electricity, fire alarms, elevators, or ventilation systems, and they do not need to be built to code or pass inspections. The range of complexity in software design is similar. Given available software tools and libraries-many of which are free-hobbyists can build small or short-lived computer apps. Yet, design for software longevity, security, and efficiency can be intricate-as is the design of large-scale systems. How can a software developer prepare to manage such complexity? By understanding the essential building blocks of software design and construction.

About Author

Adair Dingle is a professor of computer science and software engineering at Seattle University, Washington, USA. She holds a B.Sc in mathematics from Duke University, Durham, North Carolina, USA; a M.Sc in computer science from Northwestern University, Evanston, Illinois, USA; and a Ph.D in computer science from the University of Texas at Dallas, USA. She is coauthor of the book, C++: Memory First, and her work has been published in numerous refereed journals and conference proceedings. Her research interests include computer game dynamics, efficient memory management for object-oriented programming languages and applications, and patterns as tools for software engineering education.


Preface Acknowledgments Detailed Book Outline Section I: Software Construction Software Complexity and Modeling Modern Software Software Design Software Utility Software Production Software Engineering The Software Development Life Cycle (SDLC) Software Process Methodologies Models Requirements Analysis and Specification Software Architecture Model View Controller Code Construction Software Integration Documentation Summary Design Insights Software Development Software Execution General Purpose Utility and Support Programming Language Evolution Compilers Software Design ADTs Class Construct Object-Oriented Programming Languages UML Libraries and Frameworks Software Construction Fundamentals Summary Design Insights Section II: Software Fundamentals Functionality Control Flow Structured Control Flow Controlled Interruption to Sequential Execution Readability Boolean Logic Short-Circuit Evaluation Recursion Sequential Execution Optimization Inlining Summary Design Insights Memory Abstraction of Memory Heap Memory C++ Deallocation C#/Java Heap Memory Management Memory Overhead Allocation Memory Reclamation Garbage Collection Reference Counting Design: Storage versus Computation Summary Design Insights Design and Documentation Object-Oriented Design Class Functionality Constructors Accessors and Mutators Utility Functions Destructors Programming by Contract Defensive Programming Precondition and Postcondition Invariants Design Example Contractual Expectations OO Design Principles Summary Design Insights Section III: Software Design Structural Design Relationships Composition Containment Class Design: Has-a or Holds-a? Inheritance Automate Subtype Checking Inheritance Design Code Reuse Class Design: Has-a or Is-a? Contractual Expectations OO Design Principles Summary Design Insights Behavioral Design Inheritance for Functionality Polymorphism Overloading Generics Subtype Polymorphism Static Binding versus Dynamic Binding Heterogeneous Collections Virtual Function Table Software Design Abstract Classes Real-World Example: Disassembler Virtual Function Table Language Differences Type Introspection C++ Virtual Destructors Accessibility of C++ Virtual Functions OO Design Principles Summary Design Insights Design Alternatives and Perspectives Comparative Design Class Design Types Concrete Class Abstract Class Node Class Wrappers Delegate Handle: Smart Pointers Design Specifications for Inheritance Inheritance versus Composition Multiple Inheritance Multiple Inheritance Imperfections Single Inheritance with Composition Simulated Design without Inheritance Multiple Inheritance Design Evaluating Design Options Relevance of Type OO Design Principles Summary Design Insights Section IV: Software Durability Software Correctness Exceptions Exceptions and Software Design Testing Design Scale Perspective Coverage Data Values Software Qualities Summary Design Insights Software Longevity Software Maintenance Software Evolution Nonfunctional Properties Refactoring Reverse Engineering Summary Design Insights Glossary: Definitions and Conceptual Details References Appendix A: Memory and the Pointer Construct Appendix B: Heap Memory and Aliases Appendix C: Function Pointers Appendix D: Operator Overloading Index

Product Details

  • ISBN13: 9781439841204
  • Format: Hardback
  • Number Of Pages: 436
  • ID: 9781439841204
  • weight: 862
  • ISBN10: 1439841209

Delivery Information

  • Saver Delivery: Yes
  • 1st Class Delivery: Yes
  • Courier Delivery: Yes
  • Store Delivery: Yes

Prices are for internet purchases only. Prices and availability in WHSmith Stores may vary significantly