Object-Oriented Software Engineering
Publisher: McGraw-Hill Science/Engineering/Math
Published: May 4, 2005
Language: eng
Number of pages: 528
ISBN-13: 9780073220345
First sentence: The software engineer's job is to solve problems economically by developing high-quality software.
Table of contents: title: Foreword
pagenum: xi; title: Preface
pagenum: xv; title: Guided tour
pagenum: xxii; title: Technology to enhance learning and teaching
pagenum: xxiv; label: 1
title: Software and software engineering
pagenum: 1; label: 1.1
title: The nature of software
pagenum: 1; label: 1.2
title: What is software engineering?
pagenum: 6; label: 1.3
title: Software engineering as a branch of the engineering profession
pagenum: 8; label: 1.4
title: Stakeholders in software engineering
pagenum: 10; label: 1.5
title: Software quality
pagenum: 11; label: 1.6
title: Software engineering projects
pagenum: 14; label: 1.7
title: Activities common to software projects
pagenum: 16; label: 1.8
title: The themes emphasized in this book
pagenum: 20; label: 1.9
title: Difficulties and risks in software engineering as a whole
pagenum: 24; label: 1.10
title: Summary
pagenum: 26; label: 1.11
title: For more information
pagenum: 26; label: 2
title: Review of object orientation
pagenum: 29; label: 2.1
title: What is object orientation?
pagenum: 29; label: 2.2
title: Classes and objects
pagenum: 31; label: 2.3
title: Instance variables
pagenum: 36; label: 2.4
title: Methods, operations and polymorphism
pagenum: 38; label: 2.5
title: Organizing classes into inheritance hierarchies
pagenum: 39; label: 2.6
title: The effect of inheritance hierarchies on polymorphism and variable declarations
pagenum: 45; label: 2.7
title: Concepts that define object orientation
pagenum: 52; label: 2.8
title: A program for manipulating postal codes
pagenum: 55; label: 2.9
title: Classes for representing geometric points
pagenum: 57; label: 2.10
title: Measuring the quality and complexity of a program
pagenum: 60; label: 2.11
title: Difficulties and risks in programming language choice and OO programming
pagenum: 62; label: 2.12
title: Summary
pagenum: 63; label: 2.13
title: For more information
pagenum: 63; label: 3
title: Basing software development on reusable technology
pagenum: 67; label: 3.1
title: Reuse: building on the work and experience of others
pagenum: 68; label: 3.2
title: Incorporating reusability and reuse into software engineering
pagenum: 69; label: 3.3
title: Frameworks: reusable subsystems
pagenum: 71; label: 3.4
title: The client-server architecture
pagenum: 77; label: 3.5
title: Technology needed to build client-server systems
pagenum: 87; label: 3.6
title: The Object Client-Server Framework (OCSF)
pagenum: 91; label: 3.7
title: Basic description of OCSF - client side
pagenum: 92; label: 3.8
title: Basic description of OCSF - server side
pagenum: 95; label: 3.9
title: An instant messaging application using the OCSF
pagenum: 99; label: 3.10
title: Difficulties and risks when considering reusable technology and client-server systems
pagenum: 101; label: 3.11
title: Summary
pagenum: 102; label: 3.12
title: For more information
pagenum: 103; label: 4
title: Developing requirements
pagenum: 109; label: 4.1
title: Domain analysis
pagenum: 109; label: 4.2
title: The starting point for software projects
pagenum: 114; label: 4.3
title: Defining the problem and the scope
pagenum: 115; label: 4.4
title: What is a requirement?
pagenum: 119; label: 4.5
title: Types of requirements
pagenum: 119; label: 4.6
title: Use cases: describing how the user will use the system
pagenum: 127; label: 4.7
title: Some techniques for gathering requirements
pagenum: 138; label: 4.8
title: Types of requirements document
pagenum: 145; label: 4.9
title: Reviewing requirements
pagenum: 148; label: 4.10
title: Managing changing requirements
pagenum: 155; label: 4.11
title: GPS-based Automobile Navigation Assistant (GANA)
pagenum: 156; label: 4.12
title: Requirements for a feature of the SimpleChat instant messaging program
pagenum: 160; label: 4.13
title: Difficulties and risks in domain and requirements analysis
pagenum: 164; label: 4.14
title: Summary
pagenum: 165; label: 4.15
title: For more information
pagenum: 166; label: 5
title: Modeling with classes
pagenum: 169; label: 5.1
title: What is UML?
pagenum: 169; label: 5.2
title: Essentials of UML class diagrams
pagenum: 172; label: 5.3
title: Associations and multiplicity
pagenum: 173; label: 5.4
title: Generalization
pagenum: 182; label: 5.5
title: Object diagrams
pagenum: 186; label: 5.6
title: More advanced features of class diagrams
pagenum: 188; label: 5.7
title: The basics of Object Constraint Language (OCL)
pagenum: 193; label: 5.8
title: A class diagram for genealogy
pagenum: 196; label: 5.9
title: The process of developing class diagrams
pagenum: 199; label: 5.10
title: Implementing class diagrams in Java
pagenum: 216; label: 5.11
title: Difficulties and risks when creating class diagrams
pagenum: 218; label: 5.12
title: Summary
pagenum: 218; label: 5.13
title: For more information
pagenum: 219; label: 6
title: Using design patterns
pagenum: 221; label: 6.1
title: Introduction to patterns
pagenum: 221; label: 6.2
title: The Abstraction-Occurrence pattern
pagenum: 223; label: 6.3
title: The General Hierarchy pattern
pagenum: 226; label: 6.4
title: The Player-Role pattern
pagenum: 228; label: 6.5
title: The Singleton pattern
pagenum: 231; label: 6.6
title: The Observer pattern
pagenum: 232; label: 6.7
title: The Delegation pattern
pagenum: 234; label: 6.8
title: The Adapter pattern
pagenum: 236; label: 6.9
title: The Façade pattern
pagenum: 238; label: 6.10
title: The Immutable pattern
pagenum: 239; label: 6.11
title: The Read-Only Interface pattern
pagenum: 240; label: 6.12
title: The Proxy pattern
pagenum: 241; label: 6.13
title: The Factory pattern
pagenum: 243; label: 6.14
title: Enhancing OCSF to employ additional design patterns
pagenum: 246; label: 6.15
title: Difficulties and risks when using design patterns
pagenum: 250; label: 6.16
title: Summary
pagenum: 251; label: 6.17
title: For more information
pagenum: 251; label: 7
title: Focusing on users and their tasks
pagenum: 253; label: 7.1
title: User-centered design
pagenum: 254; label: 7.2
title: Characteristics of users
pagenum: 256; label: 7.3
title: The basics of user interface design
pagenum: 258; label: 7.4
title: Usability principles
pagenum: 262; label: 7.5
title: Evaluating user interfaces
pagenum: 273; label: 7.6
title: Implementing a simple GUI in Java
pagenum: 276; label: 7.7
title: Difficulties and risks in user-centered design
pagenum: 280; label: 7.8
title: Summary
pagenum: 280; label: 7.9
title: For more information
pagenum: 281; label: 8
title: Modeling interactions and behavior
pagenum: 285; label: 8.1
title: Interaction diagrams
pagenum: 285; label: 8.2
title: State diagrams
pagenum: 292; label: 8.3
title: Activity diagrams
pagenum: 301; label: 8.4
title: Implementing classes based on interaction and state diagrams
pagenum: 302; label: 8.5
title: Difficulties and risks in modeling interactions and behavior
pagenum: 306; label: 8.6
title: Summary
pagenum: 307; label: 8.7
title: For more information
pagenum: 307; label: 9
title: Architecting and designing software
pagenum: 309; label: 9.1
title: The process of design
pagenum: 310; label: 9.2
title: Principles leading to good design
pagenum: 314; title: Design Principle 1: Divide and conquer
pagenum: 314; title: Design Principle 2: Increase cohesion where possible
pagenum: 315; title: Design Principle 3: Reduce coupling where possible
pagenum: 321; title: Design Principle 4: Keep the level of abstraction as high as possible
pagenum: 329; title: Design Principle 5: Increase reusability where possible
pagenum: 330; title: Design Principle 6: Reuse existing designs and code where possible
pagenum: 331; title: Design Principle 7: Design for flexibility
pagenum: 331; title: Design Principle 8: Anticipate obsolescence
pagenum: 332; title: Design Principle 9: Design for portability
pagenum: 333; title: Design Principle 10: Design for testability
pagenum: 334; title: Design Principle 11: Design defensively
pagenum: 334; label: 9.3
title: Techniques for making good design decisions
pagenum: 336; label: 9.4
title: Model Driven Development
pagenum: 340; label: 9.5
title: Software architecture
pagenum: 342; label: 9.6
title: Architectural patterns
pagenum: 347; title: The Multi-Layer architectural pattern
pagenum: 347; title: The Client-Server and other distributed architectural patterns
pagenum: 349; title: The Broker architectural pattern
pagenum: 351; title: The Transaction Processing architectural pattern
pagenum: 352; title: The Pipe-and-Filter architectural pattern
pagenum: 353; title: The Model-View-Controller (MVC) architectural pattern
pagenum: 355; title: The Service-Oriented architectural pattern
pagenum: 358; title: The Message-Oriented architectural pattern
pagenum: 360; label: 9.7
title: Writing a good design document
pagenum: 362; label: 9.8
title: Design of a feature for the SimpleChat instant messaging application
pagenum: 365; label: 9.9
title: Difficulties and risks in design
pagenum: 366; label: 9.10
title: Summary
pagenum: 367; label: 9.11
title: For more information
pagenum: 368; label: 10
title: Testing and inspecting to ensure high quality
pagenum: 371; label: 10.1
title: Basic definitions
pagenum: 371; label: 10.2
title: Effective and efficient testing
pagenum: 373; label: 10.3
title: Defects in ordinary algorithms
pagenum: 380; label: 10.4
title: Defects in numerical algorithms
pagenum: 388; label: 10.5
title: Defects in timing and co-ordination: deadlocks, livelocks and critical races
pagenum: 391; label: 10.6
title: Defects in handling stress and unusual situations
pagenum: 394; label: 10.7
title: Documentation defects
pagenum: 398; label: 10.8
title: Writing formal test cases and test plans
pagenum: 398; label: 10.9
title: Strategies for testing large systems
pagenum: 402; label: 10.10
title: Inspections
pagenum: 409; label: 10.11
title: Quality assurance in general
pagenum: 413; label: 10.12
title: Test cases for phase 2 of the SimpleChat instant messaging system
pagenum: 416; label: 10.13
title: Difficulties and risks in quality assurance
pagenum: 420; label: 10.14
title: Summary
pagenum: 421; label: 10.15
title: For more information
pagenum: 422; label: 11
title: Managing the software process
pagenum: 425; label: 11.1
title: What is project management?
pagenum: 425; label: 11.2
title: Software process models
pagenum: 428; label: 11.3
title: Cost estimation
pagenum: 435; label: 11.4
title: Building software engineering teams
pagenum: 445; label: 11.5
title: Project scheduling and tracking
pagenum: 449; label: 11.6
title: Contents of a project plan
pagenum: 452; label: 11.7
title: Difficulties and risks in project management
pagenum: 453; label: 11.8
title: Summary
pagenum: 455; label: 11.9
title: For more information
pagenum: 456; label: 12
title: Review
pagenum: 459; label: 12.1
title: Theme 1: Understanding the customer and user
pagenum: 459; label: 12.2
title: Theme 2: Basing development on solid principles and reusable technology
pagenum: 459; label: 12.3
title: Theme 3: Object orientation
pagenum: 464; label: 12.4
title: Theme 4: Visual modeling using UML
pagenum: 464; label: 12.5
title: Theme 5: Evaluation of alternatives in requirements and design
pagenum: 465; label: 12.6
title: Theme 6: Incorporating quantitative and logical thinking
pagenum: 465; label: 12.7
title: Theme 7: Iterative and agile development
pagenum: 466; label: 12.8
title: Theme 8: Communicating effectively using documentation
pagenum: 467; label: 12.9
title: Theme 9: Risk management in all software engineering activities
pagenum: 467; label: 12.10
title: Where next?
pagenum: 469; title: Appendix A: Summary of the UML notation used in this book
pagenum: 471; title: Appendix B: Summary of the documentation types recommended in this book
pagenum: 475; title: Appendix C: System descriptions
pagenum: 479; title: Glossary
pagenum: 485