Introduction to Software Development Life Cycles
Software Development Life Cycles (SDLCs) represent a systematic approach to each component of application development — from the initial idea to a functioning production application. A step (or phase) is a unit of related work in an SDLC. A methodology is a collection of SDLC steps in action, applied to a project. Artifacts are the recorded output from steps.
For example, the first step of an SDLC is analysis. The methodology requires a requirements document as an analysis artifact.
SDLCs: A Brief History
Software development life cycles have existed in some form or other since the first software applications were developed. The true beginning of what is now termed “software” is debatable. For our purposes, the topic is confined to binary operations based on boolean algebra.
In 1854, mathematician George Boole published An Investigation of the Laws of Thought, on which Are Founded the Mathematical Theories of Logic and Probabilities. This work became the foundation of what is now called boolean algebra. Some 80 years later, Claude Shannon applied Boole’s theories to the computing machines of Shannon’s era. Shannon later went to work for Bell Labs.
Another Bell Labs employee, Dr. Walter Shewhart, was tasked with quality control. Perhaps the pinnacle of Dr. Shewhart’s work is statistical process control (SPC). Most quality control and continuous improvement philosophies in practice today utilize SPC. Dr. Shewhart’s work produced a precursor to software development life cycles, a methodology defined by four principles: Plan, Do, Study, and Act (PDSA).
Dr. Shewhart’s ideas influenced many people at Bell Labs, making an accurate and formal trace of the history difficult. Suffice it to say that Dr. Shewhart’s ideas regarding quality spread throughout many industries; one industry influenced was the software industry.
Types of Software Development Life Cycles
SQL Server Integration Services provides integrated support for many SDLC methodologies. This SSIS Software Development Life Cycle Topic touches on a few of them. In general, SDLCs can be placed into one of two categories: waterfall and iterative.
The first type of formal software development life cycles is sequential, or linear. That is, it begins with one step and proceeds through subsequent steps until reaching a final step. A typical example of linear methodology steps is the following:
- Analysis: Review the business needs and develop requirements.
- Design: Develop a plan to meet the business requirements with a software solution.
- Development: Build the software solution.
- Implementation: Install and configure the software solution.
- Maintenance: Address software issues identified after implementation.
This type of methodology is referred to as a waterfall methodology because information and software “fall” one way from plateau to plateau (step to step).
The waterfall methodology has a lot of appeal for project managers. It is easier to determine the status and completeness of a linear project: It’s either in analysis, in development, in implementation, or in maintenance.
A potential downside to the waterfall methodology is that the analysis and design steps are traditionally completed in a single pass at the beginning of the project. This does not allow much flexibility should business needs change after the project starts. In addition, the development and implementation steps are expected to be defined prior to any coding.
An iterative methodology begins with the premise that it’s impossible to know all requirements for a successful application before development starts. Conversely, iterative development holds that software is best developed within the context of knowledge gained during earlier development of the project. Development therefore consists of several small, limited-scope, feature-based iterations that deliver a product ever closer to the customer’s vision.
The following are examples of iterative SDLCs:
- Spiral: Typified by ever-expanding scope in hopes of identifying large design flaws as soon as possible
- Agile: A collection of methodologies fall into this category, including Scrum, Feature-Driven Development, Extreme Programming, Test-Driven Design, and others.
- Microsoft Solutions Framework: Microsoft’s own practice gleaned from a sampling of best practices from different methodologies
What happens if, hypothetically, an iteration fails to produce the desired functionality? The developer or DBA must remove the changes of the last iteration from the code and begin again. This is much easier to accomplish if the developer or DBA has stored a copy of the previous version someplace safe — hence, the need for source control.
Source control is defined as preserving the software source code in a format that enables recovery to a previous state of development or version, and it is a basic tenet of all iterative software development life cycles.
SSIS and SDLCs
As mentioned, SSIS is very suitable for applying different SDLCs. This is because SSIS is broken down to units of work that can be planned out for longer waterfall projects or designed in a more iterative agile project. While an agile project approach is most appropriate for business intelligence solutions, if you are working on a big system migration, this is usually a waterfall type project effort, and your ETL most commonly is for data migration to the new system.
A few of the common ways that SSIS integrates into SDLCs includes:
- ETL tasks can be included as part of a product backlog
- Packages can be assigned to developers
- Packages can be checked into source control through the file system or through Visual Studio
- Packages can be grouped together and deployed as a set