Monday, January 2, 2017

Lecture 02: Software Development Process



The software development process is a set of activities associated with production of a software product. For the effective control of the software development process it is essential to have a phased development strategy. That is it consists of number of stages that produce one or more documents and program codes.

The software development process model is also called SDLC - Software Development Life Cycle, as the process is repeated when software need to be changed as long as the software is in use.

There are a number of different software process models used in the industry and the choice of the model should be based on the product and project needs. Some software process models are :

  • Waterfall model
  • Evolutionary development model
  • Rapid application development ( RAD )
  • Dynamic system development model ( DSDM )

Waterfall Model
This first explicit model for software development process was derived from other engineering processes. lt offered a means of making the development process more visible. Because of the cascade from one phase to another, this model is known as the "Waterfall model".

The principal stages of the model map onto the fundamental development activities.

Requirement Analysis and Definition
The system's services, limitations ( constraints ) and goals are established by consultation with system users. They are then defined in a manner, which ts understandable by both users and development team.

System and Software Design
The system design process partitions the requirements to either hardware or software systems. lt establishes overall system architecture. Software design involves representing the software system functions in a form that may be transformed in to one or more executable programs,

Implementation and Unit Testing
During this stage, the software design is realized as a set of programs or program units. Unit testing involves verifying that each unit meets it's specification.

Integration and System Testing
Individual program units or programs are integrated and tested as a complete system to ensure that software requirements have been met. After testing, software system is delivered to the customer.

Operations and Maintenance
Normally (although not necessarily) this is the longest life cycle phase. The system is installed and put in to practical use. Maintenance involves correcting errors which are not discovered in earlier stages of the life cycle, improving the implementation of system units and adding the system requirements as new requirements are discovered.


Advantages and Disadvantages of Waterfall Model

Advantages Disadvantages
Each phase ends with a deliverable Cannot be used when requirements are not clear
Process is more visible Changes cannot be accepted easily
Projects can be well managed User involvement is poor
Better communication among team members Whole system is delivered at the end
Facilitates future maintenance Significant effort goes to intermediate output


Evolutionary Development Model
Evolutionary development is based on the idea of developing an initial implementation, expose this to user comment and refining this through many versions until an adequate system has been developed.

Rather than have separate phases of specification, development and validation activities, these are carried out parallel with rapid feedback across these activities. Evolutionary development is based on prototyping and there are two prototyping techniques namely, evolutionary prototyping and throw-away prototyping.

Evolutionary Prototyping

Where the objective of the process is to work with the customer to explore their requirements and deliver a final system. The development starts with the parts of the system which are understood. The system evolves by adding new features as they are proposed by the customer. This approach is suitable when the requirements are unclear and unstable.

Throw-away Prototyping

Where the objective of prototyping is to understand the customer's requirements and hence develop a better requirement definition for the system. The prototype concentrates on experimenting those parts of the customer requirements which are poorly understood. Once the prototype is build, it is discarded and the requirement specification is used to conventional system development. This approach is suitable when the requirements are unclear ( vague ) but stable ( does not change ).

Evolutionary development process model illustrated below is based on throwaway prototyping.



The evolutionary approach to software development is usually more effective than waterfall approach in producing systems which meet the immediate needs of the customers.

Advantages and Disadvantages of Evolutionary Development Model

 
Advantages Disadvantages
Can be used with unclear and unstable
requirements
Process is over flexible
Requirements can be easily changed May be difficult control and terminate
Active user involvement Poor system structure due repeated changes
Iterative, incremental development & delivery Lack of proper documentation
Testing is integrated throughout the SDLC. Difficult to support future maintenance


Rapid Application Development

Today the organizations have very dynamic needs for software and these needs are rapidly changing. In addition the software industry is very competitive. In this context the software need to be developed and delivered in a short period of time. Sometime even the complete fulfillment of requirements is not expected thus the acceptance criterion is "Fitness for purpose". Rapid application development process models have evolved to fulfill this requirement.

These development approaches uses iterative and incremental development and have short development cycles with fixed time. This concept is known as "time boxing" and usually such "time box" is two to three months. Another important consideration is, that such  development uses a range of CASE tools ( Computer aided software engineering ). This increases the efficiency of development. The languages which provides these type of tools to support rapid development are called 4th generation languages.

Features of 4GL

  • DBMS - Database Management Systems
  • Form Designers - Simple GUI design with drag and drop tools
  • Code Generators - Automatic code generation support
  • Report Generators - Easy to interface for report generation
  • APG - Application Program Generators

No comments:

Post a Comment

Important Notice!

Dear students and friends. When you commenting please do not mention your email address. Because your email address will be publicly available and visible to all. Soon, it will start sending tons of spams because email crawlers can extract your email from feed text.

To contact me directly regarding any inquiry you may send an email to info@bcslectures.website and I will reply accordingly.