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

Unit -1 Ntroduction to Software Engineering1

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

Unit -1 Ntroduction to Software Engineering1

Good
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 24

SNS COLLEGE OF ENGINEERING

Kurumbapalayam (Po), Coimbatore —641 107


AN AUTONOMOUS INSTITUTION
Accredited by NAAC—UGC with ‘A’ Grade
Approved by AICTE, New Delhi & Affiliated to Anna University, Chennai

Department of Computer Science and Design


III SEMESTER

23CST203 AGILE SOFTWARE ENGINEERING

UNIT – 1 INTRODUCTION TO SOFTWARE ENGINEERING

NATURE OF SOFTWARE:
Software is a set of instructions, data or programs used to operate computers and execute specific
tasks. Software is a generic term used to refer to applications, scripts and programs that run on a
device.
The software is an instruction or computer program that when executed provides desired
features, function, and performance. A data structure that enables the program to adequately
manipulate information and documents that describe the operation and use of the program.
Characteristics of software:
There is some characteristic of software which is given below:
1. Reliability: The ability of the software to consistently perform its intended tasks without
unexpected failures or errors.
2. Usability: How easily and effectively users can interact with and navigate through the
software.
3. Efficiency: The optimal utilization of system resources to perform tasks on time.
4. Maintainability: How easily and cost-effectively software can be modified, updated, or
extended.
5. Portability: The ability of software to run on different platforms or environments
without requiring significant modifications.
Changing Nature of Software:
Nowadays, seven broad categories of computer software present continuing challenges for
software engineers. Which is given below:
2. System Software: System software is a collection of programs that are written to service
other programs. Some system software processes complex but determinate, information
structures.
3. Application Software: Application software is defined as programs that solve a specific
business need. Application in this area processes business or technical data in a way that
facilitates business operation or management technical decision-making. In addition to
conventional data processing applications, application software is used to control
business functions in real-time.
4. Engineering and Scientific Software: This software is used to facilitate the engineering
function and task. however modern applications within the engineering and scientific area
are moving away from conventional numerical algorithms. Computer-aided design,
system simulation, and other interactive applications have begun to take a real-time and
even system software characteristic.
4. Embedded Software: Embedded software resides within the system or product and is
used to implement and control features and functions for the end-user and for the system
itself. Embedded software can perform limited and esoteric functions or provide
significant function and control capability.
5. Product-line Software: Designed to provide a specific capability for use by many
customers, product-line software can focus on the limited and esoteric marketplace or
address the mass consumer market.
6. Web Application: It is a client-server computer program that the client runs on the web
browser. In their simplest form, Web apps can be little more than a set of linked hypertext
files that present information using text and limited graphics. However, as e-commerce
and B2B applications grow in importance. Web apps are evolving into a sophisticated
computing environment that not only provides a standalone feature, computing function,
and content to the end user.
7. Artificial Intelligence Software: Artificial intelligence software makes use of a
nonnumerical algorithm to solve a complex problem that is not amenable to computation
or straightforward analysis. Applications within this area include robotics, expert
systems, pattern recognition, artificial neural networks, theorem proving, and game
playing.
SOFTWARE ENGINEERING:
Software Engineering is the process of designing, developing, testing, and maintaining
software. It is a systematic and disciplined approach to software development that aims to create
high-quality, reliable, and maintainable software.
1. Software engineering includes a variety of techniques, tools, and methodologies,
including requirements analysis, design, testing, and maintenance.
2. It is a rapidly evolving field, and new tools and technologies are constantly being
developed to improve the software development process.
3. By following the principles of software engineering and using the appropriate tools and
methodologies, software developers can create high-quality, reliable, and maintainable
software that meets the needs of its users.
4. Software Engineering is mainly used for large projects based on software systems rather
than single programs or applications.
5. The main goal of Software Engineering is to develop software applications for improving
quality, budget, and time efficiency.
6. Software Engineering ensures that the software that has to be built should be consistent,
correct, also on budget, on time, and within the required requirements.

PRINCIPLES OF SOFTWARE ENGINEERING:


1. Modularity: Breaking the software into smaller, reusable components that can be
developed and tested independently.
2. Abstraction: Hiding the implementation details of a component and exposing only the
necessary functionality to other parts of the software.
3. Encapsulation: Wrapping up the data and functions of an object into a single unit, and
protecting the internal state of an object from external modifications.
4. Reusability: Creating components that can be used in multiple projects, which can save
time and resources.
5. Maintenance: Regularly updating and improving the software to fix bugs, add new
features, and address security vulnerabilities.
6. Testing: Verifying that the software meets its requirements and is free of bugs.
7. Design Patterns: Solving recurring problems in software design by providing templates
for solving them.
8. Agile methodologies: Using iterative and incremental development processes that focus
on customer satisfaction, rapid delivery, and flexibility.
9. Continuous Integration & Deployment: Continuously integrating the code changes and
deploying them into the production environment.
ADVANTAGES OF SOFTWARE ENGINEERING:
1. Improved Quality: By following established software engineering principles and
techniques, the software can be developed with fewer bugs and higher reliability.
2. Increased Productivity: Using modern tools and methodologies can streamline the
development process, allowing developers to be more productive and complete projects
faster.
3. Better Maintainability: Software that is designed and developed using sound software
engineering practices is easier to maintain and update over time.
4. Reduced Costs: By identifying and addressing potential problems early in the
development process, software engineering can help to reduce the cost of fixing bugs and
adding new features later on.
5. Increased Customer Satisfaction: By involving customers in the development process
and developing software that meets their needs, software engineering can help to increase
customer satisfaction.
6. Better Team Collaboration: By using Agile methodologies and continuous integration,
software engineering allows for better collaboration among development teams.
7. Better Scalability: By designing software with scalability in mind, software engineering
can help to ensure that software can handle an increasing number of users and
transactions.
8. Better Security: By following the Software Development Life Cycle (SDLC) and
performing security testing, software engineering can help to prevent security breaches
and protect sensitive data.
DISADVANTAGES OF SOFTWARE ENGINEERING:
1. High upfront costs: Implementing a systematic and disciplined approach to software
development can be resource-intensive and require a significant investment in tools and
training.
2. Limited flexibility: Following established software engineering principles and
methodologies can be rigid and may limit the ability to quickly adapt to changing
requirements.
3. Bureaucratic: Software Engineering can create an environment that is bureaucratic, with
a lot of processes and paperwork, which may slow down the development process.
4. Complexity: With the increase in the number of tools and methodologies, software
engineering can be complex and difficult to navigate.
5. Limited creativity: The focus on structure and process can stifle creativity and
innovation among developers.
6. High learning curve: The development process can be complex, and it requires a lot of
learning and training, which can be challenging for new developers.
7. High dependence on tools: Software engineering heavily depends on the tools, and if the
tools are not properly configured or are not compatible with the software, it can cause
issues.
8. High maintenance: The software engineering process requires regular maintenance to
ensure that the software is running efficiently, which can be costly and time-consuming.

SOFTWARE ENGINEERING PRACTICES:


Software engineering practices are a set of approaches to software development.
 To overcome the software development problems.
 Understand the problem (communication and analysis)
 Plan the solution (Modeling and software design)
 Carry out the plan (code generation)
 Examine the result for accuracy (testing and quality assurance)

SOFTWARE PROCESS MODELS:

Software Processes is a coherent set of activities for specifying, designing, implementing and testing
software systems. A software process model is an abstract representation of a process that presents a
description of a process from some particular perspective.

TYPES OF SOFTWARE PROCESS MODEL:

One of the basic notions of the software development process is SDLC models which stands for
Software Development Life Cycle models. There are many development life cycle models that have
been developed in order to achieve different required objectives. The models specify the various stages
of the process and the order in which they are carried out. The most used, popular and important SDLC
models are given below:

 Waterfall model
 V model
 Incremental model
 RAD model
 Agile model
 Iterative model
 Spiral model
 Prototype model

Waterfall Model:
The waterfall model is a breakdown of project activities into linear sequential phases, where each phase
depends on the deliverable of the previous one and corresponds to a specialization of tasks. The
approach is typical for certain areas of engineering design.

V Model:
The V-model represents a development process that may be considered an extension of the waterfall
model and is an example of the more general V-model. Instead of moving down in a linear way, the
process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model
demonstrates the relationships between each phase of the development life cycle and its associated
phase of testing.
Incremental model:
The incremental build model is a method of software development where the model is designed,
implemented and tested incrementally until the product is finished. It involves both development and
maintenance. The product is defined as finished when it satisfies all of its requirements. Each iteration
passes through the requirements, design, coding and testing phases.

Iterative Model:
The iterative approach begins by specifying and implementing just part of the software, which can then
be reviewed and prioritized in order to identify further requirements. This iterative process is then
repeated by delivering a new version of the software for each iteration.

RAD Model:
Rapid application development (RAD) is often referred as the adaptive software development. RAD is
an incremental prototyping approach to software development that end users can produce better
feedback when examining a live system, as opposed to working strictly with documentation. It puts less
emphasis on planning and more emphasis on an adaptive process.
Spiral Model:

A spiral model looks like a spiral with many loops. The exact number of loops of the spiral is unknown
and can vary from project to project. This model supports risk handling, and the project is delivered in
loops. Each loop of the spiral is called a Phase of the software development process.

The initial phase of the spiral model in the early stages of Waterfall Life Cycle that is needed to
develop a software product. The exact number of phases needed to develop the product can be varied
by the project manager depending upon the project risks. As the project manager dynamically
determines the number of phases, so the project manager has an important role to develop a product
using a spiral model.

Agile Model:
The Agile movement proposes alternatives to traditional project management. Agile approaches are
typically used in software development to help businesses respond to unpredictability which refer to a
group of software development methodologies based on iterative development, where requirements and
solutions evolve through collaboration between self-organizing cross-functional teams.
GENERIC PROCESS MODEL:

A process was defined as a collection of work activities, actions, and tasks that are performed when some
work product is to be created. Each of these activities, actions, and tasks reside within a framework or
model that defines their relationship with the process and with one another.
A generic process framework for software engineering defines five framework activities:

 Communication
 Planning
 Modeling
 Construction
 Deployment
Communication:

In this step, we communicate with the clients and end-users.

 We discuss the requirements of the project with the users.


 The users give suggestions on the project. If any changes are difficult to implement, we work on
alternative ideas.

Planning:

In this step, we plan the steps for project development. After completing the final discussion, we report on
the project.

 Planning plays a key role in the software development process.


 We discuss the risks involved in the project.

Modelling:

In this step, we create a model to understand the project in the real world. We showcase the model to all
the developers. If changes are required, we implement them in this step.

 We develop a practical model to get a better understanding of the project.

Construction:

In this step, we follow a procedure to develop the final product.

 If any code is required for the project development, we implement it in this phase.
 We also test the project in this phase.

Deployment:

In this phase, we submit the project to the clients for their feedback and add any missing requirements.

 We get the client feedback.


 Depending on the feedback form, we make the appropriate changes.

These five framework activities are used for all software developments independent of the application
domain, the size of the project, complexity or the efforts, etc. For most of the software projects, these
framework activities are applied iteratively where each of the iterations produces a subset of the overall
functionality and features of the software

There are Types of Process flow available such as,

 Linear process flow: It executes each activity listed above in sequence form.
 Iterative Process flow: This flow repeats one or more activities that are listed above before
starting the next activity.

 Evolutionary Process flow: This flow carries out the activities listed above in a circular manner.
Each circle leads to the more complete version of the software

 Parallel process flow: This flow executes the activities listed above in parallel with each other
i.e. modeling for one aspect of the software in parallel to another aspect of the software.
Generic Process framework provides a list of generic activities to most of the software models. But each
model will treat its activities in a different manner according to the project suitability and teams.

PRESCRIPTIVE PROCESS MODEL:

The name 'prescriptive' is given because the model prescribes a set of activities, actions, tasks, quality
assurance and change the mechanism for every project.

There are three types of prescriptive process models. They are:

1. The Waterfall Model


2. Incremental Process model
3. RAD model

The Waterfall Model:

 The waterfall model is also called as 'Linear sequential model' or 'Classic life cycle model'.
 In this model, each phase is fully completed before the beginning of the next phase.
 This model is used for the small projects.
 In this model, feedback is taken after each phase to ensure that the project is on the right path.
 Testing part starts only after the development is complete.

Advantages of waterfall model:


 The waterfall model is simple and easy to understand, implement, and use.
 All the requirements are known at the beginning of the project, hence it is easy to manage.
 It avoids overlapping of phases because each phase is completed at once.
 This model works for small projects because the requirements are understood very well.
 This model is preferred for those projects where the quality is more important as compared to the
cost of the project.

Disadvantages of the waterfall model:

 This model is not good for complex and object oriented projects.
 It is a poor model for long projects.
 The problems with this model are uncovered, until the software testing.
 The amount of risk is high.

Incremental Process model:

 The incremental model combines the elements of waterfall model and they are applied in an iterative
fashion.
 The first increment in this model is generally a core product.
 Each increment builds the product and submits it to the customer for any suggested modifications.
 The next increment implements on the customer's suggestions and add additional requirements in the
previous increment.
 This process is repeated until the product is finished.

For example, the word-processing software is developed using the incremental model.

Advantages of incremental model :

 This model is flexible because the cost of development is low and initial product delivery is faster.
 It is easier to test and debug during the smaller iteration.
 The working software generates quickly and early during the software life cycle.
 The customers can respond to its functionalities after every increment.

Disadvantages of the incremental model :


 The cost of the final product may cross the cost estimated initially.
 This model requires a very clear and complete planning.
 The planning of design is required before the whole system is broken into small increments.
 The demands of customer for the additional functionalities after every increment causes problem
during the system architecture.

RAD model:

 RAD is a Rapid Application Development model.


 Using the RAD model, software product is developed in a short period of time.
 The initial activity starts with the communication between customer and developer.
 Planning depends upon the initial requirements and then the requirements are divided into groups.
 Planning is more important to work together on different modules.

The RAD model consist of following phases:

1. Business Modeling
 Business modeling consist of the flow of information between various functions in the project.
 For example what type of information is produced by every function and which are the functions to
handle that information.
 A complete business analysis should be performed to get the essential business information.
2. Data modeling
 The information in the business modeling phase is refined into the set of objects and it is essential for
the business.
 The attributes of each object are identified and define the relationship between objects.
3. Process modeling
 The data objects defined in the data modeling phase are changed to fulfil the information flow to
implement the business model.
 The process description is created for adding, modifying, deleting or retrieving a data object.
4. Application generation
 In the application generation phase, the actual system is built.
 To construct the software the automated tools are used.
5. Testing and turnover
 The prototypes are independently tested after each iteration so that the overall testing time is
reduced.
 The data flow and the interfaces between all the components are are fully tested. Hence, most of the
programming components are already tested.
PERSONAL SOFTWARE PROCESS (PSP) AND TEAM SOFTWARE PROCESS (TSP):

Software is the set of instructions in the form of programs to govern the computer system and process
the hardware components. To produce a software product a set of activities is used. This set is called
a software process.

PERSONAL SOFTWARE PROCESS (PSP):

The personal software process (PSP) is focused on individuals to improve their performance. The PSP
is an individual process, and it is a bottom-up approach to software process improvement. The PSP is a
prescriptive process, it is a more mature methodology with a well-defined set of tools and techniques.

Key Features of Personal Software Process (PSP)

Following are the key features of the Personal Software Process (PSP):
 Process-focused: PSP is a process-focused methodology that emphasizes the importance of
following a disciplined approach to software development.
 Personalized: PSP is personalized to an individual’s skill level, experience, and work habits. It
recognizes that individuals have different strengths and weaknesses, and tailors the process to meet
their specific needs.

 Metrics-driven: PSP is metrics-driven, meaning that it emphasizes the collection and analysis of
data to measure progress and identify areas for improvement.

 Incremental: PSP is incremental, meaning that it breaks down the development process into
smaller, more manageable pieces that can be completed in a step-by-step fashion.
 Quality-focused: PSP is quality-focused, meaning that it emphasizes the importance of producing
high-quality software that meets user requirements and is free of defects.

Advantages of Personal Software Process (PSP):

Advantages of Personal Software Process (PSP) are:


 Improved productivity: PSP provides a structured approach to software development that can help
individuals improve their productivity by breaking down the development process into smaller,
more manageable steps.

 Improved quality: PSP emphasizes the importance of producing high-quality software that meets
user requirements and is free of defects. By collecting and analyzing data throughout the
development process, individuals can identify and eliminate sources of errors and improve the
quality of their work.

 Personalized approach: PSP is tailored to an individual’s skill level, experience, and work habits,
which can help individuals work more efficiently and effectively.

 Improved estimation: PSP emphasizes the importance of accurate estimation, which can help
individuals plan and execute projects more effectively.

 Continuous improvement: PSP promotes a culture of continuous improvement, which can help
individuals learn from past experiences and apply that knowledge to future projects.

Disadvantages of Personal Software Process (PSP):

Following are the Disadvantages of Personal Software Process (PSP):


 Time-consuming: PSP can be time-consuming, particularly when individuals are first learning the
methodology and need to collect and analyze data throughout the development process.

 Complex: PSP can be complex, particularly for individuals who are not familiar with software
engineering concepts or who have limited experience in software development.

 Heavy documentation: PSP requires a significant amount of documentation throughout the


development process, which can be burdensome for some individuals.

 Limited to individual use: PSP is designed for individual use, which means that it may not be
suitable for team-based software development projects.

TEAM SOFTWARE PROCESS:


Team Software Process (TSP) is a team-based process. TSP focuses on team productivity. Basically, it
is a top-down approach. The TSP is an adaptive process, and process management methodology.

Key Features of Team Software Process (TSP):

The key features of the Team Software Process (TSP) are:


 Team-focused: TSP is team-focused, meaning that it emphasizes the importance of collaboration
and communication among team members throughout the software development process.

 Process-driven: TSP is process-driven, meaning that it provides a structured approach to software


development that emphasizes the importance of following a disciplined process.

 Metrics-driven: TSP is metrics-driven, meaning that it emphasizes the collection and analysis of
data to measure progress, identify areas for improvement, and make data-driven decisions.

 Incremental: TSP is incremental, meaning that it breaks down the development process into
smaller, more manageable pieces that can be completed in a step-by-step fashion.

 Quality-focused: TSP is quality-focused, meaning that it emphasizes the importance of producing


high-quality software that meets user requirements and is free of defects.

 Feedback-oriented: TSP is feedback-oriented, meaning that it emphasizes the importance of


receiving feedback from peers, mentors, and other stakeholders to identify areas for improvement.

Advantages of Team Software Process (TSP):

Following are the key advantage of the Team Software Process (TSP):
 Improved productivity: TSP provides a structured approach to software development that can help
teams improve their productivity by breaking down the development process into smaller, more
manageable steps.

 Improved quality: TSP emphasizes the importance of producing high-quality software that meets
user requirements and is free of defects. By collecting and analyzing data throughout the
development process, teams can identify and eliminate sources of errors and improve the quality of
their work.

 Team collaboration: TSP promotes team collaboration, which can help teams work more efficiently
and effectively by leveraging the skills and expertise of all team members.

 Improved estimation: TSP emphasizes the importance of accurate estimation, which can help
teams plan and execute projects more effectively.

 Continuous improvement: TSP promotes a culture of continuous improvement, which can help
teams learn from past experiences and apply that knowledge to future projects.

Disadvantages of Team Software Process (TSP):

Following are the disadvantage of the Team Software Process (TSP):


 Time-consuming: TSP can be time-consuming, particularly when teams are first learning the
methodology and need to collect and analyze data throughout the development process.

 Complex: TSP can be complex, particularly for teams that are not familiar with software
engineering concepts or who have limited experience in software development.
 Heavy documentation: TSP requires a significant amount of documentation throughout the
development process, which can be burdensome for some teams.

 Requires discipline: TSP requires teams to follow a disciplined approach to software development,
which can be challenging for some teams who prefer a more flexible approach.

 Cost: TSP can be costly to implement, particularly if teams need to invest in training or software
tools to support the methodology.

Difference between Personal Software Process (PSP) and Team Software Process (TSP):

Parameters PSP TSP

Definition PSP is a project management


TSP is a project management process that
process that defines how to manage
defines how to manage a project in a virtual
a project in a face-to-face
environment.
environment.

Formality and PSP is more formal and structured


Structure TSP is less formal and structured than PSP.
than TSP.

Development PSP is based on the waterfall


Model TSP is based on the agile model.
model.

Project
Suitability PSP is more suited for large projects. TSP is more suited for small projects.

Project Phases PSP projects are typically TSP projects are typically completed in
completed in one phase. multiple phases.

Language Level PSP is a high-level language and it is TSP is a low-level language and it is
easy to learn and use. difficult to learn and use.

Language PSP is a structured language and it is TSP is an unstructured language and it is


Structure easy to read and write. difficult to read and write.

Program TSP programs are written in assembly


PSP programs are written in English
Language language and they are difficult to
and they are easy to understand.
understand.

Portability PSP is a portable language and it can TSP is a platform-dependent language and it
Parameters PSP TSP

be run on any platform. can be run only on specific platforms.

Compilation PSP is an interpreted language and it TSP is a compiled language and it needs to
does not need to be compiled. be compiled before it can be run.

Cost PSP is a free language and it can be TSP is a commercial language and it is not
downloaded from the internet. available for free.

Source PSP is an open-source language and TSP is a closed-source language and it is not
Availability it is available to everyone. available to everyone.

Process Model TSP, on the other hand, is an iterative and


PSP is a linear process model that is incremental process model that allows for
completed in a sequential manner. feedback and changes at each stage of the
process.

PROCESS TECHNOLOGY:

Process technology refers to the use of machines, equipment, and devices for operations for creating and
delivering products/services. In simple words, process technology is the application of equipment and
machinery to any operations process. Process technologies add value to the creation of any product or
service. Here, you should note that process technology is different from product or service technology.

Types of Process Technology:

Process technology can be classified into three types:

 Material Processing Technologies


 Information-processing Technology
 Customer Processing Technology

Material Processing Technologies:


The basic aim of processing (cutting, forming, joining, etc.) materials is to make products more suitable
for customers’ needs. Thus, technologies, which are used for processing materials, are called material
processing technologies. The following points explain such technologies:

 Computer Numerically Controlled (CNC) Machine Tools: These tools perform metal-cutting and
forming operations, which are controlled by a computer.
 Robots: These are ‘automatic position-controlled re programmable multi-function manipulators’ that
perform several tasks related to the handling of materials, parts, tools, or devices through variable
programmed motions.
 Automated Guided Vehicles (AGVs): These are small, independently powered vehicles, used to
move materials to and from value-adding operations.
 Flexible Manufacturing Systems (FMSs): These are computer-controlled semi-independent
workstations, connected by automated material handling and machine loading.
 Computer-integrated Manufacturing (CIM): It is a manufacturing approach that uses computers to
monitor and control the entire production process. It integrates different individual processes to
exchange information with each other and initiate actions.

Information-processing Technology:
It includes devices, used to collect, manipulate, store, or distribute information. The several IT methods,
which are used for this purpose involve:

 Local Area Network (LAN) helps in interconnecting computers within a limited area such as a
residence, school, laboratory, office, etc.
 The Internet helps in accessing the World Wide Web (www), which is the distributed
hypermedia/hypertext system.

Customer Processing Technology:

The technology is used to establish an interface between customers, staff, and the technology itself. It
either provides the immediate interface between an organization and its customers, such as in the case of a
bank’s Automated Teller Machine (ATM), or facilitates human interaction with customers.

REQUIREMENTS ENGINEERING PROCESS:

Requirements engineering (RE) refers to the process of defining, documenting, and maintaining
requirements in the engineering design process. Requirement engineering provides the appropriate
mechanism to understand what the customer desires, analyzing the need, and assessing feasibility,
negotiating a reasonable solution, specifying the solution clearly, validating the specifications and
managing the requirements as they are transformed into a working system. Thus, requirement engineering
is the disciplined application of proven principles, methods, tools, and notation to describe a proposed
system's intended behavior and its associated constraints.

Requirement Engineering Process


It is a four-step process, which includes -

1. Feasibility Study
2. Requirement Elicitation and Analysis
3. Software Requirement Specification
4. Software Requirement Validation
5. Software Requirement Management
1. Feasibility Study:
The objective behind the feasibility study is to create the reasons for developing the software that is
acceptable to users, flexible to change and conformable to established standards.

Types of Feasibility:

1. Technical Feasibility - Technical feasibility evaluates the current technologies, which are needed
to accomplish customer requirements within the time and budget.
2. Operational Feasibility - Operational feasibility assesses the range in which the required
software performs a series of levels to solve business problems and customer requirements.
3. Economic Feasibility - Economic feasibility decides whether the necessary software can
generate financial profits for an organization.

2. Requirement Elicitation and Analysis:


This is also known as the gathering of requirements. Here, requirements are identified with the help of
customers and existing systems processes, if available.

Analysis of requirements starts with requirement elicitation. The requirements are analyzed to identify
inconsistencies, defects, omission, etc. We describe requirements in terms of relationships and also
resolve conflicts if any.

Problems of Elicitation and Analysis

o Getting all, and only, the right people involved.


o Stakeholders often don't know what they want
o Stakeholders express requirements in their terms.
o Stakeholders may have conflicting requirements.
o Requirement change during the analysis process.
o Organizational and political factors may influence system requirements.
3. Software Requirement Specification:
Software requirement specification is a kind of document which is created by a software analyst after the
requirements collected from the various sources - the requirement received by the customer written in
ordinary language. It is the job of the analyst to write the requirement in technical language so that they
can be understood and beneficial by the development team.

The models used at this stage include ER diagrams, data flow diagrams (DFDs), function decomposition
diagrams (FDDs), data dictionaries, etc.

o Data Flow Diagrams: Data Flow Diagrams (DFDs) are used widely for modeling the
requirements. DFD shows the flow of data through a system. The system may be a company, an
organization, a set of procedures, a computer hardware system, a software system, or any
combination of the preceding. The DFD is also known as a data flow graph or bubble chart.
o Data Dictionaries: Data Dictionaries are simply repositories to store information about all data
items defined in DFDs. At the requirements stage, the data dictionary should at least define
customer data items, to ensure that the customer and developers use the same definition and
terminologies.
o Entity-Relationship Diagrams: Another tool for requirement specification is the entity-
relationship diagram, often called an "E-R diagram." It is a detailed logical representation of the
data for the organization and uses three main constructs i.e. data entities, relationships, and their
associated attributes.

4. Software Requirement Validation:


After requirement specifications developed, the requirements discussed in this document are validated.
The user might demand illegal, impossible solution or experts may misinterpret the needs. Requirements
can be the check against the following conditions -
o If they can practically implement
o If they are correct and as per the functionality and specially of software
o If there are any ambiguities
o If they are full
o If they can describe
Requirements Validation Techniques

o Requirements reviews/inspections: systematic manual analysis of the requirements.


o Prototyping: Using an executable model of the system to check requirements.
o Test-case generation: Developing tests for requirements to check test ability.
o Automated consistency analysis: checking for the consistency of structured requirements
descriptions.

Software Requirement Management:


Requirement management is the process of managing changing requirements during the requirements
engineering process and system development.

New requirements emerge during the process as business needs a change, and a better understanding of
the system is developed.

The priority of requirements from different viewpoints changes during development process.

The business and technical environment of the system changes during the development.

Software Requirements: Largely software requirements must be categorized into two categories:

1. Functional Requirements: Functional requirements define a function that a system or system


element must be qualified to perform and must be documented in different forms. The functional
requirements are describing the behavior of the system as it correlates to the system's
functionality.
2. Non-functional Requirements: This can be the necessities that specify the criteria that can be
used to decide the operation instead of specific behaviors of the system.
Non-functional requirements are divided into two main categories:
1. Execution qualities like security and usability, which are observable at run time.
2. Evolution qualities like test ability, maintainability, extensibility, and scalability that
embodied in the static structure of the software system.

SOFTWARE QUALITY CONCEPTS:


Software Quality shows how good and reliable a product is. To convey an associate degree example,
think about functionally correct software. It performs all functions as laid out in the SRS document.
But, it has an associate degree virtually unusable program. even though it should be functionally
correct, we tend not to think about it to be a high-quality product.
Another example is also that of a product that will have everything that the users need but has an
associate degree virtually incomprehensible and not maintainable code. Therefore, the normal construct
of quality as “fitness of purpose” for code merchandise isn’t satisfactory.
Factors of Software Quality:
The modern read of high-quality associates with software many quality factors like the following:
1. Portability: A software is claimed to be transportable, if it may be simply created to figure in
several package environments, in several machines, with alternative code merchandise, etc.

2. Usability: A software has smart usability if completely different classes of users (i.e. knowledgeable
and novice users) will simply invoke the functions of the merchandise.

3. Re-usability: A software has smart re-usability if completely different modules of the merchandise
will simply be reused to develop new merchandise.

4. Correctness: Software is correct if completely different needs as laid out in the SRS document are
properly enforced.

5. Maintainability: A software is reparable, if errors may be simply corrected as and once they show
up, new functions may be simply added to the merchandise, and therefore the functionalities of the
merchandise may be simply changed, etc

6. Reliability: Software is more reliable if it has fewer failures. Since software engineers do not
deliberately plan for their software to fail, reliability depends on the number and type of mistakes
they make. Designers can improve reliability by ensuring the software is easy to implement and
change, by testing it thoroughly, and also by ensuring that if failures occur, the system can handle
them or can recover easily.

7. Efficiency. The more efficient software is, the less it uses of CPU-time, memory, disk space,network
bandwidth, and other resources. This is important to customers in order to reduce their costs of
running the software, although with today’s powerful computers, CPU time, memory and disk usage
are less of a concern than in years gone by.

REVIEW METRICS:
Review metrics provide software teams insight into what’s happening in the code review process.

Review metrics include:

 Reaction time is the average number of hours it takes for a reviewer to respond to a set of PRs as a
reviewer.
 Involvement is the percentage of pull requests that a reviewer participated in.
 Influence is the ratio of follow-on commits made after a reviewer commented.
 Review coverage is the percentage of hunks commented on by a reviewer.

---------------------------------------------XXXXXXXXXXXXXXXXX---------------------------------------------

You might also like