Summer Camp: How to build a website like an engineer


7 What is Software Development Life Cycle (SDLC)?

Computer software engineering as an industry has been evolving for many years. There are various methodologies to follow. A lot of senior software engineers are familiar with the software development life cycle (SDLC) and follow the process in order to deliver high quality products.

What is SDLC? It is a complete process for a team to work collaboratively on an software application project or a software product, phase by phase, from start to finish.

After a software project or a product phase has been defined and funded, SDLC is kicked off. It may be covered by one or more iterations of an Agile process. Usually SDLC includes the following steps and repeats itself incrementally in multiple project cycles:

  • Requirement gathering
  • It is usually conducted by product management team.

  • Requirement analysis
  • Translate the functional requirements to technical specifications by developers.

  • Technical design
  • It includes the overall system design, component design, object and class diagram, data modeling and business workflow, etc., based on the architecture design of the product or application project.

  • Environment set up and configuration
  • Create or follow the documentation to set the development environment, which usually includes multiple tiers of servers and system configuration files, on a local system.

  • Code implementation
  • It involves object, database and business logic implementation, debugging, trouble shooting for a predefined set of features and functionalities.

  • Unit testing
  • It is usually conducted by the developers with a set of predefined API (Application Programming Interface) for a particular functionality.

  • System testing
  • There are while/black box testings, smoke testing with automated scripts, stress/load testing, and regression testing, conducted manually or with tools, by peer developers or QA (Quality Assurance) team.

  • Documentation
  • There will be design specifications, installation procedures, system configuration guide, user manual, and test plan, etc. to be archived for references.

  • Nightly build
  • Code after unit testing will be checked into the source control system and a night build will be done with an automated build script.

  • Bug report
  • In order to track the feature implementation and bug fixing between the development team and QA team, a useful tracking system is needed for collaboration.

  • Weekly release
  • If a set of functionalities have passed the system testing, the code can be released for the testing by the beta customers on a weekly or monthly basis.

If you have the above qualification, I believe you will be competent for most of the software engineer positions in the industry.