Following the RUP process Using RUP “Philosophies of RUPing

29/04/2014
Using RUP
Following the RUP process
• You need a defined software process to follow in your projects:
– For CSCI222:
Examples and illustrations from various sources at Rational, other parts of
IBM’s “developerworks” site and the reference text
The Rational Unified Process: An Introduction: P Kruchten
(Available as electronic resource via Uni library)
• A1 : completion of design, and implementation
• A2 : initial requirements, and high level design
– For CSCI321:
• From requirements to delivery
• As mentioned before
– Agile methods – not really appropriate; they are too intense for student
projects (100% participation, whole group, daily scrum, osmosis, pairs, etc);
further, they don’t deliver many of items that would be required for
assessment (like design documentation!)
• Chosen approach : you will RUP
– OK, RUP is adjustable in its formality¶
– When you make your “development case” you will be able to
determine which RUP features to include in your CSCI321 project
1
¶Software Engineers have adopted the word “ceremony” – a regimented waterfall style development with lots of formalized
hand-over points is referred to as “high ceremony”, an XP development that degenerates into simple hacking would be
“low ceremony”. Weird term. Sounds to me like something to do with religious practices.
2
RUP – Principles
“Philosophies of RUPing”
• Principles:
– Adapt the process
– Balance stakeholder priorities
– Collaborate across teams
– Demonstrate value iteratively
– Elevate the level of abstraction
– Focus continuously on quality
“Key principles for business driven development”
Koll + Royce
3
Remember these?
RUP
4
Not Winston Royce of “waterfall” fame!
RUP – working it out
•
•
•
•
•
•
•
•
•
•
• Spirit
– Attack major risks early and continuously… or
they will attack you.
– Ensure that you deliver value to your customer.
– Stay focused on executable software.
– Accommodate change early in the project.
– Baseline an executable architecture early on.
– Build your system with components.
– Work together as one team.
– Make quality a way of life, not an afterthought.
Develop a Vision
Manage to the Plan
Identify and Mitigate Risks
Assign and Track Issues
Examine the Business Case
Design a Component Architecture
Incrementally Build and Test the Product
Verify and Evaluate Results
Manage and Control Changes
Provide User Support
“Ten Essentials of RUP” L Probasco
and these?
“Spirit of RUP” P Kroll
5
Maybe these?
6
1
29/04/2014
RUP – the principles
Adapt the process
• Complex systems  more process!
• Vary during lifecycle – at start when in innovative imaginative
phases use light “ceremony”; in later phases will want more
restrictions on changes.
• Try to improve process – assessments at end of iterations etc
• OK, these are a little remote from the
concerns of students doing standard
student projects!
• They are intended as guidelines almost
for IT managers negotiating with client
groups!
• Still, the principles are important …
7
8
Principles!
Collaborate across teams
Balance stakeholder priorities
• First: understand and prioritize business and stakeholder needs.
Involve the customer in the project to ensure you understand
their needs.
• Centre development activities around stakeholder needs.
Stakeholder needs will evolve. The development process needs
to accommodate these changes.
• Balance asset reuse with stakeholder needs – quite often a
large percentage of desired functionality can be realized simply
by adapting existing legacy systems (often just by putting a
WWW front-end on them!). Make sure that the remaining
desired functionality really justifies custom development.
• Utilize component technology to build systems from standard
subparts! Components substantially reduce the cost of
delivering desired functionality.
9
Principles
Demonstrate value iteratively
• Teams? Business, software, operations
• Empower the individual teams
– Ideas similar to “agile”; self-managed team,
with authority to make decisions
• Team Interactions?
– Facilitate through environment
• Wikis etc constructed to document the system
• Integrated development environments, change
management systems
Principles
10
Elevate the level of abstraction
• Deliver incremental value to enable early and
continuous feedback –
– Get the feedback early “Oh, no maybe that isn’t what
we really want; something more like …”; you can then
incorporate the changes before too much
commitment to an incorrect solution
• “One effective approach to reducing complexity is reusing
existing assets, such as reusable components, legacy systems,
existing business processes, patterns, or open source
software.”
– Reuse “middleware”: databases, Web servers and portals
– Exploit open source software
– Reuse existing assets through “service oriented
architectures”
• Iterative approaches also reduce risk
Principles
11
Principles
12
2
29/04/2014
Focus on Quality
Focus continuously on quality
• “Ensuring high quality requires more than the
participation of the testing team; it requires that the
entire team owns quality. It involves all team
members and all parts of the lifecycle.”
“One of the major benefits of iterative development is that it
enables a test early and continuously approach.
…
As we incrementally build our application, we should also
incrementally build test automation to detect defects early”
– Analysts: make sure that requirements are testable.
– Developers: design applications with testing in mind, test
their code.
– Testers (the “quality experts”) guide the rest of the team in
understanding software quality issues, and are responsible
for functional-, system-, and performance-level testing.
• “When we experience a quality issue, every team
member should be willing to chip in to address the
issue.”
13
Principles
RUP - Spirit
14
Principles and spirit
• Spirit
• The principles – well they are more for
your boss.
• The spirit – setting the culture of your
development group
– Attack major risks early and continuously… or
they will attack you.
– Ensure that you deliver value to your customer.
– Stay focused on executable software.
– Accommodate change early in the project.
– Baseline an executable architecture early on.
– Build your system with components.
– Work together as one team.
– Make quality a way of life, not an afterthought.
– Of course, some overlaps with principles
• Your boss has his principles
• Your team has spirit
• But much the same
15
16
Ensure that you deliver value
to your customer.
Attack major risks early and
continuously… or they will attack you.
• At the beginning of each iteration, revise your list of
risks. Prioritize the risk list, then decide what you
need to do to address.
• Examples of risks
• Use cases
– They are an expression of the customers needs
– They drive the entire project – every bit of code can
ultimately be related back to a defined use case.
– How to integrate with some legacy system: e.g. existing database is
hierarchical, the transaction system uses COBOL tasks,
– Ms. K. Styles, project liaison officer in the XXX department, has
negative approach to all new systems
– Requirement to use new technology – no existing experience
among team members
• Addressing the risks
– Subcontracting specialist tasks?
– Require written agreements on requirements from client
departments; keep them involved with prototyping; solicit their
feedback?
– Training?
Spirit
– Team members at all levels can relate their work back to
requirements
– Use cases – “user manual without the final user interface!”
17
Spirit
18
3
29/04/2014
Accommodate change early
in the project
Stay focused on executable
software.
• Change to the business model
• The best way of measuring progress is by
measuring what software is up and running.
– Can accommodate these in the “Inception” phase, after that
costs rise as such changes will involve major rework
– Get agreement on the business model at time “vision” is
agreed
– you should always strive to have working software
demonstrated and to look at test coverage and
test results
• Change of architecture
– Architectures are explored during elaboration, after that
changes will be costly
• Also, having working code allows you to start
on the supporting artifacts – the deployment
scripts, the database migration components
etc which you will need
• Change in design and implementation
– Proper component based, iterative development style can
accommodate such changes during construction phase.
Costs will rise if changes needed later during transition
• Change of scope
– Can always cut scope; “feature X will now appear in Release
2”
Spirit
19
20
Spirit
Baseline an executable
architecture early on.
Accommodate change - costs
• Largest project risks are associated with
the architecture.
• RUP make creation of a functioning
architecture the primary objective of the
Elaboration phase
• Architecture?
– The component building blocks and their
interfaces
21
Architecture
22
Spirit
Aside on “architecture”
• At this point, the “spirit of RUP” is concerned with “Enterprise”
systems – the kinds of software really used in commerce and
industry.
• Such systems are built on top of various middleware – Webservers, application servers, transaction monitors, databases,
message queue systems.
• These are not built for any particular project – rather projects
must be built on top of them.
• It is essential to get this architecture clear from the start.
• Student projects are of course very different
23
– You might get a Web-Server and a database involved but for
various reasons other middleware components are not covered at
university!
– Your architecture will be limited to defining different processes (if a
“system” rather than a program) and their interactions, and defining
any persistent data.
– Still you have to get even that simple architecture baselined during
your elaboration phase.
24
4
29/04/2014
Build your system with
components.
Work together as one team.
• “Traditionally, many companies have had a functional
organization: All the analysts are in one group, the
designers are in another group, and testers are in yet
another group.”
• “Component-based development encapsulates data
and the functionality operating upon that data into a
component.”
– Effective communication among the three groups becomes
compromised resulting in miscommunication, extra work,
and missed deadlines.
• For iterative developments, it is better to
Actually, this is a rather naïve view of components – it is really describing
Object based development. “Components” will be discussed more later;
one should try to exploit “real components” wherever possible.
Spirit
– Organize your projects around cross-functional teams
containing analysts, developers, and testers.
– Provide teams with the tools required for effective
collaboration across functions.
– Ensure that team members have the attitude of "I'll do what it
takesto get high-quality working software,"
25
Make quality a way of life, not
an afterthought.
Aside on the team
• Of course, in student projects you have
no choice;
you are the entire team – customer(!),
analyst, designer, tester
• Same as in the principles
– Design and implement for testability
– Always have working version
–…
27
RUP – working it out
•
•
•
•
•
•
•
•
•
•
28
Spirit
RUP – yes well you get the gist …
Develop a Vision
Manage to the Plan
Identify and Mitigate Risks
Assign and Track Issues
Examine the Business Case
Design a Component Architecture
Incrementally Build and Test the Product
Verify and Evaluate Results
Manage and Control Changes
Provide User Support
Ten essentials
26
Spirit
• Ten essentials
– More of the same
• But becoming slowly more concrete
– “Develop a Vision”
– “Manage by the Plan”
–…
29
30
5
29/04/2014
RUP: a process (meta) model
So, what is RUP?
• RUP: a model for a software development
process
• Possibly it’s more a meta-model (a model for a
set of models) because RUP is deliberately
flexible – RUP is to be tailored to the needs of
your project.
• The model is the defining core of RUP
And how do you follow it?
– Four phases
– Multiple disciplines
– Iterations
31
The essence of RUP
32
Scripts to guide you
For each phase
for each discipline
for each role in discipline
RUP has a script to guide you
What should you be doing?
What information will you need?
What artefacts should you produce?
You can never say that you don’t know what you should be doing!
You just have to check the relevant script!
33
Roles and disciplines
34
Analyst roles
• Clearly there are roles like “manager”, “analyst”,
“developer”, …
• RUP’s role definition is considerably more precise
listing numerous specialized roles
• The Analyst Roles
– Business-Process Analyst
– Business Designer
• The two “business” roles are not relevant for you. They belong to
BUSS/IS-IT graduates. They involve modelling the existing business
practices of an organization. They are looking at how the organization
will change as a result of new systems and technologies being
introduced.
– Not all projects require all roles to be filled e.g. “capsule designer”
is a specialized role relating to concurrent and time dependent
processing
– Some role sets have generally similar responsibilities, the different
roles capture subtle differences in emphasis
– System Analyst
• Remember – in every student project (and many real
projects) you will serve in different roles at different
stages of the project.
• The roles do matter; when your project group forms,
its first task will be to assign roles (and, hence,
responsibilities) to its members.
35
• Requirements elicitation
• Use-case modelling
– identifying actors and the use cases they will require when interacting with
the system.
– Requirements Specifier
• The Requirements Specifier specifies the details of the system's
functionality
– use cases,
– supplementary specifications (non-functional requirements)
36
6
29/04/2014
Developer Roles
Manager roles
• The Developer Roles
•
– Software Architect
The Manager Roles
– Project Manager
• Identify and document the architecture
• Major responsibility for minimizing technical risks.
• Allocates resources, shapes priorities, coordinates interactions with the customers
and users
• Establishes a set of practices to ensure the integrity and quality of project
artefacts.
– Designer
• Identify and define the responsibilities, operations, attributes, and
relationships of design elements.
– Change Control Manager
– User-Interface Designer
• The one responsible for agreeing to changes requested by stakeholders after
project commencement.
• Design of the user interface.
• Gathering of usability requirements
• Prototyping candidate user-interface.
– Configuration Manager
• Provides configuration management infrastructure and environment
– Capsule Designer
– Test Manager
• (Specialized role relating to concurrency and time critical operations)
• Quality and test advocacy, resource planning and management, and resolution of
issues that impede the test effort.
– Database Designer
• Defines the tables, indexes, views, constraints, triggers, stored
procedures, table spaces etc
• Deals with the CRUD operations (create, read, update, delete
persistent data).
– Deployment Manager
• Developing and testing “components”.
– Management Reviewer
• Plans the product's transition to the user community, and ensures its correct
delivery
– Process Engineer
• Revising and improving the software development process being employed
– Implementer
• Evaluate project planning and project assessment artefacts at major review
points in the project's lifecycle.
– Integrator
• Integration of implementation elements to produce builds.
37
Tester Roles
Clearly it would be unusual to have a person designated as “Process Engineer” whose only task was looking at how
to improve the development process. Like many of the roles, this would really be just one of the tasks of the “Project Manager”. RUP
defines the different roles so as to better characterize responsibilities and to allow the definition of workflows and artefacts.
38
Production and Support Roles
• The Tester Roles
• The Production and Support Roles
– Test Analyst
• Responsible for identifying and defining the required tests,
monitoring detailed testing progress and results in each test
cycle, and evaluating the overall quality experienced as a result
of testing activities.
– Test Designer
• Responsible for the planning, design, implementation, and
evaluation of testing, including generation of the test plan and
test model, implementation of the test procedures, and
evaluation of test coverage, test results, and effectiveness.
– System Administrator
• Maintains the development
– Technical Writer
• Produces end-user support material, such as user guides, help
texts, release notes, and so on.
– Graphic Artist
• Creates product artwork that is part of the product packaging
and documentation.
– Tool Specialist
– Tester
• Responsible for the core activities of the test effort, which
involves conducting the necessary tests and logging the
outcomes of that testing.
• Responsible for the supporting tools of the project – compilers,
IDEs, version management, libraries, frameworks, …
– Course Developer
• Develops training material to teach users how to use the
product.
39
Select your roles …
Your group will need to cover all roles that you identify as required in
your project. Individuals “bid” for roles on basis of skills – “I’ve done
CSCI235, so I can be database designer”. You will get multiple roles.
You need to understand how your roles fit with RUP’s main workflows.
40
… and start to RUP
41
42
7
29/04/2014
Start at Inception
RUP Phases – and milestones
Mostly requirements, a little analysis
and design –
identify the most important “use cases”,
evaluate possible architectures.
Support roles concerned with putting
in place infrastructure (project management
tools, development systems etc) as these
are identified.
43
44
We will ignore Business Modelling
Inception – “executive
summary”
Inception
• Understand the overall requirements.
• Determine the scope of the
development effort.
• Main goal of the inception phase is
achieve agreement among all
stakeholders as to the objectives for the
project.
• Objectives of the inception phase:
– Establish the project's software scope and acceptance
criteria.
– Establish the main use-case scenarios that define the core
functionality of the project.
– Evaluate alternative architectures; create the beginnings of
your preferred candidate architecture.
– Estimate the overall cost and schedule for the project.
– Estimate risks
– Produce the “business case” – the rationale for the “use
case” requirements, what is the business justification and
benefit from having the functionality provided.
– Create a work plan for the following elaboration phase (you
also create a tentative plan for the entire project – you will already be
starting to think in terms of phased delivery: use-cases 1..7 in construction
phase-1, 8..13 in phase-2; these will be “guesstimates” at this stage, you
will have a better idea by the end of the subsequent elaboration phase)
45
What must you produce
46
The Vision …
• A vision document
– the core project's requirements,
– key features,
– main constraints
• List all use cases and actors already identified
• An initial project glossary
• An initial business case, which includes the following:
– Business context
– Success criteria (revenue projection, market recognition, and
so on)
– Financial forecast
• An initial risk assessment
• An initial project plan, which shows the phases and
iterations
• What are you going to create?
– What is it?
– Who will it serve?
– What problems does it solve for them?
• Every group member keeps a copy pasted up by their
computer!
47
48
8
29/04/2014
Glossary
You might also produce …
• Glossary
– “a list of terms in a special subject, field, or area of
usage, with accompanying definitions”
• Does ATM stand for
– “Asynchronous Transfer Mode”
– “Automatic Teller Machine”
• Why do we have “corporate user” and
“user” – in what ways are they different?
• An initial use-case model (10% to 20%
complete)
• A development case description that
specifies the particular RUP process
features that will be used in subsequent
phases.
• Prototypes
49
You want to get to “Objective
Milestone”
50
Oh, you didn’t drop the subject
Elaboration!
– best get on with
• What’s this milestone thing?
– A chance to evaluate the project – do we continue, do we
cancel?
Requirements continue
to be refined and additional
use cases will be identified.
But now more into getting
a baseline architecture, and
working from use cases to
ideas for classes and their
interactions.
• Evaluation criteria:
– Stakeholder concurrence on scope definition and cost and
schedule estimates
– Requirements understanding as evidenced by the fidelity of
the primary use cases
– Credibility of the cost and schedule estimates, priorities,
risks, and development process
– Depth and breadth of any architectural prototype that was
developed
Student projects? Well, you can’t cancel (other than by dropping the subject!).
But you can always try a second iteration through inception if you aren’t confident
that you should start Elaboration.
51
Elaboration “the most critical
of the four phases”
52
Elaboration must deliver
“Executable architecture”
• Elaboration phase
• Executable architecture prototype is
– analyse the problem domain,
– establish a sound architectural foundation,
– built in one or more iterations,
– should address the critical use cases
identified in the inception phase.
• Architectural decisions must take account of:
– System scope,
– Major functionality,
– Non-functional requirements.
• Additional development of throwaway prototypes may
be necessary:
– develop the project plan,
– eliminate the project's highest-risk elements.
– explore a known risk (can we really get to talk to IMS?)
• Completion of Elaboration phase marks important switch
– explore trade-offs between design and requirements.
– Inception and elaboration – so far, low cost, exploratory work only,
no great dramas if cancelled
– Subsequently – project has acquired inertia, significant
expenditures made, cancellation could be traumatic
53
Note how all the SE processes have similar features – these additional
prototypes are much the same as XP’s “spikes”
54
9
29/04/2014
Elaboration - objectives
Elaboration …
• You must
• Elaboration objectives:
– Define, validate, and baseline the
architecture as rapidly as practical.
– Baseline the vision.
– Baseline a plan for the construction phase.
– Demonstrate that the baseline architecture
will support this vision for a reasonable
cost in a reasonable time.
– Finalize the “vision”
– Develop solid understanding of critical use cases.
– Put in place development environment, tools, test
automation systems etc
– Select components
• Can some subsystems be purchased (COTS – Common
Off the Shelf software)
• Select middleware components
55
56
“baseline” – they mean create it, where relevant make it work, put it under version control!
Elaboration – what do you
create?
Architecture milestone
• A use-case model (at least 80% complete) in which all use
cases have been identified in the use-case model survey, all
actors have been identified, and most use-case descriptions
have been developed
• Supplementary requirements that capture the non-functional
requirements
• A software architecture description
• An executable architectural prototype
• A revised risk list and a revised business case
• A development plan for the overall project, including the coarsegrained project plan, which shows iterations and evaluation
criteria for each iteration
• An updated development case that specifies the process to be
used
• A preliminary user manual (optional)
57
• Architecture Milestone: Evaluation
– Is the vision of the product stable?
– Is the architecture stable?
– Does the executable demonstration show that the major
risks have been addressed and credibly resolved?
– Is the construction phase plan sufficiently detailed and
accurate? Is it backed up with a credible basis for the
estimates?
– Do all stakeholders agree that the current vision can be
achieved if the current plan is executed to develop the
complete system, in the context of the current architecture?
• If the project fails to pass this milestone, it may be
aborted or considerably rethought.
Once again – student projects must pass, or you fail the project subject
58
Construction
Still here – well, you enjoy coding don’t you so you will love
Construction!
• The Construction Phase
– Develop remaining components and application
features
– Integrate all parts into the product
– Test all features thoroughly.
– Achieve useful versions (alpha, beta, and other
test releases) as rapidly as practical
Coding and testing,
more coding and testing,
delivering iterated versions
so some deployment and
configuration;
lots of version management;
elaborating the environment,
• Emphasis is typically on
Hopefully not too much
requirements, analysis,
design – but you cannot
escape project creep
–
–
–
–
59
Managing resources
Controlling operations to optimize costs,
Maintaining schedules,
Guaranteeing quality.
60
10
29/04/2014
Construction iterations are
planned!
Construction activities
•
•
•
•
Resource management, resource control,
and process optimization
Complete component development and
testing against the defined evaluation criteria
Assessment of product releases against
acceptance criteria for the vision
Produce “the product”
1. The software product integrated on the adequate
platforms
2. The user manuals
3. A description of the current release
• Your plan (started during Inception and refined in
Elaboration) will have defined a series of iterations
– Each Iteration
• List of use-cases that it incorporates
• Time schedule (time boxing)
• (Additional aspects like start to involve database in this
iteration, or start to use message queue – these define
activities for the “support” people looking after environment and
tools)
• Leads to a “build” that can be release to others
– Usability review and experimentation by customer representatives
– Integration and system testers who must thoroughly test
functionality
– Deployers – need to develop/refine deployment scripts, XML
configuration files, databases etc
61
Iteration releases – a chance
to replan
62
How long is an iteration?
• Depends on project size!
• With each iteration release, you revise
your plan
Lines of Code
5,000
20,000
100,000
1,000,000
– Maybe you are lagging – need to reduce
the scope?
• Move some features from next phase to later
phase
Number of People
4
10
40
150
Duration of an Iteration
2 weeks
1 month
3 months
6 months
• For little CSCI222 projects:
– 4 persons,
– Iteration time of one or two weeks;
– 2-3 iterations in construction.
– Maybe you have negative feedback from
the candidate “user” community:
• For CSCI321 projects;
• Re-analysis, re-design, re-work
– 6 persons
– Iteration time of three to four weeks
– 3 iterations in construction
63
Construction milestone
64
Congratulations, you’ve made it to Transition!
• Initial Operational Capability Milestone:
– You must decide whether the software, the sites,
and the users are ready to become operational
without exposing the project to high risks.
– This release is often called a beta release.
Hopefully no more changes in requirements,
or design!
Hopefully also not much more implementation!
• Evaluation criteria:
There will be overall testing to do, and some
details of deployment to complete.
– Is this product release stable and mature enough
to be deployed in the user community?
– Are all stakeholders ready for the transition into
the user community?
There will be quite a lot of work on setting up
for use of populated databases, parallel running
with existing software, phase out of existing
system.
• Transition will have to be postponed if the
project fails to reach this milestone.
65
66
11
29/04/2014
Transition
Transition – objectives, activities
• Transition phase
• Objectives:
– move the software product to the user community
• Phase starts when system is mature enough to be deployed in
the end-user domain.
– Usable subset of the system has been completed to an acceptable
level of quality
– User documentation is available
• Phase includes:
– Beta testing to validate the new system against users' expectations
– Parallel operation with the legacy system that the project is
replacing
– Conversion of operational databases
– Training of users and maintainers
– Rollout of the product to the marketing, distribution, and sales
teams
– Achieve user self-supportability.
– Achieve stakeholder concurrence that deployment baselines are
complete and consistent with the evaluation criteria of the vision.
– Achieve final product baseline as rapidly and cost-effectively as
practical.
• Activities include:
– Deployment-specific engineering,
•
•
•
•
cutover,
commercial packaging and production,
sales rollout,
field personnel training
– Tuning activities, including bug fixing and enhancement for
performance and usability
– Assessing the deployment baselines against the vision and the
acceptance criteria for the product
67
The final milestone
68
Roles known, overall
process “understood”
• Product Release Milestone:
What do you do, and when?
RUP’s process disciplines
– Evaluation criteria:
• Is the user satisfied?
• Was it produced on time and within budget?
70
69
Are you “the Manager”?
Aside – use of "Dilbert" cartoons
• A real manager?
• Wollongong University "web police"
required an acknowledgement of the
Dilbert cartoon figures used in
subsequent slides
– You mean you have a budget, you hire people,
you buy machines.
– Go away – nothing for you here
• A RUP manager?
• "I probably got the images of Dilbert and
his friends from http://www.dilbert.com/
but it might have been from another
site."
71
– Planning an iterative project through the lifecycle
and planning a particular iteration
– Risk management
– Monitoring the progress of an iterative project and
measurements
• Even limited RUP management is probably
outside the scope of most student projects.
72
12
29/04/2014
RUP – management plans
RUP management - planning
• Coarse grained phase plan:
– Dates of the major milestones
•
•
•
•
Lifecycle objective (end of inception, project well scoped and funded)
Lifecycle architecture (end of elaboration, architecture complete)
Initial operational capability (end of construction, first beta)
Product release (end of transition and of the cycle)
– Staffing profile: which resources are required over time
• Fine grained iteration plans in each phase
– The current iteration plan (the one for the current iteration), which is
used to track progress
– The next iteration plan (the one for the pending iteration), which is
built toward the second half of the current iteration and is ready at
the end of the current iteration
• An iteration plan uses traditional planning techniques and tools
(Gantt charts and so on) to define the tasks and their allocation
to individuals and teams.
73
RUP – Management – risks,
measures
74
RUP – Manager – your
artefacts
• For each risk, come up with some
strategy –
– Pro-active steps (send someone on a
training course, hire a specialist, …)
– Rework project so risk doesn’t arise?
• Measures
– Try to quantify how well things worked
– Identify problems
– Come up with solutions – so that life on the
next project will be better.
75
RUP – manager – Your
workflow
76
Is your role “Requirements”?
• Systems Analyst; Requirements specifier
77
Er? What is a storyboard – you’ve never mentioned it till now?
78
http://www.ibm.com/developerworks/rational/library/content/RationalEdge/nov03/f_usability_jh.pdf
13
29/04/2014
Storyboards, “user
experience” (UX) model, …
Storyboards
• A User Experience (UX) model
• Take your use case
– Specifies screens and screen content in
some abstract representation
– Characterize the actors
– Define usability requirements
– Identify “user experience” elements
– Model the use-case flow
– Define screen navigation
• Allows you to decide what information is
displayed without getting into detail of “pop-up
list” versus choicebox etc
• Storyboard
– Modelling a use-case flow in terms of UX
model screens etc
79
80
Requirements
Is your role “Requirements”?
• Your goals:
– Establish and maintain agreement with
stakeholders on what the system should do—and
why!
– Provide system developers with an understanding
of the system requirements
– Define the boundaries of the system
– Plan the technical contents of iterations
– Estimate cost and time to develop the system
– Define a user interface for the system
• Functional
– Those use-cases
• Non-functional
– Usability
– Reliability
– Supportability
– Performance
81
From requirements to …
82
A workflow to guide you …
83
84
14
29/04/2014
Analysis & design roles and
artefacts
Analysis and design roles
• Analysis
– Transform the requirements of the system into a set of
classes and subsystems.
– Driven by the use cases
– Focuses on ensuring that the system's functional
requirements are handled.
• Design
– Adapt the results of analysis to the constraints imposed by
non-functional requirements, the implementation
environment, performance requirements, and so forth.
– Design must define only enough of the system so that it can
be implemented unambiguously – i.e. don’t get stuck in ‘analysis
paralysis’, over-elaborating design instead of getting into the implementation
85
There is a list of things to do
for each role!
Implementation discipline
• Database designer
• Your work:
– Identify the persistent classes
– Design appropriate database structures
– Define mechanisms for storing and retrieving data that meet
performance criteria
• Capsule designer
–
–
–
–
86
Capsule – encapsulated threads of control
Protocols – message exchanges
Event – something to which system must respond
Signal – asynchronous event that may cause a state transition in a
subsystem
• User interface designer
– Storyboards
– User interfaces
– Navigation maps for web-sites etc
– Define the organization of the code in
terms of implementation subsystems
organized in layers
– Implement classes
– Test the developed components as units
– Integrate into an executable system the
results produced by individual
implementers or teams
87
Implementation discipline
88
Implementation discipline
• The key artefacts of implementation are as follows:
• “Build”
– Implementation Subsystem
– An operational version of a system or part of a system that
demonstrates a subset of the capabilities to be provided in
the final product.
– Integral to the iterative lifecycle
• A collection of implementation elements
• Structures the implementation model by dividing it into smaller
parts.
– Implementation Elements
• A piece of software code
– Integration Build Plan
• This document defines the order in which the elements and
subsystems should be implemented and specifies the builds to
be created when the system is integrated.
• Represent attempts to demonstrate the functionality developed
to date.
• Each build is placed under configuration control in case there is
a need to roll back to an earlier version when added
functionality causes breakage or otherwise compromises build
integrity.
• Typically, projects try to produce builds at regular
intervals, up to one each day, but at least one per
week toward the end of an iteration
89
90
15
29/04/2014
Implementation discipline workflow
Tester?
91
92
See P. Kruchten’s book for
lots more details
Tester?
• Lots more details for each of the roles
– What tools each role requires
– More on artefacts produced
–…
93
94
Building an architectural
prototype
Iterations
• He has passed “Objective” milestone
and has:
Examples from Kruchten
– List of actors
– Some use cases (most important ones)
– A sketchy project plan
– (And a Vision, Glossary, etc etc)
95
96
16
29/04/2014
Start iteration in the
elaboration phase
Elaboration iteration
1.
Software Architect and Project Manager
–
2.
Choose the use cases and scenarios that will be
considered when developing the architecture.
Systems Analyst and Requirements specifiers
–
–
3.
Develop more detailed versions of these use cases,
prioritize, identify complex high risk cases
Fill out “Use case model” and “Supplementary
Specification” documents
Software Architect and Project Manager
•
4.
Review elaborated use cases, set software architecture,
update iteration plan
User interface designer
–
–
Expand use case into “story boards”
Start prototyping user interface to get feedback
97
Continue elaboration iteration
5.
Continue elaboration iteration
Software architect + team
–
6.
8.
Using system requirements, glossary, use-case view, and
team’s general domain knowledge, sketch the outline of
subsystems
•
–
98
9.
10.
•
•
7.
Designers refine the classes identified, allocate
responsibilities, update attributes and relationships
Architect: identify classes that are architecturally
significant and add them to the logical view in Software
architecture Document
11.
•
•
12.
Plan system and integration tests
Implementers
•
•
Organize classes into “Design Packages”
Allocates packages to subsystems
Define order in which subsystems are implemented and
integrated
Test designer
•
Architect
Consider concurrency and distribution
Define an initial implementation view
System Integrator
•
Designers and system architect
Use cases to collaboration diagrams
Architect
•
•
Fill out “software architecture document”
Designers: Start finding the classes for this iteration’s use
cases. “Find the obvious classes”
Designers
•
Code and unit tests the classes needed for this baseline
architectural version
Package into subsystems as per implementation models
99
Complete elaboration
iteration
13.
Implementing the system
Systems integrators
•
14.
• He has completed Elaboration and a
couple of iterations of Construction
Integrate subsystems into architectural prototype
Systems testers and software architect
•
•
15.
Test the architectural prototype
Is it viable?
– Need to carry forward to release “initial
operational capability milestone”
Project manager
•
•
100
Evaluate
Revise work plans, risk-lists, etc
101
102
17
29/04/2014
A construction iteration
Construction iteration
1.
Project manager
•
Update Iteration plan
•
•
•
–
2.
Any new functionality?
Any carry features postponed from earlier phases?
Any corrections?
Maybe refine risks
Systems integrator
•
3.
Starts on build plan for this iteration, how will the new elements,
that are created in this iteration, be integrated with existing
system
Test designer
•
4.
Start planning how to conduct integration and system tests
Designers
•
•
5.
Refine classes that are to be implemented
Identify new functionality to be tested
Implementers
•
Do the coding and unit tests
103
Construction iteration
continues
104
That is how you RUP
6. Implementer
•
Integrate code into subsystem
7. Tester
•
•
Integration testing
Systems testing
8. Project manager
•
•
•
Track progress and costs
Update plans for future iterations
Revise risk list
105
I still don’t understand,
what do I really have to do?
Sigh
106
Inception-1
• You work as a team, everything done with your group
members.
• Talk to the users (fake this if it is a student project, you have no users),
What do they want the system to do?
• Try to refine these requests.
– Identify
• Actors – persons using the system
• Primary use cases – the main things they want done
• Back to your users – discuss what they want, now
using use-case terminology (and maybe employing some
simplified storyboarding to come to some agreement as to how
user interaction with the system will actually work)
• Determine their other requirements
– must be done in C++ on Solaris
– all user prompts in Swahili (or whatever)
107
108
18
29/04/2014
Inception-2
Inception-3
• Think about the architecture
– Is this a “program”?
– Is it a group of programs that share some persistent data?
– Does it involve concurrent processes – client-server or
other?
• Pick some candidate architecture so you have some
idea what it is that you have to build.
• Look for problematic aspects – the risks like
interfacing with legacy applications, using language
features you aren’t used to
• Review the user requests
• Compose that glossary – find out the real
meaning of all the funny terms the users were
employing in their descriptions
• Start to plan (you’ve just prioritized the
requirements)
• Complete the Vision thing
– Formalize them into more precise requirements
– Clarify business justification for each request
– Prioritize them
109
Inception completes
110
Aside: architectures
• You have
• You don’t know any “architectures” so how
can you be expected to pick one!
• Sigh again.
Well – really there aren’t many, and only a
subset are relevant in student projects.
–
–
–
–
–
–
Vision
Requirements listed and prioritized
Main use-cases, partially filled out
Probably some sketchy ideas on user interface
A chosen architecture that you hope will work
Some idea of risks (and what you intend to do
about them)
– Glossary
• You can try to pass “Objective” milestone
– Get all stakeholders to agree that project is
properly characterized
111
“Program” architecture
“Small system” architecture
• User employs program which may have
some associated persistent data.
Possible
use of
persistent
data
112
• User(s) employ several programs that create,
read, update, and delete data in a common
datastore.
Processing and
user interface in
the one program
Datastore
Processing and
user interface in
the one program
Web-server
running PHP scripts
Datastore
Internet Explorer
Processing and
user interface in
different programs
Too simple for real world – does suffice for some student projects
113
An extremely common architecture!
Many alternative
technologies
114
19
29/04/2014
“Real world system”
architecture
Elaboration -1
• Programs dependent on multiple services
•
•
Specialized client application
Queue service
– Baseline an executable architecture
Datastore1
•
Internet Explorer
Intermediary
Web-server
Application-server
hosting “business
components”
Datastore2
Still working as a group!
Remember the main goal of this phase
So:
1. Pick the use cases that are either high priority or
look most challenging, these are the ones that
you will use to test your architecture
2. As a group, develop the selected use cases
•
•
Another extremely common architecture!
Transaction
monitor service
115
Elaboration -2
•
Identify “the obvious classes”
Map from use cases to sequence diagrams
116
Elaboration-3
So:
1. …
2. …
3. Assign classes to packages and
packages to subsystems (different
programs)
4. Do just enough implementation to create
some classes that can be used in testing
your architecture
5. Build a first version
• Those risks – do any require that you create some
test code to see how to do something like connect to
a legacy system?
– If yes – do a little prototyping! (XP spikes)
• If the architecture appears to be viable continue with:
– Refine those use-cases
• Probably get some more by now, plus maybe the first changes
(if you have any real users that is)
– Design classes
• What do they own? What do they do? How do they relate to
other classes?
• Heavy UML-ing!
– Refine architectural issues like data-flow among processes
and process interfaces.
117
Elaboration-4
118
Complete elaboration
• Revise your list of risks
• Develop an construction plan
• Try to pass the “architecture milestone”
evaluation criteria.
– You’ve prioritized the use cases
– You’ve identified classes needed to
implement them
– You’ve identified constraints among
classes (dependencies that imply a
required ordering of their implementation)
– So you can say what should be
implemented in each construction iteration.
119
– In plainer English,
• Check that each member of group understands
what you are trying to build
• Since each member will be developing some
classes, make sure everyone understands the
architecture and how those classes will fit in
• Have agreed responsibilities – all very well to
be busy creating and testing your little set of
classes but who will take responsibility for
integration and system testing.
120
20
29/04/2014
Construction
Transition
• Partly individual, partly team work.
• Come on, you must understand this bit!
• You would be so lucky
– You write and test “component” code.
– You commit your tested 100% correct component
to the project work area
– The “integrator” integrates and builds the system
(hopefully largely automated by some shell or Perl
scripts that the group composes!)
– The “tester” performs integration and system tests.
• You conduct regular meetings reviewing
progress.
121
But I still don’t understand,
what do I really have to do?
Sigghhhh
122
What must you do
• Look at RUP workflows, artefacts, disciplines,
etc
• Plan
• Think!
• Try things
– Go on, the computer won’t bite
• Work
• and remember
123
Good software development
process …
124
Experience
• Good software development processes
and successful projects
are the result of experience
• Experience is obtained by surviving bad
software processes and unsuccessful
projects!
• and
125
126
21