This course is dedicated to my lost friend Jean-Michel Inglebert…
1. Projects management
1.1. What is a project ?
[…] a project is an individual or collaborative enterprise, possibly involving research or design, that is carefully planned, usually by the project assigned team, to achieve a particular aim
Wikipedia
1.2. Some facts…
-
Start: was are the client needs expressed ?
-
specifications,
-
list of expected features,
-
scenarios, use cases
-
…
-
-
End: when is the result product due ?
Avoid to answer : yesterday! (Otherwise it’s not a project anymore, but a rescue plan)
1.3. … and in between ?
- Option 1
-
do your best by your own (like in 'DO the sales')
- Option 2
-
run a process (like in '(RE)DO your passport')
- Option 3
-
use project management techniques
1.4. How project management is doing so far …
Out of 10, 7 projects are delivered late or never !
Programmez! journal
Possible reasons:
-
client expectations are vague
-
over-estimation of available resources
-
latency at the beginning
-
modification and updates get lost
-
overbooked teams
-
lost of knowledge during the project
-
risks are badly evaluated
-
meetings are not productive
In any case, it’s the development team fault.
1.5. Why is it so hard ?
It should not be so hard:
-
The goal and target are well known (provided by the client)
-
The target satisfaction is often measurable (assessment)
The problem
There is no systematic method that can garanty that a project team will meet its goals. |
Why ?
Because it requires to manage a domain complexity, a technical complexity and a human complexity, at the same time, with limited resources (time, money, …) |
In fact, the only predictable fact is :
it will be required to adapt!
1.6. What is a successfull project ?
A software project will end successfully if the team delivers an application that is reliable, robust and maintenable that meet the client expectations and need. |
- reliable
-
behave as expected in the expected conditions
- robust
-
handle traffic, user mistakes, failures, etc.
- maintenable
-
require few efforts to evolve
2. To produce applications
3. Methods
3.1. Waterfall and V Cycle
The V cycle adopts:
-
Cascading descending phases for analysis and design
-
Followed by an ascending for coding, tests and integration.
In these kind of projects success means being able to go through the ascending branch of the 'V' successfully. |
If project stops…
|
If project is late…
|
To summarize:
-
Cartesian way of reducing complexity
-
Test plans are produced in descending phases
-
Tests plans are veryfied during ascending phases
Well known limitations
|
3.2. From V cycles to W ones
3.2.1. Let’s consider a trivial example
Develop a web application capable of collecting and displaying URLs.
Cycle 0
Setup of the integration infrastructure
Chosen solution:
-
Development langage:
PHP
-
Infrastructure :
LAMP
server
Cycle 1
Display the collected URLs
Chosen solution:
-
The server stores a urls table
-
Web page is returned using
GET
and displays urls as a list
Cycle 2
To collect urls
Chosen solution:
-
Web page propose a form to enter new urls
3.2.2. Overall process
3.2.3. Well known benefits
|
Complete the sentence we’ve seen before:
A software project will end successfully if the team delivers an application that is reliable, robust and maintenable that meet the client expectations and need.
When it does not work ?
|
New problems
|
3.3. V versus W
V
|
W
|
3.4. What is important
-
Plan (more or less) next actions
-
Do as planned
-
Regularly evaluate progress towards the target
3.5. Evaluate progress towards the target
An important artifact to assess progress: tests!
Whatever the methodology, the project should address 'unit testing' and 'integration testing'. |
You should
|
Quizz
QUESTION
|