
Available:*
Library | Shelf Number | Material Type | Status |
|---|---|---|---|
Searching... Reference Library | 005.1 OTER | Reference Non-Fiction | Searching... Unknown |
Bound With These Titles
On Order
Summary
Summary
Taking a learn-by-doing approach, Software Engineering Design: Theory and Practice uses examples, review questions, chapter exercises, and case study assignments to provide students and practitioners with the understanding required to design complex software systems. Explaining the concepts that are immediately relevant to software designers, it begins with a review of software design fundamentals.
The text presents a formal top-down design process that consists of several design activities with varied levels of detail, including the macro-, micro-, and construction-design levels. As part of the top-down approach, it provides in-depth coverage of applied architectural, creational, structural, and behavioral design patterns. For each design issue covered, it includes a step-by-step breakdown of the execution of the design solution, along with an evaluation, discussion, and justification for using that particular solution.
The book outlines industry-proven software design practices for leading large-scale software design efforts, developing reusable and high-quality software systems, and producing technical and customer-driven design documentation. It also:
Offers one-stop guidance for mastering the Software Design & Construction sections of the official Software Engineering Body of Knowledge (SWEBOK®) Details a collection of standards and guidelines for structuring high-quality code Describes techniques for analyzing and evaluating the quality of software designsCollectively, the text supplies comprehensive coverage of the software design concepts students will need to succeed as professional design leaders. The section on engineering leadership for software designers covers the necessary ethical and leadership skills required of software developers in the public domain. The section on creating software design documents (SDD) familiarizes students with the software design notations, structural descriptions, and behavioral models required for SDDs.
Course notes, exercises with answers, online resources, and an instructor's manual are available upon qualified course adoption. Instructors can contact the author about these resources via the author's website: http://softwareengineeringdesign.com/
Author Notes
Carlos E. Otero, PhD, is assistant professor in the College of Technology and Innovation at the University of South Florida (USF). Prior to joining USF, Dr. Otero worked as assistant professor of software engineering in the Department of Mathematics and Computer Science at the University of Virginia, College at Wise, where he created the software engineering design course for Virginia's first and (at the time of writing) only EAC/ABET-accredited BS in software engineering.
Prior to his academic career, Dr. Otero spent 11 years in the private industry, where he worked as design and development engineer in a wide variety of military computer systems, including satellite communications systems, command and control systems, wireless security systems, and unmanned aerial vehicle systems. Currently, he continues to consult with industry in the areas of requirements engineering, software systems analysis, design and development, quality assurance, and systems engineering.
Dr. Otero received his BS in computer science, MS in software engineering, MS in systems engineering, and PhD in computer engineering from Florida Institute of Technology in Melbourne. He has published over 35 technical publications in scientific peer-reviewed journals and conferences proceedings. He is a senior member of the Institute of Electrical and Electronics Engineers (IEEE), an active professional member of the Association for Computing Machinery (ACM), and a member of several journal editorial boards in technology and engineering.
Table of Contents
| Introduction to Software Engineering Design |
| Chapter Objectives |
| Conceptual Overview |
| Engineering Design |
| Engineering Problem Solving |
| Initial State |
| Operational State |
| Thinking about the Problem |
| Problem Solution |
| Goal State |
| Software Engineering Design |
| Why Study Software Engineering Design? |
| Reasons for Studying Software Design in Product Development |
| Reasons for Studying Software Design in Project Management |
| Software Design Challenges |
| Design Challenge |
| 1 Requirements Volatility |
| Design Challenge |
| 2 Process |
| Design Challenge |
| 3 Technology |
| Design Challenge |
| 4 Ethical and Professional Practices |
| Design Challenge |
| 5 Managing Design Influences |
| Stakeholders |
| Development Organization's Structure |
| Context of Software Design |
| Software Design Process |
| Software Architecture |
| Detailed Design |
| Interface Design |
| Component Design |
| Construction Design |
| Human-Computer Interface Design |
| Software Design Documentation |
| Software Design Management |
| Roles of the Software Designer |
| Systems Engineer |
| Software Architect |
| Component Designer |
| Software Design Fundamentals |
| General Software Design Principles |
| Modularization |
| Abstraction |
| Encapsulation |
| Coupling |
| Cohesion |
| Separation of Interface and Implementation |
| Completeness and Sufficiency |
| Practical Software Design Considerations |
| Design for Minimizing Complexity |
| Design for Change |
| Software Design Strategies |
| Structured Design |
| Object-Oriented Design |
| Chapter Summary |
| Review Questions |
| References |
| Software Design with Unified Modeling Language |
| Chapter Objectives |
| Conceptual Overview |
| What Is UML? |
| Why Study UML? |
| The UML's Fundamentals |
| Structural Modeling |
| Component Diagrams |
| Logical versus Physical Components |
| Class Diagrams |
| Classes |
| Name Compartment |
| Attribute Compartment |
| Operation Compartment |
| Relationships |
| Dependency |
| Association |
| Aggregation |
| Composition |
| Generalization |
| Realization |
| Deployment Diagrams |
| Behavioral Modeling |
| Use Case Diagrams |
| Interaction Diagrams |
| Communication Diagrams |
| Sequence Diagrams |
| Concurrency in Interaction Diagrams |
| Chapter Summary |
| Review Questions |
| Chapter Exercises |
| References |
| Principles of Software Architecture |
| Chapter Objectives |
| Conceptual Overview |
| What Is Software Architecture? |
| Why Study Software Architecture? |
| Key Tasks in Architectural Design |
| Identifying Stakeholders' Concerns |
| Identifying Appropriate Architectural Views |
| Identifying Architectural Styles and Patterns |
| Identifying System Interfaces |
| Identifying Impact of Architectural Decisions in Organization |
| Impact on Customer Base |
| Impact on Budget and Schedule |
| Impact from Resource Availability |
| Identifying the System's Major Components and Interfaces |
| Evaluating and Validating the Architecture |
| Introducing Policies for Design Synchronicity |
| Problem Solving in Software Architecture |
| Inputs |
| Constraints |
| Outputs |
| Software Architecture Process |
| Understand and Evaluate Requirements |
| Elicitation |
| Requirement Sources |
| Elicitation Techniques |
| Analysis |
| Specification and Validation |
| Specific |
| Correct |
| Complete |
| Consistent |
| Attainable |
| Verifiable |
| Designing the Architecture |
| The 4 + 1 View Model |
| User View |
| Process View |
| Physical View |
| Development View |
| Logical View |
| Components and Connectors |
| Designing Logical Architectural Elements Using Data Flows |
| Designing Logical Architectural Elements Using Styles and Patterns |
| Designing the Process Architecture |
| Processes |
| Threads |
| Evaluating the Architecture |
| Chapter Summary |
| Review Questions |
| Chapter Exercises |
| References |
| Patterns and Styles in Software Architecture |
| Chapter Objectives |
| Conceptual Overview |
| Architectural Styles and Patterns |
| History of Architectural Styles and Patterns |
| Architectural Pattern Classification |
| Data-Centered Systems |
| Blackboard Pattern |
| Data Flow Systems |
| Pipe and Filter Pattern |
| Distributed Systems |
| Client-Server Pattern |
| Broker Pattern |
| Interactive Systems |
| Model-View-Controller Pattern |
| Hierarchical Systems |
| Main Program and Subroutine |
| Layered Pattern |
| Chapter Summary |
| Review Questions |
| Chapter Exercises |
| References |
| Principles of Detailed Design |
| Chapter Objectives |
| Conceptual Overview |
| What Is Detailed Design? |
| Key Tasks in Detailed Design |
| Detailed Design Process |
| Understanding the Architecture and Requirements |
| Creating Detailed Designs |
| Interface Design |
| External Interface Design |
| Internal Interface Design |
| Graphical User Interface Design |
| Designing Internal Structure of Components |
| Classes |
| Interfaces, Types, Subtypes, Dynamic Binding, and Polymorphism |
| Objects |
| Design Principles for Internal Component Design |
| Open-Closed Principle |
| Liskov Substitution Principle |
| Interface Segregation Principle |
| Programming Styles in Detailed Design |
| Function Names |
| Variable Names |
| Modeling Internal Behavior of Components |
| Design Components Using Design Patterns |
| Architectural versus Design Patterns |
| Classification of Design Patterns |
| Documenting Design Patterns |
| Document the Software Design |
| Interface Control Document |
| Software Version Document |
| Monitor and Control Implementation |
| Chapter Summary |
| Review Questions |
| Chapter Exercises |
| References |
| Creational Design Patterns in Detailed Design |
| Chapter Objectives |
| Conceptual Overview |
| Creational Design Patterns |
| Abstract Factory |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Factory Method |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Builder |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Prototype |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Singleton |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Chapter Summary |
| Review Questions |
| Chapter Exercises |
| Reference |
| Structural and Behavioral Patterns in Detailed Design |
| Chapter Objectives |
| Conceptual Overview |
| Structural Design Patterns |
| Adapter |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Composite |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Facade |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Behavioral Design Patterns |
| Iterator |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Observer |
| Problem |
| Structure |
| Implementation |
| Benefits |
| Chapter Summary |
| Review Questions |
| Chapter Exercises |
| Reference |
| Principles of Construction Design |
| Chapter Objectives |
| Conceptual Overview |
| What Is Construction Design? |
| Why Study Construction Design? |
| Behavioral Construction Design |
| Flow-Based Designs |
| State-Based Designs |
| Table-Based Designs |
| Limited-Entry Decision Table |
| Extended-Entry Decision Table |
| Mixed-Entry Decision Table |
| Table-Based Construction |
| Programming Design Language |
| Software Construction Using Styles |
| Formatting Conventions |
| Indentation |
| Brace Placement |
| Naming Conventions |
| Documentation Conventions |
| Documenting Files |
| Documenting Functions |
| Minimizing Complexity in Construction Design |
| Quality Evaluation of Construction Design |
| Peer Reviews |
| Unit Testing |
| Cyclomatic Complexity |
| Chapter Summary |
| Review Questions |
| Chapter Exercises |
| References |
| Human-Computer Interface Design; Jacob Somervell |
| Chapter Objectives |
| Conceptual Overview |
| What Is Human-Computer Interface Design? |
| Why Study Human-Computer Interface Design? |
| General HCI Design Principles |
| Human-Computer Interface Design Methods |
| Getting Started |
| Fidelity in Prototypes |
| Metaphors |
| Gestalt Principles |
| Reusing Earlier Designs |
| Evaluation of HCI Quality |
| Usability Testing |
| Analytic Testing |
| Empirical Testing |
| Chapter Summary |
| Review Questions |
| Chapter Exercises |
| References |
| Software Design Management, Leadership, and Ethics; Luis Daniel Otero |
| Chapter Objectives |
| Conceptual Overview |
| What Is Software Design Management? |
| Why Study Design Management? |
| The Concept of Quality |
| Design Management Framework |
| Planning Design Efforts |
| Scoping |
| Work Breakdown Structure |
| Budgeting |
| Organizing |
| Linear Responsibility Chart |
| Scheduling with Gantt Charts and Network Diagrams |
| Probability of Time to Completion |
| Establish Change Control Policy |
| Implementation Phase |
| Earned Value Management |
| Termination Stage |
| Leading the Design Effort |
| Personality Traits and Leadership |
| Personality Dimensions |
| Traits of Effective Leaders |
| Ethical Leadership |
| Power |
| Key Leadership Skills |
| Communication Skills |
| Networking Skills |
| Motivation Skills |
| Negotiation Skills |
| Ethics in Software Design |
| Public and Product Principles |
| Judgment Principle |
| Management Principle |
| Chapter Summary |
| Review Questions |
| Chapter Exercises |
| References |
| Index |