Unit 4
Unit 4
Unit 4
Software Engineering
Whenever software is built, there is always scope for improvement and those
improvements bring picture changes. Changes may be required to modify or
update any existing solution or to create a new solution for a problem.
Requirements keep on changing daily so we need to keep on upgrading our
systems based on the current requirements and needs to meet desired outputs.
Changes should be analyzed before they are made to the existing system, recorded
before they are implemented, reported to have details of before and after, and
controlled in a manner that will improve quality and reduce error. This is where the
need for System Configuration Management comes. System Configuration
Management (SCM) is an arrangement of exercises that controls change by
recognizing the items for change, setting up connections between those things,
making/characterizing instruments for overseeing diverse variants, controlling the
changes being executed in the current framework, inspecting and
revealing/reporting on the changes made. It is essential to control the changes
because if the changes are not checked legitimately then they may wind up
undermining a well-run programming. In this way, SCM is a fundamental piece of
all project management activities.
Processes involved in SCM – Configuration management provides a disciplined
environment for smooth control of work products. It involves the following
activities:
1. Identification and Establishment – Identifying the configuration items
from products that compose baselines at given points in time (a baseline
is a set of mutually consistent Configuration Items, which has been
formally reviewed and agreed upon, and serves as the basis of further
development). Establishing relationships among items, creating a
mechanism to manage multiple levels of control and procedure for the
change management system.
2. Version control – Creating versions/specifications of the existing
product to build new products with the help of the SCM system. A
description of the version is given below:
Suppose after some changes, the version of the configuration object
changes from 1.0 to 1.1. Minor corrections and changes result in versions
1.1.1 and 1.1.2, which is followed by a major update that is object 1.2.
The development of object 1.0 continues through 1.3 and 1.4, but finally,
a noteworthy change to the object results in a new evolutionary path,
version 2.0. Both versions are currently supported.
3. Change control – Controlling changes to Configuration items (CI). The
change control process is explained in Figure below:A change request
(CR) is submitted and evaluated to assess technical merit, potential side
effects, the overall impact on other configuration objects and system
functions, and the projected cost of the change. The results of the
evaluation are presented as a change report, which is used by a change
control board (CCB) —a person or group who makes a final decision on
the status and priority of the change. An engineering change Request
(ECR) is generated for each approved change. Also, CCB notifies the
developer in case the change is rejected with proper reason. The ECR
describes the change to be made, the constraints that must be respected,
and the criteria for review and audit. The object to be changed is
“checked out” of the project database, the change is made, and then the
object is tested again. The object is then “checked in” to the database and
appropriate version control mechanisms are used to create the next
version of the software.
4. Configuration auditing – A software configuration audit complements
the formal technical review of the process and product. It focuses on the
technical correctness of the configuration object that has been modified.
The audit confirms the completeness, correctness, and consistency of
items in the SCM system and tracks action items from the audit to
closure.
5. Reporting – Providing accurate status and current configuration data to
developers, testers, end users, customers, and stakeholders through
admin guides, user guides, FAQs, Release notes, Memos, Installation
Guide, Configuration guides, etc.
System Configuration Management (SCM) is a software engineering practice that
focuses on managing the configuration of software systems and ensuring that
software components are properly controlled, tracked, and stored. It is a critical
aspect of software development, as it helps to ensure that changes made to a
software system are properly coordinated and that the system is always in a known
and stable state.
SCM involves a set of processes and tools that help to manage the different
components of a software system, including source code, documentation, and other
assets. It enables teams to track changes made to the software system, identify
when and why changes were made, and manage the integration of these changes
into the final product.
Importance of Software Configuration Management
1. Effective Bug Tracking: Linking code modifications to issues that have
been reported, makes bug tracking more effective.
2. Continuous Deployment and Integration: SCM combines with
continuous processes to automate deployment and testing, resulting in
more dependable and timely software delivery.
3. Risk management: SCM lowers the chance of introducing critical flaws
by assisting in the early detection and correction of problems.
4. Support for Big Projects: Source Code Control (SCM) offers an orderly
method to handle code modifications for big projects, fostering a well-
organized development process.
5. Reproducibility: By recording precise versions of code, libraries, and
dependencies, source code versioning (SCM) makes builds repeatable.
6. Parallel Development: SCM facilitates parallel development by enabling
several developers to collaborate on various branches at once.
Why need for System configuration management?
1. Replicability: Software version control (SCM) makes ensures that a
software system can be replicated at any stage of its development. This is
necessary for testing, debugging, and upholding consistent environments
in production, testing, and development.
2. Identification of Configuration: Source code, documentation, and
executable files are examples of configuration elements that SCM helps
in locating and labeling. The management of a system’s constituent parts
and their interactions depend on this identification.
3. Effective Process of Development: By automating monotonous processes
like managing dependencies, merging changes, and resolving disputes,
SCM simplifies the development process. Error risk is decreased and
efficiency is increased because of this automation.
Key objectives of SCM
1. Control the evolution of software systems: SCM helps to ensure that
changes to a software system are properly planned, tested, and integrated
into the final product.
2. Enable collaboration and coordination: SCM helps teams to
collaborate and coordinate their work, ensuring that changes are properly
integrated and that everyone is working from the same version of the
software system.
3. Provide version control: SCM provides version control for software
systems, enabling teams to manage and track different versions of the
system and to revert to earlier versions if necessary.
4. Facilitate replication and distribution: SCM helps to ensure that
software systems can be easily replicated and distributed to other
environments, such as test, production, and customer sites.
5. SCM is a critical component of software development, and effective
SCM practices can help to improve the quality and reliability of software
systems, as well as increase efficiency and reduce the risk of errors.
The main advantages of SCM
1. Improved productivity and efficiency by reducing the time and effort
required to manage software changes.
2. Reduced risk of errors and defects by ensuring that all changes were
properly tested and validated.
3. Increased collaboration and communication among team members by
providing a central repository for software artifacts.
4. Improved quality and stability of software systems by ensuring that all
changes are properly controlled and managed.
The main disadvantages of SCM
1. Increased complexity and overhead, particularly in large software
systems.
2. Difficulty in managing dependencies and ensuring that all changes are
properly integrated.
3. Potential for conflicts and delays, particularly in large development
teams with multiple contributors.
SCM Process
It uses the tools which keep that the necessary change has been implemented
adequately to the appropriate component. The SCM process defines a number of
tasks:
o Identification of objects in the software configuration
o Version Control
o Change Control
o Configuration Audit
o Status Reporting
Identification
Basic Object: Unit of Text created by a software engineer during analysis, design,
code, or test.
Each object has a set of distinct characteristics that identify it uniquely: a name, a
description, a list of resources, and a "realization."
Version Control
Version Control combines procedures and tools to handle different version of
configuration objects that are generated during the software process.
Change Control
James Bach describes change control in the context of SCM is: Change Control is
Vital. But the forces that make it essential also make it annoying.
We worry about change because a small confusion in the code can create a big
failure in the product. But it can also fix a significant failure or enable incredible new
capabilities.
We worry about change because a single rogue developer could sink the project, yet
brilliant ideas originate in the mind of those rogues, and
A burdensome change control process could effectively discourage them from doing
creative work.
A change request is submitted and calculated to assess technical merit; potential side
effects, the overall impact on other configuration objects and system functions, and
projected cost of the change.
The results of the evaluations are presented as a change report, which is used by a
change control authority (CCA) - a person or a group who makes a final decision on
the status and priority of the change.
AD
Access Control governs which software engineers have the authority to access and
modify a particular configuration object.
Configuration Audit
SCM audits to verify that the software product satisfies the baselines requirements
and ensures that what is built and what is delivered.
SCM audits also ensure that traceability is maintained between all CIs and that all
work requests are associated with one or more CI modification.
AD
SCM audits are the "watchdogs" that ensures that the integrity of the project's scope
is preserved.
Status Reporting
Quality Control: Quality Control involves a series of inspections, reviews, and tests
used throughout the software process to ensure each work product meets the
requirements place upon it. Quality control includes a feedback loop to the process
that created the work product.
Quality Assurance: Quality Assurance is the preventive set of activities that provide
greater confidence that the project will be completed successfully.
Quality Assurance focuses on how the engineering and management activity will be
done?
As anyone is interested in the quality of the final product, it should be assured that
we are building the right product.
Importance of Quality
We would expect the quality to be a concern of all producers of goods and services.
However, the distinctive characteristics of software and in particular its intangibility
and complexity, make special demands.
A set of activities designed to calculate the process by which the products are
developed or manufactured.
AD
SQA Encompasses
SQA Activities
Software quality assurance is composed of a variety of functions associated with two
different constituencies ? the software engineers who do technical work and an SQA
group that has responsibility for quality assurance planning, record keeping, analysis,
and reporting.
AD
Quality Assurance (QA) is the set of actions Quality Control (QC) is described as
including facilitation, training, measurement, the processes and methods used to
and analysis needed to provide adequate compare product quality to
confidence that processes are established and requirements and applicable standards,
continuously improved to produce products or and the actions are taken when a
services that conform to specifications and are nonconformance is detected.
fit for use.
QA is an activity that establishes and calculates QC is an activity that demonstrates
the processes that produce the product. If there whether or not the product produced
is no process, there is no role for QA. met standards.
Software Reliability
Software Reliability means Operational reliability. It is described as the ability of a
system or component to perform its required functions under static conditions for a
specific period.
Software reliability is also defined as the probability that a software system fulfills its
assigned task in a given environment for a predefined number of input cases,
assuming that the hardware and the input are free of error.
For example, large next-generation aircraft will have over 1 million source lines of
software on-board; next-generation air traffic control systems will contain between
one and two million lines; the upcoming International Space Station will have over
two million lines on-board and over 10 million lines of ground support software;
several significant life-critical defense systems will have over 5 million source lines of
software. While the complexity of software is inversely associated with software
reliability, it is directly related to other vital factors in software quality, especially
functionality, capability, etc.
The ISO 9000 series of standards is based on the assumption that if a proper stage is
followed for production, then good quality products are bound to follow
automatically. The types of industries to which the various ISO standards apply are as
follows.
SQA activities
These are, quite simply put, a set of activities common to normal SQA operations.
Product Evaluation – the product is evaluated against the specifications laid out in the project
management plan.Process Monitoring – verifies that the steps taken in software development
are correct and match the steps against the documentation.
6. Control changes
Manual and automated control tools are used for validating change requests, evaluating the
nature of change, controlling and if required, arresting the change effect. In effect, this makes
sure that the software being developed does not stray too far from the outlines.
7. Measuring Change Impact
If defects are found, the concerned department issues a fix. The QA team then determines the
change and the extent of the change brought by the fix. The change should be stable and
should be compatible with the whole project. There are software quality metrics that allow
managers and developers to observe these activities and monitor changes throughout the
SDLC of the product or service.
8. SQA Audits
The audit inspects the entire SDLC process to the established procedure laid out in the SQA
plan. Non-compliance and missed faults can be unearthed and fixed due to this.
9. Record and report keeping
Keeping SQA documentation and information with associated stakeholders. This includes
audit reports, test results, reviews, change request documentation, and other documentation
generated during the entire SDLC.
10. Relationship management
Managing and interfacing between the QA and the development team, thus keeping roles in
check and responsibilities ahead of the individual.
1. Selenium
A portable software testing tool and automation tool for web applications. A test domain-
specific language is also provided. To write test cases one can use programming languages
including C#, Java, Perl, PHP, Python, Ruby, Scala, and Groovy. Selenium is a product suite
of software consist of the following components:
2. HP UFT
HPE Unified Functional Testing was previously known as HP QuickTest Professional. It
offers testing automation for functional and regression testing for software applications. It is a
user-friendly IDE that provides the best sort of API and GUI testing.
SQA implementation phase
Before building an application, developers and the SQA team create a development plan. To
ensure that the SDLC plan gets executed, the developers write the SDLC plan while the SQA
team writes the Software Quality Assurance plan. The application that is about to be
developed is already halfway done if the documents by the developers and the SQA is well
written and organised.
In this phase, the SQA team’s responsibility is to ensure the implementation of the proposed
features of the intended application. Along with the implementation, the method of
developing the application will also be tracked by the application. There are some design
methods that can be used such as language or framework. The SQA team helps the
development team in selecting the proper framework or language.
The most important task of the SQA team at this stage is to implement clarity of the coding.
Developers could easily write the code of the application but there is a tendency to overdo the
coding. The SQA team emphasises the organisation of the coding which should be
understood easily. Aside from the coding, the comments within the language are also checked
thoroughly. The comments should clearly define each function.
The SQA team checks the software’s documentation. The documentation clearly states the
function of the application.
SQA standards
In a typical SQA, compliance is demanded against the following standards. This may be a
single standard, more than one standard, or a mix of these standards.
ISO9000
CMMI level (Capability maturity model Integration)
TMMi (Test Maturity Model Integration)
ISO15504
To remain compliant with the above-listed standards, there are a few techniques that are
listed in the SQA plan. These SQA techniques include auditing, reviews, code inspections,
design inspections, simulations, functional testing, walkthroughs, static analysis,
standardizations, stress testing, path testing, Six Sigma principles, and more.
These techniques when used in conjunction with the defined SQA plan save development
costs, time, and maintenance costs, boost reputations, increase product safety and give more
benefits.
Testing is mandatory because it will be a dangerous situation if the software fails any of time
due to lack of testing. So, without testing software cannot be deployed to the end user.
What is Testing
Testing is a group of techniques to determine the correctness of the application under the
predefined script but, testing cannot find all the defect of application. The main intent of
testing is to detect failures of the application so that failures can be discovered and corrected.
It does not demonstrate that a product functions properly under all conditions but only that it
is not working in some specific conditions.
Testing furnishes comparison that compares the behavior and state of software against
mechanisms because the problem can be recognized by the mechanism. The mechanism may
include past versions of the same specified product, comparable products, and interfaces of
expected purpose, relevant standards, or other criteria but not limited up to these.
Testing includes an examination of code and also the execution of code in various
environments, conditions as well as all the examining aspects of the code. In the current
scenario of software development, a testing team may be separate from the development team
so that Information derived from testing can be used to correct the process of software
development.
The success of software depends upon acceptance of its targeted audience, easy graphical
user interface, strong functionality load test, etc. For example, the audience of banking is
totally different from the audience of a video game. Therefore, when an organization
develops a software product, it can assess whether the software product will be beneficial to
its purchasers and other audience.
With the help of below image, we can easily understand the type of software testing:
Manual testing
The process of checking the functionality of an application as per the customer needs without
taking any help of automation tools is known as manual testing. While performing the
manual testing on any application, we do not need any specific knowledge of any testing tool,
rather than have a proper understanding of the product so we can easily prepare the test
document.
Manual testing can be further divided into three types of testing, which are as follows:
Automation testing
Automation testing is a process of converting any manual test cases into the test
scripts with the help of automation tools, or any programming language is known as
automation testing. With the help of automation testing, we can enhance the speed
of our test execution because here, we do not require any human efforts. We need to
write a test script and execute those scripts.
Before jumping directly to the comparison, let's first see a brief description of white-
box and black-box testing.
It is also known as structural testing, clear box testing, code-based testing, and
transparent testing. It is well suitable and recommended for algorithm testing.
To read more about white box testing, you can refer to the following link – White box
testing.
Black box testing is less exhaustive than White Box and Grey Box testing methods. It
is the least time-consuming process among all the testing processes. The main
objective of implementing black box testing is to specify the business needs or the
customer's requirements.
In other words, we can say that black box testing is a process of checking the
functionality of an application as per the customer's requirement. Mainly, there are
three types of black-box testing: functional testing, Non-Functional
testing, and Regression testing. Its main objective is to specify the business needs
or the customer's requirements.
S.no On the basis of Black Box testing White Box testing
.
2. Also known as Black Box Testing is also known as It is also known as structural
functional testing, data-driven testing, testing, clear box testing, code-
and closed-box testing. based testing, and transparent
testing.
4. Algorithm testing It is not well suitable for algorithm It is well suitable and
testing. recommended for algorithm
testing.
9. Base of testing The base of this testing is external The base of this testing is coding
expectations. which is responsible for internal
working.
10. Exhaustive It is less exhaustive than White Box It is more exhaustive than Black
testing. Box testing.
12. Aim The main objective of implementing Its main objective is to check the
black box testing is to specify the code quality.
AD Conclusion
So, both white box testing and black box testing are required for the successful
delivery of software. But 100% testing is not possible with both cases. Tester is
majorly responsible for finding the maximum defects to improve the application's
efficiency. Both black box testing and white box testing are done to certify that an
application is working as expected.
So, that's all about the article. Hope you find the article helpful and informative.
Testing Documentation
Testing documentation is the documentation of artifacts that are created during or
before the testing of a software application. Documentation reflects the importance
of processes for the customer, individual and organization.
Projects which contain all documents have a high level of maturity. Careful
documentation can save the time, efforts and wealth of the organization.
There is the necessary reference document, which is prepared by every test engineer
before stating the test execution process. Generally, we write the test document
whenever the developers are busy in writing the code.
Once the test document is ready, the entire test execution process depends on the
test document. The primary objective for writing a test document is to decrease or
eliminate the doubts related to the testing activities.
o Test scenarios
o Test case
o Test plan
o Requirement traceability matrix(RTM)
o Test strategy
o Test data
o Bug report
o Test execution report
Test Scenarios
It is a document that defines the multiple ways or combinations of testing the
application. Generally, it is prepared to understand the flow of an application. It does
not consist of any inputs and navigation steps.
For more information about test scenario, refers to the below link:
https://www.javatpoint.com/test-scenario
Test case
It is an in-details document that describes step by step procedure to test an
application. It consists of the complete navigation steps and inputs and all the
scenarios that need to be tested for the application. We will write the test case to
maintain the consistency, or every tester will follow the same approach for
organizing the test document.
For more information about test case, refers to the below link:
https://www.javatpoint.com/test-case
Test plan
It is a document that is prepared by the managers or test lead. It consists of all
information about the testing activities. The test plan consists of multiple
components such as Objectives, Scope, Approach, Test Environments, Test
methodology, Template, Role & Responsibility, Effort estimation, Entry and Exit
criteria, Schedule, Tools, Defect tracking, Test Deliverable, Assumption,
Risk, and Mitigation Plan or Contingency Plan.
For more information about the test plan, refers to the below link:
https://www.javatpoint.com/test-plan
https://www.javatpoint.com/traceability-matrix
AD
Test strategy
The test strategy is a high-level document, which is used to verify the test types
(levels) to be executed for the product and also describe that what kind of technique
has to be used and which module is going to be tested. The Project Manager can
approve it. It includes the multiple components such as documentation formats,
objective, test processes, scope, and customer communication strategy, etc. we
cannot modify the test strategy.
Test data
It is data that occurs before the test is executed. It is mainly used when we are
implementing the test case. Mostly, we will have the test data in the Excel sheet
format and entered manually while performing the test case.
The test data can be used to check the expected result, which means that when the
test data is entered, the expected outcome will meet the actual result and also check
the application performance by entering the in-correct input data.
Bug report
The bug report is a document where we maintain a summary of all the bugs which
occurred during the testing process. This is a crucial document for both the
developers and test engineers because, with the help of bug reports, they can easily
track the defects, report the bug, change the status of bugs which are fixed
successfully, and also avoid their repetition in further process.
AD
Example
Let's take a real-time example of Microsoft, Microsoft launch every product with
proper user guidelines and documents, which are very explanatory, logically
consistent and easy to understand for any user. These are all the reasons behind their
successful products.
AD
AD
Based on these two methods, the priority of each risk can be estimated:
p=r*s
Where p is the priority with which the risk must be controlled, r is the probability of
the risk becoming true, and s is the severity of loss caused due to the risk becoming
true. If all identified risks are set up, then the most likely and damaging risks can be
controlled first, and more comprehensive risk abatement methods can be designed
for these risks.
1. Risk Identification: The project organizer needs to anticipate the risk in the
project as early as possible so that the impact of risk can be reduced by making
effective risk management planning.
A project can be of use by a large variety of risk. To identify the significant risk, this
might affect a project. It is necessary to categories into the different risk of classes.
There are different types of risks which can affect a software project:
2. Risk Analysis: During the risk analysis process, you have to consider every
identified risk and make a perception of the probability and seriousness of that risk.
There is no simple way to do this. You have to rely on your perception and
experience of previous projects and the problems that arise in them.
It is not possible to make an exact, the numerical estimate of the probability and
seriousness of each risk. Instead, you should authorize the risk to one of several
bands:
1. The probability of the risk might be determined as very low (0-10%), low (10-
25%), moderate (25-50%), high (50-75%) or very high (+75%).
2. The effect of the risk might be determined as catastrophic (threaten the
survival of the plan), serious (would cause significant delays), tolerable (delays
are within allowed contingency), or insignificant.
Risk Control
It is the process of managing risks to achieve desired outcomes. After all, the
identified risks of a plan are determined; the project must be made to include the
most harmful and the most likely risks. Different risks need different containment
methods. In fact, most risks need ingenuity on the part of the project manager in
tackling the risk.
Risk Leverage: To choose between the various methods of handling risk, the project
plan must consider the amount of controlling the risk and the corresponding
reduction of risk. For this, the risk leverage of the various risks can be estimated.
Risk leverage is the variation in risk exposure divided by the amount of reducing the
risk.
1. Risk planning: The risk planning method considers each of the key risks that have
been identified and develop ways to maintain these risks.
AD
For each of the risks, you have to think of the behavior that you may take to
minimize the disruption to the plan if the issue identified in the risk occurs.
You also should think about data that you might need to collect while monitoring
the plan so that issues can be anticipated.
Again, there is no easy process that can be followed for contingency planning. It rely
on the judgment and experience of the project manager.
2. Risk Monitoring: Risk monitoring is the method king that your assumption about
the product, process, and business risks has not changed.
Example:
Let us understand RMMM with the help of an example of high staff turnover.
Risk Mitigation:
To mitigate this risk, project management must develop a strategy for reducing
turnover. The possible steps to be taken are:
Meet the current staff to determine causes for turnover (e.g., poor
working conditions, low pay, competitive job market).
Mitigate those causes that are under our control before the project starts.
Once the project commences, assume turnover will occur and develop
techniques to ensure continuity when people leave.
Organize project teams so that information about each development
activity is widely dispersed.
Define documentation standards and establish mechanisms to ensure that
documents are developed in a timely manner.
Assign a backup staff member for every critical technologist.
Risk Monitoring:
As the project proceeds, risk monitoring activities commence. The project manager
monitors factors that may provide an indication of whether the risk is becoming
more or less likely. In the case of high staff turnover, the following factors can be
monitored:
General attitude of team members based on project pressures.
Interpersonal relationships among team members.
Potential problems with compensation and benefits.
The availability of jobs within the company and outside it.
Risk Management:
Risk management and contingency planning assumes that mitigation efforts have
failed and that the risk has become a reality. Continuing the example, the project is
well underway, and a number of people announce that they will be leaving. If the
mitigation strategy has been followed, backup is available, information is
documented, and knowledge has been dispersed across the team. In addition, the
project manager may temporarily refocus resources (and readjust the project
schedule) to those functions that are fully staffed, enabling newcomers who must
be added to the team to “get up to the speed“.
Drawbacks of RMMM:
It incurs additional project costs.
It takes additional time.
For larger projects, implementing an RMMM may itself turn out to be
another tedious project.
RMMM does not guarantee a risk-free project, infact, risks may also
come up after the project is delivered.