Software Engineering, Software project failure, waterfall and agile model, Project Scheduling
Using the well defined approach and method software engineering is applicable to the development of the software. Using the software engineering more reliable and effective product is developed.
IEEE definition for software engineering:
The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software, and the study of these approaches; that is, the application of engineering to software.
Software project failure: when there is a logical error in the processing and which causes the crash of processing it is known as software failure. When the program is unresponsive then the failure causes. Some causes of software failure:
- Some files are missing while installing.
- Corrupted files are there
- Hardware failure.
- Hard drive failing
- Processor overheated
Some of the main reasons for the software failure
- No end user involvement
- Lack of communication
- Unfocused executive sponsors
- Failing to see the future
- Chasing technology.
- Fail to work on milestone points
- Less testing or lack of quality testing
- Environment factors. Virus
Approaches for software engineering
There are many approaches used to develop software. In different organization the approach is selected by the management and the term of development.
There are some approaches:
- Waterfall development
- Spiral development
- Incremental development
- Rapid application development’
- Agile development
- Iterative and incremental development
There are other approaches also
Waterfall Development Approach:
Waterfall model is a sequential model. In this model the development is divided into different modes and each mode has the different tasks with different motto. It is the first model of software engineering that was used. It is very easy to implement and understand. The main advantage of the waterfall model is that the phases are not overlapped with each other.
Requirement gathering and analysis: First find out the entire requirements then understand the requirements and feasibility test for the requirements.
System Design: As the first phase requirement create a design for the software. Design helps in specifying the hardware and software requirements and system architecture is defined.
Implementation: using the system design create the small programs called units then integrate the codes for the next phase. In this phase programs are developed and tested for its functionality.
Testing: Do the testing for all the units that are developed under the implementation. This testing is called the integrated testing and find out all the faults and failures in the testing phase. Report the testing activates.
System development: Now it is the times for releasing after performing the functional and non functional testing deploy the product in the customer environment.
Maintenance: In the maintenance phase met the problems bugs in the client’s end and fix the problems. Update the system on time.
All the phases are followed in downward direction like a waterfall so that it is called waterfall model
Benefits of the waterfall model:
- This model is simple and easy to understand
- Requirements are very well understandable its works perfect in small projects.
- The phases cannot be overlapped with each other.
- This approach is easy to manage.
Issues with the waterfall model:
- Not suitable for the long projects.
- Object oriented projects and complex projects cannot be contracted using this model.
- High risk factor in evolved in this model.
Agile is a software development method which means ability to move quickly and easily. This method breaks the product into small incremental builds. It is a combination of iterative and incremental process models. It focuses on process adaptability and customer satisfaction by rapid delivery of working software product.
In agile method the project is broken into several iterations. And these iterations are of the same time duration. The various functional areas of agile model are:
- Requirements analysis
- Unit testing
- Acceptance testing
Advantages of agile model:
- It supports teamwork and cross training
- Customers can take look on working features which fulfilled their expectations.
- In SDLC it is a realistic approach for development.
- Customers are more satisfied because of delivers early partial working solutions.
- Daily interaction is needed between the customer and the developers.
- Resources required is less.
- Changes in the requirements are accepted even in the later stages of development.
- Easy to manage
- More flexible for the developers.
Disadvantages of Agile model
- Documentation in the agile SDLC is less
- Hard to handle the complex dependencies.
- Sometime it is difficult to get the expected result.
- High risk factor of maintainability extensibility and sustainability is involved.
Project scheduling is to complete the project within time. Scheduling is an important part of project activity which means deciding which part of tasks would be taken up and when. We take scheduling to complete the task within time. In scheduling we met the commitments of the project then it tracks the progress and achieves the goal.
Project manager task for scheduling:
- Define all the tasks
- Find out the critical and difficult tasks.
- Build the network and interdependency of different tasks
- Track the progress for the tasks.
Principles for software project scheduling:
- Define the different tasks
- Interdependency means the find the tasks that are parallel and sequential.
- Allocate the time to the different person like end and start time.
- Duty to get all the resources.
- Allocate the different task to the different people.
- Have the look on milestones.
- Must watch the outcomes on every time interval.
There are two techniques in scheduling:
- Gantt Chart
- Network diagrams
- Gantt chart: in Gantt chart the project is visual representation of sequencing and duration of activities. It is name after the developer Henry Gantt. It is basically used to allocate resources to activities. Gantt chart is used to represents the progress of project an activity. Bar consist of the shaded part and the white part, shaded part shows the length of the time and white part shows the slack time.
Advantages of Gantt chart:
- Easy to construct and handle.
- It is more efficient for large project.
- Provides a schedule of earliest starting time and finish time.
- It is flexible. This means easy to make alterations.
- It will figure out what comes next.
Disadvantages of Gantt chart
- It gives only one earliest schedule.
- It does not show the project behind schedule.
- Does not show the effects of delays.
It is a graphical representation of project tasks and their inter relationships. It is a critical path scheduling for controlling resources. Critical path scheduling is a technique whose order and duration of a sequence of task activities directly affect the completion date of a project.
PERT: Pert means Program Evaluation Review Technique. It is a technique to calculate the expected time for the tasks it is used for optimistic time (o), pessimistic time (p), realistic time (r) and expected time (et).
ET = o + 4r + p