Object-Oriented Software Engineering With UML: A Hands-on Approach
- Length: 373 pages
- Edition: 1
- Language: English
- Publisher: Nova Science Pub Inc
- Publication Date: 2019-02-15
- ISBN-10: 1536147559
- ISBN-13: 9781536147551
- Sales Rank: #14445742 (See Top 100 Books)
The object-oriented paradigm supplements traditional software engineering by providing solutions to common problems such as modularity and reusability. Objects can be written for a specific purpose acting as an encapsulated black-box API that can work with other components by forming a complex system. This book provides a comprehensive overview of the many facets of the object-oriented paradigm and how it applies to software engineering. Starting with an in-depth look at objects, the book naturally progresses through the software engineering life cycle and shows how object-oriented concepts enhance each step. Furthermore, it is designed as a roadmap with each chapter, preparing the reader with the skills necessary to advance the project. This book should be used by anyone interested in learning about object-oriented software engineering, including students and seasoned developers. Without overwhelming the reader, this book hopes to provide enough information for the reader to understand the concepts and apply them in their everyday work. After learning about the fundamentals of the object-oriented paradigm and the software engineering life cycle, the reader is introduced to more advanced topics such as web engineering, cloud computing, agile development, and big data. In recent years, these fields have been rapidly growing as many are beginning to realize the benefits of developing on a highly scalable, automated deployment system. Combined with the speed and effectiveness of agile development, legacy systems are beginning to make the transition to a more adaptive environment.
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
Donate to keep this site alive
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.