E-Book, Englisch, 436 Seiten
Reihe: Chapman & Hall/CRC Innovations in Software Engineering and Software Development Series
Dingle Software Essentials
1. Auflage 2014
ISBN: 978-1-4398-4121-1
Verlag: Taylor & Francis
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)
Design and Construction
E-Book, Englisch, 436 Seiten
Reihe: Chapman & Hall/CRC Innovations in Software Engineering and Software Development Series
ISBN: 978-1-4398-4121-1
Verlag: Taylor & Francis
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)
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 the Book:
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.
Zielgruppe
Software developers, professionals, and students who seek a sustainable perspective on software construction.
Autoren/Hrsg.
Fachgebiete
Weitere Infos & Material
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




