KEMBAR78
Softwareengineering-Vikash Notes-Easy | PDF | Software Testing | Software Development Process
0% found this document useful (0 votes)
12 views45 pages

Softwareengineering-Vikash Notes-Easy

The document provides an overview of Software Engineering, focusing on the Software Development Life Cycle (SDLC) and its various models such as Waterfall, V-Model, Incremental, RAD, Iterative, Spiral, Prototype, and Agile. It discusses the importance of software processes, generic models, task sets, and the significance of software metrics in measuring software characteristics. Additionally, it highlights the challenges in improving software processes and outlines the phases involved in SDLC.
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)
12 views45 pages

Softwareengineering-Vikash Notes-Easy

The document provides an overview of Software Engineering, focusing on the Software Development Life Cycle (SDLC) and its various models such as Waterfall, V-Model, Incremental, RAD, Iterative, Spiral, Prototype, and Agile. It discusses the importance of software processes, generic models, task sets, and the significance of software metrics in measuring software characteristics. Additionally, it highlights the challenges in improving software processes and outlines the phases involved in SDLC.
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
You are on page 1/ 45

1

UGC NET

DAILY
CLASS NOTES
Computer

Software Engineering
Lecture – 1
Introduction
2

Introduction
Software Process:
It is the way in which we produce software. It is the set of instructions in the form of programs to govern the
computer system and to process the hardware components. Producing a software product the set of activities is
used. This set is called a software process.

Why is it difficult to improve software Process (SP)?


● Not enough time
● Lack of knowledge
● Wrong motivations
● Insufficient commitment

Generic Process Model: These are not definitive description of processes. They are abstractions of
the process that can be used to explain different to software development.
Generic phases of software engineering are definition, development, and support.
The phase focuses on aspects such as identifying the information to be processed, interfaces to be established,
design constraints that exist, validation criteria required.
Framework Activity: It is a Standard way to build and deploy applications. This is a foundation of
complete software engineering process. It also includes number of framework that is applicable to
all software projects.
Each activity is populated by a set of software engineering actions – it is a collection of related tasks that
produces a major software engineering work.

Process Framework:
● It establishes the foundation for a complete software process by identifying a small number of framework
activities that are applicable to all software projects, regardless of size or complexity.
● It also includes a group of umbrella activities that are apply across the entire software process.
● Every action is populated with user work tasks that accomplish some part of the work imply by the action.
3

Task Set and Process Patterns: It can be defined as the set of activities, actions, work tasks or work products
and similar related behavior followed in a software development life cycle (SDLC). It is a group of proven step
that complete a specific task and provide a consistently favorable result for a common problem.

Types of Process Patterns-


There are basically three types of process patterns which are as follows:
● Phase –It focuses on the overall flow of the problem or goal solution, and the major sections needed to
complete it. In the cake recipe example, the process pattern's major sections might be: ingredient gathering,
batter preparation, baking, cool down, and icing. A phase process pattern would be focused on enumerating
these sections and ensuring that each is addressed correctly.
● Stage –It focuses on the actions or activities needed to realize each phase. Again, consider the cake recipe
example mentioned above. It might address the ingredient phase identified above and focus on the pantry
retrieval stage and refrigerator retrieval stage.
● Task –It focuses on an individual action or activity within each stage. Again in cake example, this would be
equivalent to retrieving eggs as part of the refrigerator retrieval stage.

Examples:
● Customer communication (a process activity).
● Analysis (an action).
● Requirements gathering (a process task).
● Reviewing a work product (a process task).

Task set –It is a set of software engineering work tasks, milestones, and deliverables that must be accomplished
to complete a particular project. These are designed to accommodate different types of projects.
They are designed to accommodate different types of projects. It is difficult to develop taxonomy of software
project types, many software organizations encounter the following projects
1. Concept development projects that are initiated to explore some new business concept or application of few
new technologies.
2. New software development projects that are undertaken as a cause of a specific customer request.
4

3. Application enhancement projects that occur when existing software undergoes major modifications to
function, performance, or interface that are observed by the end-user.
4. Application maintenance projects that correct, adapt, or extend existing software in somehow that may not
be immediately obvious to the end-user.
5. These projects that are undertaken with the intent of rebuilding an existing system in whole or in part.

Software Development Life Cycle (SDLC):


It is a process used by the software industry to design, develop and test high quality software’s. It aims to produce
high-quality software that meets or exceeds customer expectations, reaches completion within times and cost
estimates.
● SDLC is also called as Software Development Process.
● It is a framework defining tasks performed at each step in the software development process.

Stage 1: Planning and Requirement Analysis-


Requirement analysis is most important and fundamental stage in SDLC. It is performed by the senior members
of the team with inputs from the customer, market surveys, the sales department, and domain experts in the
industry. This information is then used to plan basic project approach and to conduct product feasibility study in
the economical, technical and operational areas.
Planning for the quality assurance requirements and identification of the risks associated with the project is also
done in this stage. The outcome of the technical feasibility study is to define the various technical approaches that
can be followed to implement the project successfully with the minimum risks.

Stage 2: Defining Requirements-


Once the requirement analysis is done the next step is to clearly define and document the product requirements
and get them approved from the market analysts or the customer. This is done through a Software Requirement
Specification (SRS) document which consists of all the product requirements to be designed and developed
during the project life cycle.

Stage 3: Designing the Product Architecture-


5

SRS is the reference for product architects to come out with best architecture for the product to be developed.
Based on requirements specified in SRS, usually more than one design approach for the product architecture is
proposed and documented in a Design Document Specification (DDS).
This DDS is reviewed by all the important stakeholders and based on various parameters as risk assessment,
design modularity, product robustness, budget and time constraints, the best design approach is selected for the
product.
A design approach clearly defines all the architectural modules of the product along with its communication and
data flow representation with the external and third party modules (if any). The internal design of all the modules
of the proposed architecture should be clearly defined with the minutest of the details in DDS.

Stage 4: Building or Developing the Product-


In this stage of SDLC the actual development starts and the product is built. Programming code is generated as
per DDS during this stage. If the design is performed in a organized and detailed manner, code generation can be
accomplished without much hassle.
Developers must follow the coding guidelines defined by their organization and programming tools like
interpreters, compilers, debuggers, etc. are used to generate the code. Different high level programming languages
such as C, C++, Java, Pascal, and PHP are used for coding.

Stage 5: Testing the Product-


This stage i.e. testing stage is usually a subset of all the stages as in the modern SDLC models, the testing
activities are mostly involved in all stages of SDLC. However, this stage refers to the test only stage of the
product where product defects are reported, tracked, fixed and retested, until product reaches the quality standards
defined in the SRS.

Stage 6: Deployment in the Market and Maintenance-


Once the product is tested in the testing stage and ready to be deployed it is released formally in the appropriate
market. Sometimes product deployment happens in stages as per business strategy of that organization. The
product may first be released in the limited segment and tested in the real business environment (UAT- User
acceptance testing).
Based on feedback, the product may be released as it is or with suggested enhancements in the targeting market
segment. After the product is released in market, its maintenance is done for the existing customer base.

PW Web/App: https://smart.link/7wwosivoicgd4
Library - https://smart.link/sdfez8ejd80if
1

UGC NET

DAILY
CLASS NOTES
Computer

Software Engineering
Lecture – 2
SDLC and its Models
2

SDLC and its Models


Software Development Life Cycle (SDLC):
It is a process used by the software industry to design, develop and test high quality software’s. It aims to produce
high-quality software that meets or exceeds customer expectations, reaches completion within times and cost
estimates.
● SDLC is also called as Software Development Process.
● It is a framework defining tasks performed at each step in the software development process.

SDLC MODELS:
WATERFALLMODEL: The waterfall model is a linear and sequential model, which means that a development
phase cannot begin until the previous phase is completed. We cannot overlap phases in waterfall model.
In the waterfall model, the output of one phase serves as the input for the other phase.

Phases of Waterfall model-

Once one phase of development is completed then we move to the next phase but cannot go back to the previous
phase.
3

V-MODEL: V-Model is an SDLC model; it is also called Verification and Validation Model.
It is considered a disciplined model. In V-Model, the execution of each process is sequential, that is, the new
phase starts only after the previous phase ends.
● It is based on the association of testing phase with each development phase that is in V-Model with each
development phase, its testing phase is also associated in a V-shape in other words both software
development and testing activities take place at the same time.
● So in this model, Verification Phase will be on one side, Validation Phase will be on the other side that is
both the activities run simultaneously and both of them are connected to each other in V-Shape through
Coding Phase, hence it is called V-Model.
● V-Design: In V-Design the left side represents the development activity; the right side represents the testing
activity.

Phases of V-model-

V-Model-
INCREMENTAL MODEL: In Incremental Model, the software development process is divided into several
increments and the same phases are followed in each increment. In simple language, under this model a complex
project is developed in many modules or builds. For example, we collect the customer’s requirements, now
instead of making the entire software at once, we first take some requirements and based on them create a module
or function of the software and deliver it to the customer. Then we take some more requirements and based on
them add another module to that software.

Each subsequent release of a software module adds functions to the previous release. This process continues until
the final software is obtained.
4

RAD: RAD model stands for rapid application development model. The methodology of RAD model is similar to
that of incremental or waterfall model. It is used for small projects.
● If the project is large then it is divided into many small projects and these small projects are planned one by
one and completed. In this way, by completing small projects, the large project gets ready quickly.
● In RAD model, the project is completed within the given time and all the requirements are collected before
starting the project. It is very fast and there are very less errors in it.

The main objective of RAD model is to reuse code, components, tools, and processes in project development.

ITERATIVE MODEL: In Iterative model we start developing the software with some requirements and when it
is developed, it is reviewed. If there are requirements for changes in it, then we develop a new version of the
software based on those requirements. This process repeats itself many times until we get our final product.
● So, in Iterative model software is developed by following several iterations. Iteration means that we are
repeating the development process again and again. For example, we develop the first version of the software
following the SDLC process with some software requirements.
● After the first version is developed, if there is a need to change the software, then a new version is developed
with the second iteration. Now again we will see if the new version is enough, if not then we will make
changes in it with the third iteration. The iteration will be repeated until the complete software is ready.
5

● The basic concept of Iterative model is that the software should be developed through repeated cycles or what
we also call iteration and only a small part of it should be developed at a time. This model was developed to
overcome the drawbacks of the classical waterfall model.

SPIRAL MODEL:
This model has characteristics of both iterative and waterfall models. This model is used in projects which are
large and complex. This model was named spiral because if we look at its figure, it looks like a spiral, in which a
long curved line starts from the center point and makes many loops around it. The number of loops in the spiral is
not decided in advance but it depends on the size of the project and the changing requirements of the user. We
also call each loop of the spiral a phase of the software development process.
A software project goes through these loops again and again in iterations. After each iteration a more and more
complete version of the software is developed. The most special thing about this model is that risks are identified
in each phase and they are resolved through prototyping. This feature is also called Risk Handling.
6

PROTOTYPE MODEL:
Prototype model is an activity in which prototypes of software applications are created. First a prototype is
created and then the final product is manufactured based on that prototype. One problem in this model is that if
the end users are not satisfied with the prototype model, then a new prototype model is created again, due to
which this model consumes a lot of money and time.

AGILE MODEL:
Agile model is a combination of iterative and incremental models, that is, it is made up of iterative and
incremental models.
● In Agile model, focus is given to process adaptability and customer satisfaction.
● In earlier times, iterative waterfall model was used to create software. But in today’s time developers have to
face many problems. The biggest problem is that in the middle of software development, the customer asks to
make changes in the software. It takes a lot of time and money to make these changes.
The agile model was created mainly to make changes in the middle of software development.

Agile methods:
1. Crystal agile method: It is particularly beneficial for projects with a high degree of uncertainty, where
requirements tend to change frequently.
2. Dynamic system development method: It is for projects with moderate to high uncertainty where
requirements are prone to change frequently. Its clear-cut roles and responsibilities focus on delivering
working software in short time frames.
3. Feature driven development (FDD): It is implemented by utilizing a series of techniques, like creating
feature lists, conducting model evaluations, and implementing a design-by-feature method, to meet its goal.
This methodology is particularly effective in ensuring that the end product is delivered on time and that it
aligns with the requirements of the customer.
4. Scrum: It is a framework for tackling complex projects and ensuring their successful completion. It is led
by a Scrum Master, who oversees the process, and a Product Owner, who establishes the priorities.
5. Extreme programming (XP): It is used for projects that have high levels of uncertainty and require frequent
changes, as it allows for quick adaptation to new requirements and feedback.

Web Engineering: It is the application of systematic, disciplined and quantifiable approaches to development,
operation, and maintenance of Web-based applications. Both pro-active approach and a growing collection of
theoretical and research in Web application development.
7

It is basically all about designing and promoting web based systems. “The project of systematic and quantity
approaches to cost-effective analysis, design, implementation, testing, and maintenance of high-quality Web
applications.
It is concerned with the developed and use of sound scientific, engineering, and management principles and
disciplined and systematic approaches to the successful development, deployment, and maintenance of high
quality Web-based systems and applications.

Web Engineering Process:


The process is different from that of conventional software development process. Projects deliver a complex array
of inhalt and functionality to a broad population of end- users. It uses incremental development process.
It is the process that is used to create high-quality WebApps. It is not a perfect clone of software engineering, but
it borrows many of software engineering's fundamental concepts and principles, emphasizing the same technical
and management activities.

PW Web/App: https://smart.link/7wwosivoicgd4
Library - https://smart.link/sdfez8ejd80if
1

UGC NET

DAILY
CLASS NOTES
Computer

Software Engineering
Lecture – 3
Software Metrics
2

Software Metrics
Measurable or countable software characteristics are defined by software metric.
 Software metrics are important as they include measurement of software performance, planning,
productivity etc. They are similar to the four functions of management: Planning, Organization, Control,
or Improvement.

There are two types of software metrics:


1. Product Metrics: It is the measures of two important software characteristics which can be computed at
different stages of SDLC:
a) Size and complexity of software.
b) Quality and reliability of software.
Process Metrics: It is used to measure the characteristics of methods, techniques, and tools that are used
for develop software. Example fault detection.

SIZE ORIENTED METRICS (LOC):


Calculating and comparing the productivity of programmers is done by LOC.
Functional Point Analysis (FPA) is a software measurement technique used to assess the size and complexity
of a software system based on its functionality. It involves categorizing the functions of the software, such as
input screens, output reports, inquiries, files, and interfaces, and assigning weights to each based on their
complexity. By quantifying these functions and their associated weights, FPA provides an objective measure of
the software’s size and complexity.
 We can calculate FP with the help of the number of functions and types of functions used in applications.
These are classified into five types:

Types of FP Attributes or Information Domain Characteristics-


Measurement Parameters Examples

Number of External Inputs (EI) Input screen and tables

Number of External Output (EO) Output screens and reports

Number of external inquiries (EQ) Prompts and interrupts

Number of internal files (ILF) Databases and directories

Number of external interfaces (EIF) Shared databases and shared routines

Weights of 5 Functional Point Attributes-


Measurement Parameter Low Average High

Number of external inputs (EI) 3 4 6


3

Measurement Parameter Low Average High

Number of external outputs (EO) 4 5 7

Number of external inquiries (EQ) 3 4 6

Number of internal files (ILF) 7 10 15

Number of External Interfaces (EIF) 5 7 10

Example:
Weighing Factor
Measurement Parameter
Count Total_Count Simple Average Complex

Number of external inputs (EI) 32 32*4=128 3 4 6

Number of external outputs


60 60*5=300 4 5 7
(EO)

Number of external inquiries


24 24*4=96 3 4 6
(EQ)

Number of internal files (ILF) 8 8*10=80 7 10 15

Number of external interfaces


2 2*7=14 5 7 10
(EIF)

Algorithms used Count total → 618

FP = Count-Total * [0.65 + 0.01 * ⅀(fi)]


= Count * CAF
The count-total is taken from the chart.
CAF = [0.65 + 0.01 * ⅀(fi)]
1. ⅀(fi) = sum of all 14 questions and it also shows the complexity factor – CAF.
2. CAF varies from 0.65 to 1.35 and ⅀(fi) ranges from 0 to 70.
3. When ⅀(fi) = 0, CAF = 0.65 and when ⅀(fi) = 70, CAF = 0.65 + (0.01*70) = 0.65 + 0.7 = 1.35

Cyclomatic Complexity-
Cyclomatic complexity is a software metric used to measure the complexity of a program. Thomas J. McCabe
developed this metric in 1976. He considered a computer program as a set of a strongly connected directed graph
4

where nodes represent parts of the source code having no branches and arcs represents control flow transfers
during program execution. It is used to measure the number of paths.

FORMULA to Calculate Cyclomatic Complexity?


The cyclomatic number (V (G)) of graph theory is an indicator of software complexity where cyclomatic number
is equal to the number of linearly independent paths in graphical representation.
There are 3 common methods for calculating the cyclomatic complexity.
1. Cyclomatic Complexity = Total number of closed regions in the control flow graph + 1
2. Cyclomatic Complexity = E – N + 2
E = Total number of edges in the control flow graph
N = Total number of nodes in the control flow graph
3. Cyclomatic Complexity = P + 1
P = Total number of predicate nodes contained in the control flow graph
Example: consider the flow graph below.

1. Cyclomatic Complexity= Total number of closed regions in the control flow graph + 1
=2+1=3
2. Cyclomatic Complexity = E – N + 2
=8–7+2=3
3. Cyclomatic Complexity
=P+1=2+1=3

PW Web/App: https://smart.link/7wwosivoicgd4
Library - https://smart.link/sdfez8ejd80if
1

UGC NET

DAILY
CLASS NOTES
Computer

Software Engineering
Lecture – 4
Software Size Estimation
2

Software Size Estimation


Content:
Basic COCOMO Model-
 The Constructive Cost Model (COCOMO) is a software cost estimation model that helps predict the
effort, cost, and schedule required for a software development project. Developed by Barry Boehm in
1981, COCOMO uses a mathematical formula based on the size of the software project, typically
measured in lines of code (LOC).
The key parameters that define the quality of any software product, which are also an outcome of COCOMO,
are primarily effort and schedule:
1. Effort: Amount of labor that will be required to complete a task. It is measured in person-months units.
2. Schedule: This simply means the amount of time required for the completion of the job, which is, of
course, proportional to the effort put in. It is measured in the units of time such as weeks, and months.

Types of Projects in the COCOMO Model-


In the COCOMO model, software projects are categorized into three types based on their complexity, size, and
the development environment. These types are:
1. Organic: A software project is said to be an organic type if the team size required is adequately small, the
problem is well understood and has been solved in the past and also the team members have a nominal
experience regarding the problem.
2. Semi-detached: A software project is said to be a Semi-detached type if the vital characteristics such as
team size, experience, and knowledge of the various programming environments lie in between organic and
embedded. The projects classified as Semi-Detached are comparatively less familiar and difficult to
develop compared to the organic ones and require more experience better guidance and creativity. Eg:
Compilers or different Embedded Systems can be considered Semi-Detached types.
3. Embedded: A software project requiring the highest level of complexity, creativity, and experience
requirement falls under this category. Such software requires a larger team size than the other two models
and also the developers need to be sufficiently experienced and creative to develop such complex models.

BASIC COCOMO MODEL:


The Basic COCOMO model is a straightforward way to estimate the effort needed for a software development
project. It uses a simple mathematical formula to predict how many person-months of work are required based
on the size of the project, measured in thousands of lines of code (KLOC).
It estimates effort and time required for development using the following expression:
E = a*(KLOC)b PM
Tdev = c*(E)d
Person required = Effort/ Time
Where,
E is effort applied in Person-Months
KLOC is the estimated size of the software product indicate in Kilo Lines of Code
Tdev is the development time in months
a, b, c are constants determined by the category of software project given in below table.

The above formula is used for the cost estimation of the basic COCOMO model and also is used in the
subsequent models. The constant values a, b, c, and d for the Basic Model for the different categories of the
software projects are:
3

Software Projects a b c d

Organic 2.4 1.05 2.5 0.38

Semi-Detached 3.0 1.12 2.5 0.35

Embedded 3.6 1.20 2.5 0.32

1. The effort is measured in Person-Months and as evident from the formula is dependent on Kilo-Lines of
code. The development time is measured in months.
2. These formulas are used as such in the Basic Model calculations, as not much consideration of different
factors such as reliability, and expertise is taken into account, henceforth the estimate is rough.

EXAMPLE:
Suppose that a Basic project was estimated to be 400 KLOC (kilo lines of code). Calculate effort and time for
each of the three modes of development. All the constants value provided in the following table:
Solution
From the above table we take the value of constant a, b, c and d.
1. For organic mode,
 Effort = 2.4 × (400)1.05 ≈ 1295 person-month.
 dev. time = 2.5 × (1295)0.38 ≈ 38 months.
2. For semi-detach mode,
 Effort = 3 × (400)1.12 ≈ 2462 person-month.
 dev. time = 2.5 × (2462)0.35 ≈ 38 months.
3. For Embedded mode,
 effort = 3.6 × (400)1.20 ≈ 4772 person-month.
 dev. time = 2.5 × (4772)0.32 ≈ 38 months.

Project Scheduling and Staffing: It is a significant project planning activity. It comprises deciding which
functions would be taken up when. To schedule the project plan, a software project manager wants to do the
following:
1. Identify all the functions required to complete the project.
2. Break down large functions into small activities.
3. Determine the dependency among various activities.
4. Establish the most likely size for the time duration required to complete the activities.
5. Allocate resources to activities.
Staffing: It deals with the appoint personnel for the position that is identified by the organizational structure.
It involves:
• Defining requirement for personnel
• Recruiting (identifying, interviewing, and selecting candidates)
• Compensating
• Developing and promoting agent
• For personnel planning and scheduling, it is helpful to have efforts and schedule size for the subsystems
and necessary component in the system.

Time Line Charts:


 It displays a project plan schedule in chronological order. It is used in project management to depict
project milestones and visualize project phases, and show project progress.
4

 It is an effective way to visualize a process using chronological order. Details are showed graphically,
important points in time can be easy seen and understood.
 It is a chronological order of events. In most cases, it is a line with dates, events or actions. It
is important for project managers to establish skills to build an accurate timeline. It indicates what phases
are in the past, what is in the progress now and what is supposed to be end in future.

RISK MANAGEMENT:

Risk Assessment-
It is assessment of loss causing potential of that risk. For this, first, every risk should be placed in two methods:
o The possibility of a risk coming true (denoted as r).
o The consequence of the issues relates to that risk (denoted as s).
Second, on the basis of these two methods, the priority of each risk can be estimated as follows:
p=r*s
p is the priority with which the risk must be controlled
r is the probability of the risk becoming true
s is the severity of loss caused due to the risk becoming true
After setting this, most likely and damaging risks have to be controlled first, and risk abatement methods will be
designed for them.

Risk Control-
The method of managing risks to achieve desired outcomes is called as risk control. Once all the identified risks
are determined; most harmful and the most likely risks must be included in the project.

PW Web/App: https://smart.link/7wwosivoicgd4
Library - https://smart.link/sdfez8ejd80if
1

UGC NET

DAILY
CLASS NOTES
Computer

Software Engineering
Lecture – 5
SRS and its Analysis
2

SRS and its Analysis


Functional and Non-Functional Requirements:
It defines the basic system behavior. They are system that does or must not do, and can be thought of in terms of
how the system responds to inputs. It defines that behavior and includes calculations, data input, and business
processes.

They are features that allow the system to function as it was intended. Another way, the functional requirements
are not met, the system will not work. They are product features and focus on user interface.
Nonfunctional Requirements: It defines system attributes such as security, reliability, performance,
maintainability, and usability. It provides constraints or limitations on the design of the system across the
different backlogs. They ensure the effectiveness of the entire system.

Difference between Functional and Non Functional Requirements:


Functional Requirement Non Functional Requirement
It defines a system or its component. It defines the quality attribute of a system.
It specifies “What should the software system do?” It places constraints on “How should the software
system fulfill the functional requirements?”
It is specified by User. It is specified by technical peoples e.g. Architect,
Technical leaders and software developers.
It is mandatory. It is not mandatory.
It helps user to verify the functionality of the software. It helps user to verify the performance of the software.
It is easy to define. It is more difficult to define.
Example: A Verification email is sent to user Example: Site should load in 3 seconds when the
whenever he/she registers for the first time on some number of continuous users are > 10000
software system.

Eliciting Requirements: It is practice of researching and discovering the requirements of a system from users,
customers, and other stakeholders. The practice is referred to as "requirement gathering".
They cannot be collected from the customer, as they would be showed by the name requirements gathering. It is
non-trivial because user can never be sure you get all requirements from the user and customer by just asking
them what the system should do or not dopractices include interviews, questionnaires, user observation.

Developing Use Cases: It is a list of actions or event defining the interactions between a role and a system to
achieve a goal.
1. Actor, which is the user, which can be a single person or a group of people, interacting with a process
2. System, is the process that's required to reach the final outcome
3. Goal, which is the successful user outcome
4. Stakeholders, which are those who have an interest in how the system turns out, even if they aren't direct
users
5. Preconditions, which are things that must be true before a use case is run
6. Triggers, which are events that occur for a use case to begin
3

Example:

Requirement Analysis and Modelling: It is the most important skill for a business analyst. The success of any
software project depends on this task. It involves multiple tasks.

Requirements Analysis and Modelling Techniques:


These (RAM) techniques are practiced to conduct this activity. Some of these techniques are:
• Structured RAM with DFD and ER diagrams
• RAM with UML diagrams
• Custom Technique

Requirements Review: It is a manual process that involves people from both client and contractor organisations.
They check the requirements document and omissions.
It can be used throughout software development for quality assurance and data collection. It is a set of people to
find errors and point out other matters of concern in the requirement specification of system. It involves the
author of requirement documents, someone who understands the client, a person of the design team, and the
4

person responsible for maintaining the requirement document. It is good practice to include few people not
directly involved with product development.

Software Requirement Specification (SRS) is a complete specification and description of requirements of the
software that need to be fulfilled for the successful development of the software system. These requirements can
be functional as well as non-functional depending upon the type of requirement. The interaction between different
customers and contractors is done because it is necessary to fully understand the needs of customers.
Depending upon information gathered after interaction, SRS is developed which describes requirements of
software that may include changes and modifications that is needed to be done to increase quality of product and
to satisfy customer’s demand.

Software development requires a well-structured Software Requirement Specification (SRS). It helps stakeholders
communicate, provides a roadmap for development teams, guides testers in creating effective test plans, guides
maintenance and support employees, informs project management decisions, and sets customer expectations. The
SRS document helps ensure that the software meets functional and non-functional requirements, resulting in a
quality product on time and within budget.

Functional Requirements: All functional requirements which may include calculations, data processing, etc. are
placed in a ranked order. Functional requirements specify the expected behavior of the system-which outputs
should be produced from the given inputs. They describe the relationship between the input and output of the
system. For each functional requirement, detailed description all the data inputs and their source, the units of
measure, and the range of valid inputs must be specified.
Non- functional requirements: non-functional attributes are explained that are required by software system for
better performance. An example may include Security, Portability, Reliability, Reusability, Application
compatibility, Data integrity, Scalability capacity, etc.

Purpose of SRS:
1. Development team requires it for developing product according to the need.
2. Test plans are generated by testing group based on the describe external behaviour.
3. Maintenance and support staff needs it to understand what the software product is supposed to do.
4. Project manager base their plans and estimates of schedule, effort and resources on it.
5. Customer relies on it to know that product they can expect.
6. As a contract between developer and customer.
7. For documentation purpose.

Quality characteristics of a good Software Requirements Specification (SRS) document include:


1. Complete: The SRS should include all the requirements for the software system, including both
functional and non-functional requirements.
2. Consistent: The SRS should be consistent in its use of terminology and formatting, and should be free of
contradictions.
3. Unambiguous: The SRS should be clear and specific, and should avoid using vague or imprecise
language.
4. Traceable: The SRS should be traceable to other documents and artifacts, such as use cases and user
stories, to ensure that all requirements are being met.
5. Verifiable: The SRS should be verifiable, which means that the requirements can be tested and validated
to ensure that they are being met.
5

6. Modifiable: The SRS should be modifiable, so that it can be updated and changed as the software
development process progresses.
7. Prioritized: The SRS should prioritize requirements, so that the most important requirements are
addressed first.
8. Testable: The SRS should be written in a way that allows the requirements to be tested and validated.
9. High-level and low-level: The SRS should provide both high-level requirements (such as overall system
objectives) and low-level requirements (such as detailed functional requirements).
10. Relevant: The SRS should be relevant to the software system that is being developed, and should not
include unnecessary or irrelevant information.
11. Human-readable: The SRS should be written in a way that is easy for non-technical stakeholders to
understand and review.
12. Aligned with business goals: The SRS should be aligned with the overall business goals and objectives
of the organization, so that the software system meets the needs of the business.
13. Agile methodologies: Agile methodologies, such as Scrum and Kanban, provide an iterative approach to
requirements capturing and validation, where requirements are captured and validated in small chunks of
functionality and feedback is gathered from the customer.

PW Web/App: https://smart.link/7wwosivoicgd4
Library - https://smart.link/sdfez8ejd80if
1

UGC NET

DAILY
CLASS NOTES
Computer

Software Engineering
Lecture – 6
Software Design
2

Software Design

Software Design:
Content:
1. Abstraction
2. Architecture
3. Goals of Abstraction
4. Limitation of Abstraction
5. Patterns
6. Modulation
7. Advantages of Modulation
8. Functional Dependency
9. Advantage of functional Dependency
10. Cohesion
11. Types of cohesion
12. Coupling
13. Type of Coupling
14. Difference between cohesion and coupling
15. OOD

Abstraction: It is one of the concepts of software engineering. It is about hiding complexity in building many
parts of your application.

An Example of Abstraction:
Consider a real-world analogy. User wants to ride a motor bike. All user need to start the motor bike is to put the
key on, push the start button, and use the accelerator. While riding, user may need to use the brake as well.
You are not really concerned about how the engine, accelerator and brake are working during the ride. All that
is abstract to user and you are not concerned with it (unless you are mechanic).
Whenever we build projects, wedo in layers. Here is the layered architecture of a simple web application:

Architecture: It is a system describes its major components, their relationships (structures), and how they react
with each other. It includes many factors such as Business strategy, quality attributes, human dynamics.
3

It serves as a blueprint for a system. It provides an abstraction to control the system complexity and develop a
communication and coordination mechanism among components.
It defines a solution to meet all the technical and operational requirements, while consuming the common quality
attributes like performance and security.
It involves a group of significant decisions about the organization related to software development and one of
these decisions can have a considerable impact on quality, maintainability, performance, and the success of the
last product.
These decisions comprise of:
 Selected elements and their interfaces by which system is composed.
 Behavior specified in groups among those elements.
 Composition of those structural and behavioral elements in large subsystem.
 It aligns with business objectives.
 It styles guide organization.

The goal of this is to identify requirements that affect the structure of the project. Architecture decreases the
business risks associated with building a technical solution and builds a path between business and technical
requirements.

Some of goals are:


 Expose the structure, but hide its implementation details.
 Realize all the use-case and scenarios.
 Try to address the requirements of some stakeholders.
 Handle functional and quality requirements.

Limitations:
 Less of tools and standardized ways to present architecture.
 Less of analysis methods to predict whether architecture will result in an implementation that meets the
requirements.
 Less of awareness of the importance of architectural design to software development.
4

 Less understanding the role of software architect and bad communication among stakeholders.

Patterns: It represents the good practices used by experienced object-oriented software developers. They are
solutions to basic problems that software developers faced during software development. These solutions
were taken and error by numerous software developers over a quiteshort period of time.

Modularization:
It is a technique to divide software into couple of discrete and individual modules, which are expected to be
capable of carrying out task independently. These modules work as basic builds for the entire software. Users
tend to design modules such that they can be executed or compiled separately and independently.
It follows the rules of „divide and conquer‟ problem-solving method this is because there are many other
advantages attached with the modular design of software.

Advantages of modularization are:


 Smaller components are easier to maintain
 Application can be divided based on functional aspects
 Required level of abstraction can be brought in the program
 High cohesion can be re-used again
 Concurrent execution can be made possible
 Desired from security aspect

For example, the Linux kernel is modular. Various computer program languages refer to their libraries as
"modules." Including a module in your program adds new capabilities by granting access to pre-written code
objects.

Functional independence: It means that when a module focuses on a single task, it should be accomplish it with
very few interactions with other modules. It is essential for good software design.

Advantage of functional independence:


 Error isolation:
When a module is functionally independent then it performs most of its task independently without
interacting with other modules much. It reduces the error getting propagated to other modules. It helps
easily isolating and tracing the error.

 Module reusability:
It performs well defined and specific task. So it becomes easy to reuse such modules different program
require same functionality.

 Understandability:
It is less complex so easy to understand. Such modules are less interacted with other modules so can be
understood in isolation.
5

Cohesion: It is a measure of degree to which the elements of the module are functionally similar. A degree to
which all elements directed towards performing a single task are stored in the component. It is the internal glue
that keeps the module together. A software design will have high of cohesion.

Types of Cohesion:
 Functional Cohesion: Each required element for a single computation is stored in the component. It
performs the task and functions. It is an ideal situation. Example: read transaction record, cosine angle
computation, seat assignment to an airline passenger etc.
 Sequential Cohesion: An element results some data that becomes the input for other element, i.e., data
flow between the parts. It occurs naturally in programming languages. Example: cross validate record
and formatting of module, raw records usage, formatting of raw records, cross validation of fields in raw
records.
 Communicational Cohesion: Two elements operate on the same input data or distribute towards the
same output data. Example- modifies record into the database and sends it to the printer.
 Procedural Cohesion: It ensures the order of execution. Actions are still connected and unlikely to be
reusable. Ex- calculate student GPA, print student record. Example: read, write, edit of the module,
record use out, writing out the record, reading the record, zero etc.
 Temporal Cohesion: The elements are similar by their timing involved. It isconnected with all the tasks
must be executed in the same time-span. It contains the code for initializing the parts of the system.
Example: A function is called after catching an exception which closes open files, creates an error log.
 Logical Cohesion: All elements are logically similar and not functionally. Ex- It reads inputs from tape,
disk, and network. The code for these functions is in the same component. They are similar, but the
functions are different. Example: a group of print functions generating different output reports are
arranged into a single module.
 Coincidental Cohesion: The elements are not related. The elements have no abstract relationship other
than location in source code. It is the worst form of cohesion. Ex- print next line and reverse the
characters of a string in a single component, a “Utilities” class.
 Coupling: It is the measure degree of interdependence between the modules. Asoftware will have low
coupling.

Types of Coupling:
 Data Coupling: Tthe dependence between the modules is based on the strategy that they interact by
passing only data, then the modules are said to be data coupled. In data coupling, the components are
freely to each other and communicating through data. Module communications don‟t contain tramp data.
Example-customer billing system. Example: illustrated as a module which retrieves customer address
using customer id.
 Stamp Coupling: In this, the complete data structure is passed from one module to another module. It
involves tramp data. It may be mandatory due to efficiency factors- this choice made by the insightful
designer, not a lazy programmer.
 Control Coupling: If the modules meet by passing control information, then they are to be control
coupled. It can be worst parameters showed completely different behavior and good if parameters allow
factoring and reuse of functionality. Example- sort function that takes comparison function as an
argument. Example: a control flag, a comparison function passed to a sort algorithm.
6

 External Coupling: The modules depend on another module, outside to the software being established
or to a particular type of hardware. Ex- protocol, external file, device format, etc.
 Common Coupling: The modules have shared data such as global data structures.The changes in data
mean tracing back to all modules which access that data to evaluate the effect of the change.
Disadvantages are likely to difficult in reusing modules, reduced ability to control data accesses.
Example: global information status regarding an operation, with the multiple modules reading and
writing to that location.
 Content Coupling: In this, module can modify the data of another module or control flow is passed from
one module to the other module. This is the bad form of coupling and should avoid.

Difference Between Cohesion and coupling:


Cohesion Coupling

It is the concept of intra module. It is the concept of inter module.

It represents the relationship within module. It represents the relationships between modules.

Increasing in cohesion is good for software. Increasing in coupling is avoided for software.

It represents the functional strength of modules. It represents the independence among modules.

Highly cohesive gives the best software. Loosely coupling gives the best software.

Object-Oriented Design:
The system is showed as a collection of objects. The state is distributed among the entities, and each object
handles its data. For example, in a Library Automation Software, every representative may be a separate object
with its information and functions to operate on these data. The task state for one purpose cannot refer or change
data of other objects. They have their internal data which represent their state.

Data Design: It is the first design activity, which results in less complex, and efficient program structure. The
data objects, attributes, and relationships picture in entity relationship diagrams and the application stored in data
list provide a base for data design activity. During the process, data types are specified along with the integrity
rules required for the data.

Architectural Design: It is a process for knowing the sub-systems making up a system and the framework for
sub-system control and communication. The output of this design process is detailed of the software architecture.
It is a stage of system design process.

An architectural design performs the following functions:


1. It evaluates all level designs.
2. It develops and documents level design for the outside and inside interfaces.
3. It develops preliminary versions of user documentation.
4. It defines and documents preliminary test requirements and the schedule for software integration.
5. Information of the application domain for software to be developed.
6. Using data-flow diagrams.
7

User Interface Design: It is the front-end application view to which user interacts to use the software. User can
control the software as well as hardware user interface. It is found at each place where digital technology exists,
mobile phones etc.

It is a part of software and is designed in such a way that it is expected to provide the user insight of the
software. It provides fundamental platform for human-computer interaction.
It may be graphical, text-based, audio-video based, depending upon the hardware and software combination. It
can be combination of both.

The software becomes more famous if its user interface is:


 Attractive
 Simple to use
 Responsive in short time
 Clear to understand
 Consistent on all interfacing screen

PW Web/App: https://smart.link/7wwosivoicgd4
Library - https://smart.link/sdfez8ejd80if
1

UGC NET

DAILY
CLASS NOTES
Computer

Software Engineering
Lecture – 7
Software Testing
2

Software Testing
Content:
1. Verification
2. Validation
3. Terminology Related to Testing
a. Bug
b. Error
c. Fault
d. Failure
4. Unit Testing
5. Integration Testing
6. White Box testing
7. Type of white box testing
8. Black Box Testing
9. Type of Black box testing
10. Control Structure Testing
11. Alpha and Beta Testing
12. Regression Testing
13. Performance Testing
14. Stress Testing

Verification: It is the process of examine that software achieves its goal without any bugs. It is the process to
certify whether the product that is developed is right or not. It verifies that the developed product achieves the
requirements that user have.
It is Static Testing.

Activities involved in verification:


1. Inspections
2. Reviews
3. Walkthroughs
4. Desk-checking

Validation: It is a method of checking whether the software product is up to the mark or in other words product
has high level requirements. It is the process of examine the validation of product i.e. it checks what we are
establishing in the right product.
Validation is the Dynamic Testing.

Activities involved in validation:


1. Black box testing
2. White box testing
3. Unit testing
4. Integration testing
3

ERROR: It is a mistake on the part of a software developer. In the strategy of developer user include software
engineers, programmers, analysts, and testers. For example, a developer may not understand a design notation, or
a programmer might type a variable name incorrectly – leads to an Error. It is generated because of wrong login,
loop or due to syntax. It normally arises in software; it leads to change the functionality of the program.

BUG: It is the result of a coding error. Error found in the environment before the product is shipped to the
customer. An error that causes a program to work poorly, produce incorrect results. It is found in software or
hardware that causes a program to malfunction. It is terminology of Tester.

FAILURE: It is the lack of ability of a software system or component to perform its required functions within
specified performance requirements. When a failure reaches the end customer it is called a Failure. During
development they are usually observed by testers.

FAULT: A wrong step, data definition in a computer program which causes the program to perform in an
unintended manner. It is launch in the software as result of an error. It is a not regular in the software that may
cause to behave incorrectly, and not according to its features. It is the result of the error.

Unit Testing: It is a testing procedure by which each unit of source code is tested to determine if they are ready
to use. Itstarts with the module specification.

Integration Testing: Integration testing checks integration between software modules. It starts with interface
specification.
Unit Testing Integration Testing
 It checks a single component of an  The action of integration modules is
application. considered in the Integration testing.
 It should have no dependencies on code  It is dependent on other outside systems
outside the unit tested. like databases, hardware allocated for
them etc.
 It starts with the module specification.  It starts with the interface specification.
 It comes under White box testing type.  It comes under both type of testing.
 The detailed clarity of the code is comes  The clarity of the integration structure
under Unit testing. is comes under Integration testing.

White Box Testing: It is a testing method in which internal structure, design are tested to check flow of input-
output and to improve design, usability and security. In this code it is visible to testers so that it is also called
Clear box testing, open box testing, transparent box testing and Glass box testing.

Types of white box testing:


Unit Testing:
This is one of the steps, which is performed in the early stages. Various testers are performing to check if a
specific unit of code is functional or not. This is one of the common steps performed for every activity because it
helps in removing basic and simple errors.
4

Static Analysis:
 The step involves testing several of the static elements in the code. The conducts to figure out any of the
possible defects or errors in the application code. This is important because it helps in filtering simple
errors in the initial stage of the process.

Dynamic Analysis:
 It is the further step of static analysis in general path testing. Some of the people prefer performing both
static and dynamic at the same time. This helps in analyzing and executing the source code depending on
the requirements. The end stage of this helps in analyzing the output without affecting the method.

Statement Coverage:
 This is one of the pivotal steps involved in the testing process. It offers a whole lot of advantages in terms
of execution from time to time. The method takes place to verify whether all the functionalities are
working or not. Various testers use the step because it is designed to execute all the functions once. As
the method starts, user will be able to figure out the possible errors in the web application.

Branch Testing Coverage:


 Software and web applications are not coded in a repeated mode because of few reasons. It is necessary to
branch out at some point in time because it helps in segregating effectively. It gives a wide room for
testers to find quick results. It helps in verifying all the possible branches in terms of lines of code. This
offers better access to find and rectify any kind of abnormal behavior in the application easily.

Security Testing:
 It is a fact that security is one of the primary protocol, which needs to be in place all the time. Many of
organizations prefer having a regular security testing activity because of obvious reasons. It is necessary
to have a method in place to protect the application or software automatically. It is more like a process
because it comes with a lot of internal steps to complete. It checks and rectifies any kind of unauthorized
access to the system. The process helps in avoiding any kind of breach because of hacking or cracking
practices.

Mutation Testing:
 The last step in the method needs a lot of time to complete effectively. It is generally conducted to re-
check any kind of bugs in the system.

Black Box Testing


 It is a software testing method in which the functionalities of software applications are tested without
having knowledge of internal code structure, implementation details and internal paths. It mainly focuses
on input and output of software applications and it is entirely based on software requirements and
specifications. It is also known as Behavioral Testing.

Types of black box testing:


● Functional testing - This type of testing is related to the functional requirements of a system; it is done
by software testers.
● Non-functional testing - This type testing is not related to testing of specific features, but non-functional
requirements such as performance, scalability, usability.
5

● Regression testing – This type of testing is done after code fixes; upgrades or any other system
maintenance to check the new code has not affected the existing code.

S.No. White Box Testing Black Box Testing


1. Testing is done with informed of the internal Testing is done without the informed of the
structure of program. internal structure of program or application
2. It requires programming knowledge. It doesn’t require programming knowledge
3. It has the main goal to test the internal It has the main goal to test the behavior of the
operation of the system. software
4. It is focused on code structure, conditions, It is focused on external or end-user
paths and branches. perspective
5. It is a not time-consuming process It is a time-consuming process.

 Basis Path Testing: It is a white-box testing technique based on the control structure of a program or a
module. Using this path, a control flow graph is prepared and the various possible strategies present in the
graph are executed.
 It is a technique of selecting the paths in the control flow graph that provide a group of execution paths
through module.
 Control Structure Testing: It is used to increase the security by testing some structures present in the
program.

Different Types of Testing are as follows:


 Condition-
It is a test-based design method, which ensures that the logical condition and decision statements are free
from errors. The errors present in logical conditions can be incorrect Boolean operators, arithmetic
expressions, and so on.

Data flow Testing:


 The method chooses the test path of a program based on the locations of the definitions and uses all the
variables in the program.

Loop Testing:
 It is actually a white box testing technique. It focuses on the validity of loop construction.
 Deriving Test Cases: A test case in is a group of conditions or variables under which a tester will
determine whether an application or software system is working correctly or not.
 It directly from a requirement specification or black box test design technique. The Techniques include:
● Boundary Value Analysis (BVA)
● Equivalence Partitioning (EP)
Boundary testing: It is the method of testing between opposite ends or boundaries between partitions of the input
values.
● Opposite ends like Start- End, Lower- Upper, Maximum-Minimum, Just Inside-Just Outside values are called
boundary values and the testing is called "boundary testing".
● The essential idea in boundary value testing is to select input variable values at their:
1. Minimum
2. Just above the minimum
6

3. A nominal value
4. Just below the maximum
5. Maximum

In this Testing, Equivalence Class Partitioning plays a better role


It comes after the Equivalence Class Partitioning.

Equivalence Partitioning-
It is type of black box testing technique which can be applied to all levels of software testing like unit, integration,
system, etc. In this, input data units are separated into equivalent partitions that can be used to derive test cases
which reduce time required for testing because of small number of test cases.
● It separate input data of software into different equivalence data classes.
● User can apply this technique, where there is a range in the input field.

Alpha Testing:
It is a testing performed to recognized bugs before releasing the software product to the real users or public. It is a
type of acceptance testing. The objective is to refine the software product by finding and fixing the bugs that were
not discovered through previous tests.

Advantage of Alpha testing-


● Improved insight about the software's reliability at its early stages
● Free up your team for other projects
● Reduce delivery time to market
● Early feedback helps to improve software quality

Beta Testing: It is achieved by users of the software application in a environment. It is one of the types of User
Acceptance Testing.

Beta Testing: It is achieved by users of the software application in an environment. One of the types of User
Acceptance Testing.
It is the last test before dispatching a product to the customers. Advantage of this testing is direct feedback from
customers.

Advantages of Beta Testing:


● It reduces result failure risk via customer validation.
● It allows a company to test post-launch infrastructure.
● It helps in better product quality via customer feedback.
● It creates kindness with customers and increases customer satisfaction.
7

Difference Between alpha testing and beta testing-


Alpha Testing Beta Testing
 It involves both the white box and black  It commonly uses black box testing.
box testing.
 It is achieved by testers who are usually  It is execute by clients who are not part of the
internal employees of the organization. organization.
 It is fulfilled at developer’s site.  It is performed at end-user of the product.
 Security testing are not checked in this  Reliability, security are checked during beta
testing. testing.
 It ensures the feature of the product before  It concentrates on the quality of the product
forwarding to beta testing. but collects users input on the product and
ensures that the product is ready for real time
users.
 It requires a testing environment or a lab.  It doesn’t require a testing environment or
lab.
 It may require long execution cycle.  It requires only a few weeks of execution.

Regression Testing: It is a process of testing that improves parts of the code and the parts that may get affected
due to the modifications to ensure that no new errors have been launched in the software after the modifications
have been made. It means return of something and in the software field; it refers to the return of a bug.

When to do regression testing?


● When a new feature is added to the system and the code has been modified to absorb and integrate that
functionality with the existing code.
● When some fault has been recognized in the software and the code is debugged to fix it.
● When the code is modified to improve its working.

Advantages of Regression Testing:


● It certifies that no new bugs have been introduced after adding new functionalities to the system.
● Tests are selected from the manage test suite and user already know their await outputs.
● It helps to manage the quality of the source code.

Performance Testing: It certifies that software applications perform properly under their expected workload. It is
a testing technique carried out to determine system performance in terms of sensitivity, reactivity and stability
under a particular workload.

It is the process of analyzing the quality and capability of a product. It is a testing method performed to determine
the system performance in terms of speed, reliability and stability under varying workload. It is also known
as Performance Testing.
8

Performance Testing Attributes:


● Speed:
It controls whether the software product responds rapidly.
● Scalability:
It controls amount of load the software product can handle at a time.
● Stability:
It controls whether the software product is stable in case of varying workloads.
● Reliability:
It controls whether the software product is secure or not.

Stress Testing: It is a technique that controls the quality of software by testing after the limits of normal
operation. It stress on availability and error handling under a heavy load more than on what is correct behavior
under normal situations.

PW Web/App: https://smart.link/7wwosivoicgd4
Library - https://smart.link/sdfez8ejd80if
1

UGC NET

DAILY
CLASS NOTES
Computer

Software Engineering
Lecture – 8
Software Quality and SCM
2

Software Quality and SCM


Content:
1. McCall’s Factors
2. ISO 9126 Quality Factor
3. Quality Control
4. Quality Assurance
5. Change Control
6. Process of change control
7. Software Reuse
8. Software Re-engineering
9. Software Revers engineering

McCall’s Quality Factors:


 It was introduced in 1977. This model is incorporated with many attributes, called as software factors,
which influence software.
 This categorised all software requirements into 11 software quality factors. The 11 factors are organised
into three product quality factors – product operation, product revision, and product transition factors.

Product operation:
● It includes five software quality factors, which are related with the requirements that directly affect the
operation of the software such as operational performance, convenience, ease of usage and its correctness.
This help in providing user experience.
Correctness-
● The area to which software meets its requirements specification.
Efficiency-
● The amount of hardware resources and code the software, needs to perform a function.

Integrity-
● The area to which the software can control an unauthorized person from the accessing the data or
software.
Reliability-
● The area to which software performs its intended functions without failure.
Usability-
● The extent of effort required to learn, operate and understand the functions of the software.
Product Revision:
● It includes three software quality factors, which are required for testing and maintenance of the software.
They provide maintenance, flexibility and testing effort to support the software to be functional according
to the needs and requirements of the user in the future.

Maintainability-
● The effort required to detect and correct an error during maintenance phase.
Flexibility-
● The effort needed to improve an operational software program.
3

Testability-
● The effort required to verify software to ensure that it meets the specified requirements.
Product Transition:
● It includes three software quality factors that allow the software to adapt to the change of environments in
the new platform or technology from the previous.
Portability-
● It required transferring a program from one platform to another.
Re-usability-
● The area to which the program’s code can be reused in other applications.
Interoperability-
● The effort required to integrate two systems with one another.

ISO 9126 Quality Factors:


● The ISO 9126 software is an international standard software quality model that helps in creating a solid
framework for assessing software. This standard way of assessing software can be segregated in four
different ways. These are used to address subjects of different nature.

Following ways by which software quality model can be calculated are as follows:
● Functionality: Key aspect of any software that ensures the completion of tasks and purpose.
● Reliability: It determines the capability of software to sustain its use when put under different
circumstances.
● Usability: It is highly dependent on the functional uses of software. For example: ATM machine is used
to withdraw cash.
● Efficiency: It is more concerned by resources of the system when used for providing a desired
functionality. This type of feature is defined by amount of disk space, memory and network.
● Maintainability: This property of maintainability of the software model is used to recognize and fix a
defect accordingly. The model is inspected for the faults and these can be identified easily.
● Portability: According to this, capable software should easily adopt to the environmental changes as
possible. The designing of an object and the practices of its implementation are highly dependent on this
feature.

Quality control: Software quality control is the set of procedures used by organizations to ensure that
a software product will meet its quality goals at the best value to the customer, and to continually improve the
organization's ability to produce software products in the future.
Quality Assurance: Software quality assurance (SQA) is a means and practice of monitoring the software
engineering processes and methods used in a project to ensure proper quality of the software. It may include
ensuring conformance to standards or models, such as ISO/IEC 9126.
Change Control: It is the method that an organization uses to contract, identify and authorize changes to an IT
environment. It decreases the chances of unauthorized alterations, disruption and errors in the system.

Process of Change Control-


● Change Log: It is a document that list the details about all the Change Requests like project number,
PCR (project change request) ID, priority, Owner details, Target date, status and status date, raised by,
date when raised etc.
4

Change Request Form: It is used to contract details required to manage the decision making process like type of
change, benefits of change, name of resource requesting the change, time and estimate cost, change request status
etc.

Version Control: It is also known asrevision control. It is a class of systems responsible for managing changes to
computer programs, documents, large web sites, or other collections of information.
It is a method that records changes to a file or group of files over time so that user can recall
specific versions later.
Git is a free and open source assign version control system designed to handle all from small to very large
projects with speed and efficiency.Itis easy to remember and has a small footprint with lightning fast
performance.

Software Reuse: It is the method of creating systems from preplanned software components.
The advantage of software reuse:
● The systematic development of reusable components.
● The structured reuse these components as building blocks to create new systems.
● Increase software productivity.
● Shorten software development time.
● Produce more standardized software.

Software Re-engineering: It is a method of software development which is done to improve the maintainability
of a software system. It is the study and modification of a system to reconstitute it in a new form.

Advantages of Re-engineering:
Reduced Risk:
● Software is existing; the risk is less as compared to new software development. Staffing problems and
specification problems are many of problems which may create in new software development.

Reduced Cost:
● The cost of this is less than the costs of developing new software.

Re-engineering Cost Factors:


● The quality of the software to be re-arranged
● The tool support available for re-engineering
● The extent of the required data conversion
● The availability of expert staff for re-engineering

Objectives of Re-engineering:
● To relate a cost-cutting option for system evolution.
● To relate the activities involved in the software maintenance process.
● To identify between software and data re-engineering and to explain the problems of data re- arranged.

Reverse Engineering: It is also known as back engineering, it is the process by which a man-made object is
deconstructed to reveal its designs, architecture, code or to extract knowledge from the object; related to scientific
research, the difference being that scientific research is about a natural phenomenon.
5

Steps for Reverse Engineering are:


1. Collection Information:
This pivot on collecting every possible information (i.e., source design documents etc.) about the software.
2. Examining the information:
The information collected as to get familiar with the system.
3. Extracting the structure:
This step worry with identification of program structure in the form of structure chart where each node
corresponds to some routine.
4. Recording the functionality:
During these step details of individual module of the structure, charts are recorded using structured
language like decision table, etc.
5. Recording data flow:
Group of data flow diagrams are derived to show the flow of data among the processes.
6. Recording control flow:
Increase level control structure of the software is recorded.
7. Review extracted design:
Design document remove is showed several times to certify consistency and correctness. It also ensures that
the design represents the program.
8. Generate documentation: The complete documentation including SRS, design document, history,
overview, etc. are recorded for future use.

Difference between Re Engineering and Reverse Engineering


Re Engineering Reverse Engineering
● It is to examine the finished product and build ● It is finding out how a product works from the
it again, but better. finished product.
● It means in which we used own knowledge for ● It means using a other country knowledge for
make batter that previous technology what worked on them process and we change
ever we use in first time. something in that technology is called reverse
engineering.
● It means to make the previous product again ● It means restart the whole.
to get better output.
● It means developing a new system from an old ● It is basically gathering inform from
system or r existing system implementation and design
● It is a process of software development which ● It is the process by which a man-made object is
is done to improve the maintainability of deconstructed to reveal its designs, architecture,
a software system code or to extract knowledge from the object;

PW Web/App: https://smart.link/7wwosivoicgd4
Library - https://smart.link/sdfez8ejd80if

You might also like