Prototyping
Incremental delivering
The waterfall model of software development is often criticized for its linear and sequential approach, which fails to accommodate the iterative and dynamic nature of real-world software projects. In practice, requirements frequently change, and feedback loops are necessary for refining features, making it difficult to adhere strictly to the waterfall phases. Additionally, the model does not effectively address overlapping activities, such as design and testing, which often occur simultaneously in agile practices. This rigidity can lead to delays and increased costs when changes are needed late in the development process.
Modeling is a central part of all the activities that lead to deployment of a good software. It helps in visualising and controlling the system's architecture.
Process metrics are used to make strategic decisions about how to complete the common process framework activities. Project metrics are used to monitor progress during software development and to control product quality.
•Software Project Tracking and Control (Assess progress and take action to maintain commitment) •Risk Management (Assess risks that will affect outcome and quality) •Software Quality Assurance (Define and conduct activities to ensure software quality) •Formal Technical Reviews (Assess Work products to uncover and rectify defects) •Measurement (Define and collect process, project and product metrics) •Software Configuration Management (Manage effect of change) •Reusability Management (Define criteria and establish mechanisms for reuse) •Work Product Preparation and Production (Activities required to create the work products)
A software process model is a simplified description of a software process which ispresented from a particular perspective. Models, by their very nature, aresimplifications so a software process model is an abstraction of the actual processwhich is being described. Process models may include activities which are part ofthe software process, software products and the roles of people involved in softwareengineering.Some examples of the types of software process model which may beproduced are:1. A workflow model. This shows the sequence of activities in the processalong with their inputs, outputs and dependencies. The activities in thismodel represent human actions.2. A dataflow or activity model This represents the process as a set of activitieseach of which carries out some data transformation. It shows how the inputto the process such as a specification is transformed to an output such as adesign. The activities here may be at a lower-level than activities in aworkflow model. They may represent transformations carried out by peopleor by computers.3. A role/action model This represents the roles of the people involved in thesoftware process and the activities for which they are responsible.4. Iterative Processes This prescribes the construction of initially small but ever larger portions of a software project to help all those involved to uncover important issues early before problems or faulty assumptions can lead to disaster. Iterative processes are preferred by commercial developers because it allows a potential of reaching the design goals of a customer who does not know how to define what they want.5. Capability Maturity Model Integration (CMMI) is one of the leading models and based on best practice. Independent assessments grade organizations on how well they follow their defined processes, not on the quality of those processes or the software produced. CMMI has replaced CMM.There are a number of different general models or paradigms of softwaredevelopment:1. The waterfall approach This takes the above activities and represents them asseparate process phases such as requirements specification, software design,implementation, testing and so on. After each stage is defined it is 'signedoff'and development goes on to the following stage.2. Evolutionary development This approach interleaves the activities ofspecification, development and validation. An initial system is rapidlydeveloped from very abstract specifications. This is then refined withcustomer input to produce a system which satisfies the customer's needs.The system may then be delivered. Alternatively, it may be re-implementedusing a more structured approach to produce a more robust and maintainablesystem.3. Formal transformation This approach is based on producing a formalmathematical system specification and transforming this specification, usingmathematical methods to a program. These transformations are 'correctness preserving'.This means that you can be sure that the developed programmeets its specification.4. System assembly from reusable components This technique assumes thatparts of the system already exist. The system development process focuseson integrating these parts rather than developing them from scratch.
Software process includes those activities that activities, methods , practices and transformations that are used to create and maintain software products. having efficient software practices can lead us to various benefits.
A structured set of activities required to develop a software system. Specification Design Validation Evolution
A software product refers to the final outcome of software development, such as applications, systems, or tools that users interact with. In contrast, a software process encompasses the methodologies, practices, and activities involved in creating, testing, and maintaining that software product. Essentially, the product is what is built, while the process is how it is built.
During the prediction phase of the IPDE process (Identify, Predict, Decide, Execute), you could predict potential hazards, the actions other road users might take, changes in road conditions, your own reaction time, the potential behavior of pedestrians, potential weather changes, and potential vehicle malfunctions.
Professional
Software maintenance refers to the process of modifying and updating software applications after their initial deployment to correct defects, improve performance, or enhance features. It involves activities such as bug fixing, updating documentation, and adapting the software to changes in the environment or user requirements. Effective maintenance ensures that the software remains functional, relevant, and efficient over time. Overall, it plays a crucial role in the software development lifecycle to extend the software's usability and longevity.
The waterfall model of software development is often criticized for its linear and sequential approach, which fails to accommodate the iterative and dynamic nature of real-world software projects. In practice, requirements frequently change, and feedback loops are necessary for refining features, making it difficult to adhere strictly to the waterfall phases. Additionally, the model does not effectively address overlapping activities, such as design and testing, which often occur simultaneously in agile practices. This rigidity can lead to delays and increased costs when changes are needed late in the development process.
Generic activities in all software processes are: • Specification - what the system should do and its development constraints. • Development - production of the software system. • Validation - checking that the software is what the customer wants. • Evolution - changing the software in response to changing demands.
Proposed changes to a Configuration Item (CI) refer to modifications or updates suggested for a particular component of the software system. These changes undergo a review process to assess their impact, feasibility, and alignment with project goals. Once approved, the changes are formally integrated into the software configuration, ensuring that the CI remains up-to-date and functions as intended within the overall system. This process helps maintain the integrity and stability of the software throughout its lifecycle.
Modeling is a central part of all the activities that lead to deployment of a good software. It helps in visualising and controlling the system's architecture.
Process metrics are used to make strategic decisions about how to complete the common process framework activities. Project metrics are used to monitor progress during software development and to control product quality.
software process line and software product line