Today, software touches almost every aspect of our lives. Software development as a formal process began in the 1960s with a North Atlantic Treaty Organization (NATO) conference that set the stage for the early large-scale system development approach. Barry Boehm's waterfall model of linear development came out of this conference. In Boehm's model, the requirements definition phase cascaded down into database design, which in turn cascaded into coding, then testing , then installation, then verification, and tumbled the live operation at the end. All software's were customized for a particular site.
Software Development is the development of a software product in a planned and structured process. It is for determining the requirements for a new computer-based function, and creating, obtaining and/or modifying one or more programs that performs that function. The term software development is often used to refer to the activity of computer programming, which is the process of writing and maintaining the source code, whereas the broader sense of the term includes all that is involved between the conceptions of the desired software through to the final manifestation of the software.
A software development process is a structure imposed on the development of a software product. This includes software life cycle and software process. There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process.
Software Development Life Cycle
The Software Development Life Cycle is a step-by-step process involved in the development of a software product. It is also denoted as Software Development process in certain parts of the world. The whole process is generally classified into a set of steps and a specific operation will be carried out in each of the steps.
Software development life cycle model includes requirements, design, implementation and testing.
Each of the steps of the process has its own importance and plays a significant part in the product development. Software life cycle models describe phases of the software cycle and the order in which those phases are executed. There are tons of models and many companies adopt their own, but all have very similar patterns. Each phase produces deliverable required by the next phase in the life cycle. Requirements are translated into design. Code is produced during implementation that is driven by the design.
Requirements: Business requirements are gathered in this phase. This phase is the main focus of the project managers and stake holders. Meetings with managers, stake holders and users are held in order to determine the requirements. Who is going to use the system? How will they use the system? What data should be input into the system? What data should be output by the system? The overall result is the system as a whole and how it performs, not how it is actually going to do it.
Design: Software design is a process of problem-solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution. It includes low-level component and algorithm implementation issues as well as the architectural view.
Implementation: Code is produced from the deliverable of design phase during implementation and this is the longest phase of the software development life cycle. For a developer, this is the main focus of the life cycle because this is where the code is produced
Testing: Verifies the deliverable of the implementation phase against requirements. The testing process focuses on logical internals of the software ensuring that all statements have been tested, functional externals and conducting tests to uncover error.
There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process.