Cisco CCNA Devnet Lesson 1: SDLC

Lesson 1:  Software Development Lifecycle

Successful programming of software applications doesn’t start with code.  It doesn’t begin with fancy strings, integers, or floats.  It doesn’t rest purely on the talent or creativity of a gifted or intuitive programmer.  Successful programming, just like any other endeavor of scale, starts with preparation and planning.  It begins with structure.  It’s birthed out of strategy.  It relies on structure. It requires a process.

The Software Development Lifecycle provides us with an organized representation of that process. It involves six stages that when followed, aid in mapping out a path towards a successful application.

Here are the six steps:

  1. Planning
  2. Defining
  3. Designing
  4. Building
  5. Testing
  6. Deploying


Planning – Here you will interview stakeholders and end users, perform risk analysis, determine budget and resources, and agree upon the vision for a successful application.

Defining – Here you determine use cases and gather functional information. In other words, it is here that you figure out what you want the software to actually do.

Designing – In this stage, you will analyze whether the software can fulfill the requirements and select the best design approach for the application or product.  You select the language(s) best suited to complete the software and provide an engineering representation of the product to be built.

Building – This stage involves translating your design plan into code.  A team of developers will work together to design the software and write unit tests for the components.

Testing – Before delivering your software application to the customer, you want to test the system against the stated requirements.  The goal here is to identify any defects in the system and to confirm the functionality of the software.  This stage involves Unit testing, Integration testing, and System testing.

Deploying – Upon successful completion of the testing phase, the software is ready to be released to the customer.  Deployment may be limited to a subset of users and groups who can provide feedback and interaction that may lead to tweaks and or bug mitigation. Deployment in phases allows for course corrections to be made before a more costly and impactful wide-scale deployment.