E-Book, Englisch, 368 Seiten
Otero Software Engineering Design
1. Auflage 2012
ISBN: 978-1-4665-6586-9
Verlag: Taylor & Francis
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)
Theory and Practice
E-Book, Englisch, 368 Seiten
Reihe: Applied Software Engineering Series
ISBN: 978-1-4665-6586-9
Verlag: Taylor & Francis
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)
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 designs
Collectively, 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/
Zielgruppe
Advanced undergraduate and graduate students in software engineering, along with professional software engineers.
Autoren/Hrsg.
Fachgebiete
Weitere Infos & Material
Introduction to Software Engineering Design
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
Software Design with Unified Modeling Language
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
Principles of Software Architecture
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
Patterns and Styles in Software Architecture
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
Principles of Detailed Design
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
Creational Design Patterns in Detailed Design
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
Structural and Behavioral Patterns in Detailed Design
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
Principles of Construction Design
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
Human–Computer Interface Design; Jacob Somervell
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
Software Design Management, Leadership, and Ethics; Luis Daniel Otero
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
Index
Each chapter includes chapter objectives, a conceptual overview, summary, exercises, and references




