Monday, February 8, 2010

Software Architecture Explained viz-viz Civil Architect

What is architecture?
Let me explain by comparing with an the analogy with respect to Architecture of building a house.

I want to build a house for me. I have a plot of 300 sqm and I have budget of say Rupees 25 million. Now what do I do?

I like an already existing house in my neighborhood whose architecture I like which is in around same plot area. I hire an architect and show him the existing house (design pattern which I liked); architecture draws up the plan of the house.

RFP stage:
I give a high level requirment for architect to come up with design. I also suggest that I would like my site/product to be something similar to one of popular site like Amazon but for selling say my pens.What does architect do?
Architect needs to draw the blueprint of the house, in which he has to design or customized the plan as per our each of our family member (end-users) needs.
He first customizes the plan as per our beliefs religious needs (house should face east), should confirm to feng-shui (should have windows in east), cross ventilation needs etc which makes up the architectural principles on which he has to base his design.
ArchitectingArchitect is complying the architectural and other principles on which the architecture will be based. Architectural Principles like open standards based, high reliability, extendible, high availability.
He then meets each end-user for their individual needs. I ask him to design the master bedroom very big with attached bathroom and windows filtering the sunlight in morning. My daughter ask him to design the kids bedroom as per her Barbie princess needs, my son ask him to customize the same bedroom as per his boyish needs. My wife asked him to design the kitchen in square and general alignment of the sink and stove etc. Armed with Requirements he designs the floor plan of the house.

Architect also looks at individual end-users demands, sees that all the end-users demand are being met. In case of conflicting demands priortize requirments. May suggest alternatives with cost-benefit analysis for choosing by final approver. If one of the requirment increases cost then decision can be taken for work around. Once the architecture satisfy all the end-user requirment feasibility against architectural principle, it can be finalized.

He also makes sure of the non specified requirements (NFR), house must be spacious, must be able to support future extensions, easy to access, guest does not have to cross bedrooms to reach drawing room etc.

Architect after staisfying the feasibility of the requirment also caters for NFRs, like security, availibility, performance, response and scalibilty of the product.

He comes out with the house floor plans and meets my family to show them and agrees with end-user their requirements are met. He may undergo much iteration before he finalizes the blueprint.

Architect presents his arhicteture and convinces that his plan or architecture can meet all the demands. In case of conflict he also manages those conflicting requirments with consent from end-users and final approver.
Architecture may have to unbdergo several iterations before getting finalized.

He now meets the other stakeholders, like contractor (delivery manager) with actual workers (developers) like electrician, sanitary-ware etc. to show them the plan to see if it is feasible and to satisfy it is something they made before earlier. In case, they are unsure of something like hanging stairs, architect makes sure of stair’s design feasibility. Once all non-sure elements are discussed with actual designers, and agreed upon their feasibility. Then architect works on the estimate of the cost, the budget. Based on the budget, material is finalized, modular components or COTS products like sofa, tub panels may be decided. Once all the stakeholder agrees on the requirement satisfaction, design feasibility, budget constraint that architecture is finalized.

Architect nows staisfies the other stakeholders, developers, managers and network or deployment engineer. He presents and educates how his architeture can meet the requirment under the coinstraints. He may discuss the frameworks, Struts, Enterprise librareies, existing product, libraries which and how they meet which part of requirement.
In case of any non-sure elements, he may explains concept or suggest a small POC for verification.
Once all stakeholdersare on his side and agress to the architecture. Architecture is finalized.

Then architecture then may be then involved in guidance of the construction as per the plan or when the manager or designers have some doubts on the plan or design. Architect also governs the process that non specified requirements are also being met like strength, thickness of the wall etc. Slowly his role grows more from actual worker to supervisor and to governance.

From now on architect is invloved in supervisory and guidance role. He may do some checks at milestone to see if his architecture is being followed

No comments:

Post a Comment