0% found this document useful (0 votes)
35 views20 pages

Software Processes in Software Engineering

software1

Uploaded by

Malak Oudardour
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views20 pages

Software Processes in Software Engineering

software1

Uploaded by

Malak Oudardour
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Chapter 2-

Software
Processes
CSC3324
Dr Houda CHAKIRI
Topics covered

Software process models

Process activities

Coping with change


Chapter 2 Software Processes 2
• A structured set of activities
required to develop a
software system.

• A software process model is an


abstract representation of a
The Software process. It presents a description
Process of a process from some particular
perspective.

Chapter 2 Software Processes 3


Basic Problem-Solving Flow

WHAT

HOW

DO

TEST

USE
Software Development Life Cycle (SDLC)

• A broad framework that


outlines the phases involved in
the development of software
applications. It provides a
structured approach to
software development.

• SDLC can encompass various


methodologies, including
Waterfall, V-Model, Iterative
Model, Spiral, among others.

Chapter 2 Software Processes 5


• Many different software processes but
all involve:

• Requirement Specification –
Defining & planning what the system
should do;
Software
Development • Design and implementation –
defining the organization of the
Life Cycle system and implementing the
system;
(SDLC)
(cont.) • Validation/Testing – checking that it
does what the customer wants;

• Evolution – Deploying and changing


the system in response to changing
customer needs.
Chapter 2 Software Processes 6
Processes,
Phases,
Activities &
Tasks

A process is made up of phases. A phase is made up of


activities. An activity is made up of tasks.

Chapter 2 Software Processes 7


The Software Process (Simplified)

Feasibility and
Planning Requirements

Design

Operation and
Implementation Maintenance
Roles, Resources, Activities & Tasks

Chapter 2 Software Processes 9


Software Process Descriptions

Process descriptions may also include:


• Work Products, which are the outcomes
of a process activity/task;
• Resources : what is needed to complete
the task: time, people, technology,
knowledge, and money
• Roles, which reflect the responsibilities
of the people involved in the process;
• Pre- and post-conditions, which are
statements that are true before and after
a process activity has been enacted or a
product produced.
Chapter 2 Software Processes 10
Process Models Types

• Adopting and adapting a suitable process is key in structuring the


work for a successful software project.
• Designing a process can start from scratch or may be based on
one of the many process models that have already been used
successfully.
Major differences between models in terms of what activities
constitute their phases and the sequencing of the phases. 3 types of
PMs are:
• Linear process models – phases that happen sequentially, one
after another
• Iterative process models – phases that are repeated in cycles
• Parallel process models – activities that occur concurrently
Chapter 2 Software Processes 11
Plan-driven and Agile processes

• Plan-driven processes : are processes where all of the process


activities are planned, and progress is measured against this plan.

• Agile processes: planning is incremental, and it is easier to


change the process to reflect changing customer requirements.
• In practice, most practical processes include elements of both
plan-driven and agile approaches.

• There are no right or wrong software processes.

Chapter 2 Software Processes 12


Software process models

• The waterfall model


• Plan-driven model. Separate and distinct phases of
specification and development.
• Incremental development
• Specification, development and validation are interleaved. May
be plan-driven or agile.
• Reuse-oriented software engineering
• The system is assembled from existing components. May be
plan-driven or agile.
In practice, most large systems are developed using a process that
incorporates elements from all of these models.

Chapter 2 Software Processes 13


The waterfall Model

Chapter 2 Software Processes 14


Waterfall Model Discussion

Pros Cons
• Simple and Easy to • Inflexibility
Understand • Late Testing
• Well-Defined Stages
• High Risk
• Structured Approach
• Poor Adaptability
• Ease of Management
• Customer
Involvement

Chapter 2 Software Processes 15


Incremental Development

Chapter 2 Software Processes 16


Incremental Development
Discussion

Pros Cons
• Reduced Cost of • Lack of Process
Accommodating Visibility
Changing
Requirements • Degradation of
System Structure
• Easier Customer
Feedback
• Rapid Delivery and
Deployment

Chapter 2 Software Processes 17


Reuse-Oriented Software Engineering

Chapter 2 Software Processes 18


Types of software components

• Web services that are developed


according to service standards and which
are available for remote invocation.
• Collections of objects that are developed
as a package to be integrated with a
component framework such as .NET or
J2EE.
• Stand-alone software systems (COTS)
that are configured for use in a particular
environment.

Chapter 2 Software Processes 19


Reuse-Oriented Software Engineering
Discussion

Pros Cons
• Standardization • Hidden Costs
• Focus on High-Level • Quality Variability
Design • Licensing and Legal
• Increased Reliability Concerns
• Cost Savings • Dependency on Third-Party
• Reduced Components
Development Time • Compatibility Issues
• Limited Control
Chapter 2 Software Processes 20

Common questions

Powered by AI

Roles, resources, and activities play essential roles in structuring a software process by defining the responsibilities, necessary inputs, and tasks required to complete the process. Roles refer to the responsibilities of individuals involved, such as developers, testers, or project managers who contribute to the process. Resources might include time, technology, and finances required to accomplish tasks. Activities are the actions carried out during the process, such as coding or testing, each consisting of tasks that lead to work products, the end results of these activities. Together, these elements ensure the systematic and efficient progression through the software development life cycle .

Pre- and post-conditions in process activities are significant because they define the state conditions that must be true before and after an activity is executed within a software process. Pre-conditions ensure that all necessary prerequisites are in place before an activity begins, which can prevent errors and inefficiencies due to unfulfilled requirements or missing inputs. Post-conditions confirm that the activity has achieved its intended outcome, establishing criteria for success and facilitating verification and validation processes. They serve as critical checkpoints that help ensure process integrity and completeness .

The main stages of a typical Software Development Life Cycle (SDLC) include Requirement Specification, Design and Implementation, Validation/Testing, and Evolution. In the Requirement Specification stage, the system's functions and goals are defined and planned, ensuring a clear understanding of what the system should accomplish. During Design and Implementation, the software's architecture is created and the coding of software takes place. Validation/Testing involves checking the software's functionality to ensure it meets the customer's requirements. Finally, the Evolution stage involves deploying the software and modifying it as necessary to adapt to changing customer needs, ensuring the software remains relevant over time .

Plan-driven software development processes involve comprehensive upfront planning and measuring progress against a predetermined plan, which can make them less adaptable to changes in customer requirements due to their structured nature. In contrast, agile methods incorporate incremental planning, which allows for more flexibility and adaptability throughout the process. Agile processes can more easily reflect changes in customer requirements, integrating them incrementally. However, in practice, many processes combine elements of both to balance structure with flexibility, as there are no definitive right or wrong approaches in software processes .

Linear process models, such as the waterfall model, execute phases sequentially, one after the other, with each phase needing to be completed before moving on to the next. Iterative process models repeat phases in cycles, allowing for continual refinement and adjustment based on feedback or new requirements, which provides flexibility and consumes less risk in uncertain conditions. Parallel process models involve executing various activities concurrently, promoting efficiency and shortening the time to market by overlapping tasks that do not hinge on the completion of others, but may increase complexity in coordination and integration .

The waterfall model is advantageous because it is simple, easy to understand, and employs a structured approach with well-defined stages, facilitating ease of management. However, it also presents significant disadvantages such as inflexibility and late-stage testing, which can lead to high-risk outcomes due to a lack of adaptability and low customer involvement throughout the development process. The fixed sequence of stages can hinder the ability to accommodate changes during the development cycle, making it less suitable for projects with uncertain or evolving requirements .

Software process models like waterfall, incremental, and reuse-oriented can incorporate elements from both plan-driven and agile processes through methodological flexibility. The waterfall model is typically plan-driven due to its rigid stage progression but can adopt agile principles by integrating iterative testing and feedback loops. Incremental development may be plan-driven or agile, allowing for step-wise delivery and adaptable incorporation of customer feedback at each stage. Reuse-oriented engineering often balances plan-driven standardization with agile adaptation, as it requires planning for integration while remaining flexible in adopting existing solutions to address emerging requirements .

The choice of a software process model significantly influences customer involvement and feedback. The waterfall model limits customer involvement to the start and end phases, restricting feedback throughout development. Incremental and agile models foster continuous customer interaction, providing ongoing opportunities for feedback and adjustments, which enhances customer satisfaction and product alignment with user needs. Reuse-oriented approaches may vary, as they could entail rigorous initial customer consultation to select components but may limit ongoing input, depending on the level of component standardization and customization allowed .

Potential drawbacks of the reuse-oriented software engineering model include hidden costs such as those related to licensing fees and ongoing maintenance. There can also be quality variability among third-party components, leading to possible issues in reliability or performance. Dependency on third-party components may further impose risks due to potential compatibility issues and legal concerns, and there is often limited control over the updates or modifications of these external components, which can impact the final system .

Incremental development helps mitigate the challenges of changing requirements by allowing for continuous customer feedback and the ability to make adjustments in small increments, which reduces the cost and impact of accommodating changes. This approach supports rapid delivery and deployment, enabling ongoing validation of requirements. In contrast, reuse-oriented software engineering focuses on integrating pre-existing components, which provides benefits in terms of standardization and reduced development time but might face hidden costs and issues related to component compatibility or quality variability, potentially complicating adaptability to changes .

You might also like