An Engineering
Approach to Build
Websites
Software Engineering Principles
Sunny’s E-Commerce Website
Sunny owns a bookshop, which is doing reasonably well, and he decides to offer his
services online via an e-commerce website.
He starts to do some research on how to build a website. After a few days of searching
and reading blogs he puts down his options.
1. Hire a freelance developer who can create a website for him.
2. Use a website builder and try to create a website on his own with some help from a
freelancer, which may cost him less.
3. Learn programming and start building a website from scratch.
What do you think?
➔ How will his Website perform?
The approaches may work but if he gets lucky and the website traffic
goes up then he may be in some trouble. How will the system keep
up with the traffic? The website may need more storage, how will
that be handled?
➔ How will the Website handle H/W and S/W Updates?
Has analysis been done for handling software and hardware
updates?
➔ Security?
Has website security been considered?
In short does the website development
following any process?
Most of the Software Projects fail because
they don’t follow a proper methodology.
Tip
An Engineering
based approach
may help.
Following a set of proven principles and best practices
can help when building a Website or a Software
Application. These principles are part of Software
Engineering Process and borrow heavily from other
Engineering disciplines.
Consider building a bridge or a new house. Both follow a
process which eventually results in a building that can
survive tests of time.
Coming to Sunny’s website the following basic features
are needed in the website-
1. Website should be able to fulfill all the requirements. Key features - finding books,
viewing book details and making purchases.
2. Website should be up most of the time. Especially during peak hours.
3. Website should be easy to maintain.
4. Website performance should be good.
5. As website traffic grows it should be able to scale.
6. Making changes and adding new features should be easy.
7. Website should be secure.
How to ensure that Sunny get’s a Website which fulfills
Functional and Non-Functional Requirements?
Let’s see the steps at a high level that can be followed.
Each step is important and if not done properly can lead to project failure.
The team we need should include—Project Manager, Business Analyst, Technology
Architect, Software Developers, Testing Team and someone to manage the
Infrastructure.
In startups it’s pretty common to find someone wearing multiple hats at the same time,
which is fine as long as the person knows what he/she is doing.
The Project Manager needs to do thorough planning and ensure project follows a strict
timeline.
Phase 1 - Requirement Gathering
The requirements needs to be captured clearly by some professional.
We usually involve a Business Analyst at this stage. It’s important that BA captures
both the functional and non-functional requirements.
The BA can then come up with data flow diagrams, ER-diagrams etc. which define the
various features and how they are expected to work.
This cycle can take some time. Once the requirements have been captured they need to
be reviewed with the Sunny. A sign off is needed from him to proceed to the next stage.
Output - A Requirement Document
Phase 2 - Share possible Cost & Effort estimates
Based on prior experience a rough estimate can be given to Sunny which can meet the
requirements.
It can help him decide if he wants to wait or go ahead.
Phase 3 - Build Mockups and Prototypes
This step is optional but can help provide Sunny a better picture of what he can expect
to get post development.
The prototype does not implement the features yet.
Phase 4 - Architecture and Design
Once requirements are in place the BA team will share it with the Architect. Role of
Architect can include, but not limited to-
● Come up with a high level design or blueprint.
● Identify how system can meet the functional and non-functional requirements.
● Identify the main components. Identify reusability.
● Identify external systems and any integrations needed.
● Identify constraints.
● Perform capacity planning.
● Do a cost-effort analysis.
Phase 5 - Detailed Design
After Blueprint is ready the Architect can drill down to create a detailed design of the
system like
● How all the pieces can work together.
● Which technology stack can be used. Which frameworks.
● Define API’s.
● Identify the version control process and also how to build and deploy the changes.
An incremental approach is helpful.
● Share the coding best practices with the team.
● Some time should be spent towards the research and evaluation of possible
solutions. To choose the right tools for the job. Architect can involve developers to
provide inputs and should then come up with a plan to implement the features.
Phase 6 - Development
Only after the detailed design is in place should development start.
The designs are reviewed and then passed on to the developers.
Having competent developers who have prior experience in the technology stack is
needed.
The developers should also be able to do unit testing of the code they write. They
should also understand the design and work closely with the Architect.
Phase 7 - Testing
Thorough testing should be performed to validate that all the requirements are met.
Load testing should be performed to identify bottlenecks and break points.
Phase 8 - Code Deployment
Deploy the code to production environment.
Plan and prioritize next set of features, defects etc.
General Guidelines
● Following an incremental build / deploy approach is recommended by having short
sprints. It’s good to showcase features to client and get his feedback. The fail fast
approach should be followed.
● In all the stages proper reviews must happen to ensure there are no last minute
surprises.
● Proper planning is the pillar of this process. If timelines are not being met then
Project Manager should have plans to address that. End of the day no one wants to
pay extra.
● Daily status update can be done to check progress.
This engineering process can improve the chances
of projects success. More than that it can ensure a
quality product.
I have covered some of the important aspects
here. There is more to Software Engineering
though and hence the need for experts. I hope this
proves to be a good starting point to help you
make better choices.
Recommended Reading
● Waterfall Model
● Agile Software Development
● Software Engineering
Meet Ankur
He is a Software Architect who loves
to solve complex problems.
Blog
LinkedIn

An Engineering Approach to Build Websites

  • 1.
    An Engineering Approach toBuild Websites Software Engineering Principles
  • 2.
    Sunny’s E-Commerce Website Sunnyowns a bookshop, which is doing reasonably well, and he decides to offer his services online via an e-commerce website. He starts to do some research on how to build a website. After a few days of searching and reading blogs he puts down his options. 1. Hire a freelance developer who can create a website for him. 2. Use a website builder and try to create a website on his own with some help from a freelancer, which may cost him less. 3. Learn programming and start building a website from scratch.
  • 3.
    What do youthink? ➔ How will his Website perform? The approaches may work but if he gets lucky and the website traffic goes up then he may be in some trouble. How will the system keep up with the traffic? The website may need more storage, how will that be handled? ➔ How will the Website handle H/W and S/W Updates? Has analysis been done for handling software and hardware updates? ➔ Security? Has website security been considered?
  • 4.
    In short doesthe website development following any process? Most of the Software Projects fail because they don’t follow a proper methodology. Tip An Engineering based approach may help.
  • 5.
    Following a setof proven principles and best practices can help when building a Website or a Software Application. These principles are part of Software Engineering Process and borrow heavily from other Engineering disciplines. Consider building a bridge or a new house. Both follow a process which eventually results in a building that can survive tests of time.
  • 6.
    Coming to Sunny’swebsite the following basic features are needed in the website- 1. Website should be able to fulfill all the requirements. Key features - finding books, viewing book details and making purchases. 2. Website should be up most of the time. Especially during peak hours. 3. Website should be easy to maintain. 4. Website performance should be good. 5. As website traffic grows it should be able to scale. 6. Making changes and adding new features should be easy. 7. Website should be secure.
  • 7.
    How to ensurethat Sunny get’s a Website which fulfills Functional and Non-Functional Requirements? Let’s see the steps at a high level that can be followed. Each step is important and if not done properly can lead to project failure. The team we need should include—Project Manager, Business Analyst, Technology Architect, Software Developers, Testing Team and someone to manage the Infrastructure. In startups it’s pretty common to find someone wearing multiple hats at the same time, which is fine as long as the person knows what he/she is doing. The Project Manager needs to do thorough planning and ensure project follows a strict timeline.
  • 8.
    Phase 1 -Requirement Gathering The requirements needs to be captured clearly by some professional. We usually involve a Business Analyst at this stage. It’s important that BA captures both the functional and non-functional requirements. The BA can then come up with data flow diagrams, ER-diagrams etc. which define the various features and how they are expected to work. This cycle can take some time. Once the requirements have been captured they need to be reviewed with the Sunny. A sign off is needed from him to proceed to the next stage. Output - A Requirement Document
  • 9.
    Phase 2 -Share possible Cost & Effort estimates Based on prior experience a rough estimate can be given to Sunny which can meet the requirements. It can help him decide if he wants to wait or go ahead.
  • 10.
    Phase 3 -Build Mockups and Prototypes This step is optional but can help provide Sunny a better picture of what he can expect to get post development. The prototype does not implement the features yet.
  • 11.
    Phase 4 -Architecture and Design Once requirements are in place the BA team will share it with the Architect. Role of Architect can include, but not limited to- ● Come up with a high level design or blueprint. ● Identify how system can meet the functional and non-functional requirements. ● Identify the main components. Identify reusability. ● Identify external systems and any integrations needed. ● Identify constraints. ● Perform capacity planning. ● Do a cost-effort analysis.
  • 12.
    Phase 5 -Detailed Design After Blueprint is ready the Architect can drill down to create a detailed design of the system like ● How all the pieces can work together. ● Which technology stack can be used. Which frameworks. ● Define API’s. ● Identify the version control process and also how to build and deploy the changes. An incremental approach is helpful. ● Share the coding best practices with the team. ● Some time should be spent towards the research and evaluation of possible solutions. To choose the right tools for the job. Architect can involve developers to provide inputs and should then come up with a plan to implement the features.
  • 13.
    Phase 6 -Development Only after the detailed design is in place should development start. The designs are reviewed and then passed on to the developers. Having competent developers who have prior experience in the technology stack is needed. The developers should also be able to do unit testing of the code they write. They should also understand the design and work closely with the Architect.
  • 14.
    Phase 7 -Testing Thorough testing should be performed to validate that all the requirements are met. Load testing should be performed to identify bottlenecks and break points.
  • 15.
    Phase 8 -Code Deployment Deploy the code to production environment. Plan and prioritize next set of features, defects etc.
  • 16.
    General Guidelines ● Followingan incremental build / deploy approach is recommended by having short sprints. It’s good to showcase features to client and get his feedback. The fail fast approach should be followed. ● In all the stages proper reviews must happen to ensure there are no last minute surprises. ● Proper planning is the pillar of this process. If timelines are not being met then Project Manager should have plans to address that. End of the day no one wants to pay extra. ● Daily status update can be done to check progress.
  • 17.
    This engineering processcan improve the chances of projects success. More than that it can ensure a quality product. I have covered some of the important aspects here. There is more to Software Engineering though and hence the need for experts. I hope this proves to be a good starting point to help you make better choices.
  • 18.
    Recommended Reading ● WaterfallModel ● Agile Software Development ● Software Engineering
  • 19.
    Meet Ankur He isa Software Architect who loves to solve complex problems. Blog LinkedIn