I hope using construction example I will be able to explain the requirements, requirement elicitation, requirement specification, non-functional requirement, architecture, detail design, coding and testing of the software world.
PROBLEM STATEMENT: I am living in a compact apartment in a city where space is big problem. I cannot do parties at my home with my friends. There is too much traffic jam and if I want to move out of city in the weekends I have to struggle 3 hours in traffic to go out. Cost of living is very high i.e. rent of the apartment, cost of water, electricity, security, parking, food, vegetables and transport etc. Cost of constructing or buying a new good house is also very costly. Lots of my friend in this city including me has hobby of playing football but we cannot play the game because there is not football ground. Every day I have to travel two hours to reach my office.
BENEFIT OF THE EXISTING SYSTEM: It is close to airport, railway station and shopping malls. 24 hours water and electricity is available. School of children is near and bus comes for pickup and drop.
CUSTOMER HIGH LEVEL WANT: I have 1m$ want 8 bed room 2 story luxury house with ample of garden, trees, flower with golf course. I like apple therefore should have apple garden at home.
CUSTOMER NEED/ REQUIREMENT: I have 2 kids who are studying in 10 and 12 class respectably. A house is required where they study well, pursue their hobbies. There we can have week end parties with our friends. A footwall ground where I can play with my friends in the weekends. House should have 24 hours water and electricity. Every house member has one car thus we have four cars so there should be good enough place for parking. My wife is fond of flower and gardening so there should be flower garden. I am fond of reading books and watching movies therefore I need a home theatre and a book library, for party time we need a hall or covered green space. Sometimes I have 5 family friends at my house and it becomes very difficult to adjust them in this apartment so new apartment should have enough place to take care of those.
REQUIRMENT ELICITATION: Questions & Answers
- What are the hobbies of your children? Badminton, Chess.
- Do you need parking space for your guests? If yes then how many extra car parking required? 5
- If the land where you are going to build this house is not suitable for apple then will your prefer another type fruit or not any other fruit at all? Mango is ok.
- Do you expect from us to plant these trees for you? Yes
- What kind of flowers you want in garden? Rose & gold marry
- Do you want us that we should give you a house with planted tree or you want to get it done by somebody else? You can do that.
- You need 24 water supply? Do you need water tank? Yes. What size? 10,000 Liter
- You need 24 electricity? You prefer generators or solar plant? Solar plant. How much backup required? Can support 36 hours power cut in the complete home
REQUIRMENT ANALYSIS & RTM (Traceable Requirement list)
- 2 bed + study room for kids
- One Master bedroom
- 5 bed rooms for friends
- 1 Open party hall
- 1 room for chess
- 1 hall for badminton
- 1 Lawn with rose and gold marry flowers
- 1 Apple or guava garden
- 1 Footwall field
- 4 car parking + 5 car parking (for friends, although not asked)
- 24 hours water and electricity
- Good connectivity to airport, railway station
- Near to school of children and near to office
- 1 Home theatre
- 1 Solar plan
- 10000 liter water tank
SPECIFICATIONS & CONSTRAINTS
- No bed hall should be less than 15’X18’
- Each parking lots should be able to adjust car like Toyota Innova
- Football field should be like any standard footwall field
- House should not be too far away from city so that my friend does not come to me to play football
- Chess room size should be 4’X5’
- Apple or Guava garden should be 2 acre
- Rose & Gold marry flower lawn should be in .5 acre
- Garden should have water pipe lines with jet
- Party hall should be able to adjust 500+ people at ease.
- Theatre should be able to adjust 50+ people at ease and it should be 60’X30’
- No land should be utilized for solar plan
- Water tank should not be put on the roof of house
DETAIL SPECIFICATION QUESTION & ANSWERS
- What kind of cement should be used? Use best
- What is the major material of building?
- Is this a steel and glass building?
- Is this building mainly made on pillers?
- Is this building made of cement bricks?
- Does this building has external structure made of steel and internal everything is made of tough glass?
- What kind of brick / glass/ steel should be used for wall/pillars? Use strongest
- What kind of security measure you need in house? CCTV in each room, hall. Biometric locks
- What kind of mud should be put in the lawn of flowers? Red color
- What kind of tiles you want on flower? Use best one
- What kind of paint you want on wall? Use best one
- What kind of material should be used for electricity and buttons? Use best one
- What kind of water pipeline you want to lie? Best one.
- Do you need golf course as per your original requirement? No
- Do you still think that 8 bed rooms will be sufficient? No
Anything related to esthetics, usability, un-documented but expected, not directly related to the functionality is non-functional requirement. Compare to construction projects IT projects has many categories of non-functional requirements. Therefore it is another weak area apart from Technology selection in IT projects.
In my construction project non-functional requirement can be all door stood open smoothly as soon as identification is passed at the gate, floor should not be slippery, combination of colors on wall and type of room should be done intelligently like all wall should not have dark color like blue in inner rooms, electric points should not be accessible to kids, partition in ward robe should have arrangement for hanging cloths, if security identification fails at gate then owner should be informed etc.
- Bill of material required
- Estimate the amount of material required
- Estimate the land/Space required
- Cost of raw material (in absence of detail requirements and saying I want world class, best, affordable etc will effect this element of cost, so use average or use your past experience)
- Cost of efforts: Consultant, Project Manager, Architect, Labor, Painter, Plumber, Electrician etc.
- Cost of machinery
- Cost of transportation
- Cost of money for government approval etc
- RISK BUFFER
- PROFIT MARGIN
Draw a high level diagram based on the requirements, elicited requirement and detailed specification. The high level design shows at high level that how it would be look like or will be felt if developed. It is showing you position of entrance, doors, windows, water tank, different rooms, connectivity, place and garden, place of lawn, football field, party room, position of CCTV, security camera, biometric readers, theater etc.
- Even if you change the underlying technology for development, this architecture will not change.
- Even if you do not know the detail of requirements this high level architecture can be build from the above given requirement.
- Here BOM is sufficient to generate high level estimates
- In agile development you should not do more than this type requirement gathering, elicitation and architecture
Here lies the trick or skills. Based on the architecture you decide with which technology you can go forward in development. In agile also you cannot change the technology once you start building around! This is the new element in IT projects which is not there in construction projects and it makes a huge difference if we do not have write people to make architecture to technology or can evaluate the tools or components required to build the product around the above architecture. Because of this factor complexity of IT project is much more than construction and it is difficult to know the cost of development. Because if we do not figure out the right technology at right time then rework and time lapse etc causes frustration among stakeholders.
LOW LEVEL DESIGN
Sprint1: Land Identification
As per your requirements we need 10 acre land which we have identified for you at 20 KM away from main city. Please look, approve and sanction money for the registration
Sprint 2: Land allocation
On the land we have done allocation of fields for various purposes as per the architecture. Please check it and approve & sanction the fund.
Sprint 3: Water Tank
We are going to build a tank first because water is necessary for construction. Please sit with us and help us in refining the details of water tank.
[Detail requirement of the tank]
It should circular, at the height of 20 meter. Should be made of such a material that water does not become hot even in extreme summers because this area is very hot. It should have take water input from municipal pine and bore well water in different chamber etc.
[Detail Design of the tank]
Ok, here is details design of the tank. Kindly review, approve it and sanction funds for it.
[Coding/Construction of the tank]
Start construction of tank. Use the fund sanctioned only for this purpose. Review the status with team, control if anything is going out of control and review the status with customer.
[Integration Testing]- Step in IT Projects
Show the final demo to the customer.
[Deploy for Production]
Release the functioning water tank to customer
Sprint 4: Garden
We can start plantation of mango tree first so that by the time construction is complete trees are big enough.
[Detail requirement of the Garden]
[Detail Design of the Garden]
[Construction/Code of the Garden]
[Integration Testing]- Step in IT Projects
[UAT of Garden]
[Deploy garden in Production]
Sprint 4: Plinth for main building
[Detail requirement for Plinth]
Do you want the building earth quake resistant? What should be height of each room (as per architecture it is 10’?] Or Ask any question which can force you to dig the plinth after it is over.
[Detail design of Plinth]
[Construction of plinth]
Raw material required to built the plinth should be available before we start the plinth and that is part of planning. Before you start coding in any sprint all the related things should be in place like software, hardware, network, skilled people, ground rule, communication plan, reporting structure, project plan etc. Thus every sprint should have one planning phase which should make sure that all the things required are available or will be available whenever needed. Plan can be changed but it cannot be ignored.
[Integration Testing]- Step in IT Projects
[UAT of Plinth]
All UAT cannot be of same time but it must be shown to customer approval should be taken from customer for moving ahead.
[Deploy of Plinth]
- Prioritization of items for each sprint is most important. It is related to dependency.
- If using the requirement specification I am able to generate a detail BOM and after that I can do the high level estimation and prepare architecture then this much requirement or architecture or plan is sufficient for agile development.
- Product log should be available in sprint -1 activities
- Architecture should be finalized in sprint 0 activities
- Technology should be identified in sprint 0 activities
- Detailing in the requirement will change. For example color slabs in kitchen & their orientation, position of doors in room, color paint in wall and doors, position of wash basin, cut of tiles on the floor, position of LCD in room, color of gold marry flower etc. All this is not requirement change at all. There is no use of capturing this requirement till actual work start on these items. Capture these kind of detailing in the requirement when you are near to start that sprint and planning the sprint before that capturing this details is burden on the team, and more customer changes his mind when he see something before him and then he realize that some else will be better then said earlier or in fact he may forget what was told 6 month back!