0% found this document useful (0 votes)
17 views

Unit 1 3 Software Processes in Software Engineering

Uploaded by

gotishotmachine
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

Unit 1 3 Software Processes in Software Engineering

Uploaded by

gotishotmachine
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

Software Processes in Software Engineering

Software processes in software engineering refer to the methods and


techniques used to develop and maintain software. Some examples of
software processes include:
 Waterfall:
a linear, sequential approach to software development,
with distinct phases such as:
 requirements gathering,
 design,
 implementation,
 testing, and
 maintenance.
 Agile:
 a flexible,
 iterative approach to software development,
 with an emphasis on rapid prototyping and continuous
delivery.
 Scrum:
 a popular Agile methodology that
 emphasizes teamwork,
 iterative development, and
 a flexible, adaptive approach to planning and management.
 DevOps: a set of practices that aims to improve”
 collaboration and communication between development and
operations teams,
 with an emphasis on automating the software delivery
process.
Each process has its own set of advantages and disadvantages, and the
choice of which one to use depends on the specific project and organization.
Software is the set of instructions in the form of programs to govern the
computer system and to process the hardware components. To produce a
software product the set of activities is used. This set is called a software
process.

Software Development:
In this process:
 designing,
 programming,
 documenting,
 testing, and
 bug fixing is done.
Components of Software:
There are three components of the software:
These are:
Program, Documentation, and Operating Procedures.
1. Program –
A computer program is a list of instructions that tell a computer
what to do.
2. Documentation –
Source information about the product contained in design
documents, detailed code comments, etc.
3. Operating Procedures –
Set of step-by-step instructions compiled by an organization to help
workers carry out complex routine operations.
4. Code: the instructions that a computer executes in order to perform
a specific task or set of tasks.
5. Data: the information that the software uses or manipulates.
6. User interface: the means by which the user interacts with the
software, such as buttons, menus, and text fields.
7. Libraries: pre-written code that can be reused by the software to
perform common tasks.
8. Documentation: information that explains how to use and maintain
the software, such as user manuals and technical guides.
9. Test cases: a set of inputs, execution conditions, and expected
outputs that are used to test the software for correctness and
reliability.
10. Configuration files: files that contain settings and parameters
that are used to configure the software to run in a specific
environment.
11. Build and deployment scripts: scripts or tools that are used to
build, package, and deploy the software to different environments.
12. Metadata: information about the software, such as version
numbers, authors, and copyright information.
All these components are important for software development, testing and
deployment.
There are four basic key process activities:

1. Software Specifications –
In this process, detailed description of a software system to be
developed with its functional and non-functional requirements.

2. Software Development –
In this process, designing, programming, documenting, testing, and
bug fixing is done.

3. Software Validation –
In this process, evaluation software product is done to ensure that
the software meets the business requirements as well as the end
users needs.

4. Software Evolution –
It is a process of developing software initially, then timely updating
it for various reasons.

Software Crisis:
1. Size and Cost –
Day to day growing complexity and expectation out of software.
Software is more expensive and more complex.
2. Quality –
Software products must have good quality.
3. Delayed Delivery –
Software takes longer than the estimated time to develop, which in
turn leads to cost shooting up.
4. The term “software crisis” refers to a set of problems that were
faced by the software industry in the 1960s and 1970s, such as:
5. High costs and long development times: software projects were
taking much longer and costing much more than expected.
6. Low quality: software was often delivered late, with bugs and other
defects that made it difficult to use.
7. Lack of standardization: there were no established best practices
or standards for software development, making it difficult to
compare and improve different approaches.
8. Lack of tools and methodologies: there were few tools and
methodologies available to help with software development, making
it a difficult and time-consuming process.
9. These problems led to a growing realization that the traditional
approaches to software development were not effective and
needed to be improved. This led to the development of new
software development methodologies, such as the Waterfall and
Agile methodologies, as well as the creation of new tools and
technologies to support software development.
However, even today, software crisis could be seen in some form or the
other, like for example software projects going over budget, schedule and
not meeting the requirement.

Software Process Model:


A software process model is an abstraction of the actual process, which is
being described. It can also be defined as a simplified representation of a
software process. Each model represents a process from a specific
perspective. Basic software process models on which different type of
software process models can be implemented:
1. A workflow Model –
It is the sequential series of tasks and decisions that make up a
business process.

2. The Waterfall Model –


It is a sequential design process in which progress is seen as
flowing steadily downwards. Phases in waterfall model:
 (i) Requirements Specification
 (ii) Software Design
 (iii) Implementation
 (iv) Testing

3. Dataflow Model –
It is diagrammatic representation of the flow and exchange of
information within a system.

4. Evolutionary Development Model –


Following activities are considered in this method:
 (i) Specification
 (ii) Development
 (iii) Validation

5. Role / Action Model –


Roles of the people involved in the software process and the
activities.

Advantages or Disadvantages:

There are several advantages and disadvantages to different software


development methodologies, such as:
Waterfall:
Advantages:
1. Clear and defined phases of development make it easy to plan and
manage the project.
2. It is well-suited for projects with well-defined and unchanging
requirements.
Disadvantages:
 Changes made to the requirements during the development phase
can be costly and time-consuming.
 It can be difficult to know how long each phase will take, making it
difficult to estimate the overall time and cost of the project.
 It does not have much room for iteration and feedback throughout
the development process.

Agile:
Advantages:

1. Flexible and adaptable to changing requirements.


2. Emphasizes rapid prototyping and continuous delivery, which can
help to identify and fix problems early on.
3. Encourages collaboration and communication between
development teams and stakeholders.

Disadvantages:

1. It may be difficult to plan and manage a project using Agile


methodologies, as requirements and deliverables are not always
well-defined in advance.
2. It can be difficult to estimate the overall time and cost of a project,
as the process is iterative and changes are made throughout the
development.

Scrum:
Advantages:

1. Encourages teamwork and collaboration.


2. Provides a flexible and adaptive framework for planning and
managing software development projects.
3. Helps to identify and fix problems early on by using frequent testing
and inspection.

Disadvantages:

1. A lack of understanding of Scrum methodologies can lead to


confusion and inefficiency.
2. It can be difficult to estimate the overall time and cost of a project,
as the process is iterative and changes are made throughout the
development.
DevOps:
Advantages:

1. Improves collaboration and communication between development


and operations teams.
2. Automates software delivery process, making it faster and more
efficient.
3. Enables faster recovery and response time in case of issues.

Disadvantages:

1. Requires a significant investment in tools and technologies.


2. Can be difficult to implement in organizations with existing silos and
lack of culture of collaboration.
3. Need to have a skilled workforce to effectively implement the
devops practices.
4. Ultimately, the choice of which methodology to use depends on the
specific project and organization, as well as the goals and
requirements of the project.

Component Based Software


Engineering
Component-Based Software Engineering (CBSE) is a process that focuses on the
design and development of computer-based systems with the use of reusable software
components.
It not only identifies candidate components but also qualifies each component’s
interface, adapts components to remove architectural mismatches, assembles
components into a selected architectural style, and updates components as
requirements for the system change.
The process model for component-based software engineering occurs concurrently
with component-based development.
Component-based development:
Component-based development (CBD) is a CBSE activity that occurs in parallel with
domain engineering. Using analysis and architectural design methods, the software
team refines an architectural style that is appropriate for the analysis model created for
the application to be built.
CBSE Framework Activities:
Framework activities of Component-Based Software Engineering are as follows:
1. Component Qualification: This activity ensures that the system
architecture defines the requirements of the components for becoming a
reusable components. Reusable components are generally identified through
the traits in their interfaces. It means “the services that are given and the
means by which customers or consumers access these services ” are defined
as a part of the component interface.
2. Component Adaptation: This activity ensures that the architecture defines
the design conditions for all components and identifies their modes of
connection. In some cases, existing reusable components may not be
allowed to get used due to the architecture’s design rules and conditions.
These components should adapt and meet the requirements of the
architecture or be refused and replaced by other, more suitable components.
3. Component Composition: This activity ensures that the Architectural style
of the system integrates the software components and forms a working
system. By identifying the connection and coordination mechanisms of the
system, the architecture describes the composition of the end product.
4. Component Update: This activity ensures the updation of reusable
components. Sometimes, updates are complicated due to the inclusion of
third-party (the organization that developed the reusable component may be
outside the immediate control of the software engineering organization
accessing the component currently).

You might also like