Software Process Model in Software Engineering

Dhanapriya D

What is Software ?

The term software refers to a collection of computer programs, procedures, and related documentation such as flowcharts, user manuals, and technical guides that describe how the software functions and how it should be used.

A software process is a structured set of activities and outcomes involved in the creation of a software product. These processes are typically carried out by software engineers and are essential for delivering high-quality, reliable software. Regardless of the specific development model used, most software processes include the following four 

key activities:

  • Software Specification: This involves defining what the software should do and the constraints under which it must operate. It includes gathering and analyzing requirements to ensure the system aligns with user needs.
  • Software Development: In this phase, the actual software is designed and coded to meet the specified requirements. It involves architectural design, detailed design, implementation, and unit testing.
  • Software Validation: This step ensures that the developed software meets the intended requirements and performs as expected. It includes testing and verification to identify and fix defects.
  • Software Evolution: After deployment, software must be maintained and updated to adapt to changing user needs, environments, and technologies. This includes bug fixes, performance improvements, and adding new features.

What is Software Process ?

A software process model is a structured representation of a software development process, presented from a specific viewpoint. As with all models, it simplifies reality offering an abstract view of how software is developed, maintained, and managed. These models typically outline the activities involved in software engineering, the expected outputs (software products), and the roles of the individuals involved.

Software process models help in planning, managing, and understanding the software development lifecycle. 

Some common types of software process models include:

  • Workflow Model:This model illustrates the sequence of activities in the software process, along with their inputs, outputs, and interdependencies. The focus is on human actions and task flow, helping to visualize how work progresses through different stages.
  • Dataflow or Activity Model:This model represents the process as a series of data transformation activities. It highlights how input data such as software specifications is transformed into output data like design documents or source code. These activities may be performed by either people or automated systems, and they tend to be more detailed than those in a workflow model.
  • Role/Action Model:This model defines the roles of the individuals involved in the software process and the specific activities or responsibilities assigned to each role. It is useful for clarifying team structure and accountability within the development process.

Software Development Models or Paradigms

Several well-established models or paradigms guide the software development process. Each provides a different approach to how activities like specification, design, development, and testing are carried out. 

Some of the commonly used models include:

  • Waterfall Model:This is a linear and sequential approach where the development process is divided into distinct phases such as requirements specification, software design, implementation, testing, and maintenance. Each phase must be completed and approved ("signed off") before moving to the next, making it easy to manage but less flexible to changes once the process begins.
  • Evolutionary Development:In this model, the activities of specification, development, and validation are carried out in parallel and iteratively. A basic version of the system is developed quickly from an initial specification, and further enhancements are made based on continuous feedback. This approach supports flexibility and accommodates changing requirements.
  • Formal Transformation:This model involves creating a formal mathematical specification of the system. Through a series of mathematically based transformations, the specification is gradually converted into an executable program. These transformations are correctness-preserving, ensuring that the final implementation adheres strictly to its original specification.
  • Component-Based Development:This approach focuses on assembling a system using existing, reusable software components rather than building everything from scratch. The development process emphasizes integration and configuration of pre-built modules, which can significantly reduce development time and cost.

Software Crisis

The term software crisis refers to the growing challenges in software development as systems become larger, more complex, and more critical. 

The key issues contributing to this crisis include:

  • Increasing Size and Complexity:Software is becoming more intricate and expensive as user expectations and system capabilities continue to rise. For instance, the amount of code in consumer products is doubling every few years, making development and maintenance significantly more difficult.
  • Poor Quality:Many software systems suffer from defects even after deployment, often due to inadequate testing methods. On average, software testing detects around 25 bugs per 1,000 lines of code, highlighting the difficulty of ensuring high quality in large-scale systems.
  • High Development Costs:Creating software requires significant time and financial investment. For example, the development of the FAA’s Advanced Automation System reportedly exceeded $700 per line of code—illustrating how costly large projects can become without efficient processes.
  • Delayed Delivery:Schedule overruns are a common issue in software development. Many projects take far longer than initially estimated, leading to increased costs and resource strain. In fact, studies show that one in four large software projects is never completed due to time and budget overruns.

Program vs. Software

Many people use the terms program and software interchangeably, but they are not the same. A program is a part of software, but software includes much more. For a program to be considered complete software, it must be accompanied by proper documentation and operating procedures.
                                                        



Program

A program consists of both the source code (written by developers in programming languages) and the object code (compiled version that a computer can execute). It performs specific tasks based on the instructions given.

Documentation

Documentation provides detailed information to help users and developers understand, operate, and maintain the software. It includes various types of manuals and diagrams, such as:
  • Data Flow Diagrams (DFDs)
  • Flowcharts
  • Entity-Relationship (ER) Diagrams
  • User Manuals
  • Technical Specifications    
                                 

Operating Procedures

Operating procedures are step-by-step instructions for installing, running, and troubleshooting the software. They also guide users on what to do in case of system failures. Common examples include:
  • Installation Guides
  • Beginner’s Guides
  • Reference Manuals
  • System Administration Guides
                                          






Our website uses cookies to enhance your experience. Learn More
Accept !

GocourseAI

close
send