Software Engineering in 6 Hours
Software Engineering in 6 Hours
Software Engineering in 6 Hours
in/GATE
Unit-1(Introduction)
• Introduction to Software Engineering,
• Software Components,
• Software Characteristics,
• Software Crisis,
• Software Engineering Processes,
• Similarity and Differences from Conventional Engineering Processes,
Software Quality Attributes,
• Software Development Life Cycle (SDLC)
• Models:
• Water Fall Model,
• Prototype Model,
• Spiral Model,
• Evolutionary Development Models,
• Iterative http://www.knowledgegate.in/GATE
Enhancement Models.
Unit-2(Software Requirement Specifications (SRS))
• Requirement Engineering Process:
• Elicitation,
• Analysis,
• Documentation,
• Review and Management of User Needs,
• Feasibility Study,
• Information Modeling,
• Data Flow Diagrams,
• Entity Relationship Diagrams,
• Decision Tables,
• SRS Document,
• IEEE Standards for SRS.
• Software Quality Assurance (SQA): Verification and Validation,
http://www.knowledgegate.in/GATE
• SQA Plans, Software Quality Frameworks, ISO 9000 Models, SEI-CMM Model
Unit-3(Software Design)
• Basic Concept of Software Design,
• Architectural Design,
• Low Level Design: Modularization, Design Structure Charts, Pseudo Codes, Flow Charts,
• Coupling and Cohesion Measures,
• Design Strategies
• Function Oriented Design,
• Object Oriented Design,
• Top-Down and Bottom-Up Design.
• Software Measurement and Metrics:
• Various Size Oriented Measures: Halestead's Software Science,
• Function Point (FP) Based Measures,
• Cyclomatic Complexity Measures: Control Flow Graphs.
http://www.knowledgegate.in/GATE
Unit-4(Software Testing)
• Testing Objectives,
• Unit Testing,
• Integration Testing,
• Acceptance Testing,
• Regression Testing,
• Testing for Functionality and Testing for Performance,
• Top-Down and Bottom-Up
• Testing Strategies:
• Test Drivers and Test Stubs,
• Structural Testing (White Box Testing),
• Functional Testing (Black Box Testing),
• Test Data Suit Preparation,
• Alpha and Beta Testing of Products.
• Static Testing Strategies: Formal Technical Reviews (Peer Reviews), Walk Through, Code Inspection,
Compliance with Design and Coding Standards.
http://www.knowledgegate.in/GATE
Unit-5(Software Maintenance)
• Software as an Evolutionary Entity,
• Need for Maintenance,
• Categories of Maintenance: Preventive, Corrective and Perfective Maintenance,
• Cost of Maintenance,
• Software Re-Engineering,
• Reverse Engineering.
• Software Configuration Management Activities,
• Change Control Process,
• Software Version Control,
• Resource Allocation Models,
• Software Risk Analysis and Management.
http://www.knowledgegate.in/GATE
What is Software
• Program: A step by step instructions to perform a specific task on a computer in a
programming language is called program, i.e. set of instructions.
• Software: Is a program along with proper documentation (requirement analysis, design,
coding, testing) and user manuals which mainly includes installation guide and other manuals.
• Software = Program + documentation
http://www.knowledgegate.in/GATE
Software Components
• A program is a subset of software and it becomes software only if documentation and an operating procedure
manual are prepared.
• Program
• Documents
• Software documentation consist all the description, programs, graphics and instructions pertaining to
design, coding, testing and preparation of software.
• Operating Procedure(User Manual & Operational Manual)
• Provides information about what software is how to work with it how to install it on your system and
how to control all the activities of the software.
http://www.knowledgegate.in/GATE
Software Crisis
• Problems with software?
• The major problem with current scenario in Software industry is, software usually
overrun their development cost, they exceed their development duration limits, are
usually of poor quality.
• As long as there were no machines, programming was no problem at all; when we had a
few weak computers, programming became a mild problem, and now we have gigantic
computers, programming has become an equally gigantic problem.— Edsger Dijkstra, The
Humble Programmer (EWD340), Communications of the ACM
http://www.knowledgegate.in/GATE
What is Software Engineering
• In software industry we understand that there is an urgent need to use a proper strategies,
process and development cycles so that we can produce, or we can design quality products
that are within budget, with in time and must satisfy the requirement of their users.
• Software engineering is the systematic application of engineering principles and methods to
the design, development, testing, and maintenance of software products. It involves the use
of various tools, techniques, and methodologies to manage the software development
process and ensure the quality, reliability, and maintainability of software products.
http://www.knowledgegate.in/GATE
Characteristics of software
1. Software Development vs. Manufacturing:
1.Software is crafted through a process of coding and development.
2.Unlike physical products, it isn't produced in factories through a
manufacturing process.
http://www.knowledgegate.in/GATE
Characteristics of software
2. No Physical Wear and Tear:
1.Software doesn't deteriorate over time like physical objects.
2.Its performance doesn't degrade due to physical use.
http://www.knowledgegate.in/GATE
Characteristics of software
3. Custom-Built Nature:
1.Most software is specially designed to meet specific needs.
2.It's often not just a combination of pre-existing components but requires
unique coding and design.
http://www.knowledgegate.in/GATE
Characteristics of software
4. Intangibility of Software:
1.Software can't be touched or handled physically.
2.It exists as code and functions within computers or digital devices.
http://www.knowledgegate.in/GATE
Major Problems in Software Development
http://www.knowledgegate.in/GATE
Major Problems in Software Development
• Poor Project Management:
• Inadequate planning, monitoring, and control
• Lack of risk assessment and mitigation
• Multiplicity of software development life cycle
• Selection of wrong technology or tool for development
http://www.knowledgegate.in/GATE
Major Problems in Software Development
• Insufficient Time and Budget:
• Unrealistic deadlines and resource constraints
• Inefficient resource allocation and prioritization
http://www.knowledgegate.in/GATE
Major Problems in Software Development
• Lack of Skilled Personnel:
• Inadequate expertise in the development team
• High turnover rates and loss of experienced staff
http://www.knowledgegate.in/GATE
Major Problems in Software Development
• Resistance to Change:
• Difficulty in adapting to new technologies or processes
• Reluctance to modify established practices or mindsets
• Rapid technology advancement
http://www.knowledgegate.in/GATE
Similarity and Differences from conventional Engineering Process
http://www.knowledgegate.in/GATE
Similarity and Differences from conventional Engineering Process
• Design Flexibility and Iteration:
• Similarity: Both processes involve iterative design and prototyping
• Difference: Software engineering allows for greater flexibility and ease of
modification due to the non-physical nature of software
http://www.knowledgegate.in/GATE
Similarity and Differences from conventional Engineering Process
• Quality Assurance and Testing:
• Similarity: Both processes emphasize the importance of testing and quality
assurance to ensure product performance and reliability
• Difference: Conventional engineering often involves physical testing of
prototypes, while software engineering relies on various types of software
testing, such as unit, integration, and system testing
http://www.knowledgegate.in/GATE
• Project Management and Collaboration:
• Similarity: Both processes require effective project management, team
collaboration, and communication among stakeholders
• Difference: Software engineering projects may involve distributed teams and
rely more heavily on digital communication and collaboration tools
http://www.knowledgegate.in/GATE
• Maintenance and Evolution:
• Similarity: Both processes involve maintenance and support activities to
ensure the ongoing performance and reliability of the product
• Difference: Software engineering typically demands more frequent updates,
patches, and evolution due to the rapidly changing nature of technology and
user requirements
http://www.knowledgegate.in/GATE
• For hardware Same production cost every time, for software production cost only for the first
time and then only maintenance cost. This life cycle of the hardware follows the bath tub
curve, while in the life cycle of software failure intensity goes down with time
http://www.knowledgegate.in/GATE
Software Quality Attributes
http://www.knowledgegate.in/GATE
Software Quality Attributes
• Correctness: The ability of the software to perform its intended tasks effectively and meet
user requirements.
• Usability: The ease with which users can learn, operate, and navigate the software.
• Efficiency: The optimal use of system resources, such as memory and processing power, to
achieve desired outcomes.
http://www.knowledgegate.in/GATE
• Maintainability: The ease of updating, modifying, and fixing the software to accommodate
changing requirements or fix issues.
• Scalability: The software's capacity to handle increased workloads or user demands without
compromising performance.
• Security: The software's ability to protect against unauthorized access, data breaches, and
other potential threats.
http://www.knowledgegate.in/GATE
• Modularity: The degree to which the software's components are organized into separate,
manageable units that can be independently developed or updated.
• Reusability: The potential for the software's components to be used in other applications or
contexts, reducing development time and costs.
• Testability: The ease with which the software can be tested to ensure it meets its
requirements and performs as expected.
http://www.knowledgegate.in/GATE
Software Process
http://www.knowledgegate.in/GATE
• Feasibility study
• Find abstract definition of the problem
• Majorly checking the financial and technical feasibility
• Analysis of cost and befit ratio
• Checking availability of infrastructure and human resource
• Examination of alternative solution strategies
http://www.knowledgegate.in/GATE
• Requirement analysis and specification
• Try to understood the exact and complete requirement of the customer and document
them properly.
• Try to collect and analysis all data related to the project.
• In last, a large document will be written in the natural language which will describe what
the system will do without describing it how, called SRS Software Requirement
Specification.
• Very critical phase because, a small error hear can result of sever problem in later stages
http://www.knowledgegate.in/GATE
• Designing
• We transform the requirements into a structure that is suitable for implementation of the
code in a specific programming language.
• Overall architecture and the algorithmic strategy are chosen (Coupling and cohesion).
• Lastly will prepare a document called SDD (software design description), which will
describe how the system will perform functionality.
http://www.knowledgegate.in/GATE
• Coding
• Goal of coding is to translate the design of the system into a code of
programming language.
• It affects both testing and maintenance, so also critical feature.
• We will be discussing some guidelines for how to write maintainable and
readable code.
http://www.knowledgegate.in/GATE
• Testing
• Because of human errors there will be a bug or fault in the code and
if that bug/fault is executed it become a failure.
• Software testing is a process of executing a program with the
intention of finding bugs or fault in the code.
http://www.knowledgegate.in/GATE
• Implementation
• Software is installed on the user site and training of the user
and h/w requirement check is done.
http://www.knowledgegate.in/GATE
• Maintenance
• Any change made in the software after its official release is called
maintenance. It could be because of various reasons.
• Adaptive
• Corrective
• Perfective
http://www.knowledgegate.in/GATE
SOFTWARE DEVELOPMENT LIFE CYCLE
• Software development organization follows some process when developing a s/w product, in
mature organization this is well defined and managed.
• In SDLC we development s/w in a systematic and disciplined manner. SDLC will define entry
and exit for every stage. It makes assessment possible, time prediction, cost prediction,
scheduling, to identify faults early possible.
• Selection of a correct development model play an important role in cost, quality, overall
success of the project.
http://www.knowledgegate.in/GATE
Waterfall Model
• Developed in the 1970s by Winston W. Royce.
• Inspired by manufacturing and construction
processes, where each step relies on the
completion of the previous one.
http://www.knowledgegate.in/GATE
• It is a simplest SDLC in which phases are
organised in a linear and sequential order.
• It is called waterfall model as its
diagrammatic representation resembles as
like a waterfall, also known as classical life
cycle model.
• This type of model is basically used for the
Small to medium-sized projects with clear,
well-defined requirements. When the
technology and tools to be used are well-
known and stable.
• Projects where minimal changes are
expected during the development process,
and predictability is prioritized over
adaptability. http://www.knowledgegate.in/GATE
Advantage
• Easy to understand and implement, with
well-defined stages and clear milestones.
http://www.knowledgegate.in/GATE
Disadvantage
• Not suitable to accommodate any change
or iteration once development has begun. It
is always difficult to acquire of the
requirement in the starting.
http://www.knowledgegate.in/GATE
PROTOTYPE MODEL
• key design details to consider when designing a 3bhk flat in brief:
• Living Room: Sofa set, coffee table, entertainment center, lighting, natural light, TV unit,
indoor plant/art piece, coordinated color scheme.
• Dining Area: Space for 4-6 seater dining table, lighting fixture, storage space, mirror/artwork.
• Kitchen: Storage cabinets, refrigerator, stove, oven, ventilation, lighting, durable countertops
and backsplash.
• Master Bedroom: Space for queen/king-sized bed, wardrobe, dressing table, natural light,
coordinated color scheme.
• Other Bedrooms: Space for single/double bed, wardrobe, natural light, coordinated color
scheme.
• Bathrooms: Space for shower, sink, toilet, ventilation, storage space, water-resistant
materials.
• Balcony: Space for seating/table, natural light, outdoor view, coordinated color scheme.
http://www.knowledgegate.in/GATE
PROTOTYPE MODEL
http://www.knowledgegate.in/GATE
PROTOTYPE MODEL
http://www.knowledgegate.in/GATE
PROTOTYPE MODEL
• Most of the customer are not sure about the
functionality they require from the software, as
a result the final s/w is not according to exact
demand.
http://www.knowledgegate.in/GATE
• Then shown to the user, as per the feedback of
the user prototype is rebuilt and modified and
again shown to the user, the process continue
till the customer is not satisfied.
http://www.knowledgegate.in/GATE
Evolutionary prototype
• Also known as incremental or iterative prototyping, develops a working
prototype, gradually improving and refining it based on user feedback.
• Prototype evolves into the final product over time with feature additions and
modifications. Accommodates changing requirements during the development
process.
http://www.knowledgegate.in/GATE
Throwaway prototype
• Throwaway prototyping, also known as rapid or exploratory prototyping, involves
creating a temporary, simplified version of the software to validate the feasibility of
specific features, test ideas, or gain user feedback on the initial design. The
throwaway prototype is not intended to be used in the final product; instead, it is
discarded once it has served its purpose.
• Once the developers have gathered the necessary information, they can then start
developing the actual software product from scratch, using the lessons learned from
the prototype. This approach is particularly useful for testing complex or risky
features, as it helps to minimize the potential impact of these features on the overall
project.
http://www.knowledgegate.in/GATE
• Advantage
• Customer get a chance to see the product early in the life cycle, and give
important feedback.
• There is a scope to accommodate new requirements.
• Developer and more confident, and hence risk is reduced.
• Disadvantage
• After seeing the early prototype use demand the actual system soon.
• If not managed properly the iterative process can run for a long time.
• If user is not satisfied, he may lose its interest in the project.
http://www.knowledgegate.in/GATE
Spiral Model
• Barry boehm recognised the project risk factor into a life cycle model, the result
was the spiral model, which was presented in 1986.
http://www.knowledgegate.in/GATE
• The radial dimensions of the model represent
the cumulative costs.
• Each path around the spiral is the indicative of
the increased cost.
• The angular dimensions represent the progress
made in the completing each cycle, each loop
of the spiral from X-axis clockwise through 360
represent one phase, which is divided into four
sectors
• Determining objectives and planning the
next phase
• Risk analysis
• Engineering the product, develop and test
the product
• Customer evaluation
http://www.knowledgegate.in/GATE
• Advantages
• Provide early and frequent feedback of the customer, Additional Functionality
can be added at a later date.
• Resolve all the possible risk involved in the product early in the life cycle.
http://www.knowledgegate.in/GATE
• Disadvantages
• Not suitable for small size project as the cost of risk analysis may exceed the
actual cost of the project, High administrative overhead.
http://www.knowledgegate.in/GATE
Incremental Process / Incremental Development Model
• Incremental development is based on the idea of developing an initial implementation,
exposing this to user feedback, and evolving it through several versions until an
acceptable system has been developed.
• In incremental model the whole requirement is divided into various builds. Multiple
http://www.knowledgegate.in/GATE
• Development cycles take place here, making the life cycle a “multi-waterfall”
cycle.
• Cycles are divided up into smaller, more easily managed modules. Each module
passes through the requirements, design, implementation and testing phases.
http://www.knowledgegate.in/GATE
• A working version of software is produced during the first module, so you have
working software early on during the software life cycle.
• Each subsequent release of the module adds function to the previous release.
The process continues till the complete system is achieved.
• Generally, the early increments of the system should include the most important
or most urgently required functionality.
• tries to combine the benefits of both prototyping and the waterfall model.
http://www.knowledgegate.in/GATE
Advantages of Incremental model:
• Generates working software quickly and early during the software life
cycle.
• This model is more flexible – less costly to change scope and
requirements.
• It is easier to test and debug during a smaller iteration.
• In this model customer can respond to each built.
• Easier to manage risk because risky pieces are identified and handled
during it’d iteration.
http://www.knowledgegate.in/GATE
Disadvantages of Incremental model
http://www.knowledgegate.in/GATE
Aspect Evolutionary Development Models Iterative Enhancement Models
Adaptation and evolution of software in
Continuous improvement and refinement
Focus response to changing requirements and user
of a software system in iterations.
feedback.
May start with a basic prototype or a partially Begins with a basic version of the software,
Initial Release
functional system to gather feedback. usually with minimal functionality.
Heavily relies on user feedback to guide each Uses feedback to make improvements in
Feedback
evolutionary stage, often with significant each iteration, usually with smaller,
Integration
changes between stages. incremental changes.
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
Difficulties of Requirement Engineering
• Requirement are difficult to uncover: no one give the complete requirement in
the first time, if someone does then also requirement are incomplete
http://www.knowledgegate.in/GATE
• Requirement Changes: with the development process requirements get added
and changed as the user begins to understand the system and his or her real
need
http://www.knowledgegate.in/GATE
• Tight project schedule: have insufficient time to do a decent job
http://www.knowledgegate.in/GATE
• Communication Barrier: user and developer have different technical
background and tastes
http://www.knowledgegate.in/GATE
• Lack of resources: there may not be enough resources to build software that
can do everything the customer wants
http://www.knowledgegate.in/GATE
• Types of requirement
• Known requirement: Which is already known to the stake holder
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
• There are majorly four steps in requirement analysis
• Requirement Elicitation: Gathering of Requirement
• Requirement Review: Review is carried out to improve the quality of the SRS
http://www.knowledgegate.in/GATE
Methods of requirement elicitation
• Is the most difficult, most critical, most error-prone and communication
intensive aspect of the s/w development. It can only succeed only through an
effective customer developer partnership.
http://www.knowledgegate.in/GATE
• Interview
• Both parties would like to understand each other
• Interview can be of two types open-ended or structured
• In open ended, there is no present agenda, context free questions can be
asked to understand the problem, to have an over view over the situation
• In structured interview, agenda is pre-set.
http://www.knowledgegate.in/GATE
• Brain Storming
• A kind of group discussion, which lead to ideas very quickly and help to
promote creative thinking
• Very popular now a days and is being used in most of the organizations
• All participants are encouraged to say whatever idea come to their mind and
no one will be criticized for any idea no matter how goofy it seems
http://www.knowledgegate.in/GATE
• Delphi technique
• Here participants are made to write the requirement on a piece of paper,
then these requirements are exchanged among participants who gave their
comments to get a revised set of requirements. This process is repeated till
the final consensus is reached
http://www.knowledgegate.in/GATE
• FAST (facilitated application
specification technique)
• This approach encourages the
creation of joint team of customer
and developer who works together
to understand correct set of
requirements
• Everyone is asked to prepare a list of
• What surrounds the system
• Produced by the system
• Used by the system
• List of service, constraints, and
performance criterion
• Then we divide these lists into
smaller list to work in smaller
teams http://www.knowledgegate.in/GATE
• QFD (quality functional deployment)
• Its emphases to incorporate the voice
of the customer with importance
• Then according to customer, a value
indicating a degree of importance, is
assigned to each requirement. Thus,
the customer, determine the
importance of each requirement on a
scale of 1 to 5 as:
• 5 points: very important
• 4 points: important
• 3 points: not important but
nice to have
• 2 point: not important
• 1 point: unrealistic, requires
http://www.knowledgegate.in/GATE
further explanation
• Use case approach
• These are structured description of the user requirement. It is a narrative
which describe the sequence of events from user’s perspective
• Use case diagrams are graphical representation to show the system at
different levels
• They are some times supportive my the activity diagrams, to understand the
work flow
http://www.knowledgegate.in/GATE
Requirement analysis
• In this phase we analysis all the set of requirements to find any inconsistency or
conflicts.
• In requirement gathering phase our all concentration was on getting all the set
of requirements but now, we see how many requirements are contradictory to
each other or requires further exploration to be considered further.
• Different tools can be used Data flow diagram, Control flow diagram, ER diagram
etc
http://www.knowledgegate.in/GATE
Data Flow Diagram
• A data flow diagram or bubble chart is a
graphical representation of the flow of
data through a system. It clarifies
systems requirements and identify
major transformations.
http://www.knowledgegate.in/GATE
• Components of DFD
• Function/Process
• Data Store
• External Entity
• Data Flow
http://www.knowledgegate.in/GATE
DFD uses hierarchy to maintain transparency thus multilevel DFD’s can be created.
Levels of DFD are as follows:
• 0-level DFD: It represents the entire system as a single bubble and provides an
overall picture of the system.
http://www.knowledgegate.in/GATE
• 1-level DFD: It represents the main functions of the system and how
they interact with each other.
http://www.knowledgegate.in/GATE
• 2-level DFD: It represents the processes within each function of the
system and how they interact with each other.
The picture can’t be displayed.
http://www.knowledgegate.in/GATE
Control Flow Diagram/Control flow chart/Flow Chart
• A flow chart is a graphical representation of how control flow during the execution of a program. It use
the following symbols to represent a system’s control flow.
http://www.knowledgegate.in/GATE
• Flow Chart of software installation
http://www.knowledgegate.in/GATE
Data Dictionary
• Purpose: Serves as a repository for data item details in Data Flow Diagrams,
ensuring consistent definitions between customers and developers.
• Content: Includes data item name, aliases, and purpose, promoting clear
understanding.
• Relationships & Range: Records data item relationships and value ranges (e.g.,
marks between 0-100).
• Data Flows & Structures: Tracks process interactions with data items and
documents their structure or composition.
• Role in Requirements: Essential in initial stages for defining customer data
items, aligning developer and customer understanding.
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
Entity Relationship Diagram
• ER Diagram a non-technical design method works on conceptual level based on
the perception of the real world.
• Three main constructs are data entities, their relationships and their associated
attributes
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
Decision Tables
• A decision table is a brief visual representation for specifying which actions to
perform depending on given conditions.
• A decision table is a good way to settle with different combination inputs with
their corresponding outputs.
• Decision tables are very much helpful in requirements management and test
design techniques. It provides a regular way of starting complex business rules,
that is helpful for developers as well as for testers.
http://www.knowledgegate.in/GATE
Aspect Decision Table Decision Tree
Tabular format, lists conditions, Tree-like diagram, shows decision
Structure
actions, and rules. paths with branches.
Based on various combinations of
Decision Based on sequential decisions
conditions leading to specific
Making leading to outcomes.
actions.
Simple for representing complex
More intuitive for visualizing
logical relationships, can become
Ease of Use decision paths, can become complex
cumbersome with many
with many branches.
variables.
Preferred in scenarios where all
Ideal for situations where decision-
possible combinations of
Application making process is more sequential
conditions and outcomes need
and hierarchical.
http://www.knowledgegate.in/GATE
clear representation.
Requirement Documentation
• After have final set of requirements it is
also necessary to document them
properly in a standard format, so that can
be understood easily even by non-
technical person.
• Here IEEE provides standard for SRS
documents in IEEE830, using which we
can make SRS document more readable,
modifiable, and a format which can be
followed through the world.
http://www.knowledgegate.in/GATE
IEEE Standard for SRS
1-Introduction
1.1-Purpose
1.2-Scope/Intended Audience
1.3-Definition, Acronyms and Abbreviation
1.4-References / Contact Information / SRS team member
1.5-Overview
http://www.knowledgegate.in/GATE
2-Overall Description
2.1-Product Perspective
2.2-Product Functions
2.3-User Characteristics
2.4-General Constraints
2.5-Assumptions and dependencies
http://www.knowledgegate.in/GATE
3-Specific Requirement
3.1-External interface requirements(user/hardware/software interface)
3.2-Functional requirements
3.3-Performance requirements
3.4-Design constraints(Standards compliance/hardware limitations)
3.5-Logical database requirements
3.6-Software system attributes(Reliability, availability, Security, Maintainability)
http://www.knowledgegate.in/GATE
4-Change Management process
5-Document approval
5.1-Tables, diagrams, and flowcharts
5.2-Appendices
5.3-Index
http://www.knowledgegate.in/GATE
Requirement Review
• Before finalising the requirement one more review specially by a third party,
who a master in the industry is advisable, to have a fresh look over the system,
and can mentions any points if missed by team.
http://www.knowledgegate.in/GATE
Software Quality Assurance (SQA)
• Definition: SQA is a process ensuring software products meet quality standards
and requirements.
http://www.knowledgegate.in/GATE
• Standards: Adheres to international standards like ISO 9001, IEEE 730, and
CMMI.
• Metrics: Employs metrics like defect density and code coverage to evaluate
quality.
http://www.knowledgegate.in/GATE
• Training: Emphasizes skill development for developers and testers to meet
quality standards.
http://www.knowledgegate.in/GATE
Verification/White Box
• Verification ensures that the software product is designed and developed
according to the specified requirements and standards. “Are we building the
product right”
http://www.knowledgegate.in/GATE
Validation/Black Box
• Validation ensures that the software product meets the end-user requirements
and is fit for its intended purpose, “Are we Building the right product”. Ensures
that the product meets its design specifications
http://www.knowledgegate.in/GATE
Software Quality Factors
• The various factors, which influence the software, are termed as software factors. They can be
broadly divided into two categories.
• The first category of the factors is of those that can be measured directly such as the
number of logical errors.
• Second category clubs those factors which can be measured only indirectly. For example,
maintainability but each of the factors is to be measured to check for the content and the
quality control.
http://www.knowledgegate.in/GATE
• Several models of software quality factors and their categorization have been
suggested over the years. The classic model of software quality factors,
suggested by McCall in 1977). The 11 factors are grouped into three categories .
http://www.knowledgegate.in/GATE
ISO 9000 Models in Software Engineering
http://www.knowledgegate.in/GATE
• Key Components of ISO 9000
• Quality Management System (QMS):
• Defines policies and objectives for quality, Documentation of procedures and
processes, Monitoring, measurement, and analysis of processes, Improvement
opportunities and corrective actions.
• Management Responsibility:
• Top management commitment to quality Establishment of a quality policy Ensuring
adequate resources for QMS implementation Reviewing QMS performance regularly
• Resource Management:
• Provision of necessary resources (human, infrastructure, work environment)
Competence and training of personnel Infrastructure maintenance and improvement
• Product Realization:
• Requirements determination and communication Product design and development
Verification, validation, and testing Release, delivery, and post-delivery support
• Measurement, Analysis, and Improvement:
• Monitoring and measurement of processes and products Internal audits to ensure
compliance Corrective and preventive actions Continual improvement of the QMS
http://www.knowledgegate.in/GATE
1. ISO 9000 Principles
1. Customer focus
2. Leadership
3. Process approach
4. Continual improvement
http://www.knowledgegate.in/GATE
Benefits of ISO 9000 in Software Engineering
http://www.knowledgegate.in/GATE
Implementation Steps for ISO 9000 in Software Engineering
http://www.knowledgegate.in/GATE
CAPABILITY MATURATY MODEL
• CMM is a strategy for improving the software process, to generate quality software.
• The Capability Maturity Model (CMM) is a development model created after a study of data
collected from organizations that contracted with the U.S. Department of Defence, who
funded the research. The term "maturity" relates to the degree of formality and optimization
of processes, from ad hoc practices, to formally defined steps, to managed result metrics, to
active optimization of the processes.
• It is use to judge the maturity of s/w process an organization and to identify the key practise
that are required to increase the maturity of theses process. There are five levels of the CMM
http://www.knowledgegate.in/GATE
• Initial (process unpredictable and poorly controlled)
http://www.knowledgegate.in/GATE
• Repeatable (basic project management)
• Planning and managing of new projects are based on the experience with the
similar projects
• Realistic plans based on the performance based on the previous projects
http://www.knowledgegate.in/GATE
• Defined (process standardization)
• Process of developing and maintaining s/w across the organization is
documented including engineering and management.
• Training programs are implemented to ensure that the staff have skills and
knowledge required
• Risk management
http://www.knowledgegate.in/GATE
• Managed (Quantitative measurement)
• Organization set quantitative goals for both product and process.
• Here process is predictable both with respect to time and cost
http://www.knowledgegate.in/GATE
• Optimized (continuous process improvement)
• Here organization analysis defects to determine their causes and goals is to
preventing the occurrence of defects
• Here company continuously improve the process performance of their
projects
http://www.knowledgegate.in/GATE
Unit-3(Software Design)
• Basic Concept of Software Design,
• Architectural Design,
• Low Level Design: Modularization, Design Structure Charts, Pseudo Codes, Flow Charts,
• Coupling and Cohesion Measures,
• Design Strategies
• Function Oriented Design,
• Object Oriented Design,
• Top-Down and Bottom-Up Design.
• Software Measurement and Metrics:
• Various Size Oriented Measures: Halestead's Software Science,
• Function Point (FP) Based Measures,
• Cyclomatic Complexity Measures: Control Flow Graphs.
http://www.knowledgegate.in/GATE
Design
• In software design phase input is SRS document and output is SDD.
• Software designing is most creative process, where we actually decide how a
problem will be solved.
http://www.knowledgegate.in/GATE
Characteristics of a Good SDD
• The SDD must contain all the requirement which were given in SRS.
http://www.knowledgegate.in/GATE
Steps of design
• Software designing is a 3-step process
http://www.knowledgegate.in/GATE
Interface design
• In this, we treat system as a whole and understand the relationship between the
system & environment.
• Here we treat system as a black box and do not concentrate how a function will be
implemented but we decide what is input & what should be the output according to
user requirement or SRS
I/P O/P
System
http://www.knowledgegate.in/GATE
Architectural design
• In this we understand what are the major modules that must be
implemented in the system and what are their responsibility and how
they will communicate with each other.
• We do not give stress on individual modules but concentrate coupling
and cohesion between the modules. Here we treat modules as black
box.
http://www.knowledgegate.in/GATE
Detailed design/Low level design
• In this, specification of internal elements of all modules their functions, their
processing methods, data structure, algorithms, everything is defined properly.
http://www.knowledgegate.in/GATE
Modularity
• In modular architecture, we understand that a system is composed of well
defined conceptually simple and independent units interacting through a well-
defined interface.
http://www.knowledgegate.in/GATE
• Advantage of having modular architecture
• Easy to understand and explain
• It is easy to design and document
• It is easy to code and test.
• It is easy to maintain.
http://www.knowledgegate.in/GATE
Design Structure Charts
• Structure Chart represent hierarchical structure of modules. It breaks down the entire
system into lowest functional modules, describe functions and sub-functions of each
module of a system to a greater detail.
• Structure Chart partitions the system into black boxes (functionality of the system is
known to the users but inner details are unknown). Inputs are given to the black boxes
and appropriate outputs are generated.
http://www.knowledgegate.in/GATE
Symbols used in construction of structured chart
• Module: It represents the process or task of the system. It is of three types.
• Control Module: A control module branches to more than one sub module.
• Sub Module: Sub Module is a module which is the part (Child) of another
module.
• Library Module: Library Module are reusable and invokable from any
module.
http://www.knowledgegate.in/GATE
• Conditional Call: It represents that control module can select any of the sub
module on the basis of some condition.
http://www.knowledgegate.in/GATE
• Loop (Repetitive call of module): It represents the repetitive execution of
module by the sub module. A curved arrow represents loop in the module. All
the sub modules cover by the loop repeat execution of module.
http://www.knowledgegate.in/GATE
• Data Flow: It represents the flow of data between the modules. It is
represented by directed arrow with empty circle at the end.
http://www.knowledgegate.in/GATE
• Control Flow: It represents the flow of control between the modules.
It is represented by directed arrow with filled circle at the end.
http://www.knowledgegate.in/GATE
• Physical Storage: Physical Storage is that where all the
information are to be stored.
http://www.knowledgegate.in/GATE
• Structure chart for an Email server
http://www.knowledgegate.in/GATE
Benefits of Design Structure Charts in Software Engineering
http://www.knowledgegate.in/GATE
Pseudocode
• Pseudocode is a simplified, informal representation of an algorithm or a program that
uses a mix of natural language and programming constructs.
• It is used to illustrate the high-level structure and logic of an algorithm without the
syntactic details of a specific programming language.
• Pseudocode helps developers plan and discuss algorithms, making it easier to
understand and translate into actual code later in the software development process.
http://www.knowledgegate.in/GATE
Coupling and cohesion
• Coupling and cohesion are two parameters on which we can understand the
quality of modularity in the design of a software
• Coupling
• The measure of interdependence of one module over another module
http://www.knowledgegate.in/GATE
• Types of coupling
• Data Coupling: Here two modules communicate with each other
only by-passing data. it is most desired type of coupling. e.g.
addition by using call by value is an example of data coupling.
http://www.knowledgegate.in/GATE
• Stamp Coupling: When two modules communicate with each other by
passing of data structure is called stamp coupling. e.g. addition of two
value but by call by reference.
http://www.knowledgegate.in/GATE
• Control Coupling: The module is set to be controlled coupled if they
communicate using control information with each other. e.g.
dependence of two modules on each other because of flag.
http://www.knowledgegate.in/GATE
• External Coupling: in case of external coupling two modules on each
other external to the logic of software (mostly because of hardware
issue). e.g. data bus, CPU, main memory etc.
http://www.knowledgegate.in/GATE
• Common Coupling: Two modules are set to be common coupled if
they share some global data. e.g. synchronization issue between the
processes.
http://www.knowledgegate.in/GATE
• Content Coupling: when one module is a part or context of another
module then it is called content coupling it is worst type of coupling.
http://www.knowledgegate.in/GATE
Cohesion
• We mean the measure of functions strength of the module.
http://www.knowledgegate.in/GATE
• Types of cohesion
• Coincidental Cohesion: as the name suggest is the worst kind of
cohesion where the only relationship between the functions which
are present in a module is random or coincidental.
http://www.knowledgegate.in/GATE
• Logical Cohesion: All the elements of a module perform similar or
slightly similar operations, for e.g. if mouse, printer, scanner functions
are written in the same module.
http://www.knowledgegate.in/GATE
• Temporal Cohesion: In case of temporal cohesion functions are related by a fact
that all the task must be executed in the same time span. so, there is a flow
control between the functions. for e.g. two functions first which catch the
exception and second which flash an error message.
http://www.knowledgegate.in/GATE
• Procedural Cohesion: Here functions of a module are related to each
other through a flow control i.e. they are part of an algorithm or
procedure. for e.g. two functional first which check the file access
permission and second which opens the file.
http://www.knowledgegate.in/GATE
• Communicational Cohesion: in case of communicational cohesion
different functions are operating on the same data structure. for e.g.
push and pop.
http://www.knowledgegate.in/GATE
• Sequential Cohesion: here sequence is very important and the
functions are the part of sequence along with data dependency for
e.g. function1 which provides the data and function2 which process
the data.
http://www.knowledgegate.in/GATE
• Functional Cohesion: in functional cohesion, different functions of a
module cooperate with each other. perform a single function. for e.g. a
module which control mouse must have different functions like accessing
the location of the track ball, then decoding it on the screen and give an
appropriate cursor movement
http://www.knowledgegate.in/GATE
Design Approach
• There are two popular approach using which design is done
http://www.knowledgegate.in/GATE
• In top down approach, the problem is divided into small no of
programs according to user requirements and we repeat the process
until the problem become so easy till we can solve it directly.
http://www.knowledgegate.in/GATE
• Advantage
• More Systematic.
• Easy to understand and provide a modular architecture.
• In correspondence with user requirement cost and time prediction is
possible.
• Should be used with small and medium size products.
• Used mostly.
• Disadvantage
• When a problem is very complex and very large then we can not understand
the entire problem as a whole.
http://www.knowledgegate.in/GATE
• Bottom Up: This approach is important as the s/w grows in complexity in a
systematic fashion. if the problem is very difficult to understand instead of
understanding the entire problem, we must solve some sub-problem and then
should keep repeating the process until the entire problem is solved.
http://www.knowledgegate.in/GATE
• Advantage
• Should be used on large size projects.
• Easy to use by designers as we work in incremental fashion.
• Disadvantage
• it has complex architecture very difficult to understand and manage.
http://www.knowledgegate.in/GATE
Estimation model
• Here we try to estimate about two things time and cost of
development
http://www.knowledgegate.in/GATE
Post / Delayed estimation
http://www.knowledgegate.in/GATE
Base estimation
• In base estimation we predict the cost and time of the entire project
based on the experience which we have gained from the previous
projects.
http://www.knowledgegate.in/GATE
Decomposition based estimation
• It is used for large projects where decomposition of the problem into smaller
problems is done, usually it is done on two bases.
http://www.knowledgegate.in/GATE
• Effort = Size / Productivity
http://www.knowledgegate.in/GATE
Q Consider a application which contain 3 modules M1, M2, M3 having following size
M1 – 14.4 KLOC
M2 – 21.5 KLOC
M3 – 8.4 KLOC
if the cost of writing 1KLOC is 50 dollars. Find the cost of the application. if the
productivity of the developer is 4 KLOC per month. Find the effort, if the project is
required to be completed in month then predict the team size.
http://www.knowledgegate.in/GATE
Q Consider a application which if required to be developed by drdo contain 3 modules M1, M2,
M3 having following size
M1 – 4600 LOC optimistic developer
M2 – 6900 LOC most likely developer
M3 – 8600 LOC pessimistic developer
What is the expected size of application
In general if the software development effort is 10 person-month, find the productivity.
if the development is required to be done in 2 months then find the team size?
Size = (Soptimistic + 4 X Slikely + Spessimistic)/6
http://www.knowledgegate.in/GATE
Indirect Estimation
• Here we use functional points to predict the cost of development, it is a better technique in
general compare to kloc because it considers the logical complexity of the product, as in
general it is not necessary that the larger the project the more complex it will be code.
• (size oriented, function oriented, extended functions point matrices) here we say that the
size of the software is directly dependent on the number and type of different functions it
performs.
FP
2D 3D
http://www.knowledgegate.in/GATE
• 2D- in 2D FP we consider only information domain where we consider mainly five factors, as
follows:
• No of inputs: Each user data input is counted
• No of outputs: Output refers to reports, screen and error messages
• No of inquiries: The no of distinct interactive queries made by user which requires specific
actions by the system
• No of files: Each logical file. So either can be data structure or physical files
• No of external interfaces: Data files on tapes, disk etc. and other interfaces that are used
to transmit information to other systems are counted
FP
2D 3D
Unadjustable Adjustable
http://www.knowledgegate.in/GATE
Function point calculation
http://www.knowledgegate.in/GATE
• In Unadjustable case
o FP= total_count
o In Adjustable case
o FP= total_count * EAF(error adjustable factor/Cost adjustment Factor)
o EAF = 0.65 + 0.01*∑!"#$
!"# 𝑓 i
o In FP analysis 14 factors are indirectly involved to estimate the size of the software.
http://www.knowledgegate.in/GATE
• 3D- In 3D FP we consider only information domain where we consider
mainly five factors, and along with Function domain and behaviour
domain.
FP
2D 3D
Unadjustable Adjustable
http://www.knowledgegate.in/GATE
Empirical models
• Empirical models are estimation models which uses empirically
derived formulas for predicting based on LOC or FP.
http://www.knowledgegate.in/GATE
COCOMO(1981)
• COCOMO model (construction cost model) is the most widely used
estimating technique. It is a regression-based model developed by
barry boehm, he postulated that there are essentially three important
classes of the software.
• Organic(application)
• Semidetached(utility)
• Embedded(system)
http://www.knowledgegate.in/GATE
• In order to classify a product into any of the three proposed classes, we take
into consideration the characteristics of the product as well as those of the
development team.
• According to the brooks the relative level of the product complexity for the
three categories of product are in the ratio 1:3:9 for application, utility and
system programs relatively
http://www.knowledgegate.in/GATE
• Organic: Relatively small group work in a familiar environment to
develop well understood application program, here little innovation is
required, constraints and deadlines are few and the development
environment is stable.
http://www.knowledgegate.in/GATE
• Semidetached: Project teams consist of a mixture of experienced and
inexperienced staff. It is of medium size, some innovation is required,
constraints and deadlines are moderate and the development
environment is somewhat fluid.
http://www.knowledgegate.in/GATE
• Embedded: the s/w is strongly coupled to complex h/w, such as air traffic
control, ATM’s or weapon systems. The project team is large, a great deal of
innovation is required, constraints and deadlines are tight and the development
environment consist of many complex interfaces, including those with h/w and
with customer.
http://www.knowledgegate.in/GATE
Basic COCOMO
• A simple and static cost estimation model that calculates project effort and duration based
on the size of the software, measured in thousands of lines of code (KLOC)
http://www.knowledgegate.in/GATE
Basic COCOMO
• DE = ab (KLOC) bb
• DD = cb (KLOC) db
• Team Size = DE / DD
http://www.knowledgegate.in/GATE
20KLOC Organic Semidetached Embedded
Team Size 5 7 11
• DE = ab (KLOC) bb
• DD = cb (KLOC) db
• Introduces 15 cost drivers to adjust the estimation, these drivers plays a major role in
computation of effort estimation.
• Effort Adjustment Factor (EAF) accounts for the influence of cost drivers.
http://www.knowledgegate.in/GATE
20 KLOC /
EAF=1.25 Organic Semidetached Embedded
http://www.knowledgegate.in/GATE
• DE = a (KLOC)b X EAF(Error Adjustment Factor)
20 KLOC /
EAF=1.25 Organic Semidetached Embedded
Effort http://www.knowledgegate.in/GATE
92.9 PM 107.4 PM 127.4 PM
• DE = a (KLOC)b X EAF(Error Adjustment Factor)
20 KLOC /
EAF=1..675 Organic Semidetached Embedded
Effort http://www.knowledgegate.in/GATE
124 PM 116.7 PM 170.76 PM
Detailed COCOMO
• Definition: The most comprehensive and accurate COCOMO model that divides
a software project into multiple components or modules, and accounts for
interactions between cost drivers and project phases.
• Estimates effort and duration for each component using the Intermediate
COCOMO model, then sums them up.
http://www.knowledgegate.in/GATE
Other Empirical models
http://www.knowledgegate.in/GATE
Cyclomatic Complexity
• Cyclomatic complexity is a software metric that measures the
complexity of a program's control flow by counting the number of
linearly independent paths through the source code.
http://www.knowledgegate.in/GATE
Need:
• Assess code maintainability and readability
• Identify potential errors and areas of high risk
• Determine testing effort required
• Aid in refactoring efforts to simplify code
http://www.knowledgegate.in/GATE
Objective:
• Quantify the complexity of a program or function
• Facilitate better decision-making in software development
• Improve overall code quality and understandability
http://www.knowledgegate.in/GATE
Process:
• Identify the program's decision points (such as if, while, and for
statements)
• Calculate the number of linearly independent paths by counting the
decision points and adding one
• Interpret the resulting value:
• Low value: lower complexity, easier to maintain and test
• High value: higher complexity, harder to maintain and test, may
require refactoring
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
• Given a control flow graph G of a program, the cyclomatic complexity V(G) can
be computed as:
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
http://www.knowledgegate.in/GATE
Unit-4(Software Testing)
• Testing Objectives,
• Unit Testing,
• Integration Testing,
• Acceptance Testing,
• Regression Testing,
• Testing for Functionality and Testing for Performance,
• Top-Down and Bottom-Up
• Testing Strategies:
• Test Drivers and Test Stubs,
• Structural Testing (White Box Testing),
• Functional Testing (Black Box Testing),
• Test Data Suit Preparation,
• Alpha and Beta Testing of Products.
• Static Testing Strategies: Formal Technical Reviews (Peer Reviews), Walk Through, Code Inspection,
Compliance with Design and Coding Standards.
http://www.knowledgegate.in/GATE
Coding
• It is a phase where we translate a design or algorithm into a code of a particular
programming language.
• It is a technical phase so there is not much in software engineering to given guideline in this
phase, still we can give characteristics of good code.
• Characteristics of Good Coding
• It must be simple, easy to understand (unconditional jumps must be avoided)
• It must be readable, i.e. we must use proper space and comments lines and write code in
hierarchical fashion
• Usability try to code in modular fashion so that we can reuse the previous code.
http://www.knowledgegate.in/GATE
Compliance with Design and Coding Standards
• Definition:
• Compliance with design and coding standards refers to adhering to a set of rules,
guidelines, and best practices that govern the process of designing and writing software
code, ensuring consistent, high-quality, and maintainable software products.
• Importance:
• Improves code readability and maintainability
• Facilitates collaboration and communication among team members
• Minimizes the introduction of defects and vulnerabilities
• Reduces development time and costs
http://www.knowledgegate.in/GATE
• Design Standards:
• Architectural consistency: Ensuring that the overall structure of the software adheres to
established patterns and principles
• Scalability and performance: Designing software to handle future growth and changing
requirements without negatively impacting performance
http://www.knowledgegate.in/GATE
• Coding Standards:
• Naming conventions: Establishing consistent rules for naming variables, functions, classes,
and other code elements
• Formatting: Defining guidelines for indentation, whitespace, and code layout to improve
readability
• Comments and documentation: Providing clear, concise, and accurate inline comments
and external documentation
• Error handling: Implementing proper error handling and reporting mechanisms to improve
software robustness and reliability
http://www.knowledgegate.in/GATE
• Compliance Enforcement:
• Code reviews: Conducting regular peer reviews to ensure adherence to design and coding
standards
• Automated tools: Using static code analysis and linter tools to identify deviations from
established standards
• Continuous integration: Integrating and testing code changes frequently to catch issues
early in the development process
• Training and education: Providing team members with training and resources to stay up-
to-date on best practices and standards
http://www.knowledgegate.in/GATE
• Challenges:
• Balancing strict adherence to standards with development speed and flexibility
• Ensuring that standards evolve as new technologies and best practices emerge
• Obtaining buy-in from all team members and fostering a culture of compliance
http://www.knowledgegate.in/GATE
Testing
• Because of human error there will be a bug or fault in the code and if that
bug/fault is executed it become a failure.
• Software testing is a process of executing a program with the intention of
finding bugs or fault in the code.
• It is generally very difficult to test a software exhaustibility or completely
because the i/p space is very large. So, we have to write test cases wisely so
that in minimum test we can provide the maximum reliability.
http://www.knowledgegate.in/GATE
Preparation for Testing
• Before we start test, we must have written, complete & approved copy of SRS.
• The budget, time & schedule for the testing must be written and document with proper
timeliness & milestones which are to be achieved.
• We must have a proper assembled team with we understood responsibilities.
• We must have a written document of limitation property and scope of testing.
http://www.knowledgegate.in/GATE
• There are two methods of arranging testing
• Skilled based approach: In this, a person works on a specific technology for a long time.
here the person has a chance to become a true specialist in that particular area or
technology
• Project based approach: Here we assign test team to a project so that they can have a
much deeper and better understand of that particular project which increases the chance
of success.
http://www.knowledgegate.in/GATE
Objective of testing
http://www.knowledgegate.in/GATE
Principle of software testing/guidelines
1. Testing must be based on user requirement
2. Test time, resource cost is limited.
3. It is impossible to check entire i/p space.
4. Testing must start after a proper test plan.
5. The possibility of existence of more error in a module id directly proportional to error
already being found.
6. Testing must be done by a third party (at least not developer)
7. Assign best person of the company during testing.
8. Tester must have a destructive attitude towards the code.
9. We must perform both functional and non-functional testing
10. We must give emphasize on automated test tools but the final testing must be done by the
humans
http://www.knowledgegate.in/GATE
Unit Testing
• Definition: It is the first level of testing that involves testing individual components or units of
code to ensure they work correctly in isolation. It is concerned for the testing only a specific
module.
• Purpose: To verify that each unit of code performs its intended function and to catch bugs
early in the development process. Will check internal logic of module and Functionality and
interface with the other module
• Test Cases: Writing small, specific test cases that cover different input scenarios and edge
cases for each unit of code.
http://www.knowledgegate.in/GATE
Integration Testing
● Integration testing is a phase in software testing in which individual software modules are
combined and tested as a group.
● The primary objective of integration testing is to test the module interfaces, i.e. there are no
errors in the parameter passing, when one module invokes another module. To verify the
functional, performance, and reliability between the modules that interact with each other.
● Integration testing is of four types: (i) Top down (ii) Bottom up (iii) Sandwich (iv) Big-Bang
http://www.knowledgegate.in/GATE
Integration Testing
• Integration testing is the phase in software testing in which individual software modules are
combined and tested as a group. It occurs after unit testing and before validation testing.
• Purpose is to expose faults in the interaction between integrated units.
• It can be time-consuming and costly due to the complexity of inter-module dependencies. It
requires a lot of coordination between different teams. The sequence of tasks is crucial for
integration testing which may cause delays if not planned properly.
http://www.knowledgegate.in/GATE
• Types of Integration Testing:
• Big Bang Integration Testing
• Top-Down Integration Testing
• Bottom-Up Integration Testing
• Sandwich/Hybrid Integration Testing
http://www.knowledgegate.in/GATE
Big-Bang
• Is a type of integration testing where all the modules are integrated
simultaneously and then tested as a complete system, it is a non incremental
integration approach.
http://www.knowledgegate.in/GATE
• Simplicity: It is easier to set up because testing starts only after all the modules have
been integrated.
• Suitability: It is better suited for smaller systems where the modules are heavily
interlinked.
• Efficiency: It can potentially save time, as testing is conducted after the entire software
has been developed and integrated.
http://www.knowledgegate.in/GATE
• Issue Detection and Resolution: It can be challenging to isolate and fix bugs because of the high level
of integration.
• High Risk: There's a high risk involved as any significant issues are only found late in the development
process, which can lead to project delays.
• Resource Consumption: It can be resource-intensive, requiring a significant amount of time and effort
to find and fix bugs.
• Inefficiency in Large Systems: It's inefficient for larger systems where problems can become
increasingly complex and hard to identify when all modules are integrated at once.
http://www.knowledgegate.in/GATE
Top to Bottom
• Top-Down Integration Testing is a method of software integration testing where the top-level
modules are tested first and the lower-level modules are tested step by step after that. This
process continue until all components are integrated and then whole system has been
completely tested.
• Stub modules may be used to simulate the effect of lower-level modules that have not yet
been integrated and are called by the routines under test.
http://www.knowledgegate.in/GATE
Advantages of Top-Down Integration Testing
• Early Defect Identification: Critical high-level design and control flow issues can be detected
at an early stage.
• Facilitates Progressive Testing: Testing is easier and more systematic, progressing from top-
level modules to lower-level modules.
• Supports Early Demonstration: The basic functionality of the system can be demonstrated
early in the testing process, even if lower-level modules are not yet developed or tested.
http://www.knowledgegate.in/GATE
Disadvantages of Top-Down Integration Testing
• Stub Development: Stubs need to be created for simulating lower-level modules, which may
require additional time and resources.
• Late Detection of Lower-Level Bugs: Bugs in lower-level modules may not be found until the
later stages of testing, which can lead to delays.
• Incomplete Testing: Due to reliance on stubs, some types of errors can be difficult to detect
until full functionality is integrated.
• Difficulty in Test Management: The complexity and dependencies between different modules
can make test management challenging.
http://www.knowledgegate.in/GATE
Bottom to Top
• Bottom-Up Integration Testing is a strategy in software testing where the lower-level modules are
tested first and then integrated and tested with the higher-level modules. This approach often uses
"driver" modules for testing and simulation.
• Modules at the lower level of system hierarchy is tested individually first, then the next component
who calls the previously tested once to be tested, this approaches followed repeatedly until all
components are included in the testing.
http://www.knowledgegate.in/GATE
Advantages of Bottom-Up Integration Testing
• Early Problem Detection: It allows early detection of faults and failures in the lower-level
modules of the software.
• No Need for Stubs: Unlike top-down testing, bottom-up testing doesn't require the use of
stubs as testing begins from the lower-level modules.
http://www.knowledgegate.in/GATE
Disadvantages of Bottom-Up Integration Testing
• Need for Drivers: Drivers need to be created to simulate higher-level modules, which can require
additional time and resources.
• Late Detection of Higher-Level Bugs: Issues in the integration of high-level modules may not become
apparent until late in the testing process.
• Incomplete System Overview: Early stages of testing do not provide a complete view of the system,
which may make it harder to assess overall functionality and performance.
http://www.knowledgegate.in/GATE
Sandwich/Hybrid integration testing
• The combination of top down and bottom integration testing is called sandwich integration.
• This system is viewed as a three layer just like a sandwich, the upper layer of sandwich use top
down integration the lower layer of the sandwich integration use bottom up integration and
Stubs and drivers are used to replace the missing modules in the middle layers.
http://www.knowledgegate.in/GATE
• Combines Strengths: It combines the advantages of both Top-Down and Bottom-Up testing
approaches to achieve more comprehensive testing coverage.
• Time-Efficiency: The simultaneous testing at both ends can help to reduce the overall testing
time.
• Variety of Scenarios: This approach allows for a wide range of testing scenarios and can lead
to more thorough verification of the system's functionality.
• Flexibility: It offers flexibility in the testing process, as it can be adjusted according to the
nature of the software and the resources available.
http://www.knowledgegate.in/GATE
System Testing
• System testing is a level of software testing where the complete and integrated software system as a whole is
tested to evaluate its compliance with specified requirements in SRS.
• It is a crucial step before the software gets deployed to the user, aiming to catch any defects that might have
slipped through the earlier stages of testing.
• System testing is performed in an environment that closely resembles the real-world or production environment.
• Generally, it is performed by independent testers who haven't been involved in the development phase to
ensure unbiased testing.
• It may include functional testing, usability testing, performance testing, security testing, and compatibility
testing.
http://www.knowledgegate.in/GATE
User Acceptance Testing
• Definition and Purpose: User Acceptance Testing (UAT) is the final testing phase before
software deployment, aiming to validate if the system meets the business requirements and is
fit for use.
• Participants: Usually performed by clients or end-users, UAT evaluates the software's
functionality in a real-world scenario.
http://www.knowledgegate.in/GATE
• Focus: Emphasizing the software's user-friendliness, efficiency, and effectiveness, UAT goes
beyond purely technical aspects to assess overall user experience.
• Documentation: During UAT, all scenarios, outcomes, and user feedback are recorded to
inform potential changes and improvements.
• Outcome: Successful UAT culminates in user sign-off, signifying the system meets the set
acceptance criteria and is ready for release.
http://www.knowledgegate.in/GATE
Regression Testing
• Definition: Regression testing is a type of software testing carried out to ensure that
previously developed and tested software still functions as expected after making changes,
such as updates or bug fixes.
• Purpose: The main goal is to identify any issues or defects introduced by changes in the
software, and to ensure that the changes have not disrupted any existing functionality.
http://www.knowledgegate.in/GATE
• Types: Types of regression testing include unit regression, partial regression, and complete
regression testing.
• Test Cases: Regression testing generally involves re-running previously completed tests and
verifying that program behavior has not changed as a result of the newly introduced changes.
• Automation: Due to the repetitive nature of these tests, regression testing is often automated
to improve efficiency and accuracy.
http://www.knowledgegate.in/GATE
Black box Testing/ White box Testing
• Black Box Testing(Validation) – Where we treat system as a whole, and check system
according to user requirement (are we making the right product), i.e. we check o/p for every
i/p
• White Box Testing(Verification) – Here we go inside a system and check how actual
functionality is performed(are we making the product right)
http://www.knowledgegate.in/GATE
Alpha Testing/ Beta Testing
• Any type of testing which is done on developer side is called alpha testing, usually performed
with artificial test cases.
• Any type of testing which is done at customer side is called beta testing, usually performed
with real time data.
http://www.knowledgegate.in/GATE
Stress Testing
• Stress testing is also known as endurance testing.
• Stress testing evaluates system performance when it is stressed for short periods of time.
• Stress tests are black box tests which are designed to impose a range of abnormal and even
illegal input conditions so as to stress the capabilities of the software.
http://www.knowledgegate.in/GATE
Boundary value analysis
• Boundary Value Analysis is a software testing technique that focuses on the values at the
boundaries of the input domain.
• The theory behind BVA is that errors are more likely to occur at the extremes of an input
domain rather than in the center. Hence, it's generally more useful to focus on testing the
boundary values.
• BVA is used for testing ranges and data array elements in a software application.
http://www.knowledgegate.in/GATE
• In practice, BVA can be applied by identifying all the boundaries and then creating test cases
for the boundary values and just above and below the boundary values.
• Example: Let's consider a simple application that accepts an integer input from 1 to 100.
• The boundary values here would be 0 (just below the valid range), 1 (lower limit), 100 (upper
limit), and 101 (just above the valid range).
• You would then create test cases to input these values and verify the system's behavior.
http://www.knowledgegate.in/GATE
Equivalence partitioning
• Equivalence Partitioning is a black box testing technique that divides the input data of a
software unit into partitions of equivalent data.
• The logic behind EP is that the system should handle all the equivalent data in the same way,
thus you can save testing effort by testing only one value from each partition.
• It helps to reduce the total number of test cases from an infinite pool to a more manageable
number.
• This technique can be used for both valid and invalid data input.
http://www.knowledgegate.in/GATE
• Example: Let's consider the same application that accepts an integer input from 1 to
100.
• The equivalence classes here would be: less than 1 (invalid), between 1 and 100 (valid),
and greater than 100 (invalid).
• You would then create test cases to input a value from each of these classes (for
example, 0, 50, and 101) and verify the system's behavior.
http://www.knowledgegate.in/GATE
Graph-Based Testing Methods
• Uses graphical representation for software testing.
• Nodes represent states; edges represent transitions.
• Example: For a web app with Login, Dashboard, and Logout screens, draw
nodes for each and edges for transitions. Test paths like Login -> Dashboard ->
Logout.
http://www.knowledgegate.in/GATE
Formal Technical Review (Peer Reviews)
• A Formal Technical Review (FTR) is a structured, systematic, and disciplined approach to
examining and evaluating software artifacts, such as code, design documents, or
requirements specifications, with the primary goal of identifying and addressing defects,
inconsistencies, or areas for improvement.
• FTRs are conducted by a team of peers, consisting of the artifact's author and other software
professionals, who analyze the work product and provide constructive feedback to ensure
high-quality software development.
• Formal Technical Reviews play a crucial role in improving software quality, detecting issues
early in the development lifecycle, promoting knowledge sharing, and fostering collaboration
within software engineering teams.
http://www.knowledgegate.in/GATE
• Types of Formal Technical Reviews
• Code reviews
• Walkthroughs
• Inspections
• Pair programming
http://www.knowledgegate.in/GATE
• The Formal Technical Review Process
• A. Planning
• 1. Establish objectives
• 2. Select participants
• 3. Set schedule
• B. Preparation
• 1. Distribute materials
• 2. Review guidelines
• 3. Allocate time for individual review
• D. Post-review activities
• 1. Document review results
• 2. Implement action items
http://www.knowledgegate.in/GATE
• 3. Monitor follow-up actions
• Roles in Formal Technical Reviews
• A. Review leader
• B. Author
• C. Reviewers
• D. Recorder
http://www.knowledgegate.in/GATE
Walkthrough Process
• A. Planning
• 1. Define objectives
• 2. Select participants
• 3. Schedule the walkthrough
• B. Preparation
• 1. Distribute materials
• 2. Review guidelines
• 3. Allocate time for individual review
• D. Post-walkthrough activities
• 1. Summarize findings
• 2. Assign action items
http://www.knowledgegate.in/GATE
• 3. Monitor follow-up actions
• Roles in Walkthroughs
• A. Presenter
• B. Reviewers
• C. Recorder
• Benefits of Walkthroughs
• A. Early defect detection
• B. Knowledge sharing
• C. Team collaboration
• D. Training and mentoring
http://www.knowledgegate.in/GATE
Code Inspection
• Definition:
• Code inspection is a systematic review process in which a team of developers evaluates a
software product's source code for potential issues, such as errors, vulnerabilities, and
deviations from coding standards.
• Objectives:
• Improve code quality
• Detect and fix defects early in the development cycle
• Share knowledge and best practices among team members
• Enforce coding standards and guidelines
http://www.knowledgegate.in/GATE
• Process:
• Planning: Select the code to be inspected, define goals, and assemble the inspection team
• Preparation: Team members review the code individually to identify potential issues
• Inspection Meeting: The team discusses the identified issues, and the moderator notes
down agreed-upon action items
• Rework: The original developer addresses the identified issues and submits the revised
code
• Follow-up: The moderator verifies that all action items have been addressed and closes
the inspection
http://www.knowledgegate.in/GATE
• Inspection Team Roles:
• Author: The developer who wrote the code being inspected
• Moderator: The person who leads the inspection process and ensures it runs smoothly
• Reviewers: Other developers who provide insights and suggestions for improvements
• Recorder: The person responsible for documenting the issues found and decisions made
during the inspection
http://www.knowledgegate.in/GATE
• Benefits:
• Enhanced code quality and maintainability
• Reduced development costs and project risks
• Faster time-to-market due to early detection of defects
• Improved team collaboration and learning
• Limitations:
• Time-consuming process
• Possibility of human errors or oversights
• Potential for conflict among team members
• May not catch all types of defects, such as performance or concurrency issues
http://www.knowledgegate.in/GATE
Unit-5(Software Maintenance)
• Software as an Evolutionary Entity,
• Need for Maintenance,
• Categories of Maintenance: Preventive, Corrective and Perfective Maintenance,
• Cost of Maintenance,
• Software Re-Engineering,
• Reverse Engineering.
• Software Configuration Management Activities,
• Change Control Process,
• Software Version Control,
• Resource Allocation Models,
• Software Risk Analysis and Management.
http://www.knowledgegate.in/GATE
Why Software Maintenance
• Always Changing: Software keeps changing to work better for people who use it. This is like
how animals and plants change to survive in the world.
• Getting More Complex: Software used to be simple, but now it can do many things and
connects people all over the world. This is like how nature has many different animals and
plants living together.
• Survival of the Fittest: Good software will keep being used, while bad software will go away.
This is like how strong animals and plants in nature can live longer and make more babies.
http://www.knowledgegate.in/GATE
• Categories of Software Maintenance – Maintenance can be divided into the following:
• Corrective maintenance: Corrective maintenance of a software product may be essential either to rectify
some bugs observed while the system is in use, or to enhance the performance of the system.
• Adaptive maintenance: This includes modifications and updation when the customers need the product to
run on new platforms, on new operating systems, or when they need the product to interface with new
hardware and software.
• Perfective maintenance: A software product needs maintenance to support the new features that the users
want or to change different types of functionalities of the system according to the customer demands.
http://www.knowledgegate.in/GATE
• The key software maintenance issues are both managerial and technical. e.g. alignment with
customer priorities, staffing, which organization does maintenance, estimating costs.
• Key technical issues are: limited understanding, impact analysis, testing, maintainability
measurement.
http://www.knowledgegate.in/GATE
Software Re-Engineering
• Software re-engineering is the process of examining and modifying an existing software
system to improve its functionality, performance, or adaptability without changing its core
function.
• It's often undertaken to restructure a legacy system to enhance understandability,
maintainability, and to upgrade to newer technologies or software practices.
http://www.knowledgegate.in/GATE
Software Re-Engineering Activities
http://www.knowledgegate.in/GATE
• Restructuring: This involves transforming the existing source code into a more
maintainable form, often while preserving its functionality. This can include
activities such as code refactoring, where the code is reorganized to be more
understandable or efficient.
http://www.knowledgegate.in/GATE
• Forward Engineering: After understanding and possibly restructuring the
system, changes are made to the system to improve it or adapt it to new
requirements or technologies. This can include implementing new features,
improving performance, or changing the system to use a new technology stack.
http://www.knowledgegate.in/GATE
• Re-documentation: This involves updating or creating new documentation for
the system. This can be especially important if the original documentation was
lost, out of date, or if the system has been significantly changed during the re-
engineering process.
http://www.knowledgegate.in/GATE
• Benefits of re-engineering phases:
• Cost: Re-engineering of an existing software system costs significantly less than new
system development.
• Lower Risks: Software re-engineering is based on incremental improvement of systems,
rather than racial system replacement. The risk of losing critical software knowledge is
drastically reduced.
• Better use of existing Staff: The skill of existing staff can be better utilized by re-
engineering.
• Incremental Development: The development is not carried out as a whole. It is in stages.
http://www.knowledgegate.in/GATE
• Reverse Engineering – Reverse Engineering is processes of extracting knowledge or design
information from anything man-made and reproducing it based on extracted information. It is
also called back Engineering.
http://www.knowledgegate.in/GATE
• Software Reverse Engineering – Software Reverse Engineering is the process of recovering the
design and the requirements specification of a product from an analysis of it’s code. Reverse
Engineering is becoming important, since several existing software products, lack proper
documentation, are highly unstructured, or their structure has degraded through a series of
maintenance efforts.
http://www.knowledgegate.in/GATE
• Steps of Software Reverse Engineering
1. Collecting Information
2. Examining the Information
3. Extracting the Structure
4. Recording the Functionality
5. Recording Data Flow
6. Recording Control Flow
7. Review extracted Design
8. Generate Documentation
http://www.knowledgegate.in/GATE
• Why Reverse Engineering?
1. Providing proper system documentation.
2. Recovery of lost information.
3. Assisting with maintenance.
4. Facility of software reuse.
5. Discovering unexpected flaws or faults.
http://www.knowledgegate.in/GATE
Software Configuration Management Activities
• The primary reasons for Implementing Software Configuration Management System are:
• There are multiple people working on software which is continually updating.
• It may be a case where multiple version, branches, authors are involved in a software
project, and the team is geographically distributed and works concurrently.
• Changes in user requirement, policy, budget, schedule need to be accommodated.
• Software should able to run on various machines and Operating Systems.
• Helps to develop coordination among stakeholders.
• SCM process is also beneficial to control the costs involved in making changes to a system.
http://www.knowledgegate.in/GATE
Software Configuration Management
• Can be defined as a process of defining and implementing a standard configuration, which
results into the primary benefits such as easier setup and maintenance, less down-time, better
integration with enterprise management, and more efficient and reliable backups and also
maximize productivity by minimizing mistakes.
• SCM is used to track and manage the emerging product and its versions.
• SCM ensures that all people involved in the software process know what is being designed,
developed, built, tested and delivered.
• Through SCM, the design requirements can be traced to the final software product.
http://www.knowledgegate.in/GATE
Objectives Software Configuration Management
• Multi-User support
http://www.knowledgegate.in/GATE
• Tasks in SCM process
• Configuration Identification:
• Configuration identification is a method of determining the scope of the software
system.
• With the help of this step, you can manage or control something even if you don't
know what it is.
• Baseline:
• A baseline is a formally accepted version of a software configuration item.
• It is designated and fixed at a specific time while conducting the SCM process. It can
only be changed through formal change control procedures.
http://www.knowledgegate.in/GATE
• Change Control:
• Change control is a procedural method which ensures quality and consistency when
changes are made in the configuration object.
• In this step, the change request is submitted to software configuration manager.
http://www.knowledgegate.in/GATE
Software version control
• Version control is a way to keep track of changes in computer programs. It helps people work
together on a project without causing problems. They can see what changes were made,
when, and by whom. It also lets them go back to an older version if something goes wrong.
http://www.knowledgegate.in/GATE
• Identifying New Versions: Each time changes are made and saved, the version control system
creates a new, unique version of the software. This helps developers track the software's
evolution and easily manage multiple versions.
• Numbering Scheme: Version control systems assign a specific numbering or naming scheme
to each version (e.g., 1.0, 1.1, 1.2, or 2.0). This helps developers and users identify the
software's progression and understand the scope of changes between versions.
• Visibility: Version control makes the entire history of the software project visible to all team
members. This enhances collaboration and helps developers understand the context and
impact of past changes on the current codebase.
• Tracking: Version control systems keep detailed records of who made each change, when it
was made, and the specific modifications. This level of tracking helps maintain accountability
and facilitates communication among team members.
http://www.knowledgegate.in/GATE
Resource Allocation Models
• Resource allocation models in software engineering refer to strategies or
methods used to distribute various types of resources effectively across
different aspects of a software project. These resources could include things like
personnel, time, budget, computing resources, etc.
• These models help project managers in decision-making processes to ensure
the efficient use of resources, meet project deadlines, maintain the quality of
the software product, and stay within the budget.
http://www.knowledgegate.in/GATE
• Critical Path Method (CPM): This is a step-by-step technique used in project
management for scheduling project activities. It identifies critical and non-
critical tasks to prevent conflicts and bottlenecks.
http://www.knowledgegate.in/GATE
• Program Evaluation and Review Technique (PERT): This is a statistical tool used
in project management, designed to analyze and represent the tasks involved in
completing a given project. It helps to estimate the minimum time needed to
complete the project.
http://www.knowledgegate.in/GATE
• Gantt Chart: It's a type of bar chart that illustrates a project schedule. This chart
lists the tasks to be performed on the vertical axis, and time intervals on the
horizontal axis.
http://www.knowledgegate.in/GATE
• Resource Leveling: Also known as resource smoothing, it's a technique in
project management that involves adjusting the project schedule to balance the
demand for project resources with the available supply.
http://www.knowledgegate.in/GATE
• Allocation Models in Agile Methodology: In agile teams, resources might be
allocated based on different factors such as team velocity, priority of user
stories, and size of tasks.
http://www.knowledgegate.in/GATE
Software Risk Analysis and Management
• Risk management is the process of identifying risk, assessing risk hat could
negatively impact a software project's success and taking steps to reduce this to
acceptable level.
http://www.knowledgegate.in/GATE
• Here are the key components:
• Risk Identification: This is the initial process of determining risks that could
potentially prevent the program, enterprise, or investment from achieving its
objectives. It includes documenting and communicating the concern.
http://www.knowledgegate.in/GATE
• Risk Analysis: Once risks are identified, they are analyzed to identify the
qualities of the risk such as its likelihood of occurrence, severity of impact, what
precipitates the risk, and other characteristics. This can be done quantitatively or
qualitatively.
http://www.knowledgegate.in/GATE
• Risk Assessment/Evaluation: This involves comparing the identified and
analyzed risk against predefined criteria such as acceptable risk levels and
priorities. It's used to make decisions about the impact of the risk and whether
it's acceptable or if it needs to be treated.
http://www.knowledgegate.in/GATE
• Risk Mitigation: This is the process of prioritizing, evaluating, and
implementing actions that reduce or control the risks. It can involve
risk avoidance, risk transfer, risk acceptance, or risk limitation.
http://www.knowledgegate.in/GATE
• Risk Monitoring: This is the process of monitoring identified and mitigated risks,
as well as identifying new risks. This is an ongoing process throughout the
lifecycle of the project.
http://www.knowledgegate.in/GATE