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:
Software Specifications: Defining what the software should do and its operational constraints.
Software Development: The actual creation of the software in alignment with the specified requirements.
Software Validation: Ensuring that the software meets the customer’s expectations.
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:
Workflow Model: Focuses on human-performed activities and their dependencies.
Dataflow or Activity Model: Represents the process as a series of data transformations.
Role/Action Model: Specifies the roles of individuals and the activities they are responsible for.
Paradigms of Software Development#
Waterfall Approach: Divides the process into discrete phases with a “sign-off” at each stage.
Evolutionary Development: An iterative approach that allows for ongoing changes to specifications and system development.
Formal Transformation: Starts with a mathematical specification and transforms it into a program using mathematical methods.
System Assembly from Reusable Components: Focuses on integrating pre-existing components.
The Software Crisis#
The software industry faces multiple challenges:
Size: Software systems are growing in complexity, making them harder to manage.
Quality: Many software products have deficiencies, often due to inadequate testing.
Cost: The financial requirements for software development are substantial.
Delayed Delivery: Frequent schedule overruns lead to both time and cost escalations.
Program vs. Software#
It’s vital to understand that ‘software’ is a broader term encompassing:
Program: The actual code written to perform tasks.
Documentation: Manuals, data flow diagrams, and other explanatory materials.
Operating Procedures: Guidelines and instructions for using and troubleshooting the software.