Friday, February 26, 2016

Waterfall Model and Software Process

HI Techs! Here we are going to discuss Software development process in Information Technology.This is the post to get knowledge how to develop
software development process in IT industry and what type of models used while developing software in IT industry, what type of problems they might have meet while developing software projects. I have posted already SDLC. You can visit this link and aware of the steps how to develop software development life cycle.

Software engineering is defined as the systematic approach to the development, operation, maintenance, and retirement of software.the systematic approach must help achieve a high quality and productivity (Q&P).

Process and Project:

A Process is a sequence of Steps performed for a given purpose. While developing  software, the purpose is to develop software to satisfy the needs of some users or clients.

  A software project is one instance of this problem,and the development process is what is used to achieve this purpose.




A process model is essentially a compilation of best practices into a ―recipe‖ for success in the project.A process is often specified at a high level as a sequence of stages. The sequence of steps for a stage is the process for that stage, and is often referred to as a subprocess of the process.

Component Software Process:

As we defined above, A process is Sequence of steps executed to achieve a goal. While developing software multiple process are needed. Many of these do not concern software engineering, though they do impact software development.
These could be considered non software process. Business processes, social processes, and training processes are all examples of processes that come under this.

Software Process:

The processes that deals with  the technical and management issues of Software development are collectively called the software process.

There are two major components in a software process.

a) Development process
b) Project management process

Development Process

The Development process specifies all the engineering activities that need to be performed.

Project Management process

The management process specifies how to plan and control the activities so that cost, schedule, quality, and other objectives are met.

Software Configuration Management Process
During the project many products are produced which are typically com-posed of many items (for example, the final source code may be composed of many source files). These items keep evolving as the project proceeds, creating many versions on the way. As development processes generally do not focus on evolution and changes, to handle them another process called software configuration control process is often used. The objective of this component process is to primarily deal with managing change, so that the integrity of the products is not violated despite changes.

Process Management Process


The basic objective of the process management process is to improve the software process. By improvement, we mean that the capability of the process to produce quality goods at low cost is improved.


software process

Software Development process Model
For the software development process, the goal is to produce a high-quality software product.It therefore focuses on activities directly related to production of the software, for example, design, coding, and testing. As the development process specifies the major development and quality control activities that need to be performed in the project, it forms the core of the software process. The management process is often decided based on the development process.

A project’s development process defines the tasks the project should per-form, and the order in which they should be done.Due to the importance of the development process, various models have been proposed. In this Post we will discuss Waterfall model.

waterfall Model
The simplest process model is the waterfall model, which states that the phases are organized in a linear order. The model was originally proposed by Royce.

In this model, a project begins with feasibility analysis. Upon successfully demonstrating the feasibility of a project, the requirements analysis and project planning begins. The design starts after the requirements analysis is complete, and coding begins after the design is complete. Once the programming is completed, the code is integrated and testing is done. Upon successful completion of testing, the system is in-stalled. After this, the regular operation and maintenance of the system takes place.



By doing this, the large and complex task of building the software is broken into smaller tasks (which, by themselves, are still quite complex) of specifying requirements, doing design, etc. Separating the concerns and focusing on a select few in a phase gives a better handle to the engineers and managers in dealing with the complexity of the problem.
The requirements analysis.

The requirements analysis phase is mentioned as "analysis and planning". Planning is a critical activity in software development. A good plan is based on the requirements of the system and should be done before later phases begin. However, in practice, detailed requirements are not necessary for planning. Consequently, planning usually overlaps with the requirements analysis, and a plan is ready before the later phases begin. This plan is an additional input to all the later phases.

The following documents generally form a reasonable set that should be produced in each project:
– Requirements document
– Project plan
– Design documents (architecture, system, detailed)
– Test plan and test reports
– Final code
– Software manuals (e.g., user, installation, etc.)

Advantages
One of the main advantages of the waterfall model is its simplicity. It is conceptually straightforward and divides the large task of building a software system into a series of cleanly divided phases, each phase dealing with a separate logical concern.

Limitations


The waterfall model, although widely used, has some strong limitations. Some of the key limitations are:

1. It assumes that the requirements of a system can be frozen (i.e., baselined) before the design begins. This is possible for systems designed to automate an existing manual system. But for new systems, determining the require-ments is difficult as the user does not even know the requirements. Hence, having unchanging requirements is unrealistic for such projects.

2. Freezing the requirements usually requires choosing the hardware .A large project might take a few years to complete. If the hardware is selected early, then due to the speed at which hardware technology is changing, it is likely that the final software will use a hardware technology on the verge of becoming obsolete.

3. It encourages ―requirements bloating‖. Since all requirements must be specified at the start and only what is specified will be delivered.

4. It is a document-driven process that requires formal documents at the end of each phase.






No comments:

Post a Comment

High Paying Jobs after Learning Python

Everyone knows Python is one of the most demand Programming Language. It is a computer programming language to build web applications and sc...