Object-Oriented Software Engineering Using UML, Patterns, and Java
Inbunden, Engelska, 2009
4 919 kr
Finns i fler format (1)
For courses in Software Engineering, Software Development, or Object-Oriented Design and Analysis at the Junior/Senior or Graduate level. This text can also be utilized in short technical courses or in short, intensive management courses.
Object-Oriented Software Engineering Using UML, Patterns, and Java, 3e, shows readers how to use both the principles of software engineering and the practices of various object-oriented tools, processes, and products.
Using a step-by-step case study to illustrate the concepts and topics in each chapter, Bruegge and Dutoit emphasize learning object-oriented software engineer through practical experience: readers can apply the techniques learned in class by implementing a real-world software project.
The third edition addresses new trends, in particular agile project management (Chapter 14 Project Management) and agile methodologies (Chapter 16 Methodologies).
Produktinformation
- Utgivningsdatum2009-10-19
- Mått10 x 10 x 10 mm
- Vikt1 320 g
- FormatInbunden
- SpråkEngelska
- Antal sidor816
- Upplaga3
- FörlagPearson Education
- ISBN9780136061250
Tillhör följande kategorier
Dr. Bernd Bruegge has been studying and teaching Software Engineering at Carnegie Mellon University for 20 years, where he received his masters and doctorate degrees. He received his Diplom from the University of Hamburg. He is now a university professor of Computer Science with a chair for Applied Software Engineering at the Technische Universitat Munchen and an adjunct faculty member of Carnegie Mellon University. He has taught object-oriented software engineering project courses on the text materials and website described in this book since 1988. He won the Herbert A. Simon Excellence in Teaching Award at Carnegie Mellon University in 1995. Bruegge is also an international consultant and has used the techniques in this book to design and implement many real systems, including an engineering feedback system for DaimlerChrysler, an environmental modeling system for the U.S. Environmental Protection Agency, an accident management system for a municipal police department and a 3-D visualization system for the Munich Airport, to name just a few. Dr. Allen Dutoit works in the aerospace industry in the area of avionics systems. He received his M.S. and Ph.D. from Carnegie Mellon University and his Diplôme d'Ingenieur from the Swiss Federal Institute of Technology in Lausanne. He has taught software engineering project courses with Professor Bruegge since 1993, both at Carnegie Mellon University and the Technische Universitat Munchen, where they used and refined the methods described in this book. Dutoit's research covered several areas of software engineering and object-oriented systems, including requirements engineering, rationale management, distributed development, and prototype-based systems. He was previously affiliated with the Software Engineering Institute and the Institute for Complex Engineered Systems at Carnegie Mellon University.
- Foreword PrefaceAcknowledgments PART I Getting StartedChapter 1 Introduction to Software Engineering 1.1 Introduction: Software Engineering Failures 1.2 What Is Software Engineering? 1.2.1 Modeling 1.2.2 Problem Solving 1.2.3 Knowledge Acquisition 1.2.4 Rationale 1.3 Software Engineering Concepts 11.3.1 Participants and Roles1.3.2 Systems and Models1.3.3 Work Products1.3.4 Activities, Tasks, and Resources1.3.5 Functional and Nonfunctional Requirements1.3.6 Notations, Methods, and Methodologies1.4 Software Engineering Development Activities1.4.1 Requirements Elicitation1.4.2 Analysis1.4.3 System Design1.4.4 Object Design1.4.5 Implementation1.4.6 Testing1.5 Managing Software Development1.5.1 Communication1.5.2 Rationale Management1.5.3 Software Configuration Management1.5.4 Project Management1.5.5 Software Life Cycle1.5.6 Putting It All Together1.6 ARENA Case Study1.7 Further Reading1.8 Exercises Chapter 2 Modeling with UML2.1 Introduction2.2 An Overview of UML2.2.1 Use Case Diagrams2.2.2 Class Diagrams2.2.3 Interaction Diagrams2.2.4 State Machine Diagrams2.2.5 Activity Diagrams2.3 Modeling Concepts2.3.1 Systems, Models, and Views2.3.2 Data Types, Abstract Data Types, and Instances2.3.3 Classes, Abstract Classes, and Objects2.3.4 Event Classes, Events, and Messages2.3.5 Object-Oriented Modeling2.3.6 Falsification and Prototyping2.4 A Deeper View into UML2.4.1 Use Case Diagrams2.4.2 Class Diagrams2.4.3 Interaction Diagrams2.4.4 State Machine Diagrams2.4.5 Activity Diagrams2.4.6 Diagram Organization2.4.7 Diagram Extensions2.5 Further Readings2.6 Exercises Chapter 3 Project Organization and Communication3.1 Introduction: A Rocket Example3.2 An Overview of Projects3.3 Project Organization Concepts3.3.1 Project Organizations3.3.2 Roles3.3.3 Tasks and Work Products3.3.4 Schedule3.4 Project Communication Concepts3.4.1 Planned Communication3.4.2 Unplanned Communication3.4.3 Communication Mechanisms 3.5 Organizational Activities3.5.1 Joining a Team3.5.2 Joining the Communication Infrastructure3.5.3 Attending Team Status Meetings3.5.4 Organizing Client and Project Reviews3.6 Further Readings3.7 Exercises PART II Dealing with ComplexityChapter 4 Requirements Elicitation4.1 Introduction: Usability Examples4.2 An Overview of Requirements Elicitation4.3 Requirements Elicitation Concepts4.3.1 Functional Requirements4.3.2 Nonfunctional Requirements4.3.3 Completeness, Consistency, Clarity, and Correctness4.3.4 Realism, Verifiability, and Traceability4.3.5 Greenfield Engineering, Reengineering, and Interface Engineering4.4 Requirements Elicitation Activities4.4.1 Identifying Actors4.4.2 Identifying Scenarios4.4.3 Identifying Use Cases4.4.4 Refining Use Cases4.4.5 Identifying Relationships among Actors and Use Cases4.4.6 Identifying Initial Analysis Objects4.4.7 Identifying Nonfunctional Requirements4.5 Managing Requirements Elicitation4.5.1 Negotiating Specifications with Clients: Joint Application Design4.5.2 Maintaining Traceability4.5.3 Documenting Requirements Elicitation4.6 ARENA Case Study4.6.1 Initial Problem Statement4.6.2 Identifying Actors and Scenarios4.6.3 Identifying Use Cases4.6.4 Refining Use Cases and Identifying Relationships4.6.5 Identifying Nonfunctional Requirements4.6.6 Lessons Learned4.7 Further Readings4.8 Exercises Chapter 5Analysis5.1 Introduction: An Optical Illusion5.2 An Overview of Analysis5.3 Analysis Concepts5.3.1 Analysis Object Models and Dynamic Models5.3.2 Entity, Boundary, and Control Objects5.3.3 Generalization and Specialization5.4 Analysis Activities: From Use Cases to Objects5.4.1 Identifying Entity Objects5.4.2 Identifying Boundary Objects5.4.3 Identifying Control Objects5.4.4 Mapping Use Cases to Objects with Sequence Diagrams5.4.5 Modeling Interactions among Objects with CRC Cards5.4.6 Identifying Associations5.4.7 Identifying Aggregates5.4.8 Identifying Attributes5.4.9 Modeling State-Dependent Behavior of Individual Objects5.4.10 Modeling Inheritance Relationships between Objects5.4.11 Reviewing the Analysis Model5.4.12 Analysis Summary5.5 Managing Analysis5.5.1 Documenting Analysis5.5.2 Assigning Responsibilities5.5.3 Communicating about Analysis5.5.4 Iterating over the Analysis Model5.5.5 Client Sign-Off5.6 ARENA Case Study5.6.1 Identifying Entity Objects5.6.2 Identifying Boundary Objects5.6.3 Identifying Control Objects5.6.4 Modeling Interactions Among Objects5.6.5 Reviewing and Consolidating the Analysis Model5.6.6 Lessons Learned5.7 Further Readings5.8 Exercises Chapter 6System Design: Decomposing the System6.1 Introduction: A Floor Plan Example6.2 An Overview of System Design6.3 System Design Concepts6.3.1 Subsystems and Classes6.3.2 Services and Subsystem Interfaces6.3.3 Coupling and Cohesion6.3.4 Layers and Partitions6.3.5 Architectural Styles6.4 System Design Activities: From Objects to Subsystems6.4.1 Starting Point: Analysis Model for a Route Planning System6.4.2 Identifying Design Goals6.4.3 Identifying Subsystems6.5 Further Readings6.6 Exercises Chapter 7System Design: Addressing Design Goals7.1 Introduction: A Redundancy Example7.2 An Overview of System Design Activities7.3 Concepts: UML Deployment Diagrams7.4 System Design Activities: Addressing Design Goals7.4.1 Mapping Subsystems to Processors and Components7.4.2 Identifying and Storing Persistent Data7.4.3 Providing Access Control7.4.4 Designing the Global Control Flow7.4.5 Identifying Services7.4.6 Identifying Boundary Conditions7.4.7 Reviewing System Design7.5 Managing System Design7.5.1 Documenting System Design7.5.2 Assigning Responsibilities7.5.3 Communicating about System Design7.5.4 Iterating over the System Design7.6 ARENA Case Study7.6.1 Identifying Design Goals7.6.2 Identifying Subsystems7.6.3 Mapping Subsystems to Processors and Components7.6.4 Identifying and Storing Persistent Data7.6.5 Providing Access Control7.6.6 Designing the Global Control Flow7.6.7 Identifying Services7.6.8 Identifying Boundary Conditions7.6.9 Lessons Learned7.7 Further Readings7.8 Exercises Chapter 8Object Design: Reusing Pattern Solutions8.1 Introduction: Bloopers8.2 An Overview of Object Design8.3 Reuse Concepts: Solution Objects, Inheritance, and Design Patterns 8.3.1 Application Objects and Solution Objects8.3.2 Specification Inheritance and Implementation Inheritance8.3.3 Delegation8.3.4 The Liskov Substitution Principle8.3.5 Delegation and Inheritance in Design Patterns8.4 Reuse Activities: Selecting Design Patterns and Components8.4.1 Encapsulating Data Stores with the Bridge Pattern8.4.2 Encapsulating Legacy Components with the Adapter Pattern8.4.3 Encapsulating Context with the Strategy Pattern8.4.4 Encapsulating Platforms with the Abstract Factory Pattern8.4.5 Encapsulating Control Flow with the Command Pattern8.4.6 Encapsulating Hierarchies with the Composite Design Pattern8.4.7 Heuristics for Selecting Design Patterns8.4.8 Identifying and Adjusting Application Frameworks8.5 Managing Reuse8.5.1 Documenting Reuse8.5.2 Assigning Responsibilities8.6 ARENA Case Study8.6.1 Applying the Abstract Factory Design Pattern8.6.2 Applying the Command Design Pattern8.6.3 Applying the Observer Design Pattern8.6.4 Lessons Learned8.7 Further Readings8.8 Exercises Chapter 9 Object Design: Specifying Interfaces9.1 Introduction: A Railroad Example9.2 An Overview of Interface Specification9.3 Interface Specification Concepts9.3.1 Class Implementor, Class Extender, and Class User9.3.2 Types, Signatures, and Visibility9.3.3 Contracts: Invariants, Preconditions, and Postconditions9.3.4 Object Constraint Language9.3.5 OCL Collections: Sets, Bags, and Sequences9.3.6 OCL Quantifiers: forAll and exists9.4 Interface Specification Activities9.4.1 Identifying Missing Attributes and Operations9.4.2 Specifying Types, Signatures, and Visibility9.4.3 Specifying Pre- and Postconditions9.4.4 Specifying Invariants9.4.5 Inheriting Contracts9.5 Managing Object Design9.5.1 Documenting Object Design9.5.2 Assigning Responsibilities9.5.3 Using Contracts During Requirements Analysis9.6 ARENA Case Study9.6.1 Identifying Missing Operations in TournamentStyle and Round9.6.2 Specifying the TournamentStyle and Round Contracts9.6.3 Specifying the KnockOutStyle and KnockOutRound Contracts9.6.4 Lessons Learned9.7 Further Readings9.8 Exercises Chapter 10 Mapping Models to Code10.1 Introduction: A Book Example10.2 An Overview of Mapping10.3 Mapping Concepts10.3.1 Model Transformation10.3.2 Refactoring10.3.3 Forward Engineering10.3.4 Reverse Engineering10.3.5 Transformation Principles10.4 Mapping Activities10.4.1 Optimizing the Object Design Model10.4.2 Mapping Associations to Collections10.4.3 Mapping Contracts to Exceptions10.4.4 Mapping Object Models to a Persistent Storage Schema10.5 Managing Implementation10.5.1 Documenting Transformations10.5.2 Assigning Responsibilities10.6 ARENA Case Study10.6.1 ARENA Statistics10.6.2 Mapping Associations to Collections10.6.3 Mapping Contracts to Exceptions10.6.4 Mapping the Object Model to a Database Schema10.6.5 Lessons Learned10.7 Further Readings 10.8 Exercises Chapter 11Testing 43711.1 Introduction: Testing The Space Shuttle11.2 An Overview of Testing11.3 Testing Concepts11.3.1 Faults, Erroneous States, and Failures11.3.2 Test Cases11.3.3 Test Stubs and Drivers11.3.4 Corrections11.4 Testing Activities11.4.1 Component Inspection11.4.2 Usability Testing11.4.3 Unit Testing11.4.4 Integration Testing11.4.5 System Testing11.5 Managing Testing11.5.1 Planning Testing11.5.2 Documenting Testing11.5.3 Assigning Responsibilities11.5.4 Regression Testing11.5.5 Automating Testing11.5.6 Model-based Testing11.6 Further Readings11.7 Exercises PART III Managing ChangeChapter 12 Rationale Management12.1 Introduction: Slicing Ham12.2 An Overview of Rationale12.3 Rationale Concepts12.3.1 Centralized Traffic Control12.3.2 Defining the Problem: Issues12.3.3 Exploring the Solution Space: Proposals12.3.4 Evaluating the Solution Space: Criteria and Arguments12.3.5 Collapsing the Solution Space: Resolutions12.3.6 Implementing Resolutions: Action Items12.3.7 Examples of Issue-Based Models and Systems12.4 Rationale Activities: From Issues to Decisions12.4.1 CTC System Design12.4.2 Capturing Rationale in Meetings12.4.3 Capturing Rationale Asynchronously12.4.4 Capturing Rationale when Discussing Change12.4.5 Reconstructing Rationale12.5 Managing Rationale12.5.1 Documenting Rationale12.5.2 Assigning Responsibilities12.5.3 Heuristics for Communicating about Rationale12.5.4 Issue Modeling and Negotiation12.5.5 Conflict Resolution Strategies12.6 Further Readings12.7 Exercises Chapter 13 Configuration Management13.1 Introduction: An Aircraft Example13.2 An Overview of Configuration Management13.3 Configuration Management Concepts13.3.1 Configuration Items and CM Aggregates13.3.2 Versions and Configurations 13.3.3 Change Requests 13.3.4 Promotions and Releases13.3.5 Repositories and Workspaces13.3.6 Version Identification Schemes13.3.7 Changes and Change Sets13.3.8 Configuration Management Tools13.4 Configuration Management Activities13.4.1 Configuration Item and CM Aggregate Identification13.4.2 Promotion Management13.4.3 Release Management13.4.4 Branch Management13.4.5 Variant Management13.4.6 Change Management13.5 Managing Configuration Management13.5.1 Documenting Configuration Management13.5.2 Assigning Configuration Management Responsibilities13.5.3 Planning Configuration Management Activities13.5.4 Continuous Integration: Testing and Promotion Management13.6 Further Readings13.7 Exercises Chapter 14Project Management14.1 Introduction: The STS-51L Launch Decision14.2 An Overview of Project Management14.3 Project Management Concepts14.3.1 Tasks and Activities14.3.2 Work Products, Work Packages, and Roles14.3.3 Work Breakdown Structure14.3.4 Task Model14.3.5 Skill Matrix14.3.6 The Software Project Management Plan14.4 Classical Project Management Activities14.4.1 Planning the Project14.4.2 Organizing the Project14.4.3 Controlling the Project14.4.4 Terminating the Project14.5 Agile Project Management Activities14.5.1 Planning the Project: Create Product and Sprint Backlogs14.5.2 Organizing the Project14.5.3 Controlling the Project: Daily Scrums and Burn Down Charts14.5.4 Terminating the Project: Sprint Reviews14.6 Further Readings14.7 Exercises Chapter 15Software Life Cycle15.1 Introduction: Polynesian Navigation15.2 IEEE 1074: Standard for Developing Life Cycle Processes15.2.1 Processes and Activities15.2.2 Life Cycle Modeling15.2.3 Project Management15.2.4 Pre-Development15.2.5 Development15.2.6 Post-Development15.2.7 Integral Processes (Cross-Development)15.3 Characterizing the Maturity of Software Life Cycle Models15.4 Life Cycle Models15.4.1 Sequential Activity-Centered Models15.4.2 Iterative Activity-Centered Models15.4.3 Entity-Centered Models15.5 Further Readings15.6 Exercises Chapter 16Methodologies: Putting It All Together16.1 Introduction: The First Ascent of K216.2 Project Environment16.3 Methodology Issues16.3.1 How Much Planning?16.3.2 How Much Reuse?16.3.3 How Much Modeling?16.3.4 How Much Process?16.3.5 How Much Control and Monitoring?16.3.6 When to Redefine Project Goals?16.4 A Spectrum of Methodologies16.4.1 Royce’s Methodology16.4.2 Extreme Programming16.4.3 Rugby methodologies16.5 Case Studies16.5.1 XP Project: ATRACT16.5.2 Local King Client: FRIEND16.5.3 Distributed Project: JAMES16.5.4 Case Studies Summary16.6 Further Readings16.7 Exercises PART IV AppendicesAppendix ADesign PatternsA.1 Abstract Factory: Encapsulating PlatformsA.2 Adapter: Wrapping Around Legacy CodeA.3 Bridge: Allowing for Alternate ImplementationsA.4 Command: Encapsulating Control FlowA.5 Composite: Representing Recursive HierarchiesA.6 Facade: Encapsulating SubsystemsA.7 Observer: Decoupling Entities from ViewsA.8 Proxy: Encapsulating Expensive ObjectsA.9 Strategy: Encapsulating AlgorithmsA.10 Heuristics for Selecting Design Patterns Appendix B GlossaryAppendix CBibliographyIndex
Du kanske också är intresserad av
Capitalism, Culture, and Economic Regulation
Leigh Hancher, Michael Moran, The Netherlands) Hancher, Leigh (Assistant Director, Institute for Energy Law, Assistant Director, Institute for Energy Law, University of Leiden, University of Manchester) Moran, Michael (Senior Lecturer, Department of Government, Senior Lecturer, Department of Government
4 919 kr