
Java Design: Objects, UML, and Process / Edition 1
by Kirk KnoernschildISBN-10: 0201750449
ISBN-13: 9780201750447
Pub. Date: 01/28/2002
Publisher: Pearson Education
Software designers, developers, and architects are constantly confronted with the same confounding problem: how to design software that is both flexible and resilient amid change. To accomplish this tall task, practitioners must utilize the best available technologies to the fullest.
Java Design relies on a combination of best practices and/i>
/p>Overview
Software designers, developers, and architects are constantly confronted with the same confounding problem: how to design software that is both flexible and resilient amid change. To accomplish this tall task, practitioners must utilize the best available technologies to the fullest.
Java Design relies on a combination of best practices and best-of-breed technologies to create a clear and concise guide to building high-quality, lasting software designs. In particular, the author provides unique insight into using the Unified Modeling Language (UML) to develop Java applications.
The first half of the book focuses on the software process and how UML, Java technology, and object-oriented programming can be used effectively. The advantages of each technology are enumerated, highlighting common principles. Also included are in-depth discussions of design patterns, the Unified Process, and Extreme Programming.
The second half of the book describes how these complementary technologies can be used together as a system of checks and balances to ensure successful creation of high-quality software. You'll also find details on modeling strategies, a phased approach to adopting each of the technologies outlined, and the design of subsystems.
Key topics include:
- Object-oriented principles and patterns
- UML and the role of modeling
- UML and the software process, including best practices and lifecycle development
- Modeling strategies and requirements
- Behavioral modeling
- Architectural modeling
- Designing subsystems
- Refactoring
Armed with a fresh perception of current design tools, this book will give you a deeper understanding of how to design cleaner Java applications using UML. Learn how you can expand your developer's toolkit using existing technologies in new ways--and create better software.
Product Details
- ISBN-13:
- 9780201750447
- Publisher:
- Pearson Education
- Publication date:
- 01/28/2002
- Pages:
- 304
- Product dimensions:
- 7.39(w) x 9.25(h) x 0.75(d)
Table of Contents
Preface | xv | |
Introduction | xix | |
Chapter 1 | OO Principles and Patterns | 1 |
1.0 | Principles, Patterns, and the OO Paradigm | 2 |
1.1 | Class Principles | 8 |
1.1.1 | Open Closed Principle (OCP) | 8 |
1.1.2 | Liskov Substitution Principle (LSP) | 11 |
1.1.3 | Dependency Inversion Principle (DIP) | 12 |
1.1.4 | Interface Segregation Principle (ISP) | 15 |
1.1.5 | Composite Reuse Principle (CRP) | 17 |
1.1.6 | Principle of Least Knowledge (PLK) | 21 |
1.2 | Package Principles | 23 |
1.2.1 | Package Dependency | 23 |
1.2.2 | Release Reuse Equivalency Principle (REP) | 25 |
1.2.3 | Common Closure Principle (CCP) | 26 |
1.2.4 | Common Reuse Principle (CReP) | 26 |
1.2.5 | Acyclic Dependencies Principle (ADP) | 27 |
1.2.6 | Stable Dependencies Principle (SDP) | 29 |
1.2.7 | Stable Abstractions Principle (SAP) | 31 |
1.3 | Patterns | 32 |
1.3.1 | Strategy | 33 |
1.3.2 | Visitor | 34 |
1.3.3 | Layers | 36 |
1.4 | Conclusion | 36 |
Chapter 2 | Introduction to the UML | 39 |
2.0 | The UML Defined | 39 |
2.1 | Origin | 42 |
2.2 | Role of Modeling | 43 |
2.2.1 | The Challenge | 44 |
2.2.2 | Complexity of Architecture | 45 |
2.2.3 | The Remedy | 46 |
2.3 | Benefits | 46 |
2.4 | Conclusion | 48 |
Chapter 3 | Fundamental UML | 49 |
3.0 | Models and Views | 49 |
3.0.1 | Fundamental Elements | 50 |
3.0.2 | Diagrams | 51 |
3.0.3 | Views | 51 |
3.1 | Core Diagrams | 54 |
3.1.1 | Behavioral Diagrams | 55 |
3.1.2 | Structural Diagrams | 57 |
3.2 | Fundamental Elements | 58 |
3.2.1 | Structural Elements | 58 |
3.2.2 | Java-Independent Entities | 59 |
3.2.3 | Java-Dependent Entities | 61 |
3.2.4 | Java-Dependent Relationships | 62 |
3.3 | Annotations | 66 |
3.4 | Extensibility Mechanisms | 66 |
3.5 | Introduction to Diagrams | 67 |
3.5.1 | Sequence Diagram | 68 |
3.5.2 | Class Diagram | 70 |
3.5.3 | Package Diagram | 70 |
3.6 | Conclusion | 72 |
Chapter 4 | The UML and Software Process | 73 |
4.0 | Process Defined | 74 |
4.1 | Best Practices | 75 |
4.1.1 | Behavioral Driven | 76 |
4.1.2 | Architecture Centric | 77 |
4.1.3 | Iterative | 77 |
4.1.4 | Refactoring | 78 |
4.1.5 | Visual Modeling | 79 |
4.1.6 | Simple Prototypes | 79 |
4.2 | Development Lifecycle and the UML | 80 |
4.2.1 | Requirements | 83 |
4.2.2 | Analysis and Design | 86 |
4.2.3 | Construction | 90 |
4.2.4 | Testing | 92 |
4.2.5 | Deployment | 92 |
4.3 | The Full Lifecycle | 93 |
4.4 | Conclusion | 93 |
Chapter 5 | Modeling Strategies | 97 |
5.0 | Integration Goals | 98 |
5.0.1 | Development Approach | 99 |
5.0.1.1 | Individual Development | 99 |
5.0.1.2 | Team Development | 100 |
5.0.2 | Tool Approach | 101 |
5.0.2.1 | Informal Tool | 101 |
5.0.2.2 | Formal Tool | 102 |
5.1 | Integration Factors | 104 |
5.1.1 | Development Culture | 105 |
5.1.2 | Software Process | 105 |
5.1.3 | Object-Oriented Experience | 106 |
5.1.4 | Technological Aspects | 107 |
5.1.5 | Modeling Strategies | 107 |
5.1.5.1 | Conceptual Model | 108 |
5.1.5.2 | Specification Model | 108 |
5.1.5.3 | Implementation Model | 109 |
5.2 | Integration Strategy | 109 |
5.3 | Conclusion | 113 |
Chapter 6 | Requirements Modeling | 115 |
6.0 | Notation | 116 |
6.0.1 | Actor | 116 |
6.0.2 | Use Case | 117 |
6.0.3 | Relationships | 118 |
6.0.4 | Use Case Diagrams | 119 |
6.0.5 | Stereotypes | 119 |
6.0.5.1 | Include | 119 |
6.0.5.2 | Extend | 120 |
6.1 | Requirements Modeling | 121 |
6.1.1 | Problem Statement | 121 |
6.1.2 | Use Case Diagrams | 123 |
6.1.3 | Use Case Specifications | 124 |
6.1.4 | Additional Elements | 126 |
6.2 | Conclusion | 127 |
Chapter 7 | Problem Analysis | 131 |
7.0 | Notation | 132 |
7.0.1 | Class | 132 |
7.0.2 | Association | 132 |
7.0.3 | Package | 133 |
7.0.4 | Dependency | 134 |
7.0.5 | Stereotype | 134 |
7.0.6 | Collaboration | 134 |
7.0.7 | Realization | 135 |
7.1 | Identifying Initial Concepts | 135 |
7.2 | Software Specification | 137 |
7.2.1 | Boundary | 138 |
7.2.2 | Entity | 139 |
7.2.3 | Control | 140 |
7.3 | Establishing Architecture | 142 |
7.4 | Allocating Classes | 143 |
7.5 | Conclusion | 143 |
Chapter 8 | Behavioral Modeling | 145 |
8.0 | Notation | 146 |
8.0.1 | Object | 146 |
8.0.2 | Message | 147 |
8.0.3 | Sequence Diagrams | 147 |
8.0.4 | Collaboration Diagrams | 149 |
8.1 | Use Case Realizations | 150 |
8.2 | Responsibility Allocation | 151 |
8.2.1 | Decentralized versus Centralized Flow of Control | 157 |
8.2.2 | Controllers as Mediators | 157 |
8.2.3 | Managing Collections | 160 |
8.2.4 | Accessor and Mutator Methods | 160 |
8.2.5 | Additional Diagrams | 163 |
8.2.5.1 | Object References | 164 |
8.2.6 | Simple Prototypes | 166 |
8.3 | Model Structure | 168 |
8.4 | Conclusion | 168 |
Chapter 9 | Structural Modeling | 171 |
9.0 | Notation | 172 |
9.0.1 | Class Diagrams | 172 |
9.0.2 | Structural Elements | 173 |
9.0.3 | Relationships | 173 |
9.1 | Coupling and Cohesion | 174 |
9.2 | Useful Class Diagrams | 175 |
9.2.1 | Package Diagrams | 176 |
9.2.2 | Interface Diagram | 177 |
9.2.3 | Implementation Diagram | 178 |
9.2.4 | View of Participating Classes (VOPC) | 179 |
9.3 | Identifying Structure | 179 |
9.3.1 | Complex Structure | 182 |
9.3.1.1 | Inheritance | 182 |
9.3.2 | Factories | 189 |
9.3.3 | Collections | 193 |
9.3.4 | Structural Notes | 196 |
9.4 | Model Structure | 196 |
9.4.1 | View of Participating Classes | 197 |
9.5 | Conclusion | 198 |
Chapter 10 | Architectual Modeling | 201 |
10.0 | Defining Architecture | 201 |
10.1 | Establishing Architecture | 202 |
10.2 | Architectural Mechanisms | 204 |
10.2.1 | Layers | 204 |
10.2.2 | Observing | 207 |
10.2.3 | Model-View-Controller (MVC) | 208 |
10.2.4 | Partitions | 209 |
10.3 | Views of Architecture | 211 |
10.4 | Frameworks and Class Libraries | 217 |
10.4.1 | Frameworks | 217 |
10.4.1.1 | Framework Example | 219 |
10.4.1.2 | Framework Example Notes | 223 |
10.4.2 | Class Libraries | 224 |
10.5 | Component Architectures | 225 |
10.5.1 | Components Defined | 225 |
10.5.2 | Components and the UML | 226 |
10.5.3 | Component Sample | 227 |
10.6 | Conclusion | 227 |
Chapter 11 | Designing Subsystems | 229 |
11.0 | Defining Subsystems | 229 |
11.0.1 | Subsystem Dependencies | 230 |
11.1 | Subsystems in Java | 231 |
11.2 | Subsystem Specification | 236 |
11.3 | Subsystem Identification | 239 |
11.4 | Subsystem Development | 240 |
11.5 | Subsystems as Frameworks | 240 |
11.6 | Conclusion | 241 |
Appendix A | Rational Unified Process (RUP) and Extreme Programming (XP) | 243 |
A.0 | Rational Unified Process (RUP) | 243 |
A.0.1 | Characteristics of RUP | 244 |
A.0.2 | Workflows and Phases | 245 |
A.0.3 | Tailoring RUP | 248 |
A.1 | Extreme Programming (XP) | 249 |
A.1.1 | Characteristics of XP | 249 |
A.1.2 | Is It XP or Isn't It? | 251 |
A.2 | Similarities and Differences | 251 |
A.3 | Conclusion | 252 |
Appendix B | J2EE and the UML | 253 |
B.0 | J2EE: A Brief Overview | 254 |
B.0.1 | Servlets | 254 |
B.0.1.1 | Java | 254 |
B.0.1.2 | The UML | 255 |
B.0.2 | JavaServer Pages (JSPs) | 255 |
B.0.2.1 | Java | 256 |
B.0.2.2 | The UML | 256 |
B.0.3 | Enterprise JavaBeans (EJB) | 256 |
B.0.3.1 | Java | 256 |
B.0.3.2 | The UML | 257 |
B.1 | Designing with J2EE | 258 |
B.2 | Conclusion | 260 |
Appendix C | Code Listing for UML Exercise | 261 |
Bibliography | 265 | |
Index | 267 |
Customer Reviews
Average Review: