
Object-Oriented Software Engineering with UML: A Hands-On Approach
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Content
- Intro
- Contents
- Preface
- Tools
- The Book
- Part I: The Object-Oriented Paradigm
- Part II: Traditional Software Engineering
- Part III: The Object-Oriented Software Engineering Project
- Part IV: Quality Assurance
- Part V: Advanced Topics
- Supporting Materials
- Acknowledgments
- Part I: The Object-Oriented Paradigm
- Chapter 1
- The Object-Oriented Paradigm
- 1.1. Object-Oriented Introduction
- 1.1.1. Procedural Programming Paradigm
- 1.1.2. Object-Oriented Paradigm
- 1.2. Classes vs Objects
- 1.2.1. What Is An Object?
- 1.2.2. The Class-Object Hierarchy
- 1.2.3. Why Use Objects and Classes?
- 1.2.3.1. Modularity
- 1.2.3.2. Reuse
- 1.3. Object Creation and Use
- 1.3.1. Constructors
- 1.3.1.1. No-Argument Constructor
- 1.3.1.2. Multiple Constructors
- 1.3.1.3. Object State and Behavior
- 1.3.1.4. Accessors
- 1.3.1.5. Scope
- 1.4. OOP in Software Engineering
- Conclusion
- Exercises
- References
- Chapter 2
- Advanced Object-Oriented Concepts
- 2.1. Modularity
- 2.1.1. Encapsulation and Information Hiding
- 2.1.2. Delegation
- 2.2. Inheritance
- 2.2.1. Overloading
- 2.2.2. Overriding
- 2.2.3. Polymorphism
- 2.3. Abstraction
- 2.3.1. Abstract Classes
- 2.3.2. Generic Components
- 2.3.3. Interfaces
- 2.4. Hierarchy
- 2.5. Association
- 2.6. Aggregation
- 2.7. Composition
- Conclusion
- Exercises
- References
- Part II: Traditional Software Engineering
- Chapter 3
- Traditional Software Engineering
- 3.1. Traditional Software Engineering
- 3.1.1. Software Crisis
- 3.1.2. Software Complexity
- 3.1.3. Software Success Rate
- 3.2. Undertaking a Traditional Software Engineering Project
- 3.2.1. Software Engineering Project Overview
- 3.2.2. Software Engineering Project Members
- 3.3. Traditional Software Engineering Development Process
- 3.3.1. Effective Planning
- 3.3.2. Effective Communication
- 3.3.3. Resource Management
- 3.3.4. Producing Deliverables and Achieving Milestones
- 3.3.5. Problem Solving
- 3.3.6. Modeling
- 3.3.7. Software Maintenance
- 3.4. Software Life-Cycles
- 3.4.1. The Software Development Process
- 3.4.2. Waterfall Model
- 3.4.3. Spiral Model
- 3.5. Software Engineering Related Fields
- 3.5.1. Computer Science Related
- 3.5.2. Engineering Related
- 3.5.3. Business Related
- 3.5.4. Psychology Related
- Conclusion
- Exercises
- References
- Chapter 4
- Modeling with UML
- 4.1. The Unified Modeling Language (UML)
- 4.1.1. Modeling Overview
- 4.1.2. Unified Modeling Language Definition
- 4.2. Object, Classes, and Actors
- 4.2.1. Objects
- 4.2.2. Classes
- 4.2.3. Actors
- 4.3. Associations
- 4.3.1. Generalization
- 4.3.2. Dependency
- 4.3.3. Aggregation
- 4.3.4. Uses and Extends
- 4.3.5. Multiplicity
- 4.4. Models
- 4.4.1. Class Diagrams
- 4.4.2. Use Case Diagrams
- 4.4.3. Sequence Diagrams
- 4.4.4. State Diagrams
- 4.4.5. Activity Diagrams
- 4.4.6. Collaboration Diagrams
- 4.4.7. Component Diagrams
- 4.4.8. Deployment Diagrams
- 4.5. Interfaces, Notes, and Packages
- 4.5.1. Interfaces
- 4.5.2. Packages
- 4.5.3. Notes
- Conclusion
- Exercises
- References
- Part III: The Object-Oriented Software Engineering Project
- Chapter 5
- Project Overview
- 5.1. Starting the Project
- 5.1.1. Determining the Project Purpose and Problem Domain
- 5.1.2. Determining the Project Deliverables
- 5.2. Team Composition
- 5.2.1. Team Composition
- 5.2.2. Successful Team Traits
- 5.2.3. Team Organization and Role Assignment
- 5.3. Techniques for Staying on Task
- 5.3.1. Deadlines
- 5.3.2. Work Breakdown Structures
- 5.3.3. Gantt Charts and N2
- 5.3.4. Progress Reports
- 5.4. Communication
- 5.4.1. Project Communication
- 5.5. How to Handle Problems and Change
- Conclusion
- Exercises
- References
- Chapter 6
- Requirements Elicitation
- 6.1. What Is Requirement Elicitation?
- 6.1.1. Gathering Information
- 6.1.2. Client-Developer Communication
- 6.2. Types of Requirements
- 6.2.1. Functional Requirements
- 6.2.2. Non-Functional Requirements
- 6.2.3. Domain Requirements
- 6.2.3.1. Identifying the Application Domain
- 6.3. The Software Requirements Specification Document
- 6.4. Problems in Requirements Elicitation
- 6.4.1. Problems of Understanding
- 6.4.2. Problems of Scope
- 6.4.3. Problems of Volatility
- 6.5. Requirements Validation
- 6.6. Generating the Use Case Model
- 6.6.1. Structuring Use Cases
- Conclusion
- Exercises
- References
- Chapter 7
- Object-Oriented Analysis
- 7.1. Traditional Software Engineering Analysis
- 7.2. Requirements Specification Document
- 7.2.1. Requirements Specification Evaluation
- 7.2.2. Requirement Specification Evaluation using Prototyping
- 7.2.3. Requirements Specification Verifiability
- 7.3. Object-Oriented Analysis Overview
- 7.3.1. Object-Oriented Analysis Overview
- 7.4. Object-Oriented Analysis Modeling Concepts
- 7.4.1. Analysis Object Models
- 7.4.2. Entity, Boundary, and Control Objects
- 7.5. Object-Oriented Analysis Process
- 7.5.1. Identifying Entity, Boundary, and Control Objects
- 7.5.2. Identifying Use Cases
- 7.5.3. Scenario Development
- 7.5.4. Modeling the System
- 7.5.5. Developing Use Case Diagrams
- 7.5.5.1. Class-Based Modeling
- 7.5.5.2. Scenario-Based Modeling
- Conclusion
- Exercises
- References
- Chapter 8
- Object-Oriented Design
- 8.1. Object-Oriented Design Overview
- 8.2. Object-Oriented Design Roles
- 8.3. Types of Objects
- 8.3.1. The Liskov Substitution Principle
- 8.4. Object-Oriented Design Concepts
- 8.4.1. Functional and Non-Functional Requirements
- 8.4.2. Types, Signatures, and Visibility
- 8.4.3. Object Contracts: Invariants, Preconditions, and Postconditions
- 8.4.4. Documenting Object Design
- 8.5. Object-Oriented Design Activities
- 8.5.1. Object-Oriented Design Fundamental Steps
- 8.6. Interface Specification
- 8.6.1. Class Implementor
- 8.6.2. Object Constraint Language
- 8.6.2.1. The Context of an OCL Expression (OCL 2005)
- 8.6.2.2. Invariants on Attributes
- 8.6.2.3. Invariants on Associations
- 8.6.2.4. Collections of Objects
- 8.6.2.5. Pre- and Postconditions
- 8.6.2.6. Derivation Rules
- 8.6.2.7. Initial Values
- 8.6.2.8. Body of Query Operations
- 8.6.3. OCL Collections
- 8.6.4. OCL Quantifiers
- 8.7. Object-Oriented Design Tips and Strategies
- 8.7.1. Object Design Document (ODD)
- 8.8. Types of Engineering
- Conclusion
- Exercises
- References
- Chapter 9
- Implementation
- 9.1. Implementation Overview
- 9.1.1. Implementation Standards
- 9.1.2. Version Control
- 9.1.3. Dependency Management
- 9.2. Implementation Details
- 9.2.1. Roles and Responsibilities
- 9.2.2. Code Reuse
- 9.2.3. Coding Standards
- 9.2.4. Language Choice
- 9.2.5. Development Paradigms
- 9.2.5.1. Component-Based Development
- 9.2.5.2. Agile Development
- 9.3. Implementation Activities
- 9.3.1. Implementation Updates
- 9.3.2. New Model Training Plans
- 9.3.3. Data Entry
- 9.3.4. Post-Implementation Assessment
- 9.3.5. Documenting Updates
- 9.4. Integration
- 9.4.1. Bottom-Up Integration
- 9.4.1.1. Advantages
- 9.4.1.2. Disadvantages
- 9.4.2. Top-Down Integration
- 9.4.2.1. Advantages
- 9.4.2.2. Disadvantages
- 9.4.3. Sandwich Integration
- 9.4.4. Integration of Object-Oriented Products
- 9.4.5. Integration Management
- 9.5. Implementation Workflow
- 9.5.1. Implementation Challenges
- 9.5.2. Metrics of Implementation Workflow
- 9.5.3. Documenting Transforms
- 9.5.3.1. Transformation Responsibilities
- 9.6. Deliverables
- 9.6.1. Delivered System
- 9.6.2. Change Notice
- 9.6.3. Version Description
- 9.6.4. Post-Implementation Review and Considerations
- Conclusion
- Exercises
- References
- Part IV: Quality Assurance
- Chapter 10
- Testing
- 10.1. Testing Overview
- 10.1.1. Testing Objectives
- 10.1.2. Concepts and Theory
- Requirements Model Testing
- Testing Interactions
- 10.1.3. Test Planning
- 10.2. Levels of Testing
- 10.2.1. Web Application Testing
- 10.2.2. Systems Testing
- 10.3. Testing Checklist
- 10.3.1. Reliability
- 10.3.2. Robustness
- 10.3.3. Correctness
- 10.3.3.1. Mathematically Proving Correctness
- 10.3.4. System Integration
- 10.3.5. Utility
- 10.3.6. Performance
- 10.3.7. Usability Testing
- 10.4. Quality Controls
- 10.4.1. Assuring Quality Software
- 10.4.2. Managerial Independence
- 10.5. Testing Management
- 10.6. Non-Execution Based Testing
- 10.6.1. Managing Walkthroughs
- 10.6.2. Inspections
- 10.7. Execution-Based Testing
- 10.8. Unit Testing
- 10.9. Acceptance Testing
- 10.9.1. Alpha Testing
- Customer Expectations
- Quality Team Involvement
- 10.9.2. Beta Testing
- 10.10. Object-Oriented Systems Testing
- 10.11. Box Testing
- 10.11.1. Black-Box Testing
- 10.11.2. White-box Testing
- 10.12. Testing Alternatives
- 10.13. Releasing Software
- Conclusion
- Exercises
- References
- Chapter 11
- Delivery and Maintenance
- 11.1. Project Release
- 11.2. Project Release Presentation
- 11.2.1. Postmortem Review
- 11.2.2. Release Management
- 11.3. Why Post-Delivery Maintenance is Necessary
- 11.4. What is Required of Post-Delivery Maintenance Programmers?
- 11.5. Managing Post-Delivery Maintenance
- 11.5.1. Defect Reports
- 11.5.2. Authorizing Changes to the Product
- 11.5.3. Ensuring Maintainability
- 11.5.4. Repeated Maintenance
- 11.6. Maintenance of Object-Oriented Software
- 11.7. Post-Delivery Maintenance Skill vs Deployment Skills
- 11.8. Reverse Engineering
- 11.9. Testing during Post-Delivery Maintenance
- 11.10. Metrics and Challenges of Post-Delivery Maintenance
- Conclusion
- Exercises
- References
- Chapter 12
- Software Metrics and Measurements
- 12.1. Theory and Practice
- 12.1.1. Challenges Using and Understanding Metrics
- 12.1.2. Properties of a Good Measurement or Metric
- 12.1.3. Etiquette
- 12.1.4. Private vs Public Metrics
- 12.1.5. Baseline Measurements
- 12.1.6. Attributes of a Good Metric
- 12.1.7. Establishing Uniform Measures
- 12.2. Quality Metrics
- 12.2.1. Garvin's Quality Dimensions
- 12.2.2. McCall's Quality Factors
- 12.2.3. ISO 9126 Quality Factors
- 12.2.4. The Quantitative View
- 12.3. Design Metrics
- 12.3.1. Interface
- 12.3.2. Web Design Evaluation
- 12.3.3. Object-Oriented Design Metrics
- Complexity
- Cohesion
- Coupling
- Fan-in and Fan-out
- 12.3.4. Architectural Design Evaluation
- 12.4. Object-Oriented Metrics
- 12.5. Project Metrics
- 12.6. Use-Case and Size Metrics
- 12.7. Process Metrics
- 12.8. Post Release Metrics
- Conclusion
- Exercises
- References
- Chapter 13
- Project Management
- 13.1. Project Management Activities
- 13.1.1. Defining Project Success Criteria
- 13.1.2. Defining Business Objectives
- 13.1.3. Identifying Project Constraints
- 13.1.4. Deriving Project Success Criteria
- 13.2. Project Planning
- 13.2.1. The Software Project Management Plan
- 13.2.2. Scheduling
- 13.2.3. Project Estimation
- 13.3. Managing People
- 13.3.1. Team Selection and Leadership
- 13.3.2. Team and Client Communication
- 13.3.3. Challenges
- 13.4. Managing Risk
- Conclusion
- Exercises
- References
- Part V: Advanced Topics
- Chapter 14
- Web Engineering
- 14.1. Characteristics of Web Application Development
- 14.1.1. Varying User Demographics
- 14.1.2. Devices and Browsers
- 14.1.3. Multidisciplinary
- 14.1.4. Rapidly Changing
- 14.2. Requirements Analysis
- 14.2.1. Web-Specific Requirements
- Functional Requirements
- Non-Functional Requirements
- 14.2.2. Requirements Methodologies
- 14.3. Web Application Design
- 14.3.1. User Interface
- User Interface Guidelines
- 14.3.2. Navigation
- 14.3.3. Web Design Evaluation
- 14.4. Architecture
- 14.4.1. Architecture Considerations
- 14.5. Testing
- 14.5.1. Testing Strategy
- 14.6. Metrics
- 14.6.1. Design Metrics
- 14.6.2. Project Metrics
- Conclusion
- Exercises
- References
- Chapter 15
- Cloud Computing
- 15.1. What Is Cloud Computing?
- 15.2. Characteristics of Cloud Computing
- 15.2.1. On-Demand Self-Service
- 15.2.2. Broad Network Access
- 15.2.3. Resource Pooling
- 15.2.4. Rapid Elasticity
- 15.2.5. Measured Service
- 15.3. Cloud Computing Advantages
- 15.3.1. Cost Efficiency
- 15.3.2. Backup and Recovery
- 15.3.3. Automatic Software Integration
- 15.3.4. Scalability and Performance
- 15.3.5. Convenience and Continuous Availability
- 15.4. Cloud Computing Challenges
- 15.4.1. Security
- 15.4.2. Software Vulnerabilities
- 15.4.3. Costs While under attack
- 15.4.4. Dependency and Vendor Lock-In
- 15.4.5. Laws and Regulations
- 15.5. Cloud Computing Architecture
- 15.5.1. Advantages and Disadvantages of Virtualization
- 15.5.2. Containers
- 15.5.3. Micro-Services Architecture
- 15.6. Service Models
- 15.6.1. Software as a Service (SaaS)
- 15.6.2. Platform as a Service (PaaS)
- 15.6.3. Infrastructure as a Service (IaaS)
- 15.7. Emerging Service Model Trends
- 15.8. Deployment Models
- 15.8.1. Public Cloud
- 15.8.2. Private Cloud
- 15.8.3. Community Cloud
- 15.8.4. Hybrid Cloud
- 15.9. Emerging Deployment Model Trends
- 15.10. Cloud Management
- 15.10.1. Service Level Agreements (SLAs)
- 15.10.2. Lifecycle and Automation
- 15.11. Evaluating Cloud Services
- Conclusion
- Exercises
- References
- Chapter 16
- Agile Development
- 16.1. Introduction to Agile Development
- 16.1.1. Agile Manifesto
- Individuals and Interactions Over Processes and Tools
- Working Software Over Comprehensive Documentation
- Customer Collaboration Over Contract Negotiation
- Responding to Change Over Following a Plan
- Additional Agile Software Principles
- 16.1.2. Characteristics of Agile Development
- 16.1.3. Limitations of Agile Methodologies
- 16.2. Limitations of Traditional Methodologies
- 16.3. Agile Methodologies
- 16.3.1. Scrum
- Scrum Life Cycle
- Steps in Scrum Life Cycle
- Roles and Responsibilities
- Scrum Values
- 16.3.2. Extreme Programming (XP)
- XP Life Cycle
- Roles and Responsibilities
- XP Values
- 16.3.3. Crystal
- Properties of Crystal
- 16.3.4. Adaptive Software Development (ASD)
- ASD Life Cycle
- 16.4. Comparison of Agile Methodologies
- Conclusion
- Exercises
- References
- Chapter 17
- Big Data
- 17.1. What Is Big Data?
- 17.2. A Brief History of Big Data
- 17.3. Types of Data
- 17.4. Relational vs NoSQL Databases
- 17.5. Big Data Characteristics
- 17.6. Parallel and Distributed Data Processing
- 17.7. Data Warehouse
- 17.7.1. Extract, Transform, and Load (ETL)
- 17.7.2. Data Warehouse Architecture
- 17.7.3. Data Warehouse Requirements
- 17.8. Traditional and Lambda Architectures
- 17.8.1. Incremental Architecture
- 17.8.2. Lambda Architecture
- Batch Layer
- Serving Layer
- Speed Layer
- 17.9. Big Data Technologies
- 17.9.1. Apache Hadoop
- Hadoop Distributed File System (HDFS)
- Hadoop MapReduce
- YARN
- 17.9.2. Apache Spark
- 17.9.3. Apache Storm
- 17.10. Big Data in Business
- 17.11. Big Data Analytics
- 17.12. Big Data Limitations and Future Directions
- Conclusion
- Exercises
- Further Readings
- References
- About the Author
- Index
- Blank Page
System requirements
File format: PDF
Copy-Protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our eBook Help page.