Softwareengineering-Vikash Notes-Easy
Softwareengineering-Vikash Notes-Easy
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.
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.
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.
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.
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 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.
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.
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.
Example:
Weighing Factor
Measurement Parameter
Count Total_Count Simple Average Complex
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.
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
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
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.
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
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
● 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.
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.
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
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.
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.
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.
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
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
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.
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.
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.
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
PW Web/App: https://smart.link/7wwosivoicgd4
Library - https://smart.link/sdfez8ejd80if