mermaid
Overview
let envision = function (keyLessonLearn) {
// this is inception phase
requirements = "?";
keyStakeHolders = { "who":"assigned to...",
"who":"assigned to..."};
schedule = new Schedule(keyStakeHolders, requirements);
cost = calculateCost(schedule, otherFactors);
risk = estimateRisk(schedule, cost, otherFactors);
}
let construction = function (requirements, cost, risk, schedule) {
// this is speculative phase
for(stakeHolder in keyStakeHolders){
// { "Req.1":"todo1?, todo2?", "Req.2":"todo3?, todo4?";
[todo, milestone] = stakeHolder.analyze(risk, requirements);
todoList.add(todo, milestone);
cost.update(milestone.cost);
}
projectPlan(cost, risk, schedule, todoList);
}
let explore = function (requirements, todoList) {
// this is transitional stage
releaseMileStones = {}
todoList = {"todo1": "how1?", "todo2": "how2?"}
needContinue = reportStatusToScrum()
while(needContinue && todoList.length > 0) {
actionItem = todoList.pop()
devResult = execute(actionItem);
[isWrong, actionItem] = test(requirements, devResult);
if(isWrong) {
todoList.add(actionItem);
}
needContinue = reportStatusToScrum()
}
}
function production() {
// this is adaption phase
reviewResultOfTransitionalPhase();
assessCurrentSituation();
assessPerformanceOfProjectResults();
reviewFeedbakFromKeyStakeHolders();
while(needContinue) {
[status, enhancementRequest] = customerSupport(); // Installing, or operating new system
needContinue = reportStatusToScrum(status, enhancementRequest);
if(isMandatory(enhancementRequest)) {
updateSystem(enhancementRequest)
} else {
projectBacklog.add(enhancementRequest)
}
}
}
function retire() {
keyLessonLearn.extend( {"?":"?", "?":"?"})
}
function main() {
envision();
construction();
explore();
production();
retire();
}