You are on page 1of 53

Comparing/Combining RUP, XP, and Scrum mixing the Process Cocktail

Net Objectives, 3/26/2003

BJECTIVES
Dan Rawsthorne
drdan@netobjectives.com

www.netobjectives.com

NetObjectives

My Goal

Enlighten

Teach

Entertain
Net Objectives, 3/26/2003 2

Feed
NetObjectives

Agenda
The Software Problem What is Process? Why Agility Works Description of RUP Description of XP Description of Scrum Best of Breed Combinations Additional Success Factors

Net Objectives, 3/26/2003

NetObjectives

THE SOFTWARE PROBLEM

Net Objectives, 3/26/2003

NetObjectives

The Purpose of a Project is To provide a solution for users That consists of quality code And doesnt cost too much

Net Objectives, 3/26/2003

NetObjectives

This Leads To
Technical Problem building quality code that satisfies the Users needs Budget Problem managing the project so that it doesnt cost too much to do so

Net Objectives, 3/26/2003

NetObjectives

The Technical Problem has Three Parts


Requirements
Determine What the Software has to do Challenge: Satisfy the Users

Production
Actually Build the Software Challenge: Deliver Quality Product

Maintenance
Modify Software to satisfy new requirements Challenge: Maintain Quality

Agility has changed the ways we do these Agility has changed the ways we do these
Net Objectives, 3/26/2003 7

NetObjectives

The Budget Problem has Many Issues


How much do I want to spend to solve the Users problem? Do my developers know how to solve the problem? Are we making progress? Are we wasting money? Are we on schedule? Is the product good enough? CMM? Are other stakeholders going to be satisfied? How do we answer these questions? How do we answer these questions?
Net Objectives, 3/26/2003 8

NetObjectives

Players
User Community
Has problems to be solved Usually disorganized, chaotic, group

Customer Team
Provides requirements and validation Should speak with one voice

Developers
Actually builds the stuff Lots of different roles here

Business Owner
Manages resources and money Often ignored in Development Process
Net Objectives, 3/26/2003 9

NetObjectives

Relationships Between the Players

User

Requirements

Business Owner

Reporting, Monitoring

Customer

Develop Product

Developers Net Objectives, 3/26/2003 10

NetObjectives

The Processes we are Discussing


The three processes being discussed today are modern ones that enable agility
Rational Unified Process (RUP) Rational eXtreme Programming (XP) Kent Beck Scrum Ken Schwaber, Mike Beedle

These are not the only ones, but are some of the most common. Others include:
Dynamic Systems Development Method (DSDM) Crystal Methodologies Alistair Cockburn Feature Driven Development (FDD) Peter Coad Adaptive Software Development Jim Highsmith ...
Net Objectives, 3/26/2003 11

NetObjectives

Agenda
The Software Problem What is Process? Why Agility Works Description of RUP Description of XP Description of Scrum Best of Breed Combinations Additional Success Factors

Net Objectives, 3/26/2003

12

NetObjectives

Process
Every software project has a process: somewhere between hack it out and Space Shuttle software Basically, processes tell you what to do, and when to do it.
Plan-driven: you determine up-front what youre going to do, and follow it Evaluation-driven: at any given time figure out what the next thing to do is, and do it Combination: have an initial plan, continuously updating as needed
Net Objectives, 3/26/2003 13

NetObjectives

Why do We Need a Process?


A process is needed because stakeholders have various expectations for a software project, and want some guarantee that they will get them
Quality code Provide business value Follow-on work Correct code Quality product offering
Training Help desk Etc
Net Objectives, 3/26/2003 14

Management visibility Quality of life Accurate progress reports React to changing requirements CMM/ISO Test Coverage

NetObjectives

Formal Process vs Team Discipline


There is a natural tension between having a disciplined team and having formal process The more disciplined the team is, the less formal process you need Most people arent disciplined enough, so some process is usually necessary Process is useful, but we must look at why we want the process Every Project is different

Net Objectives, 3/26/2003

15

NetObjectives

What Defines a Process?


Principles/Fears what guides you? Activities what do you do? Roles who does it? Practices how do you do it? Products what gets produced (and persisted)?

Net Objectives, 3/26/2003

16

NetObjectives

Three Levels of Development

Business Level Product Level Development Level

Users Users Customers Customers Developers Developers

Business Need

Net Objectives, 3/26/2003

17

NetObjectives

Evaluating a Process
Understand the Process: what are the Principles/Fears, Activities, Roles, Practices, and Products? Determine the Coverage: how well does the process span the three levels of development? Use Your Judgment: does this process meet your needs, for this team, for this project, at this time?
Always remember: there is no one size Always remember: there is no one size fits all, silver bullet, process out there fits all, silver bullet, process out there
Net Objectives, 3/26/2003 18

NetObjectives

Agenda
The Software Problem What is Process? Why Agility Works Description of RUP Description of XP Description of Scrum Best of Breed Combinations Additional Success Factors

Net Objectives, 3/26/2003

19

NetObjectives

Agility is
The ability to move faster than those things that can harm your project The ability to keep up with relevant changes
In requirements In knowledge of our system In environment

Agility is only relevant in a context

Net Objectives, 3/26/2003

20

NetObjectives

These Things Include


Changing Requirements
New Functionality Learn more about system

Changing Priorities
Different Stakeholders New Situations

Changing Environment
New OS, Languages, etc

Changing Budgets
Fewer Developers Do More with Less

More How Can We Make This Work?


Net Objectives, 3/26/2003 21

NetObjectives

In Order to Succeed You Need Something to Work With


All managers know that you need float in order to make a project work When developing software, where is the float that we have to work with?

Lets think about this for a minute

Net Objectives, 3/26/2003

22

NetObjectives

Scope, Functionality and Robustness


Scope measures how much is in the system the product of functionality and robustness Functionality is based on the problems being solved or goals being addressed
some is more important than others Thought of as the width of the system Described mile wide inch deep

Robustness measures the depth at which functionality is handled


Secondary versions Error recovery Business Rules Refinements The actual depth

Example: say you had to handle names in your system


Net Objectives, 3/26/2003 23

NetObjectives

Say You Need to Handle Names in Your System


Names are how people identify themselves
John A. Smith Prof. Frederick Martin Biedenweg III, PE Chuck OReilly, Susan Walton-Smythe Albert van der Hoeven Frank O, Adolph Wolfeschlegelsteinhausenbergerdorft Cher, Madonna, Sting Nguyen Bich Frank Bich Nguyen Frank Bich Tchang Kai Chek, Chang Kai Chek, Chiang Kai-shek, Jiang Jieshi, (the artist formerly known as Prince)

As you can imagine, there is a large cost difference between handling the basic functionality and handling it all This difference is the float you have to work with
Net Objectives, 3/26/2003 24

NetObjectives

Delivering Functionality in an Agile Project


What we know to start

What we budget

MaxROI
What we deliver

The Universe of Possibilities


Net Objectives, 3/26/2003 25

NetObjectives

Agenda
The Software Problem What is Process? Why Agility Works Description of RUP Description of XP Description of Scrum Best of Breed Combinations Additional Success Factors

Net Objectives, 3/26/2003

26

NetObjectives

RUP (Rational Unified Process)

Process Framework
Well Engineered Development Management

Net Objectives, 3/26/2003

27

NetObjectives

Perceptions of RUP

Manageable, traceable, visible, the way things should be done

Heavyweight, boring, waste of time


Net Objectives, 3/26/2003 28

NetObjectives

RUP Principles

Use Case Driven Use Case Driven Architecture Centric Architecture Centric Iterative and Iterative and Incremental Incremental Uses UML Uses UML Can be Tailored to a Can be Tailored to a Projects needs Projects needs

Develop Software Develop Software Iteratively Iteratively Manage Requirements Manage Requirements Use component-based Use component-based Architectures Architectures Visually Model Visually Model Software Software Verify Software Quality Verify Software Quality Control Changes to Control Changes to Software Software
29

Net Objectives, 3/26/2003

NetObjectives

The Real Motivation of RUP My View


Making mistakes is expensive, so make sure you know what you want to do before you do it A good solid system has a good solid architecture Plans and Budgets are hard to follow, so you need many interim deliverables to make sure youre on track (management touch points) Things change, so be iterative and incremental so that you can modify your plans as necessary

Net Objectives, 3/26/2003

30

NetObjectives

RUP Activities
Lifetime of a system is made up of Cycles
Development, improvement, maintenance

Phases
Inception, Elaboration, Construction, Transition

Iteration
Project Management, Analysis, Requirements, Design, Code, Test

Activity
List later

Net Objectives, 3/26/2003

31

NetObjectives

Cycles/Phases/Iterations

Net Objectives, 3/26/2003

32

NetObjectives

Lifetime is made of Cycles

Deliver v1.0

Deliver v2.0

Net Objectives, 3/26/2003

33

NetObjectives

Phases Concentrate on Different Levels of Development


kickoff delivery 1.0 delivery 2.0

Business Level
Inception Inception Transition Transition Inception Inception Transition Transition

Product Level
Elaboration Elaboration Elaboration Elaboration Construction Construction

Development Level

Construction Construction

Net Objectives, 3/26/2003

34

NetObjectives

RUP Activities By Phase (Project Management)


Inception Project Management Identify Risks Develop Project Plan Staff Project Develop Iteration Plan Evaluate Iteration Revisit Risk List Elaboration Construction

****** ****** ****** * * *

* * *** ***** *** ***

* * *** ***** ***** *****

Net Objectives, 3/26/2003

35

NetObjectives

RUP Activities By Phase (Business Modeling)


Inception Business Modeling Capture a Common Vocabulary Find Business Actors and UCs Structure Business UC Model Describe Business UC Find Business Workers/Entities Describe a Business Worker Describe a Business Entity Review the Business UC Model Review the Business Object Mdl ****** ****** ****** ****** ****** ****** ****** ****** ****** * * * * * Elaboration Construction

Net Objectives, 3/26/2003

36

NetObjectives

RUP Activities By Phase (Requirements)


Inception Requirements Develop Vision Manage Dependencies Elicit Stakeholder Requests Capture a Common Vocabulary Find Actors and Use Cases Prioritize Use Cases Structure the Use Case Model Detail a Use Case User Interface Modeling User Interface Prototyping Review Requirements ****** ** ****** ****** ****** *** ***** ** *** ** *** ***** * ** *** *** * **** *** *** *** * ** * *** Elaboration Construction

Net Objectives, 3/26/2003

37

NetObjectives

RUP Activities By Phase (Analysis & Design)


Inception Analysis and Design Architectural Analysis Architectural Design Use Case Analysis Describe Concurrency Describe Distribution Review Architecture Subsystem Design Class Design Database Design Use Case Design Review Design * *** * * ****** ****** ****** ****** ****** ****** ** * * ** * * * *** *** *** * ****** ****** ****** ****** ****** Elaboration Construction

Net Objectives, 3/26/2003

38

NetObjectives

RUP Activities By Phase (Implementation)


Inception Implementation Implementation Model Plan System Integration Integrate System Plan Subsystem Integration Implement Classes Fix A Defect Perform Unit Test Review Code Integrate Subsystem * * ** * ****** **** ****** ****** ****** ****** ****** ****** ****** Elaboration Construction

Net Objectives, 3/26/2003

39

NetObjectives

RUP Activities By Phase (Test)


Inception Test Plan Test Design Test Implement Test Execute Integration Test Execute System Test Execute Performance Test Design Test Classes and Pkgs Implement Test Components and Subsystems Evaluate Test * ** * ****** ****** ****** ****** ****** ****** ****** ****** ****** Elaboration Construction

Net Objectives, 3/26/2003

40

NetObjectives

RUP Roles
Project Manager Business-Process Analyst Business Designer Business Reviewer System Analyst Use Case Specifier Architect User Interface Designer Requirements Reviewer Designer Database Designer Architecture Reviewer Design Reviewer System Integrator Implementor Code Reviewer Test Designer Integration Tester Performance Tester

Net Objectives, 3/26/2003

41

NetObjectives

RUP Practices
The actual practices are pretty much left up to the developer However, there are lots of diagrams like these that show how the activities fit together

Net Objectives, 3/26/2003

42

NetObjectives

Some RUP Products

Vision Document/ Business Case Glossary Software Development Plan


Risk List Project Plan Measurement Plan CM Plan Integration Build Plan Test Plan

Architecture Description (4+1)


Use case view Analysis view Design view Deployment view Implementation view

Iteration Plans Iteration Assessments Use Case Model Analysis Model Design Model Deployment Model Implementation Model Test Model
Net Objectives, 3/26/2003 43

User Interface Prototype Interfaces Analysis Packages Design Subsystems Implementation Subsystems Components Test Cases Test Procedures Test Components Test Evaluations Defect Lists

NetObjectives

Discussion Questions
Whos going to like RUP, and why? Whos going to hate RUP, and why?

Net Objectives, 3/26/2003

44

NetObjectives

Agenda
The Software Problem What is Process? Why Agility Works Description of RUP Description of XP Description of Scrum Best of Breed Combinations Additional Success Factors

Net Objectives, 3/26/2003

45

NetObjectives

XP (eXtreme Programming)

Development Practices
The Customer Drives Its all about the Code

Net Objectives, 3/26/2003

46

NetObjectives

Perceptions of XP

Cool, trusts the developers, lets me do my thing

Formalized hacking, waste of resources, no management control

Net Objectives, 3/26/2003

47

NetObjectives

XP Principles
Rapid Feedback Rapid Feedback Assume Simplicity Assume Simplicity Incremental Change Incremental Change Quality Work Quality Work Fine Scale Feedback Fine Scale Feedback Continuous Process Continuous Process Shared Understanding Shared Understanding Programmer Welfare Programmer Welfare

Communication Communication Simplicity Simplicity Feedback Feedback Courage/Aggression Courage/Aggression


Net Objectives, 3/26/2003 48

NetObjectives

The Real Motivation of XP My View


Good clean code is easy to change Customers make all business decisions Developers make all technical decisions Make iterations as short as possible so that Customer can drive with rapid feedback

Net Objectives, 3/26/2003

49

NetObjectives

XP Activities Produce User Stories Release Planning Planning Game (iteration planning) Development Spike Solution Run Acceptance Tests

Net Objectives, 3/26/2003

50

NetObjectives

XP Roles Programmer Customer Tester Coach Tracker Manager

Net Objectives, 3/26/2003

51

NetObjectives

XP Practices

Business Level
OnsiteCustomer OnsiteCustomer AcceptanceTests AcceptanceTests SmallReleases SmallReleases SustainablePace SustainablePace PlanningGame PlanningGame

Product Level

SimpleDesign ContinuousIntegration UnitTests SimpleDesign ContinuousIntegration UnitTests

CodingConventions Development Level RefactorMercilessly TestDrivenDevelopment CodingConventions RefactorMercilessly TestDrivenDevelopment SystemMetaphor SystemMetaphor CollectiveCodeOwnership CollectiveCodeOwnership PairProgramming PairProgramming

Net Objectives, 3/26/2003

52

NetObjectives

XP Products
Release Plan User Story Code Unit Tests Acceptance Tests

Net Objectives, 3/26/2003

53

NetObjectives

Use Case versus User Story


Use Case: Describes how an Actor interacts with the system to achieve a Goal
Focus is on user and validation Tells a complete story

User Story: A bite-size bit of functionality that has business value and can be developed in a few days
Focus is on developer and production Part of a complete story

Net Objectives, 3/26/2003

54

NetObjectives

Use Case versus User Story


Use Case: Logon to System
Actor: ATM Customer Scope: ATM Machine Description: After swiping the ATM Card, the user is asked for a password. The system verifies that the card is legitimate and that the password corresponds to the card. The user is then given access to all the other ATM commands. The user is given three chances to enter a correct password; after the third time the ATM Card is kept by the machine.

Sample User Stories


Display welcome screen until user swipes ATM Card Display login screen until password is entered Verify that ATM card is legitimate Verify the password is legitimate Implement three strikes algorithm for password entry Swallow card if card is illegitimate Swallow card if password fails Return Card if Network Goes Down NetObjectives Net Objectives, 3/26/2003 55

Another Version
Story: Ok on Password screen gives full capability to anybody Story: fixed passwords for different capability suites Story: "three Strikes" algorithm Story: Screen Capabilities by ID still fixed password for each capability Story: Different Password for each ID Story: Full Password capability (different password per ID per capability suite)
Net Objectives, 3/26/2003 56

NetObjectives

Ever Unfolding Story


Vision Use Case Requirements Model

Goals/Constraints

Scenario

Extension

Sub Use Case

(sub)System

Data Element

UI Element

Business Rule

Other Models
Net Objectives, 3/26/2003 57

NetObjectives

Use Cases to User Stories 1


Use Cases Technical

Sooner Later
Net Objectives, 3/26/2003 58

NetObjectives

Use Cases to User Stories 2


Use Cases 1 Technical

Sooner Later
Net Objectives, 3/26/2003 59

NetObjectives

Use Cases to User Stories 3


Use Cases 1 2 Technical

Sooner Later
Net Objectives, 3/26/2003 60

NetObjectives

Use Cases to User Stories 4


Use Cases Technical

Sooner Later
Net Objectives, 3/26/2003 61

NetObjectives

Discussion Questions
Whos going to like XP, and why? Whos going to hate XP, and why?

Net Objectives, 3/26/2003

62

NetObjectives

Agenda
The Software Problem What is Process? Why Agility Works Description of RUP Description of XP Description of Scrum Best of Breed Combinations Additional Success Factors

Net Objectives, 3/26/2003

63

NetObjectives

Scrum

Management Strategy
Communication and Empowerment Team/Management Interactions

Net Objectives, 3/26/2003

64

NetObjectives

Perceptions of Scrum

Huh?!

Net Objectives, 3/26/2003

65

NetObjectives

Scrum Principles
Commitment Commitment Focus Focus Openness Openness Respect Respect Courage Courage Visibility Visibility Communications Communications Remove Remove Impediments Impediments No Interference No Interference
Net Objectives, 3/26/2003 66

Built-in instability Built-in instability Change out of Change out of Chaos Chaos Self-organizing Self-organizing project teams project teams Overlapping Overlapping development phases development phases Multi-learning Multi-learning Subtle control Subtle control Transfer of learning Transfer of learning

NetObjectives

The Real Motivations of Scrum My View


Changes may be hard to make, so identify them as soon as possible Developers know how to develop, so just stay out of their way and let them do it Make 30-day iterations for two reasons:
Enough heft to allow Developers to believe theyre doing something real Short enough so that Management doesnt feel abandoned

Net Objectives, 3/26/2003

67

NetObjectives

Scrum Activities
Sprint Planning Sprint Daily Scrum Sprint Review

Net Objectives, 3/26/2003

68

NetObjectives

Scrum Roles
Scrum Master Product Owner Scrum Team

Not much detail, because Scrum is a lightweight management process, not a development process
Net Objectives, 3/26/2003 69

NetObjectives

Scrum Practices
Identify and Remove Impediments Identify Product Backlog Define Sprint Backlog No Interference, no Intruders, no Peddlers Frequent, First-Hand Observations

Net Objectives, 3/26/2003

70

NetObjectives

Scrum Products
Sprint Backlog Release Backlog Product Backlog
Burndown Graph
180 160 140 120 100 80 60 40 20 0

work remaining

11

13

15

17

19

21

23

25

27

days

Net Objectives, 3/26/2003

71

NetObjectives

Discussion Questions
Whos going to like Scrum, and why? Whos going to hate Scrum, and why?

Net Objectives, 3/26/2003

72

NetObjectives

29

Agenda
The Software Problem What is Process? Why Agility Works Description of RUP Description of XP Description of Scrum Best of Breed Combinations Additional Success Factors

Net Objectives, 3/26/2003

73

NetObjectives

Best of Breed Combinations

My View of the Best

Net Objectives, 3/26/2003

74

NetObjectives

Best of Breed Practices/Concepts


These are the practices/concepts that I look for in a Projects process
Practice or Concept Iterative and Incremental Architecture-Centric Validation-Centric Developer/Customer Interaction Developer/Management Interaction Developer/Support Interaction Business Owner Buy-In Risk Management Quality Code Management Touch Points Large Teams Small Teams Complex Projects Use Cases Net Objectives, 3/26/2003 75
?

RUP

XP

Scrum

NetObjectives

Two Sample Cocktails


Top-Down Process
Large, complex project Management centered, ceremony needed

Bottom-Up Process
Small e-commerce project Developer centered, keep as simple as possible

Each project must mix its own cocktail

Net Objectives, 3/26/2003

76

NetObjectives

Cocktail 1 Large, Complex Project what Im thinking


Start with RUP Use 1-month iterations, a la Scrum Use XP Practices as much as possible
System Analyst or Architect acts as XP Customer for Construction Phase Adapt XP Practices as I can for other Phases

Handle Team/Management interaction in Scrum fashion Tailor out as much else as I can, without running foul of any major Stakeholders fears

Call the process Tailored RUP because thats what it is


Net Objectives, 3/26/2003 77

NetObjectives

Cocktail 1 what it looks like


Inception
Iteration 1

Elaboration
Iteration 2 Iteration 3

Construction
Iteration 4 Iteration 5

Transition
Iteration 6

Inception
Develop use cases in pairs (analyst/architect + user) Do just enough to develop a backlog to start with

Elaboration
Develop architecture in pairs (analyst/architect + lead developer) Continue to work on Use Cases

Construction
Multiple XP teams developing different parts of the architecture Scrum Master for each team with Project Manager over all Cross-team pairing for interface and infrastructure issues

Transition
Integration of different parts of the architecture Pairing to fix bugs and integrate
Net Objectives, 3/26/2003 78

NetObjectives

Cocktail 2 Small e-commerce project


Start with XP Use 1-month iterations, a la Scrum (shorter if your tools can handle it and the team wants to) Add other Scrum practices to manage the teams relations to management
Scrum Master Protect/Insulate the team

Add Use Cases from RUP


Architect pairs with Marketing Staff to develop them Marketing sells use cases to the world Architect converts use cases to user stories for the developers

Call the process XP++ or Scrum with an XP Center


Net Objectives, 3/26/2003 79

NetObjectives

Cocktail 2 what it looks like

Business Level
OnsiteCustomer OnsiteCustomer AcceptanceTests AcceptanceTests

Use Cases Use Cases

ProductPlanningGame Level PlanningGame


Identify and Remove Impediments Identify and Remove Impediments

Small Releases Small Releases


No Interference, no Intruders, no Peddlers No Interference, no Intruders, no Peddlers

SustainablePace SustainablePace

SimpleDesign ContinuousIntegration UnitTests SimpleDesign ContinuousIntegration UnitTests

CodingConventions Development Level RefactorMercilessly TestDrivenDevelopment CodingConventions RefactorMercilessly TestDrivenDevelopment SystemMetaphor SystemMetaphor CollectiveCodeOwnership CollectiveCodeOwnership PairProgramming PairProgramming

Net Objectives, 3/26/2003

80

NetObjectives

Needs to Tasks Problem


No matter what process you use, the fundamental technical problem is to analyze the users needs in order to determine development tasks
Business Level Product Level Development Level
Net Objectives, 3/26/2003

Need

Task Task Task Task Task Task Task Task Task Task Task Task
81

NetObjectives

Needs to Tasks - RUP


Here are the major steps in moving from a Users need to a collection of Developer Tasks in RUP
Business Level Product Level
Need
Detail a Use Case

Use Case
Use Case Realization
Analyze a Use Case Analyze a Class

Analysis Classes

Development Level
Net Objectives, 3/26/2003

Task Task Task Task Task Task Task Task Task Task Task Task
82

NetObjectives

Needs to Tasks - XP
Here are the major steps in moving from a Users need to a collection of Developer Tasks in XP
Business Level Product Level
Iteration Planning Game

Need
Magic Performed by Customer

User Story User Story User Story User Story

Development Level
Net Objectives, 3/26/2003

Task Task Task Task Task Task Task Task Task Task Task Task
83

NetObjectives

Needs to Tasks Combined


Heres what I recommend for the major steps in moving from a Users need to a collection of Developer Tasks
Business Level Use Case Product Level
Iteration Planning Game Detail a Use Case

Need
Ever-Unfolding Story

User Story User Story User Story User Story

Development Level
Net Objectives, 3/26/2003

Task Task Task Task Task Task Task Task Task Task Task Task
84

NetObjectives

Agenda
The Software Problem What is Process? Why Agility Works Description of RUP Description of XP Description of Scrum Best of Breed Combination Additional Success Factors

Net Objectives, 3/26/2003

85

NetObjectives

Team Values
Cooperation Communication Trust Honesty Respect Courage/Aggression Quality work Play to win

Net Objectives, 3/26/2003

86

NetObjectives

Environment
Available Customer Source Code Management Coding Standards Continuous Integration Facilitate Communications Information Radiators Team Room

Net Objectives, 3/26/2003

87

NetObjectives

Please Fill Out Evaluations

Net Objectives, 3/26/2003

88

NetObjectives

Net Objectives Who We Are


Mission: Guiding and empowering our customers in their software development efforts via courses and coaching. Vision: Effective and efficient software development without suffering. We provide training, mentoring and consulting for all phases of object-oriented software development. We assist companies transitioning to object-oriented development by providing mentoring throughout the entire development process.

Net Objectives, 3/26/2003

89

NetObjectives

Use Cases and Analysis


Writing Effective Use Cases. Capturing functional requirements with Use Cases is a software development best practice. This two-day course provides theory and practice in writing use cases, an understanding of how use cases fit into software development, and a variety of optional topics. The course is largely based on Alistair Cockburn's book "Writing Effective Use Cases" - winner of the Jolt Productivity Award for 2001. As a certified member of Cockburn and Associates, we are one of the few companies authorized to teach it. Use Case Based Requirements Analysis. Use Cases are the best tool known for capturing and documenting the functional requirements for a system. Unfortunately, trying to capture a system's use cases all at once often leads to a severe case of "analysis paralysis". The Ever-Unfolding Story is an incremental technique for developing use cases and refining them into more detailed requirements. Because it's incremental, the EverUnfolding Story allows for frequent validation of the requirements, and supports both artifact-driven and agile development processes. The course consists of lecture and hands-on exercises, and the use case portion is largely based on Alistair Cockburn's book "Writing Effective Use Cases" - winner of the Jolt Productivity Award for 2001.

Net Objectives, 3/26/2003

90

NetObjectives

Agile Development and OOA/UML


Agile Development Best Practices. In simple terms, an Agile Project is one that is predicated on making sure it is always doing the right thing, not merely following a plan that has since gone out of date. The cornerstone of this approach is getting and adapting to feedback as the project progresses. Most projects can't do this, so they fall further behind and either fail or provide inferior products. Changes are of many types, but the most common (and important) changes are to the system's requirements. This course analyzes what it means to be an agile project, and provides a number of best practices that provide and/or enhance agility. Different agile practices (including RUP, XP and Scrum) are discussed. Object-Oriented Analysis With the UML. The word "analysis" means many things when discussing software development. In this two-day course you will learn about three different kinds of analysis: Domain Analysis, Requirements Analysis, and Architectural Analysis. The course consists of lecture and many hands-on exercises; you will learn a number of different modeling techniques, and use many common Unified Modeling Language (UML) diagrams. Throughout the course the focus is on the Analyst's job - providing information that will give other developers a "fighting chance" to develop the correct software.
Net Objectives, 3/26/2003 91

NetObjectives

Design Patterns and Refactoring


Design Patterns Explained: A New Perspective on Object-Oriented Design. This course goes beyond merely teaching several design patterns. It also teaches the principles and strategies that make design patterns good designs. This enables students to use these advanced design techniques in their problems whether design patterns are even present. After teaching several patterns and the principles underneath them, the course goes further by showing how patterns can work together to create robust, flexible, maintainable designs. Refactoring and Unit Testing Key Skills for Agile Development. The practice of Agile Software Development requires, among other things, a high degree of flexibility in the coding process. As we get feedback from clients, stakeholders, and end users, we want to be able to evolve our design and functionality to meet their needs and expectations. This implies an incremental process, with frequent (almost constant) change to the code we're working on. Refactoring, the discipline of changing code without harming it, is an essential technique to enable this process. Unit testing, which ensures that a given change has not caused an unforeseen ripple effect in the system, is another.

Net Objectives, 3/26/2003

92

NetObjectives

Java: On-site and Instructor Led WebBased Training


Object-Oriented Programming: Java Edition. Java is a powerful programming language, but its true value emerges only when a solid understanding of Object Oriented Programming techniques are applied. This two-day course focuses on the essential concepts of OO: Encapsulation, Inheritance, and Polymorphism, and includes practical examples and exercises using Java code. Emphasis is placed on implementation issues such as strong cohesion, loose coupling, and eliminating redundancy. Best practices, as illustrated by common design patterns are also discussed. On-line/instructor led Java Training. This is our on-line equivalent of our 5-day Java training. This is not a self-study program where you get email answers to your question. This is a high-touch training program where you work in frequent (albeit remote) contact with both the instructor and your student community. The core of the Java language is taught as well as some SWING and many of the core Java classes. It requires about 4 hours a week from each participant and takes place over 12 weeks.

Net Objectives, 3/26/2003

93

NetObjectives

C#: On-site and Instructor Led WebBased Training


C# for C++ and Java Developers. C# is the flagship language for .NET, and despite what many have suggested, it is neither Java with enhanced syntax. nor is it C++ with better manners. C# is a new language, with many new syntactic elements. Also, programming in .NET requires an understanding of the framework and the development process it is designed to support. This 1-day course is intended to elucidate the C# language in terms of syntax, process, and some early-adopter best practices, making the transition for Java and C++ developers as smooth as possible. On-line/Instructor Led C# Training. This course teaches the basics of the C# language as well as many of the standard C# classes that support the language. It is equivalent to a 5-day C# training class. It requires about 4 hours a week from each participant and takes place over 12 weeks.

Net Objectives, 3/26/2003

94

NetObjectives

Object-Oriented Programming in .NET


Object-Oriented Programming: C# Edition. The emergence of .Net for distributed computing has brought along with it a new flagship language: C# (C-Sharp). Those who are familiar with C, C++, and Java will find the syntax of C# relatively easy to absorb, but using the language properly will require a firm grounding in OO concepts and practices. This two-day course focuses on the essential concepts of OO: Encapsulation, Inheritance, and Polymorphism, and includes practical examples and exercises using C# code. Emphasis is placed on implementation issues such as strong cohesion, loose coupling, and eliminating redundancy. Best practices, as illustrated by common design patterns are also discussed. Object-Oriented Programming: VB.NET Edition. Visual Basic (VB) has undergone a major transformation with the new version for .Net. What was once an object-based, procedural language has now become an Object Oriented language akin to C++, Java, and C#. While the primary aspects of its syntax has not changed, this shift to a true Object Orientation will require those with an investment in VB knowledge to learn new concepts such as inheritance, polymorphism, designing to interfaces, and object composition. This 2-day course will take the experienced VB 5.0 or VB 6.0 developer and teach them the OO concepts they need to move to VB.Net.
Net Objectives, 3/26/2003 95

NetObjectives

C++ and XML


Object-Oriented Programming: C++ Edition. C++ is a powerful programming language, but its true value emerges only when a solid understanding of Object Oriented Programming techniques are applied. This two-day course focuses on the essential concepts of OO: Encapsulation, Inheritance, and Polymorphism, and includes practical examples and exercises using C++ code. Emphasis is placed on implementation issues such as strong cohesion, loose coupling, and eliminating redundancy. Best practices, as illustrated by common design patterns are also discussed. XML and Its Family of Technologies. XML is a powerful new standard for data modeling and communication, controlling presentation, and inter/intra-process communication. As XML is a cross-platform tool, it is a natural fit for the Java programming language, which is also operating system independent. This course introduces the student to XML and its primary supportive technologies such as SAX/DOM, DTD/Schema, JDOM, and XSLT, with an emphasis on the motivations behind these tools and the way they interrelate. The instructor will then provide detailed, practical examples of how these tools can be used in a Java-based project.

Net Objectives, 3/26/2003

96

NetObjectives

Bibliography

Best place to buy books: www.bestbookbuys.com Full bibliography at http://www.netobjectives.com/resources/rs_bks.htm NetObjectives

Net Objectives, 3/26/2003

97

Net Objectives Community of Practice


We provide a public forum for discussion of topics including:
Design patterns Agile methods (including XP, Scrum, RUP) Use cases Emergent design

We also have several books under development on-line for review by the community. Go to http://www.netobjectivesgroups.com for more information. To subscribe to our e-zine, send an e-mail to info@netobjectives.com with subscribe in the subject line
Net Objectives, 3/26/2003 98

NetObjectives

Bibliography Patterns - Core


Design Patterns: Elements of Reusable Object-Oriented Software, Gamma, Helms, Johnson, Vlissides (still the best
reference book on patterns)

Design Patterns Explained: A New Perspective on ObjectOriented Design, Shalloway, Trott Design Pattern Java Workbook, Metsker (good for Java
implementation)

Pattern Oriented Software Architecture: A System of Patterns, Bushmann, (a little dated, but still useful) Timeless Way of Building, Christopher Alexander (a classic.
The only book in my top ten personal and top ten business)

Net Objectives, 3/26/2003

99

NetObjectives

Bibliography Patterns - Specialized


Patterns Of Enterprise Application Architecture, Fowler, et.
al.

Pattern Oriented Software Architecture Vol 2: Patterns for Concurrent and Networked Objects, Schmidt, Stal, Rohnert,
Buschmann, (great book for multithreaded, distributed patterns)

Net Objectives, 3/26/2003

100

NetObjectives

Bibliography - Agile Methodologies


Agile Software Development, Cockburn Agile Software Development With Scrum, Schwaber, Beedle Extreme Programming Explained: Embrace Change, Beck Extreme Programming Installed, Jeffries Extreme Programming Applied: Playing to Win, Auer, Miller Bibliography - The UML and Use Cases Writing Effective Use-Cases, Cockburn Patterns for Effective Use Cases, Adolph&Bramble, et. al. with UML Distilled, Martin Fowler (easiest and best way to learn what the UML
is) contributions from our own Dr. Dan Rawsthorne

Net Objectives, 3/26/2003

101

NetObjectives

Bibliography - Java
Effective Java, Bloch Java Design, Coad (best book on how to do OO in Java by far) Thinking in Java (3rd Ed), Eckel. Great book to learn Java and
object-oriented programming from.

Bibliography - Miscellaneous
verify initial designs)

(The) CRC Card Book , Bellin, Simone (CRC cards are a great way to Multi-Paradigm Design for C++, Coplien (excellent description of
commonality/variability analysis -- I even recommend the first part for Java programmers. See http://www.netobjectives.com/download/CoplienThesis.pdf for the books equivalent on the web)

Net Objectives, 3/26/2003

102

NetObjectives

Bibliography Refactoring/XP Related


Emergent Design: Refactoring and Design Patterns for Agile Development, by Scott L. Bain, Alan Shalloway, Dr. Dan Java Tools for Extreme Programming: Mastering Open Source Tools Including Ant, JUnit, and Cactus, Richard

Rawsthorne. Late 2003. For previews: http://www.netobjectives.com/emergentdesign/ed_toc.htm

Hightower, Nicholas Lesiecki Refactoring, Martin Fowler (most in depth book on this old practice) Test Driven Development: By Example, Kent Beck. Not as great as we were hoping, but very useful.

Net Objectives, 3/26/2003

103

NetObjectives

On-Line Books Many books are available on-line at:


www.netobjectivesbooks.com/N_O_BookFeedback_Wiki/owbase/ow.asp?OnLineBooks

Specific Articles of Great Interest

Test Infected: Programmers Love Writing Tests


A great article on doing test driven development with Junit by Gamma and Beck - the authors of JUnit. http://members.pingnet.ch/gamma/junit.htm

Net Objectives, 3/26/2003

104

NetObjectives

Famous Sayings
The check is in the mail. Ill respect you in the morning. Weve got all the requirements. Thatll never happen. That always happens. I'll write the tests later. I can write bad code because I know refactoring. Yes, Im sure. Well integrate it in later. Ill fix it later.

Net Objectives, 3/26/2003

105

NetObjectives