Evolution of Software Development Roles
Evolution of Software Development Roles
✅ 1. Software Crisis
Software crisis describes the difficulties in developing software on time, within budget, and with good
quality.
Major Causes of Software Crisis
1. Increasing complexity of software systems
2. Poor project management
3. Unclear or changing requirements
4. Lack of proper design and testing methods
5. Shortage of trained professionals
6. Inadequate tools and techniques
7. Weak communication among stakeholders
✅ 2. Software Myths
Software myths are false beliefs or misunderstandings about software development.
These myths create unrealistic expectations and lead to failures.
A) Management Myths
1. “Adding more people to a late project speeds it up.”
(Fact: It often increases delays.)
2. “If we have good tools, we don’t need proper planning.”
3. “A running program is the only work product that matters.”
B) Customer Myths
1. “Software requirements can be written once and never change.”
2. “A general statement of need is enough to start coding.”
3. “Changes in requirements cost nothing.”
C) Developer Myths
1. “Once the program works, the job is finished.”
2. “Documentation is not necessary.”
3. “Testing is needed only when development is finished.”
Software Engineering (UNIT 1)
Software Engineering is the systematic, disciplined, and quantifiable approach to the development,
operation, and maintenance of software.
It applies engineering principles to produce high-quality, reliable, and cost-effective software systems.
✅ 1. Definition
Software engineering is defined as:
✔ “The application of engineering principles to software development to ensure high quality,
maintainability, and reliability.”
It focuses on solving the problems raised during the software crisis.
✅ 5. Importance / Benefits
Reduces development cost and time
Improves software quality
Allows building of large, complex systems
Ensures proper documentation
Helps avoid failures and delays
Supports teamwork and project management
Linear Sequential Model (Waterfall Model) (UNIT 1)
The Linear Sequential Model, also known as the Waterfall Model, is one of the earliest and simplest
software development process models.
It follows a step-by-step, top-down, sequential approach, where each phase must be completed before
moving to the next.
✅ 1. Definition
The Linear Sequential Model is a systematic, plan-driven software process model in which development
flows downward through phases, like a waterfall.
2. System Design
Convert requirements into design
Includes architecture, database design, interface design
3. Implementation (Coding)
Actual programming based on design
Modules and components are built
4. Testing
Testing of modules and the whole system
Find and fix errors
Includes unit testing, integration testing, system testing
5. Deployment
Install the software in the user environment
Make it operational
6. Maintenance
Fix issues found after deployment
Add new features and improvements
✅ 3. Characteristics
Linear and rigid
Each phase has specific deliverables
Easy to understand and manage
Best for well-defined requirements
✅ 4. Advantages
✔ Simple and easy to follow
✔ Well-documented process
✔ Good for small projects
✔ Suitable when requirements are stable
✔ Each phase is clearly defined
Prototyping Model (UNIT 1)
The Prototyping Model is a software development model in which a working model (prototype) of the
system is built early in the project to understand and refine user requirements.
It is especially useful when requirements are unclear or incomplete.
✅ 1. Definition
The Prototyping Model is an iterative development process where a prototype is created, tested by
users, and refined repeatedly until the final requirements are understood and agreed upon.
✅ 3. Types of Prototyping
A) Throwaway Prototype
Built only to understand requirements
Discarded after use
Actual system developed separately
B) Evolutionary Prototype
Developed step by step
Improved gradually
Becomes the final system
✅ 4. Advantages
✔ Helps clarify unclear requirements
✔ Early user involvement increases satisfaction
✔ Detects problems early
✔ Reduces risk of project failure
✔ Improves communication between users and developers
RAD Model (Rapid Application Development) (UNIT 1)
The Rapid Application Development (RAD) model is a software development methodology that
focuses on quick development and fast delivery.
It uses prototyping, iterative development, and reusable components to speed up the process.
RAD is useful when the project requires short development time and frequent customer feedback.
✅ 1. Definition
RAD is an incremental and rapid software development model where the project is divided into small
modules, and each module is developed quickly and delivered in a short cycle.
RAD emphasizes:
Fast development
User involvement
Prototyping
Reusability
3. Construction Phase
Actual development begins
Components are built using:
o Reusable modules
o Automated tools
o Code generators
o CASE tools
Testing is performed in parallel with development
✅ 3. Characteristics of RAD
Very short development cycle
High user involvement
Extensive use of prototypes
Emphasis on modularization
Uses automated tools for faster development
Evolutionary Product & Process (UNIT 1)
The evolutionary approach in software engineering focuses on building software step-by-step and
improving it continuously based on user feedback and changing requirements.
Both the product (software) and the process (development method) evolve over time.
✅ 1. Evolutionary Product
The software product evolves as new features are added, defects are fixed, and user requirements
change.
Characteristics of Evolutionary Product
Developed incrementally (in small versions or releases)
Each version adds more features
Based on continuous user feedback
Suitable for projects where requirements are unclear
Supports rapid changes in functionality
Examples
Mobile apps (updated regularly)
Web applications
Benefits
Early delivery of working software
Users get a usable version quickly
Easier to adapt to changing needs
Lower risk because feedback is continuous
✅ 2. Evolutionary Process
The software development process evolves along with the product.
It is iterative, adaptive, and allows cycles of improvements.
Characteristics of Evolutionary Process
Based on repeated cycles (iterations)
Each cycle includes:
o Planning
o Design
o Coding
o Testing
o Delivery
Supports incremental improvements
Allows parallel development of components
Common Evolutionary Process Models
1. Incremental Model
Software is built and delivered in increments. Each increment adds features.
2. Spiral Model
Development proceeds in loops, focusing on risk analysis and prototyping.
3. Prototyping Model
Early prototype built, refined through user feedback.
4. Agile Development
Modern evolutionary process using short iterations (sprints).
Measures, Metrics and Indicators Measure: The Quantitative indication of the extent, amount,
dimension, or size of some attribute of a product or process. A single data point. Metrics: The degree
to which a system, component, or process possesses a given attribute. Relates several measures (e.g.
average number of errors found per person hour).
Indicators: A combination of metrics that provides insight into the software process, project or
product.
Metrics in the Process and Project Domains: - The only rational way to improve any process is
Use the metrics to provide indicators that will lead to a strategy for improvement
Software Measurement
1. Direct measures:- It include software processes like cost and effort applied and products like lines
of code produced, execution speed, and other defects that have been reported.
Formulation: This performs measurement and develops appropriate metric for software under
consideration.
Interpretation: This analyzes the metrics to attain insight into the quality of representation.
Feedback: This communicates recommendation derived from product metrics to the software team.
Q2)Software Quality Metrics
Software metrics can be classified into three categories −
Product metrics − Describes the characteris cs of the product such as size, complexity, design
features, performance, and quality level.
Process metrics − These characteristics can be used to improve the development and
maintenance activities of the software.
Project metrics − This metrics describe the project characteris cs and execu on. Examples
include the number of software developers, the staffing pattern over the life cycle of the
software, cost, schedule, and productivity.
Some metrics belong to multiple categories. For example, the in-process quality metrics of a project
are both process metrics and project metrics.
Software quality metrics are a subset of software metrics that focus on the quality aspects of the
product, process, and project. These are more closely associated with process and product metrics
than with project metrics.
It is the time between failures. This metric is mostly used with safety critical systems such as the
airline traffic control systems, avionics, and weapons.
Defect Density It .
measures the defects relative to the software size expressed as lines of code or function point, etc.
i.e., it measures code quality per unit. This metric is used in many commercial software systems.
Customer Problems It measures the problems that customers encounter when using the product. It
contains the customer’s perspective towards the problem space of the software, which includes the
non-defect oriented problems together with the defect problems.
Q3)Software Project Planning
Project planning is an organized and integrated management process that focuses on the actions
necessary for the project's practical completion. It avoids problems in the project, such as changes in
the project's or organization's objectives, resource shortages, and so forth. Project planning also aids
in improved resource use, and the most efficient use of a project's allowed time. The following are the
other project planning goals.
•It guarantees that the project management team adheres to the company's goals.
•It examines the schedule's viability and the needs of the users.
Some guidelines are followed when designing a project. These guidelines are outlined below.
•Planning: Before starting a project, it's essential to plan. Objectives and timelines should be clear and
understandable for efficient planning.
•Risk analysis: Before beginning the project, senior management and the team should think about
the potential hazards. Changes in requirements, for example, maybe desired by the user while the
project is in process. In this instance, time and cost estimations should be made by the requirements
(new requirements).
•Monitoring the project's progress: The project plan should be tracked and adjusted as needed once it
is completed.
•Meet quality standards and offer high-quality results: The project plan should outline the project
management team's procedures to assure software quality. The project's duration and cost are
calculated based on the quality assurance approach.
•Flexibility to accommodate changes: The result of project planning is recorded in the form of a
project plan, which should allow for new modifications to be accommodated as the project
progresses.
. The project planning process also includes the following steps. •The project's objectives and scope
•Techniques for undertaking project planning •Individuals participating in the project's effort
(measured in time) • Timeline and milestones for the project •The project will require specific
resources. •The project's potential dangers.
Q4)RMMM plan.
A risk management technique is usually seen in the software Project plan. This can be divided into
Risk Mitigation, Monitoring, and Management Plan (RMMM). In this plan, all works are done as part
of risk analysis. As part of the overall project plan project manager generally uses this RMMM plan. In
some software teams, risk is documented with the help of a Risk Information Sheet (RIS). This RIS is
controlled by using a database system for easier management of information i.e creation, priority
ordering, searching, and other analysis. After documentation of RMMM and start of a project, risk
mitigation and monitoring steps will start. Risk Mitigation : It is an activity used to avoid problems
(Risk Avoidance).
[Link] out the risk. [Link] causes that are the reason for risk creation. [Link] the
corresponding documents from time to time. [Link] timely reviews to speed up the work.
Risk Monitoring : It is an activity used for project tracking. It has the following primary objectives as
follows.
[Link] check if predicted risks occur or not. [Link] ensure proper application of risk aversion steps
defined for risk. [Link] collect data for future risk analysis. [Link] allocate what problems are caused by
which risks throughout the project.
Risk Management and planning : It assumes that the mitigation activity failed and the risk is a reality.
This task is done by Project manager when risk becomes reality and causes severe problems. If the
project manager effectively uses project mitigation to remove risks successfully then it is easier to
manage the risks. This shows that the response that will be taken for each risk by a manager. The
main objective of the risk management plan is the risk register. This risk register describes and focuses
on the predicted threats to a software project.
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.
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.
Project Scheduling – (UNIT 3)
Project scheduling is a key activity of project management that deals with planning, organizing, and
controlling the timeline of project tasks. It ensures that the project is completed on time, within budget,
and with optimum use of resources.
2. Task Network
Definition
A task network (activity network) is a graphical representation showing:
The tasks of the project
The sequence in which they must be performed
The dependencies among tasks
It is usually drawn using PERT/CPM network diagrams.
Purpose
To visualize task flow
To identify task dependencies
To detect the critical path
To help in scheduling and avoiding delays
Components of a Task Network
Nodes → Represent tasks/activities
Arrows → Represent task sequence & dependency
Start & End nodes → Define project boundaries
Types of Dependencies
1. Finish-to-Start (FS) – Most common
2. Start-to-Start (SS)
3. Finish-to-Finish (FF)
4. Start-to-Finish (SF)
Example (Simple Task Network)
Requirement → Design → Coding → Testing → Deployment
(Each task depends on completion of the previous one)
Scheduling (UNIT 3)
Scheduling is the process of allocating time and resources to tasks and arranging them in a timeline to
complete the project within deadline.
Scheduling answers:
What tasks to do?
When to do them?
Who will do them?
How long will they take?
Goals of Scheduling
Complete project on time
Use resources efficiently
Avoid resource conflicts
Reduce costs
Identify critical tasks
Track progress systematically
Steps in Scheduling
1. Identify all tasks (Task Set)
2. Arrange them in sequence (Task Network)
3. Estimate time & resources for each task
4. Identify the critical path
5. Create the schedule using:
o Gantt Chart
o PERT/CPM
o Resource charts
6. Monitor progress and update schedule regularly
Task Set List of all tasks Defines what work must be done
Task Network Graphical flow of tasks with dependencies Shows order & relationship between tasks
Scheduling Timeline and resource allocation Decides when and who will do tasks
Flow:
Task Set → Task Network → Scheduling
Earned Value (EV) Analysis (UNIT 3)
EV Analysis (Earned Value Analysis) is a project performance measurement technique used to
compare the planned progress of a project with the actual progress.
It integrates scope, time, and cost to measure project performance accurately.
It tells the project manager:
How much work is actually completed?
Are we ahead or behind schedule?
Are we under or over the budget?
1. Definition of SQA
Software Quality Assurance is a planned and systematic set of activities applied to the software
engineering process to ensure that the resulting product meets established technical standards and
customer requirements.
In simple words:
SQA ensures “quality is built into the product,” not just tested at the end.
2. Goals of SQA
Ensure the software meets required quality standards
Prevent defects during development
Improve development processes
Increase reliability, maintainability, and performance
Ensure compliance with organizational and industry standards
Provide confidence to customers and stakeholders
2. Walkthrough
A walkthrough is a semi-formal review where the author of the document leads the meeting and explains
the content step-by-step.
Characteristics
Conducted by the author
Team asks questions and finds defects
No formal preparation needed
Used for: requirements, design, algorithms, code
Purpose
Educate team members
Identify defects
Improve understanding
3. Technical Review
A formal, structured review conducted by technical experts.
Features
Performed by peers and experts
Checks technical correctness
Ensures the design or code meets requirements
Detailed review checklist used
Used For
SRS review
System and software design
Algorithms
Test plans
4. Inspection
The most formal and rigorous type of software review.
Characteristics
Planned and documented
Led by a trained moderator
Uses entry and exit criteria
Based on reading techniques
Produces formal reports and defect logs
Purpose
Detect defects precisely
Ensure standards compliance
Improve product quality
Stages
1. Planning
2. Preparation
3. Inspection meeting
4. Rework
5. Follow-up
6. Reviews vs Testing
Aspect Software Reviews Software Testing
Purpose Find defects in documents/code early Find defects by executing program
Timing Before coding/testing After coding
Cost impact Very low High
Type Static technique Dynamic technique
Technical Reviews – (UNIT 3)
A technical review is a formal, structured review process in software engineering where a team of
qualified and experienced technical personnel examines a software product to identify defects, check
quality, and ensure technical correctness.
Technical reviews focus on the technical aspects of software such as algorithms, logic, design, coding
style, performance, and compliance with standards.
5. Summary Table
Standard Purpose
IEEE 828 Defines SCM Plan and processes
ISO 12207 Defines SCM across software lifecycle
ISO 9001 Quality management; supports version and document control
CMMI Defines maturity and process improvement for SCM
System Engineering: Hierarchy (UNIT 4)
System Engineering is a multidisciplinary approach used to design, develop, and manage complex
systems such as software, hardware, networks, and large integrated solutions.
To manage this complexity, system engineering uses a hierarchical structure that breaks the system into
manageable levels.
This hierarchy helps engineers understand the system from top level (overall system) to lower levels
(components and units).
5. Summary Table
Level Description Example
System Complete product Entire Banking Software
Subsystem Major functional sections Transaction subsystem
Component Smaller functional units Fund transfer module
Unit/Module Lowest-level functions Code functions or classes
Business Process Engineering (BPE) – (UNIT 4)
Business Process Engineering (BPE) is the activity of analyzing, redesigning, and improving
business processes to make an organization more efficient, productive, and customer-focused.
It aims to understand “how the business works” and redesign processes for better performance.
1. Definition
BPE is the systematic analysis and redesign of workflows and processes within an organization to
achieve significant improvement in:
Productivity
Quality
Speed
Cost efficiency
It focuses on business functions such as sales, finance, customer service, HR, etc.
2. Objectives of BPE
Reduce process delays
Eliminate unnecessary steps
Improve workflow efficiency
Align processes with business goals
Improve customer satisfaction
Reduce operational cost
4. Importance of BPE
Helps organizations become more competitive
Enables digital transformation
Reduces redundancy and waste
Improves internal and external communication
Supports automation and modernization
Product Engineering (PE) – Overview (UNIT 4)
Product Engineering is the process of designing, developing, testing, deploying, and maintaining a
software product.
It focuses on converting customer needs into a high-quality, reliable product.
This engineering approach is used in:
Mobile apps
Web applications
Enterprise software
Commercial products
1. Definition
Product Engineering is the set of activities required to analyze customer requirements, design the
product architecture, develop, test, and deploy software using engineering principles.
It focuses on building a high-quality product that meets customer and market needs.
1. Requirement Elicitation
Process of collecting requirements from stakeholders.
Techniques:
Interviews
Questionnaires
Brainstorming
Observation
Document analysis
Use cases
Workshops
Goal: Identify needs, expectations, and constraints.
2. Requirement Analysis
Analyzing the collected requirements to resolve:
Conflicts
Inconsistencies
Ambiguities
Feasibility
Includes:
Data modeling
Process modeling (DFD, UML diagrams)
Prioritization
3. Requirement Specification
Documenting requirements in a clear and structured way.
The main output is the SRS (Software Requirements Specification) document.
SRS Includes:
Functional requirements
Non-functional requirements (performance, security, usability)
Interface requirements
Constraints and assumptions
4. Types of Requirements
A) Functional Requirements Performance (response time < 2 sec)
Describe what the system should do. Security (encryption, authentication)
Examples: Reliability
User login Usability
Fund transfer Maintainability
Report generation C) User Requirements
B) Non-Functional Requirements High-level descriptions for end-users.
Describe quality attributes. D) System Requirements
Examples: Detailed requirements needed by developers.
A) Structural Models
Describe the organization and relationships of system components.
Examples:
Class Diagram (UML)
Object Diagram
Component Diagram
Deployment Diagram
These models show static aspects of the system.
B) Behavioral Models
Describe how the system behaves over time, including interactions and workflows.
Examples:
Use Case Diagram
Sequence Diagram
Activity Diagram
State Machine Diagram
These models show dynamic aspects of the system.
C) Data Models
Describe how data is stored, processed, and related.
Examples:
Entity–Relationship (ER) Diagram
Data Flow Diagram (DFD)
Database schema diagram
4. Common System Modelling Techniques
1. Context Model
Shows system boundary and interactions with external entities.
(Also known as Level-0 DFD.)
3. UML Diagrams
Unified Modeling Language (UML) provides multiple diagrams:
Structural UML Diagrams
Class Diagram
Object Diagram
Component Diagram
Deployment Diagram
Behavioral UML Diagrams
Use Case Diagram
Sequence Diagram
Activity Diagram
State Machine Diagram
4. ER Diagram
Represents data entities, attributes, and relationships.
5. Architectural Models
Describe high-level system structure, such as client-server, layered architecture, etc.
7. Example (Simple)
A library management system can be modeled using:
Context diagram → shows library and external actors
DFD → shows issue/return/book search processes
Requirement Analysis – (UNIT 4)
Requirement Analysis is one of the most important phases of the Software Development Life Cycle
(SDLC).
It focuses on understanding, refining, and detailing the requirements gathered from customers and
stakeholders.
It ensures that the development team clearly understands what the user wants, what constraints exist,
and how the system should behave.
1. Definition
Requirement Analysis is the process of examining, classifying, prioritizing, and refining requirements
collected during elicitation to remove ambiguities, conflicts, and inconsistencies.
It converts raw user needs into clear, precise, and complete requirements.
4. Requirement Modeling
Using diagrams and models to understand the system clearly.
Common modeling techniques:
Functional Modeling
Data Flow Diagrams (DFD)
Use Case diagrams
Data Modeling
ER diagrams
Class diagrams
Behavioral Modeling
Sequence diagrams
Requirement Specification (UNIT 4)
Preparing SRS (Software Requirement Specification) document.
Requirements must be:
Complete
Unambiguous
Consistent
Verifiable
Traceable
6. Requirement Validation
Confirming that requirements are:
Correct
Complete
Consistent
Realistic
Testable
Techniques:
Reviews
Walkthroughs
Prototyping
Test-case derivation
1. Abstraction
Abstraction hides unnecessary details and shows only essential information.
Types:
Functional abstraction (functions/processes)
Data abstraction (data structures)
Control abstraction (control structures)
Benefits: reduces complexity, improves clarity.
2. Modularity
Dividing the system into independent modules that can be developed and tested separately.
Benefits: easier maintenance, better reuse, faster development.
3. Information Hiding
Each module hides its internal details and exposes only necessary interfaces.
Benefits: reduces coupling, increases reliability.
4. Cohesion
Cohesion measures how closely related the tasks 5. Coupling
of a module are. Coupling refers to the degree of
Types of Cohesion (from best to worst): interdependence between modules.
Functional Types of Coupling (from best to worst):
Sequential Data coupling
Communicational Stamp (structured) coupling
Procedural Control coupling
Temporal External coupling
Logical Common coupling
Coincidental Content coupling
Higher cohesion → better design. Lower coupling → better design.
6. Refinement
A top-down design technique.
Start with a high-level concept and break it into smaller details.
7. Architecture
Architectural design defines:
Major components
Their relationships
System structure
Interfaces
Examples: layered architecture, client-server, microservices.
Software Design Principles (UNIT 4)
These principles help improve the quality of design:
8. Separation of Concerns
Different concerns (UI, business logic, data access) should be separated into different modules.
9. Consistency
Naming conventions, coding style, and design structure must remain uniform.
10. Understandability
Design should be clear enough for developers to easily understand and maintain the system.
1. Design Model
A design model is a set of diagrams, representations, and specifications that describe:
Architecture of the system
Components and their relationships
Data structures
Interfaces
Behavior of the system
It acts as a bridge between requirement analysis and coding.
3. Design Documentation
Design documentation is the process of recording the design model so developers and stakeholders have
a clear reference for implementation.
This is typically delivered in the form of an SDD (Software Design Document).
2. System Overview
High-level description
Architectural style (layered, client-server, microservices)
3. Architectural Design
System components
Subsystems
Component interaction
Deployment diagram
4. Data Design
Database schema
ER diagrams
Data dictionaries
5. Interface Design
User interface structures
API designs
External system interfaces
6. Component Design
Class diagrams
Algorithms
Activity diagrams
Component-level specifications
7. Behavior Models
Sequence diagrams
Use case realizations
State transition diagrams
We can segregate Software Architecture and Design into two distinct phases: Software Architecture
and Software Design. In Architecture, nonfunctional decisions are cast and separated by the
functional requirements. In Design, functional requirements are accomplished.
Software Architecture
Architecture serves as a blueprint for a system. It provides an abstraction to manage the system
complexity and establish a communication and coordination mechanism among components.
It defines a structured solution to meet all the technical and operational requirements, while
optimizing the common quality attributes like performance and security.
Further, it involves a set of significant decisions about the organization related to software
development and each of these decisions can have a considerable impact on quality,
maintainability, performance, and the overall success of the final product. These decisions
comprise of −
o Selection of structural elements and their interfaces by which the system is composed.
o Behavior as specified in collaborations among those elements.
o Composition of these structural and behavioral elements into large subsystem.
o Architectural decisions align with business objectives.
o Architectural styles guide the organization.
Goals of Architecture
The primary goal of the architecture is to identify requirements that affect the structure of the
application. A well-laid architecture reduces the business risks associated with building a technical
solution and builds a bridge between business and technical requirements.
Some of the other goals are as follows −
Expose the structure of the system, but hide its implementation details.
Realize all the use-cases and scenarios.
Try to address the requirements of various stakeholders.
Handle both functional and quality requirements.
Reduce the goal of ownership and improve the organization’s market position.
Improve quality and functionality offered by the system.
Improve external confidence in either the organization or system.
Q2)What is architectural style? (UNIT 5)
The architectural style is a set of basic forms and features that are characteristic of buildings of a
certain time and a certain nation, which give us an idea of the building’s purpose, age, regional
context, historical significance, and even the architect. Many factors influence the emergence and
evolution of architectural styles, including climate, religion, culture, and technology. Some styles
develop linearly, while others develop in parallel.
At its core, architectural style is the creation of a coherent and visually striking design that blends into
its environment and serves its purpose. It involves a careful balance of form, function, and aesthetics
to create a structure that is both beautiful and practical.
Architectural style can also be seen as a reflection of the cultural, historical, and social context in
which it was created. For example, classical architecture is often associated with ancient Greece and
Rome, while Gothic architecture is closely associated with the medieval era. In addition, the
architectural style is constantly evolving as new technologies, materials, and design approaches
emerge. Today, architects and designers are creating more sustainable, technologically advanced, and
visually stunning buildings than ever before. Different architectural styles clearly indicate the constant
evolution of human creativity and innovation.
Architecture has always been closely connected with the history of society’s development, its outlook
and ideas, the level of development of construction technology, with the human perception of utility
and beauty. All this influenced the architectural movements.
The architectural style is manifested in the ways of organizing space, the choice of architectural forms,
their proportions, and decorative ornaments typical for this era. Familiarity with different styles of
architecture can tell a lot about a human’s past. Unlike the Greeks, who knew only a column covered
with a beam and rooms with flat ceilings, the Romans developed an arched ceiling and a system of
vaults. Roman vaults impress with their imagery, scale, and a large number of varieties. One of the
most perfect examples of Roman architecture is the Pantheon, the temple of all the gods, built in
Rome in 125 AD. The circular building is covered by a grand dome with a diameter of more than 43
meters.
The history of architecture can be imagined as the history of the development and changes of the so-
called great architecture design styles (world styles): Classicism, Gothic, Romanesque, Renaissance,
Baroque, and Modern. All architectural styles number about 30. Different types of architectural styles
were created over time, by various trends. We have compiled for you a list of architectural styles that
you certainly need to know about.
Q3) Requirements Engineering Process in Software Engineering (UNIT 5)
Requirements engineering is the process of identifying, eliciting, analyzing, specifying, validating, and
managing the needs and expectations of stakeholders for a software system. Steps in Requirements
Engineering Process The requirements engineering process is an iterative process that involves several
steps, including: Requirements Elicitation This is the process of gathering information about the needs
and expectations of stakeholders for the software system. This step involves interviews, surveys,
focus groups, and other techniques to gather information from stakeholders. Requirements Analysis
This step involves analyzing the information gathered in the requirements elicitation step to identify
the high-level goals and objectives of the software system. It also involves identifying any constraints
or limitations that may affect the development of the software system.
Requirements Specification
This step involves documenting the requirements identified in the analysis step in a clear, consistent,
and unambiguous manner. This step also involves prioritizing and grouping the requirements into
manageable chunks.
Requirements Validation
This step involves checking that the requirements are complete, consistent, and accurate. It also
involves checking that the requirements are testable and that they meet the needs and expectations
of stakeholders.
Requirements Management
This step involves managing the requirements throughout the software development life cycle,
including tracking and controlling changes, and ensuring that the requirements are still valid and
relevant.
Requirement Engineering
The Requirements Engineering process is a critical step in the software development life cycle as it
helps to ensure that the software system being developed meets the needs and expectations of
stakeholders, and that it is developed on time, within budget, and to the required quality.
Requirement Engineering is the process of defining, documenting and maintaining the requirements.
It is a process of gathering and defining service provided by the system. it is the disciplined application
of proven principle , methods ,tools and notations to describe a proposed system’s intended
behaviour and its associated constraints.
Tools Involved in Requirement Engineering
observation report
1. Questionnaire ( survey , poll )
2. Use cases
3. User stories
4. Requirement workshop
5. Mind mapping
6. Role playing
Prototyping Requirements Engineering Process Consists of the Following Main Activities
1)Requirements elicitation 2)Requirements specification 3)Requirements verification and validation
4)Requirements management
Q4) Transform mapping (UNIT 5)
Transform mapping is a process used in software engineering to design and implement the
transformation of data between different structures or representations. It involves defining the steps
and rules necessary to convert data from one format to another. Here are the design steps typically
followed in transform mapping:
1)Requirement Analysis:
The first step is to understand the requirements and objectives of the data transformation. This
includes identifying the source data format and structure, the target data format and structure, and
any specific transformation rules or constraints that need to be applied.
2)Source and Target Schema Analysis:
Analyze the source and target schemas or data models to gain a clear understanding of their
structures, attributes, and relationships. This step helps in identifying the mappings and
transformations required to convert the data from the source to the target format.
3)Mapping Specification:
Identify the mapping between the source and target data elements. This involves determining which
source elements correspond to which target elements. It may include one-to-one mappings, one-to-
many mappings, or many-to-one mappings, depending on the data structures and requirements.
4)Transformation Rules:
Define the rules and operations needed to transform the data during the mapping process. These
rules can include data validation, data cleansing, data formatting, calculations, and any other
necessary transformations. It is important to consider any data dependencies and ensure that the
transformation rules are accurate and complete.
5)Data Flow Design:
Design the flow of data from the source to the target, taking into account any intermediate steps or
data structures that may be required. This includes identifying any temporary storage or staging areas
for the data during the transformation process.
Error Handling and Validation:
Define mechanisms to handle and validate data errors or inconsistencies. This may involve defining
error codes, error handling routines, and validation checks to ensure the integrity and quality of the
transformed data.
6)Performance Optimization:
Consider performance optimization techniques to improve the efficiency of the transformation
process. This can include optimizing algorithms, reducing unnecessary data processing, and
parallelizing tasks where possible.
7)Testing and Verification:
Develop test cases and perform testing to ensure the correctness and completeness of the
transformation process. This involves comparing the transformed data against the expected results to
identify any discrepancies or errors.
8)Documentation:
Document the transformation process, including the mapping specifications, transformation rules,
data flow diagrams, and any other relevant information. This documentation helps in maintaining and
understanding the transformation process in the future.
9)Implementation:
Finally, implement the designed transformation process using appropriate programming or scripting
languages, data integration tools, or ETL (Extract, Transform, Load) frameworks, depending on the
specific requirements and technologies involved.
Q5) User Interface AND User Interface Design Golden Rules (UNIT 5)
The user interface is the front-end application view to which the user interacts to use the software.
The software becomes more popular if its user interface is:
1. Attractive
2. Simple to use
3. Responsive in a short time
4. Clear to understand
5. Consistent on all interface screens
Types of User Interface
1) Command Line Interface: The Command Line Interface provides a command prompt, where
the user types the command and feeds it to the system. The user needs to remember the
syntax of the command and its use.
2) Graphical User Interface: Graphical User Interface provides a simple interactive interface to
interact with the system. GUI can be a combination of both hardware and software. Using
GUI, the user interprets the software.
1. Define the interaction modes in such a way that does not force the user into unnecessary or
undesired actions: The user should be able to easily enter and exit the mode with little or no
effort.
2. Provide for flexible interaction: Different people will use different interaction mechanisms,
some might use keyboard commands, some might use mouse, some might use touch screen,
etc., Hence all interaction mechanisms should be provided.
3. Allow user interaction to be interruptible and undoable: When a user is doing a sequence of
actions the user must be able to interrupt the sequence to do some other work without losing
the work that had been done. The user should also be able to do undo operation.
4. Streamline interaction as skill level advances and allow the interaction to be customized:
Advanced or highly skilled user should be provided a chance to customize the interface as user
wants which allows different interaction mechanisms so that user doesn’t feel bored while
using the same interaction mechanism.
5. Hide technical internals from casual users: The user should not be aware of the internal
technical details of the system. He should interact with the interface just to do his work.
6. Design for direct interaction with objects that appear on-screen: The user should be able to
use the objects and manipulate the objects that are present on the screen to perform a
necessary task. By this, the user feels easy to control over the screen.
Q6) analysis & modeling (UNIT 5)
Analysis Model is a technical representation of the sys
system.
tem. It acts as a link between the system
description and the design model. In Analysis Modelling, information, behavior, and functions of the
system are defined and translated into the architecture, component, and interface level design in the
design modeling.
Objectives of Analysis Modelling:
It must establish a way of creating software design.
It must describe the requirements of the customer.
It must define a set of requirements that can be validated, once the software is built. Elements of
Analysis Model:
[Link]
Data Dictionary: It is a repository that consists of a description of all data objects used or produced
by the software. It stores the collection of data present in the software. It is a very crucial element of
the analysis model. It acts as a centralized repository and also helps in modeling data objects defined
during software requirements.
[Link]
Entity Relationship Diagram (ERD): It depicts the relationship between data objects and is used in
conducting data modeling activities. The attributes of each object in the Entity-Relationship
Relationship Diagram
can be described using Data object description. It provides the basis for activit
activityy related to data design.
[Link]
Data Flow Diagram (DFD): It depicts the functions that transform data flow, and it also shows how
dataa is transformed when moving from input to output. It provides the additional information which
is used during the analysis of the information domain and serves as a basis for the modeling of
function. It also enables the engineer to develop models of func functional
tional and information domains at the
same time.
[Link]
State Transition Diagram: It shows various modes of behavior (states) of the system and also shows
the transitions from one state to another state in the system. It also provides the details of how the th
system behaves due to the consequences of external events. It represents the behavior of a system by
presenting its states and the events that cause the system to change state. It also describes what
actions are taken due to the occurrence of a particula
particular event.
[Link]
Process Specification: It stores the description of each function present in the data flow diagram. It
describes the input to a function, the algorithm that is applied for the transformation of input, and the
output that is produced. It alsoo shows regulations and barriers imposed on the performance
characteristics that are applicable to the process and layout constraints that could influence the way
in which the process will be implemented.
[Link]
Control Specification: It stores additional information about the control aspects of the software. It
is used to indicate how the software behaves when an event occurs and which processes are invoked
due to the occurrence of the event. It also provides the details of the processes which are executed to
manage events.
[Link]
Data Object Description: It stores and provides complete knowledge about a data object present
and used in the software. It also gives us the details of attributes of the data object present in the
Entity Relationship Diagram. Hence, ce, it incorporates all the data objects and their attributes.
Q8) What Is Component Level Design? (UNIT 5)
Component level design refers to the process of breaking down a system into its constituent parts to
better understand how they interact and connect. In software engineering, it is the phase that focuses
on defining and developing the software components that will be used to build the overall system
architecture.
Component level design has two main goals:
Identify the components that are needed to build the system. This includes determining the
boundaries of each component and how they relate to one another.
Define the interfaces between components. This makes the components loosely coupled and
independent, allowing them to be developed and tested separately before being integrated into
the full system.
When designing components, software engineers consider:
Functionality: What is the purpose of the component? What features will it provide?
Data: What data does the component need to operate? What data does it produce? How will it
interface with data from other components?
Dependencies: On what other components does this component rely? How will those
dependencies be handled?
Reusability: Can this component be reused in other systems? If so, how can its design be made
more generic?
Scalability: How will this component handle increases in load or volume? Can its performance be
optimized?
Component-level design is a fundamental step in building a robust, modular software architecture. By
determining how to break a complex system into discrete, interconnected parts, software engineers
can create solutions that are flexible, extensible, and resilient to changes in requirements. The end
result is a system that is greater than the sum of its parts.
The Benefits of Component Level Design
Component level design is an essential part of software architecture that provides many
benefits. Include,
Increased reusability: Well-designed components can be reused in other systems, saving time and
resources. Components are self-contained and independent, so they can function in a variety of
applications.
Q9) Structured Programming (UNIT 5)
In structured programming, we sub-divide the whole program into small modules so that the program
becomes easy to understand. The purpose of structured programming is to linearize control flow
through a computer program so that the execution sequence follows the sequence in which the code
is written. The dynamic structure of the program than resemble the static structure of the program.
This enhances the readability, testability, and modifiability of the program. This linear flow of control
can be managed by restricting the set of allowed applications construct to a single entry, single exit
formats.
Rule 1 of Structured Programming: A code block is structured, as shown in the figure. In flow-charting
condition, a box with a single entry point and single exit point are structured. Structured programming
is a method of making it evident that the program is correct.
Design notation should lead to a procedural representation that is easy to understand and review. In
addition, the notation should enhance "code to" ability so that code does, in fact, become a natural
by-product of design. Finally, the design representation must be easily maintainable so that design
always represents the program correctly.
The following attributes of design notation have been established in the context of the general
characteristics described previously:
Modularity. Design notation should support the development of modular software and provide a
means for interface specification.
Overall simplicity. Design notation should be relatively simple to learn, relatively easy to use, and
generally easy to read.
Ease of editing. The procedural design may require modification as the software process proceeds.
The ease with which a design representation can be edited can help facilitate each software
engineering task.
Machine readability. Notation that can be input directly into a computer-based development system
offers significant benefits
Maintainability. Software maintenance is the most costly phase of the software life cycle.
Maintenance of the software configuration nearly always means maintenance of the procedural
design representation.
Structure enforcement. The benefits of a design approach that uses structured programming concepts
have already been discussed. Design notation that enforces the use of only the structured constructs
promotes good design practice.
Automatic processing. A procedural design contains information that can be processed to give the
designer new or better insights into the correctness and quality of a design. Such insight can be
enhanced with reports provided via software design tools.
Data representation. The ability to represent local and global data is an essential element of
component-level design. Ideally, design notation should represent such data directly.
Logic verification. Automatic verification of design logic is a goal that is paramount during software
testing. Notation that enhances the ability to verify logic greatly improves testing adequacy.
Q1) Fundamentals of Software Testing (UNIT 6)
The process of software development comprises six major steps:
Gathering project/application requirements
Analysing these needs
Designing the software
Testing and debugging
Deploying
Maintaining the project
The testing step is arguably the most crucial part of the procedure. Although the testing stage
follows the design step (which comprises designing, outlining, and implementing the code) in the
cycle, in practice, testing occurs concurrently with code writing.
The fundamentals of software testing involve finding and fixing defects in code. However, a
competent testing methodology can provide additional benefits to a project. Benefits include
improved project performance, user experience, and security.
What is Software Testing?
Software testing is the process of determining software's accuracy by taking into account all of its
properties (reliability, scalability, portability, re-usability, and usability) and analyzing the
execution of software components to uncover software bugs, mistakes, or flaws. The fundamentals
of software testing entail examining code as well as executing code in multiple contexts and
situations. In today's software development scenario, a testing team may be independent of the
development team. Software testing aims to find mistakes, gaps, or missing requirements compared
to the actual needs.
What are the Steps of Software Testing?
Verification and Validation are two major steps in software testing. These steps implement the
fundamentals of software testing.
In software testing, verification is the process through which your team checks whether the
program, system, or framework is consistent and aligned with the documentation
requirements.
Validation is the procedure by which your team verifies the system's accuracy. During this
process, you will reflect on the product and the system; and think of what users desire and
what has been developed.
Different Types of Software Testing
Manual Testing
Manual testing is the process of checking the functionality of an application in accordance with the
needs of the client without using automation technologies. We do not need any specific knowledge
of any testing tool to perform manual testing on any application; rather, we need to have a solid
understanding of the product so that we can quickly build the test document. In this case, the tester
assumes the position of an end-user and tests the software for any unusual behavior or bugs. To
ensure the thoroughness of testing, testers employ test plans, test cases, or test scenarios.
Automation Testing
Automation testing is the process of transforming any manual test cases into test scripts with the
help of automation technologies or any programming language. We can increase the speed of our
test execution with the help of automation testing because no human work is required. We'll need to
write test scripts and run them. Automation testing is used to swiftly and repeatedly re-run test
scenarios that were previously done manually in manual testing. Aside from regression testing,
automated testing is used to test the application in terms of load, performance, and stress.
Compared to manual testing, it enhances test coverage, improves accuracy, and saves time and
money.
Q2) Test Case Design Techniques in Software Testing (UNIT 6)
Test case design techniques are the key to planning, designing, and implementing tests for software
applications. These techniques involve various steps that aim to ensure the effectiveness of test cases
in uncovering bugs or other defects in software programs.
Test Case Design Techniques
There are tons of different ways to design your test cases. These techniques help you test all your
software’s features and functions efficiently.
Let’s take an example to understand this concept better.
A basic example of test case design
Let us take an example of any e-commerce app or website(like Amazon or Flipkart)for test case
design. We want to ensure users can quickly checkout and make payments without issues. Here we
test for 1 product in the cart; we will see later that this test case design technique is a boundary value
analysis technique.
Title: Test that user can complete the checkout process when there is 1 item in the card.
Description: Ensure users can checkout and make payments without issues on the website/app
Preconditions: The user is already logged in
Assumptions: They are using a supported device or browser to log in.
Test Steps:
1. Open the app/website. [Link] to 1 product Add the product to the cart. [Link] out the item
in the cart. [Link] address information for 5. delivery Add payment information [Link]
the checkout process.
Expected Result: The checkout process should be complete, and the user should receive
confirmation. What are the types of test case design techniques?
These test case design techniques can be classified into three major groups:
Specification-based
Structure-based
Experience-based
Structure-based testing, also known as white-box testing, is a testing technique that involves the
testing of internal structures or components of software applications. In this approach, the tests
interact with the code directly. These tests are designed to ensure the code works correctly and
efficiently. Specification-Based or Black-Box techniques
1. Boundary Value Analysis (BVA) identifies errors at the input domain’s boundary. A simple
example of boundary value analysis would be testing a text box that requires the user to enter
a number between 1 and 10. In this case, the boundary values would be 1 and 10, and we
would test with values that are just above, at, and just below these boundaries.
For example, we would test with 0, 1, 2, 9, 10, and 11. We can expect that errors or defects
are most likely to occur at or near the boundary values. Identifying these issues early can help
prevent them from causing problems later in the software development process.
2. Equivalence Partitioning (EP) is another technique that helps reduce the required test cases.
By partitioning test input data into classes with an equivalent number of data, one can design
test cases for each class or partition. This technique ensures that one thoroughly tests the
software while minimizing the required test cases.
For example, if a program requires an input of numbers between 1 and 100, an EP test would
include a range of values, such as 1-50 and 51-100, and numbers outside that range, such as -1
or 101. Testing one value from each partition is sufficient to test all values within that
partition.
3. Decision Table Testing is a technique that involves designing test cases based on decision
tables formulated using different combinations of inputs and their corresponding outputs
based on various conditions and scenarios sticking to other business rules. This technique
ensures that we test the software thoroughly and accurately.
For example, if a program offers discounts based on the type of customer and the amount
spent, a decision table would list all possible combinations of customer types and the amount
paid to receive a discount. Each cell in the table would specify the value that should be
applied. Testers can ensure the program behaves correctly under various scenarios by testing
all combinations.
4. Developers use State Transition Diagrams(STD) to test software with a finite number of states
of different types. A set of rules that define the response to various inputs guides the
transition from one state to another. This technique is handy for systems with specific
workflows within them.
5. Use Case Testing involves designing test cases to execute different business scenarios and
end-user functionalities.
For example, A use case could be a “student enrolling in a course” on an academic website.
Test cases would simulate the enrollment process and verify the system’s response from a
student’s perspective.
Q4)Structure-Based or White-Box techniques (UNIT 6)
Statement Testing and Coverage is a technique that involves executing all the executable
statements in the source code at least once. We then calculate the percentage of executable
statements as per the given requirement.
For example, consider code that inputs two numbers and checks if the first number is greater than or
equal to the second. A statement coverage test would verify that both the “greater than” and “equal
to” statements are executed during testing to ensure that all code branches are covered.
Decision Testing Coverage, also known as branch coverage, validates all the branches in the code by
executing each possible branch from each decision point at least once. This helps ensure that no
branch leads to unexpected application behavior.
For example, if a program requires an input of a number between 1 and 100 and uses an “if/else”
statement to check if the number is even, decision testing coverage would ensure that both the even
and odd outcomes have been tested to confirm all possible scenarios have been checked.
Condition Testing, also known as Predicate coverage testing. It involves evaluating each Boolean
expression in the code and checking its output values, TRUE or FALSE, against the expected outcomes.
This test checks all outcomes at least once to achieve 100% code coverage. We design test cases that
make it easy to execute the condition outcomes.
For example, if a program determines whether a user is eligible for a discount based on age, condition
testing would verify that the code handles each age group accurately. It would test age values such as
one less than, one more than, and within the age range requirement to evaluate if the code performs
as expected.
Multiple Condition Testing aims to test different combinations of conditions to achieve 100%
coverage. This technique requires two or more test scripts, which may require more effort.
For example, if a program uses an “if/else” statement to check age and gender to provide a discount,
multiple condition testing would verify that the program handles all possible scenarios correctly. It
would test various age ranges and gender combinations to ensure the code performs accurately for all
possibilities.
All Path Testing leverages the source code of a program to find every executable path.
For example, if a program asks a user for two inputs (A and B) and has multiple conditions, All Path
Testing would ensure that each condition is tested independently. The technique would test all
combinations of A and B, including zero, negative, and positive Testings, to identify any potential
errors in the code.
Q5) Testing for Specialized Environments (UNIT 6)
The need for specialized testing approaches is becoming mandatory as computer software has
become more complex. The White-box and black box testing methods are applicable across all
environments, architectures and applications, but unique guidelines and approaches to testing are
sometime important. We address the testing guidelines for specialized environments, architectures,
and applications that are commonly encountered by software engineers.
Testing GUIs
The growth of Graphical User Interfaces (GUIs) in various applications has become a challenge for test
engineers. Because of reusable components provided as part of GUI development environments, the
creation of the user interface has become less time consuming and more precise. GUI is becoming
mandatory for any application as users are used to it. Sometime, the user interface may be treated as
a different layer and easily separated from the traditional functional or business layer.
The design and development of user interface layer requires separate design and development
methodology. Here the main problem is to understand the user psychology during the development
time. Due to complexity of GUIs, testing and generating test cases has become more complex and
tedious. Because of modern GUIs standards (same look and feel), common tests can be derived.
Every time we onboard a new client, the first mandatory step we take is understanding the quality
standards that a particular product has to meet. These quality standards are different depending on
the industry vertical, as for example, an HR platform doesn’t need to comply with the same
regulations as a medical or pharmaceutical application, and so how we test each of them will be
different.
Therefore we meet with the client to talk about these standards and specific requirements. And we
put in place a testing process that goes hand in hand with development.
Based on the product’s requirements and the defined acceptance tests, our testers create test
cases and document them with the help of a tool (usually TestRail, Jira or Azure DevOps).
Analyzing the requirements gives us the chance to identify if there are any errors, before developers
start coding, thus enabling us to prevent future bugs. Our testers’ role is to also make sure that the
requirements are clear, complete, and testable, and gather information about the priorities in testing.
Another important task at this stage is reviewing the test cases inside the team - other team members
take a look at the test cases to make sure they are clear and comprehensive.
For example, for a mobile application, we need to make sure it works the same on all the versions of a
mobile operating system.
4. Test execution
We typically work in an Agile environment, with sprints that take 2 - 3 weeks, having a sprint backlog
of user stories that we need to build.
Right after a feature is developed, testers work with the development team to make sure that the
acceptance tests are passed. Testers and developers work in close cooperation, almost in symbiosis as
we like to say because the goal is to spot any bugs early on and fix those bugs then and there. It’s
easier and faster to fix an error right after developing a feature, rather than later in the future.
Developers themselves are responsible for testing the features they developed, and most of the time
their code is covered by Unit tests (white box testing)
5. Constantly improve the testing process
We view our testing process as ever-evolving and focus on how we can continue to make it better.
The Sprint Retrospective meeting held at the end of each development sprint is a good occasion to
look at how the testing went, what types of bugs were reported, and determine how testing can be
improved.
Q7) Unit Testing (UNIT 6)
Unit testing involves the testing of each unit or an individual component of th the
e software application.
It is the first level of functional testing. The aim behind unit testing is to validate unit components
with its performance.
A unit is a single testable part of a software system and tested during the development phase of the
application software.
The purpose of unit testing is to test the correctness of isolated code. A unit component is an
individual function or code of the application. White box testing approach used for unit testing and
usually done by the developers.
Whenever thehe application is ready and given to the Test engineer, he/she will start checking every
component of the module or module of the application independently or one by one, and this process
is known as Unit testing or components testing
testing.
Why Unit Testing? In a testing level hierarchy, unit testing is the first level of testing done before
integration and other remaining levels of the testing. It uses modules for the testing process which
reduces the dependency of waiting for Unit testing frameworks, stubs, drivers and mock objects are
used for assistance in unit testing.
Generally, the software goes under four level of testing: Unit Testing, In Integration
tegration Testing, System
Testing, and Acceptance Testing but sometimes due to time consumption software testers does
minimal unit testing but skipping of unit testing may lead to higher defects during Integration Testing,
System Testing, and Acceptance Te Testing
sting or even during Beta Testing which takes place after the
completion of software application.
o Unit testing helps tester and developers to understand the base of code that makes them able
to change defect causing code
ode quickly.
o Unit testing helps in the documentation.
o Unit testing fixes defects very early in the development phase that's why there is a possibility
to occur a smaller number of defects in upcoming testing levels.
o It helps with code reusability by migrat
migrating code and test cases.
Q8) Integration testing (UNIT 6)
is the process of testing the interface between two software units or modules. It focuses on
determining the correctness of the interface. The purpose of integration testing is to expose faults in
the interaction between integrated units. Once all the modules have been unit-tested, integration
testing is performed. Integration testing is a software testing technique that focuses on verifying the
interactions and data exchange between different components or modules of a software application.
The goal of integration testing is to identify any problems or bugs that arise when different
components are combined and interact with each other. Integration testing is typically performed
after unit testing and before system testing. It helps to identify and resolve integration issues early in
the development cycle, reducing the risk of more severe and costly problems later on. Integration
testing can be done by picking module by module. This can be done so that there should be a proper
sequence to be followed. And also if you don’t want to miss out on any integration scenarios then you
have to follow the proper sequence. Exposing the defects is the major focus of the integration testing
and the time of interaction between the integrated units. Integration test approaches – There are four
types of integration testing approaches. Those approaches are the following:among all the modules.
o We go for the integration testing only after the functional testing is completed on each
module of the application.
o We always do integration testing by picking module by module so that a proper sequence is
followed, and also we don't miss out on any integration scenarios.
o First, determine the test case strategy through which executable test cases can be prepared
according to test data.
o Examine the structure and architecture of the application and identify the crucial modules to
test them first and also identify all possible scenarios.
o Design test cases to verify each interface in detail.
o Choose input data for test case execution. Input data plays a significant role in testing.
o If we find any bugs then communicate the bug reports to developers and fix defects and
retest.
o Perform positive and negative integration testing.
Disadvantages: [Link] will be quite a lot of delay because you would have to wait for all the
modules to be integrated. [Link]-risk critical modules are not isolated and tested on priority
since all modules are tested at once. 3. Not Good for long projects. 4. High risk of integration
problems that are difficult to identify and diagnose. 5. This can result in long and complex
debugging and troubleshooting efforts
Q10 )Validation testing (UNIT 6)
Validation testing is a complex process that involves finding and testing every user need or
requirement to ensure they function well. Here are the basic phases of validation testing:
1. Design qualification
The process of design qualification, or DQ, includes creating a list of end-user business requirements
and designing a validation testing plan to address them before launching the product. This plan can
also be a useful written record of the design specifications that the developer and consumer desire.
After writing the testing plan, development teams can seek approval from managers or shareholders
before they begin the testing process.
2. Installation qualification
Installation qualification, or IQ, involves installing the software according to the validation testing
plan. Product development teams may ensure that both system hardware and the installation process
itself match the design specifications. This phase also involves ensuring that the test environment is
suitable for product operation and matches the environment in which the product is likely to perform
once the company releases it to the public.
3. Operational qualification
Operational qualification, or OQ, involves testing the product with a variety of testing operations to
ensure the product meets the specified user requirements. Important validation testing techniques
include unit testing, integration testing and system testing. These are all different types of
functionality testing, which can determine if various elements of the software function according to
the user requirements.
Software development teams can follow the plan from the design qualification phase to ensure they
test every product specification in the appropriate environment. It's useful for product development
team members to record these tests carefully to create a written record of the software performance.
They can also record the creation of deliverables and ensure those deliverables are satisfactory
through a deliverable approval process.
4. Performance qualification
Performance qualification, or PQ, testing verifies that a product can perform according to business
needs in the real world. Developers on the internal team can perform alpha testing to assess the
functionality of the software under simulated real-world conditions. After performing their own
testing, a product development team can offer clients the chance to test the product through a
process called beta testing.
In beta testing, an external client can use the product and identify bugs or technical challenges. They
can then report this information back to the development team, allowing them the opportunity to
make changes before releasing the product to the public. After receiving approval from the beta
testers, the product may be ready for production and deployment.
5. Production
After completing all levels of validation testing, a software product may go into production. This
means that the product is ready to be marketed and sold to consumers. The software development
team might help facilitate the deployment and installation process. The company can also offer
technical assistance to individuals experiencing minor technical challenges in the product. If they
discover a major technical bug, the development team can address it by devising a solution and
release a software update.
Q11) Software Metrics
A software metric is a measure of software characteristics which are measurable or countable.
Software metrics are valuable for many reasons, including measuring software performance, planning
work items, measuring productivity, and many other uses.
Within the software development process, many metrics are that are all connected. Software metrics
are similar to the four functions of management: Planning, Organization, Control, or Improvement.
1. Product Metrics: These are the measures of various characteristics of the software product. The two
important software characteristics are:
Types of Metrics
1) Internal metrics: Internal metrics are the metrics used for measuring properties that are viewed to
be of greater importance to a software developer. For example, Lines of Code (LOC) measure.
2)External metrics: External metrics are the metrics used for measuring properties that are viewed to
be of greater importance to the user, e.g., portability, reliability, functionality, usability, etc.
3)Hybrid metrics: Hybrid metrics are the metrics that combine product, process, and resource metrics.
For example, cost per FP where FP stands for Function Point Metric.