Software Processes#

A software process is the workflow comprising a series of activities that lead to the production of a software product. These activities generally encompass:

  1. Software Specifications: Defining what the software should do and its operational constraints.

  2. Software Development: The actual creation of the software in alignment with the specified requirements.

  3. Software Validation: Ensuring that the software meets the customer’s expectations.

  4. Software Evolution: Modifying the software as per the changing needs of the customer.

Software Process Models#

Different frameworks can be applied to describe and manage these activities. These frameworks, or software process models, offer abstractions that simplify complex processes. Among these models are:

  1. Workflow Model: Focuses on human-performed activities and their dependencies.

  2. Dataflow or Activity Model: Represents the process as a series of data transformations.

  3. Role/Action Model: Specifies the roles of individuals and the activities they are responsible for.

Paradigms of Software Development#

  1. Waterfall Approach: Divides the process into discrete phases with a “sign-off” at each stage.

  2. Evolutionary Development: An iterative approach that allows for ongoing changes to specifications and system development.

  3. Formal Transformation: Starts with a mathematical specification and transforms it into a program using mathematical methods.

  4. System Assembly from Reusable Components: Focuses on integrating pre-existing components.

The Software Crisis#

The software industry faces multiple challenges:

  1. Size: Software systems are growing in complexity, making them harder to manage.

  2. Quality: Many software products have deficiencies, often due to inadequate testing.

  3. Cost: The financial requirements for software development are substantial.

  4. Delayed Delivery: Frequent schedule overruns lead to both time and cost escalations.

Program vs. Software#

../../../_images/program-vs-software.png

It’s vital to understand that ‘software’ is a broader term encompassing:

  1. Program: The actual code written to perform tasks.

  2. Documentation: Manuals, data flow diagrams, and other explanatory materials.

../../../_images/documentation.png
  1. Operating Procedures: Guidelines and instructions for using and troubleshooting the software.

../../../_images/operating-procedures.png