Download presentation
Presentation is loading. Please wait.
Published byAda Garrett Modified over 9 years ago
1
1 Software Development By Rick Mercer with help from these sources: Rational Unified Process Computing Fundamentals with C++, Rick Mercer Designing Object Oriented Software, Rebbeca Wirfs-Brock, Wilkerson, Wiener Object-Oriented Design Heuristics, Arthur Riel
2
2 Software Challenges Specifications may be incomplete Software product is expected to be used for a long time Ever more complex systems, high expectations Requirements change We don't know what the customer wants The customers don't know what they want
3
3 One Approach: Waterfall Software go through several stages called the life cycle Waterfall model
4
4 Waterfall Model
5
5 Waterfall Model (con.) Waterfall has some severe problems. — The team has to be almost clairvoyant little room for error — places the high risk and difficult elements towards the end Craig Larman's book[1] provides proof that waterfall has proved to be a terrible way to develop software.[1] — In a two-study, 87% of all investigated projects failed — The waterfall process was the "single largest contributing factor for failure, being cited in 82% of the projects as the number one problem." Rick will now attempt to tell a joke [1] Agile and Iterative Development: a Manager's Guide, Addison-Wesley Professional, 2003 [1]
6
6 Iterative Software Development An iteration is a small part of the entire system
7
7 Rational Unified Process Practices of RUP — Develop iteratively — Manage changing requirements — Use components such as Java classes — Visually Model with UML — Continuously test RUP allows you to select from many processes http://www-306.ibm.com/software/awdtools/rup/
8
8 A Process we'll use Agile Manifesto See http://agilemanifesto.org/http://agilemanifesto.org/ Started with Scrum and XP (Kent Beck’s eXtreme Programming), mid 1990s Teams often choose from a set of practices A few Agile practices we are or will be using — Planning game: stories, estimation, iterations — Test Driven Development (TDD) — Pair Programming — Continuous Integration — Sustainable Pace (determine velocity would be nice) — Coding Style (use the same style as team whether you like it or not) — On-site customer (simulated)
9
9 Responsibility Driven Design Responsibility Driven Design, Rebecca Wirfs Brock, 1990 The Coffee Machine Design Problem, Alistair Cockburn, C/C++ User's Journal, May and June 1998. Introducing Object-Oriented Design with Active Learning, Rick Mercer, Consortium for Computing in Small Colleges, 2000
10
10 In Rebecca Wirfs Brocks' Words Responsibility-Driven Design is a way to design that emphasizes behavioral modeling using objects, responsibilities and collaborations. In a responsibility-based model, objects play specific roles and occupy well-known positions in the application architecture. Each object is accountable for a specific portion of the work. They collaborate in clearly defined ways, contracting with each other to fulfill the larger goals of the application. By creating a "community of objects", assigning specific responsibilities to each, you build a collaborative model of our application. Responsible : able to answer for one's conduct and obligations—trustworthy, Merriam Webster
11
11 Responsibility Driven Design Summarizing Rebecca in Rick's words 1) Identify candidate objects that model a system as a sensible set of abstractions 2) Determine the responsibility of each object — what an instance of the class must be able to do, — and what each instance must know about itself 3) Understand the system through role play — To help complete its responsibility, an object often needs help from other objects
12
12 OO Design Principle The Single Responsibility Principle Classes should have a single responsibility http://en.wikipedia.org/wiki/Single_responsibility_principle Why? — Cohesion, when high, reduces complexity, makes the system more understandable http://en.wikipedia.org/wiki/Cohesion_%28computer_science%29 — Maintenance: Fixing or changing a module should not break other parts of the system
13
13 First Design a Model Note: design is iterative Find a set of objects (candidate classes) that model a solution Each will be a part of the bigger system Each should have a single responsibility What are these objects?
14
14 Find the Objects Candidate objects may come from — The nouns in the problem statement Underline the noun phrases to look for the objects that could model the system — An understanding of the problem domain knowledge of the system that the problem specification may have missed or took for granted — The words floating around the room Alistair Cockburn
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.