Software Engineering Concepts Overview
Software Engineering Concepts Overview
teach me all the concept in the ppt and do give me reference of it from
Textbook Reference: Software Engineering: A Practitioner's Approach, 9th
Edition (Indian Edition) by Roger S. Pressman & Bruce R. Maxim.
PDF
Unit-I Introduction of Software Engine…
Course Objectives
The main objectives of the course are to:
Learn and understand the principles of Software Engineering and understand the
Software Development Life Cycle.
Understand the different risk factors and techniques of Software Project planning and
management.
Course Outcomes
On completion of the course, the learner will be able to:
[Link] 1/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
5. Prepare the SRS, Design document, Project plan, and overall management of a given
software system.
Unit I Syllabus
Unit I – Introduction to Software Engineering (09 hours)
Nature of Software
Software is a set of computer programs that provides functionality and performs desired
tasks.
Technical Definition
Software is:
Examples: Operating Systems, Internet browser, Movie Player, Antivirus, Games, etc.
Software Processes
Software development often involves a series of steps that can go wrong if not managed
properly, as illustrated in humorous cartoons showing common pitfalls like poor
communication or misunderstood requirements.
2. The vehicle for delivering a product as the control of the computer (Ex. operating
systems), the communication of information (Ex. Networking software), and the creation
of other programs (Ex. software tools).
Software Applications
1. System Software
2. Business Software
5. Web-based Software
7. Real-time System
8. Embedded System
System Software
Business Software
Software applications that are used by business users to perform various business
functions.
Examples: Accounting System, Enterprise resource planning (ERP), etc.
Software Engineering
Software engineering is the process of designing, developing, testing, and maintaining
software. It is a systematic and disciplined, quantifiable approach to the development,
[Link] 3/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
3. Tools: Software Engineering Tools allow automation of activities which helps to perform
systematic activities. A system for the support of software development, called
computer-aided software engineering (CASE). Examples: Testing Tools, Bug/Issue
Tracking Tools, etc.
With a "Quality" focus at the base, defining continuous process improvement principles.
Software Myths
Beliefs about software and the process used to build it. "Misleading Attitudes that cause
serious problems" are myths.
Types:
1. Management Myths
2. Customer Myths
[Link] 4/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Management Myths
Customer Myths
From the PPT, customer myths are mentioned but not detailed in browsed pages. From the
textbook, examples include:
Myth: A general statement of objectives is sufficient to begin writing programs—we can fill in
the details later.
Reality: A poor up-front definition is the major cause of failed software efforts. A formal and
detailed description of the information domain, function, behavior, performance, interfaces,
design constraints, and validation criteria is essential. These characteristics can be
determined only after thorough communication between customer and developer.
[Link] 5/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
1. Communication
2. Planning
3. Modelling
4. Construction
5. Deployment
The process model is the abstract representation of the process. Also known as Software
Development Life Cycle (SDLC) or Application Development Life Cycle Models.
Process models prescribe a distinct set of activities, actions, tasks, and milestones
(deliverables) required to engineer high-quality software.
Process models are not perfect, but provide a roadmap for software engineering work.
Software models provide stability, control, and organization to a process that if not
managed can easily get out of control.
Software process models are adapted (adjusted) to meet the needs of software engineers
and managers for a specific project.
2. Umbrella activities: S/W Project tracking, Risk Management, SQA, Technical Review,
SCM, Reusability.
[Link] 6/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Generic process model | Learn How does Generic Process Model work?
This Model also called as the Classic life cycle or the Waterfall model. Winston Royce
introduced the Waterfall Model in 1970. Also called as Linear Sequential Development
Model. Waterfall approach was first SDLC Model, used widely in Software Engineering to
ensure success of project. Each phase must be completed before the next phase can
begin. Output of one phase will be input of next phase. This model is named "Waterfall
Model", because its diagrammatic representation resembles cascading waterfalls.
Phases
1. Requirement Analysis: The aim of this phase is to understand the exact requirements of
the customer and to document them properly. They discuss functions, performance,
and interfacing requirements of the software. In this phase, Software Requirement
Specification (SRS) document is created. A project is short & simple. Where the tools
and technology used is consistent and is not changing. SRS document serves as a
contract between the development team and customers.
[Link] 7/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
2. Design Phase: All gathered requirements are converted into suitable design. It defines
the overall software architecture together with high level and detailed design. High level
design include Algorithm, Flow charts, Decision tree, Database design, etc. Low level
design include Rough paper design, User interface components, etc. Also finalized
Programming languages, Database or other Hardware & Software requirements. All this
work is documented as a Software Design Document (SDD).
3. Development Phase: In this phase software design is translated into source code using
any suitable programming language. The developer first developed in small programs
called units after that integrated it. Unit testing is done in this phase to check whether
each module is working properly or not.
4. Testing Phase: In this phase, Tester perform all the testing activities to make sure that
the system meets the client requirements or not. After combining all the unit modules,
Integration testing is done for any faults and failures. It generates Test cases & Test
reports.
[Link] 8/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Advantages
Drawbacks
Where to Use
2 Hospital Patient Record Software to manage patient records, appointments, and billing in
System hospitals.
3 Payroll Management Handles salary calculation, deductions, and employee data for
System HR departments.
4 Inventory Control System Software for stock management, reordering, and reporting in
retail/business.
5 Online Examination System for conducting exams online with question banks and
System result generation.
[Link] 9/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Phases
1. Requirement Gathering & Analysis: Business Analyst & Product Manager collect all the
Functional & Non-Functional requirements of customers. This phase performs a crucial
role in Incremental Model.
2. Design Phase: It design the overall software architecture together with high level and
detailed design. Designer design Algorithm, Data Flow diagram, Activity diagram, Class
diagram, State Transition diagram, Database design etc.
3. Implementation Phase: In this phase software design is translated into specific source
code. Programmers use suitable programming languages, frameworks & databases.
4. Testing Phase: In the testing phase, Tester checks the performance of each existing
function as well as additional functionality as per customer requirements or not. There
are many test methods, but the most common are white box, black box and grey box
test methods.
[Link] 10/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
When to Use
Requirements are clearly specified, understood and are known up-front. When the
customer demands a quick release of the product.
Such methodology is more in use for web application and product based companies.
Advantages
Disadvantages
A good team and proper planned execution are required because of its continuous
iterations.
Problems might cause due to system architecture as such not all requirements
collected up front for the entire software lifecycle.
Each iteration phase is rigid and does not overlap each other.
Where to Use
1 Online Banking System Starts with basic account features, then adds fund
transfer, bill payment, etc.
2 E-Commerce Website Begins with product listing and cart; adds payment,
reviews, and tracking later.
4 CRM (Customer Relationship Begins with lead tracking; adds contact history, analytics,
Management) and marketing tools.
5 Hotel Booking Application Starts with room booking; later adds customer feedback,
billing, and offers.
Useful in web and app development, where features evolve over time.
[Link] 12/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
broken down into several modules that can be incrementally constructed means it take
customer feedback of each module. Delivered product module by module to the customer.
When to Use
1. Evolutionary model is commonly used when the customer wants to start using the core
features instead of waiting for the full software.
Advantages
2. User has checked every stage during the development and it is helpful in achieving
customer confidence.
3. User gets a chance to experiment with a partially developed software much before the
complete version of the system is released.
[Link] 13/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
4. It reduces the error because the core modules get tested thoroughly. Initial
Requirement.
Disadvantages
1. Constant and clear interaction between the development team members is required.
2. The delivery of full software can be late due to different changes by customers during
development.
Prototype is not a complete product it is just functional replica or toy implementation of any
idea, software or system. It is applied when customers do not know the exact project
requirements. It generate before actual development of software. It is an iterative, trial and
error method which takes place between developer and client.
When to Use:
Advantages:
[Link] 14/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
1. Prototype model need not know the detailed input, output, processes, adaptability of
operating system and full machine interaction.
5. Errors can be detected much earlier as the system is made side by side.
6. Flexibility in design.
Disadvantages:
1. The client involvement is more and it is not always considered by the developer.
1 ATM User Interface System Prototype helps design the user flow for cash withdrawal,
balance check, etc.
2 E-Learning Portal for Schools Prototype used to finalize features like content access,
quizzes, and reports.
3 Online Movie Ticket Booking UI prototype clarifies seat selection, booking flow, and
System payment interface.
5 Hotel Room Reservation Web Mock-up helps refine room selection, date picker, and
App payment options.
[Link] 15/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Phases
2. Risk Analysis: Identification of all the potential risks. Risk mitigation strategy is planned
for solving risks. Design a prototype of model.
3. Engineering & Execution: Actual development start. Designer design the product as per
final prototype. Developer perform actual coding or implementation. Tester perform all
testing methods. Deploy or Release product to the customer environment.
4. Risk Analysis: Take a feedback from customers. If customer want any changes, goes to
next planning.
[Link] 16/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
When long term project commitment is not feasible due to changes in economic
priorities.
Advantages:
2. Risky parts can be developed earlier which helps in better risk management.
6. Development is fast.
Disadvantages:
1 Defense Missile Control System High-risk project with complex requirements; needs
repeated risk analysis.
2 Banking Software for Loan Involves evolving regulations, security checks, and high-
Management risk transactions.
4 Enterprise Resource Planning Large modules developed iteratively with ongoing risk
(ERP) System assessment.
[Link] 17/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
5 Medical Diagnostic Software Involves regulatory risks, evolving user needs, and
System intensive validation.
Requirements are not well understood initially and evolve over time.
Concurrent Models
It is types of Evolutionary Model. Concurrent means “done at same time”. Applicable in all
States:
[Link] 18/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Advantages:
Disadvantages:
1. It needs better communication between the team members. This may not be achieved
all the time.
2 Smart Home Automation System Parallel development of lighting, security, and temperature
control modules.
3 Multi-Platform Chat Application UI design, backend APIs, and mobile apps developed
concurrently.
5 Enterprise CRM with Analytics Analytics, user interface, and data handling modules
Dashboard progress in parallel.
Ideal for large, modular projects with clear interfaces between parts.
[Link] 19/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
When to Use:
Where failure can cause loss of life, serious injury, or environmental damage such as
medical devices, nuclear power plant controls, railway signaling.
When the system’s logic and behavior are very complex and hard to test thoroughly.
Advantages:
Early Error Detection – Issues can be found at the design phase before coding.
[Link] 20/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Automated Analysis – Tools like model checkers can rigorously analyze system
behavior.
Disadvantages:
Component-Based Development
Available component-based products are researched and evaluated for the application
domain.
RAD Model
[Link] 21/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
3. Modeling
1. Business Modeling: Information flow among the business. Ex. What kind of
information? Who is going to generate information? From where information comes
and goes?
2. Data Modeling: Information refine into set of data objects that are needed to support
business.
Advantages:
[Link] 22/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Disadvantages:
For large but scalable projects, RAD requires sufficient human resources.
Projects fail if developers and customers are not committed in a much shortened time-
frame.
Not appropriate when technical risks are high (heavy use of new technology).
1 Employee Feedback Portal A web-based tool to collect and analyze employee feedback;
quick prototypes help.
2 Online Food Ordering App Allows fast delivery of MVP with core functions like menu,
order, and tracking.
3 College Event Registration Quick web app for students to register for events; UI and forms
System developed fast.
4 Customer Support Chatbot Prototype chatbot system with modular upgrades like analytics
Interface and AI later.
5 Internal Expense Tracker Business tool for tracking department expenses; built quickly
Tool with frequent user input.
Users are actively involved and give feedback after each prototype.
Ideal when the UI/UX and basic workflows are the priority.
The Unified Process (UP) is an iterative and incremental software development framework.
It is use-case driven, architecture-centric, and focuses on managing risk. It has phases:
Inception, Elaboration, Construction, Transition.
[Link] 23/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
The "Personal" might refer to Personal Software Process (PSP), which is a disciplined
process for individual engineers to improve their performance.
Agility Principles
Principles of Agile Software Development Methodology:
Customer Satisfaction
Changing Requirements
Frequent Delivery
Communicate Regularly
Face-to-face communication
Development process
Good Design
Measure progress
[Link] 24/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
(Reference: Pressman, Chapter 3, Section 3.2 - Agility and the Cost of Change)
[Link] 25/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Key Principles:
Feedback: Frequent feedback loops with customers and within the development team.
Courage: Encouraging team members to take initiative and make necessary changes
without fear.
Core Practices:
Test-Driven Development (TDD): Writing tests before the actual code to ensure
functionality and catch issues early.
Continuous Integration: Frequently integrating code changes into the main branch to
detect and fix conflicts early.
Refactoring: Continuously improving and cleaning up the codebase without changing its
functionality.
[Link] 26/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Advantages:
Higher Quality: Continuous testing and refactoring lead to robust and error-free
software.
Flexibility: Adaptive planning and small iterations allow for easy incorporation of
changes.
Disadvantages:
Pair Programming: May not be suitable for all team members or projects.
Scrum
Scrum Process:
User Story
Epic
Product Backlog
Sprint
Sprint planning
Sprint Backlog
Scrum meeting
Characteristics of Scrum:
Self-organize team
[Link] 27/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Scrum team
Scrum Master
Product owner
Product Owner
Product Backlog
Daily Standup
Sprint Review.
Advantages:
[Link] 28/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Disadvantages:
Team member leaves in the middle of a project, it can have a huge negative impact on
the project.
People derive (gain) as much (or more) satisfaction from the creative process as they do
from the end product.
Like an artist enjoys the brush strokes as much as the framed result.
A writer enjoys the search for the proper metaphor (comparison) as much as the
finished book.
As creative software professional, you should also derive as much satisfaction from the
process as the end product.
The duality (contrast) of product and process is one important element in keeping creative
people engaged as software engineering continues to evolve.
(Reference: Pressman, Chapter 1, Section 1.5 - The Product and the Process)
[Link] 29/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
teach me all the concept in the ppt and do give me reference of it from
Textbook Reference: Software Engineering: A Practitioner's Approach, 9th
Edition (Indian Edition) by Roger S. Pressman & Bruce R. Maxim.
PDF
Unit-II Requirements [Link]…
Syllabus
Main Topic-1: Requirements Engineering, Requirements Gathering, Quality Function
Deployment, Usage Scenarios, Elicitation Work Products, Developing Use Cases,
Building the Requirements Model, Negotiating Requirements, Validating Requirements
Requirements Engineering
Definition: A disciplined process of gathering, documenting, and managing the
requirements of a system.
Objectives:
[Link] 30/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Definition:
Types of Requirements:
There are two types of requirements:
1. Functional Requirements
1 Help to understand the functions of the Help to understand the system's performance.
system.
5 These requirements are specified by the user. These requirements are specified by the
software developers, architects and technical
persons.
6 Describe what the product does Describes how the product works
7 There is functional testing such as API testing, There is non-functional testing such as
system, integration, etc. usability, performance, stress, security, etc.
8 First Completion of Functional requirements While system will not work only with non-
allows the system to perform non-functional functional requirements.
requirements.
Examples
[Link] 31/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
4. Only Managerial level employees have the right to view banking revenue data.
3. A website should be capable enough to handle 20 million users with affecting its
performance.
4. The software should be portable. Moving from one OS to other OS does not create
any issue.
[Link] 32/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Requirement What it means (how it affects
Type customer: 😊 / 😡) Real-life example
Normal These are explicitly stated by the You ask for the ability to book a seat
Requirements customer during discussion. reservation (you tell the app you want that).
Satisfaction increases in proportion to If booking is slow or error-prone, you get
how well they’re delivered—and annoyed. If it's smooth, you're satisfied.
decreases if they’re missing or poor.
Expected These are implied or assumed— You assume the app will send a valid E-
Requirements customers don’t usually mention ticket PDF via email. You don’t ask for it; if
them—but their absence causes it's missing or email arrives blank, you’re
major dissatisfaction, even though frustrated—even though its presence
their presence won't boost doesn’t excite you.
satisfaction.
Exciting These are unspoken, pleasant You don’t ask for real-time seat availability
Requirements surprises—delighters that customers indicator or app-showing available seats in
never ask for. Their presence creates bus layout as you tap. But when it shows
delight—but their absence causes no you exactly where the seats are in real time,
harm. you feel pleasantly surprised and
impressed.
[Link] 33/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
We create scenarios—concrete stories that define how each type of user will work
through the feature.
We then convert to use cases: each use case is a structured set of steps describing
actor and system behavior.
This method captures both functional needs and user context, allowing us to design
accurate, testable requirements before writing detailed specs.
Actor-System Interaction: A use case describes how a real-world actor interacts with
the system.
System Use Cases: Include high-level implementation decisions. Can be written both
informally and formally.
[Link] 34/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Developing Use Cases: Use cases are developed after identifying actors and address
several key questions, such as:
Class-based Elements:
Usage scenarios imply a set of objects that interact with the system, which are
categorized into classes.
[Link] 35/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
UML class diagrams depict these classes, their attributes (e.g., name, type),
and operations (e.g., identify, enable).
Behavioral Elements:
The requirements model includes elements that depict this behavior to guide
these later stages effectively.
Negotiating Requirements
In an ideal scenario, requirements engineering tasks like inception, elicitation, and
elaboration should sufficiently determine customer requirements for proceeding with
software engineering activities. However, this is rarely the case, and negotiation with
stakeholders becomes necessary. The goal is to balance functionality, performance,
cost, and time-to-market, developing a project plan that meets stakeholder needs within
real-world constraints.
Occurs when:
Effective negotiations aim for a "win-win" outcome, satisfying stakeholders' needs while
enabling the software team to work within realistic budgets and deadlines. Boehm
outlines negotiation activities at the beginning of each software process iteration,
including identifying key stakeholders, determining their "win conditions," and
reconciling these into mutually agreeable conditions for all parties, including the
software team.
[Link] 36/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Validating Requirements
In requirements modeling, the focus is on defining "what" the system must do, not
"how" it will do it. This includes specifying user interactions, system functions,
behaviors, interfaces, and constraints.
The requirements model has three main objectives: describing customer needs,
establishing a foundation for software design, and defining requirements for validation.
It involves creating scenarios and converting them to use cases to capture functional
needs and user context.
[Link] 37/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
UML Models
The Unified Modeling Language (UML) is a standardized modeling language used in
software engineering to visualize, specify, construct, and document the artifacts of a
software system. UML provides a set of diagrams and techniques to create abstract
models of a system, helping to simplify the complexity of software design and
development.
Class Diagram: Depicts the classes within a system and their relationships.
Use Case Diagram: Visualizes the interactions between users (actors) and the
system, outlining system functionalities.
State Diagram: Shows the states an object goes through and the transitions
between these states in response to events.
[Link] 38/65
11/29/25, 2:29 AM Software Engineering Fundamentals and Processes - Grok
Design and Analysis: Aids in the design of new systems and the analysis of existing
ones, ensuring completeness and correctness.
UML models are versatile tools that support various phases of software
development, from requirement analysis to design and implementation, enhancing
clarity and collaboration.
(Reference: Pressman, Chapter 7, Section 7.3 - UML Models That Supplement the Use
Case)
[Link] 39/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
[Link] 40/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
In the context of the case study "TradeX" which is an online platform, requirements
modeling includes aspects like interface prototyping for live market feeds, high-
frequency trade screens, and 24x7 availability except for planned maintenance.
Functional Requirements:
Non-functional Requirements:
[Link] 41/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
teach me all the concept in the ppt and do give me reference of it from
Textbook Reference: Software Engineering: A Practitioner's Approach, 9th
Edition (Indian Edition) by Roger S. Pressman & Bruce R. Maxim.
PDF
Unit3_FINAL.[Link]
Syllabus
Duration: 09 hours
Topics:
The architectural design defines the relationship between major structural elements of the
software, the architectural styles and design patterns that can be used to achieve the
requirements defined for the system.
[Link] 42/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
The interface design describes how the software communicates with systems that
interoperate with it, and with humans who use it.
The component-level design transforms structural elements of the software architecture into
a procedural description of software components.
Software design is the last software engineering action within the modeling activity and
sets the stage for construction (code generation and testing).
Each of the elements of the requirements model provides information that is necessary
to create the four design models required for a complete specification of design.
The data/class design transforms class models into design class realizations and the
requisite data structures required to implement the software.
Concepts of Design
The concepts of design encompass the iterative translation of requirements into a blueprint,
focusing on abstraction levels, traceability to objectives, and detailed representations of
data, functions, and behaviors.
Design Quality
Software design is an iterative process through which requirements are translated into a
“blueprint” for constructing the software. That is, the design is represented at a high level of
abstraction—a level that can be directly traced to the specific system objective and more
detailed data, functional, and behavioral requirements.
[Link] 43/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Quality is assessed based on traceability, modularity, reusability, and how well the design
serves as a foundation for implementation.
Design Principles
Design principles guide the creation of effective software designs. Key principles include:
Design Classes
There are 5 different types of design classes that represent a different layer of design
architecture that can be developed:
[Link] 44/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
2. Business Domain Classes: Often refinements of analysis classes defined earlier. The
class identifies the attributes that are required to implement some elements of the
business domain.
4. Persistent Classes: Represent data stores that will persist beyond the execution of the
software.
5. System Classes: Implement software management and control functions that permit
the system to operate and convey within its computing environment and with the
outside world.
Interface Design Elements: The interface design for software is analogous to a set of
detailed drawings for the doors, windows, and external utilities of a house. The interface
design elements for software depict information flows into and out of the system and
how it is communicated among the components defined as part of the architecture.
There are three important elements of interface design: (1) the user interface (UI); (2)
external interfaces to other systems, devices, networks, or other producers or
consumers of information; and (3) internal interfaces between various design
components. These interface design elements allow the software to communicate
[Link] 45/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
externally and enable internal communication and collaboration among the components
that populate the software architecture.
Software Architecture
Software architecture is the high-level design and organization of software in which we
make important decisions regarding its overall structure, such as the relationships between
components, data flow patterns, and the mechanism for communication between different
parts of the system.
Example: Comparing two products—one with messy code launched early vs. one with
structured architecture launched later—highlights how good architecture leads to long-term
success.
[Link] 46/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Architectural Styles
Architectural styles define patterns for organizing software components. Common styles
include:
Architectural Design
Architectural design involves defining the relationship between major structural elements,
selecting styles and patterns to meet requirements.
UML Diagrams
UML (Unified Modeling Language) diagrams are categorized into:
Structural Diagrams: Model the static structure (e.g., Class Diagram: Depicts classes,
attributes, methods, and relationships; used for object-oriented systems).
Structural diagrams depict a static view or structure of a system. It is widely used in the
documentation of software architecture. It embraces class diagrams, composite structure
diagrams, component diagrams, deployment diagrams, object diagrams, and package
diagrams. It presents an outline for the system.
[Link] 47/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Class Diagram: One of the most widely used diagrams. It is the backbone of all object-
oriented software systems. It depicts the static structure of the system. It displays the
system's class, attributes, and methods. It is helpful in recognizing the relation between
different objects as well as classes.
Component Design
Component design is all about taking complex software systems and making them into
small, reusable pieces or simply modules.
1. Object-Oriented View
2. Conventional View
3. Process-Related View
Class-Based Components
Class-based components are derived from object-oriented design, where components are
built around classes that encapsulate data and behavior.
[Link] 48/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
(Reference: Pressman, Chapter 13, Section 13.1 - User Interface Analysis and Design)
teach me all the concept in the ppt and do give me reference of it from
Textbook Reference: Software Engineering: A Practitioner's Approach, 9th
Edition (Indian Edition) by Roger S. Pressman & Bruce R. Maxim.
This unit is part of the course "Software Engineering" for Class S.Y. (SEM-I) at MIT Art
Design and Technology University, MIT School of Computing, Pune. The academic year is
2025-2026 SEM-I.
Syllabus
Introduction to Software Testing, Principles of Testing, Testing Life Cycle, Phases of Testing,
Types of Testing, A Strategic Approach to Software Testing, Strategic Issues, Test
Strategies for Conventional Software, Test Strategies for Object-Oriented Software, Test
Strategies for WebApps, Verification & Validation, Software Testing Fundamentals, White-
Box Testing, Basis Path Testing, Control Structure Testing, Black-Box Testing, Model-Based
Testing, Testing for Specialized Environments, Architectures, Object-Oriented Testing
Strategies, Object-Oriented Testing Methods, Validation Testing.
Purpose: Identify defects, ensure quality, verify functionality, performance, and security.
Importance: Saves cost and time, improves product quality and customer satisfaction.
Principles of Testing
The PPT syllabus lists "Principles of Testing," but specific details are not expanded in the
provided pages. From the textbook context, key principles include:
Pesticide paradox: Tests become ineffective over time; need to review and update.
Testing is context-dependent.
Absence-of-errors fallacy: Fixing bugs doesn't mean the software meets user needs.
[Link] 50/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Requirement Analysis
Test Planning
Environment Setup
Test Execution
Phases of Testing
The PPT has a dedicated slide for "Phases of Testing," but content is minimal in the
snippet. Typically, phases align with STLC above, including unit, integration, system, and
acceptance testing.
Types of Testing
Functional Testing: Smoke, Sanity, Regression – Checks if the software performs as
expected.
[Link] 51/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Strategic Issues
Issues to address for a successful software testing strategy:
State testing objectives explicitly (e.g., mean time to failure, test coverage).
Understand the users of the software and develop a profile for each user category (use
cases).
Develop a testing plan that emphasizes “rapid cycle testing” for quick feedback.
Build robust software that is designed to test itself (exception handling, automated
testing).
Conduct formal technical reviews to assess the test strategy and test cases
themselves.
Additional issues from PPT: Who performs testing? When to start testing? How much
testing is enough? Balancing budget, time, and quality. Use of tools and automation.
Bottom-up Testing: Start with low-level modules, using drivers for higher ones.
Example: Banking Application - test login, account summary, fund transfer separately
and then integrate.
[Link] 52/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
(Reference: Pressman, Chapter 14, Section 14.5 - Integration Testing for Conventional
Software)
State-based Testing.
Cluster Testing.
(Reference: Pressman, Chapter 14, Section 14.6 - Test Strategies for Object-Oriented
Software)
[Link] 53/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Validation: The process of checking whether the software product meets high-level
requirements. Ensures the right product is built. Dynamic testing (Black Box, White Box,
Non-Functional). Validates the actual and expected products. Ensures the software built
is traceable to customer requirements.
Test Planning: Defining the scope, objectives, resources, and schedule for testing.
Test Design: Creating test cases and test scenarios based on requirements and
specifications.
Defect Reporting: Documenting any defects found and tracking their resolution.
Test Automation: Utilizing tools to automate repetitive testing tasks for efficiency.
Review and Feedback: Analyzing test results and using them to improve the testing
process.
White-Box Testing
White-Box Testing (also known as structural or glass-box testing) examines the internal
structure of the code. It includes techniques like Basis Path Testing and Control Structure
Testing to ensure all paths and logic are covered.
[Link] 54/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Using the control flow graph, various possible paths in the graph are executed.
Process:
Condition Testing:
Tests true and false branches of each simple condition in a compound condition
(e.g., if (a > b && c < d)).
Example: For (x > 5 && y < 10), test cases where conditions hold or not to uncover
errors in Boolean or relational expressions.
Focuses on variable use, where defined and used, including in loops and if
statements.
Example: Variable defined in a loop should be verified for correct use after the loop.
Loop Testing:
Example: For a while loop, test skipping, executing once, twice, and near boundary
conditions (n-1, n, n+1).
[Link] 55/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Benefits:
Black-Box Testing
Black-Box Testing focuses on inputs and outputs without internal knowledge. Mentioned in
Validation as a method. Applies use-case scenarios, creates deficiency lists.
Model-Based Testing
Models represent the system under test at a certain abstraction level.
Why it works: Models can test complex systems efficiently; less than 10% of code is
application-specific.
Benefits:
Time savings.
Obstacles:
[Link] 56/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Validation Testing
Are we building the right product? Succeeds when software functions as reasonably
expected by the customer.
Apply:
Acceptance tests: Alpha (developer's site), Beta (customer's site) with actual
customers.
teach me all the concept in the ppt and do give me reference of it from
Textbook Reference: Software Engineering: A Practitioner's Approach, 9th
Edition (Indian Edition) by Roger S. Pressman & Bruce R. Maxim.
[Link] 57/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Syllabus
Duration: 09 hours
Topics:
Risk: Risk Management: Risk Analysis & Management: Reactive versus Proactive
Risk Strategies, Risks monitoring and Management
Project Management
Project management has existed as long as humans have worked together to achieve
goals.
Project management tools and methodologies have evolved over the past century and
a half:
Scientific management
Gantt chart
[Link] 58/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Stakeholders in Detail
Stakeholders are individuals or groups with an interest in the project's outcome.
Senior Managers (Product Owners): Define the business issues that often have a
significant impact on the project.
Customers: Specify the requirements for the software to be engineered and other
stakeholders who have a peripheral interest in the outcome.
End Users: Interact with the software once it is released for production use.
The management spectrum focuses on the four P's: people, product, process, and
project. The manager of the project has to control all these P's to have a smooth flow in
the progress of the project and to reach the goal.
1. People
2. Product
3. Process
4. Project
[Link] 59/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
The Process
A software process provides the framework from which a comprehensive plan for
software development can be established.
Umbrella activities are independent of any one framework activity and occur throughout
the process.
The Project
The project manager of a project or sub-project is responsible for managing the people,
product, and process.
The responsibilities or activities of software project manager would be a long list but
that can be summarized under the main functions.
Software Scope
Software scope is the part of project planning that involves determining and
documenting a list of specific project goals, tasks, costs, and deadlines.
Software scope describes the data and control to be processed, function, performance,
constraints, interfaces, and reliability.
Problem Decomposition
To bridge the communication gap between the customer and developer and to get the
communication process started is to conduct a preliminary meeting or interview.
In the first meeting between the software engineer (the analyst) and the customer, a set
of questions are asked to establish a basic understanding of the problem, the nature of
the solution desired, and the people who will interact with the system.
[Link] 60/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
The next set of questions enables the analyst to gain a better understanding of the
problem and the customer to voice any perceptions about a solution.
How would the customer characterize "good" output that would be generated by a
successful solution?
Can you show me (or describe) the environment in which the solution will be used?
Additional questions: Are you the right person to answer these questions? Are answers
"official"? Are my questions relevant to the problem that you have? Am I asking too
many questions? Can anyone else provide additional information?
Process Decomposition
Process decomposition involves breaking down the software development process into
smaller, manageable activities or phases. It helps in organizing the work and ensuring that
each part of the process is handled effectively.
(Reference: Pressman, Chapter 22, Section 22.1 - Process Metrics and Software Process
Improvement)
Within the software development process, many metrics are connected. Software
metrics are similar to the four functions of management: Planning, Organizing,
Controlling, or Improving.
(Reference: Pressman, Chapter 22, Section 22.1 - Process Metrics and Software Process
Improvement)
[Link] 61/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
1. Product Metrics: These are the measures of various characteristics of the software
product. The two important software characteristics are: Size and complexity of
software, Quality and reliability of software, Maintainability and testability of software.
2. Process Metrics: These are the measures of various characteristics of the software
development process. For example, the efficiency of fault detection. They are used to
measure the characteristics of methods, techniques, and tools that are used for
developing software.
Types of Metrics
Internal Metrics: Internal metrics are the metrics used for measuring properties that
are viewed to be of greater importance to a software engineer. For example, Line of
Code (LOC), Cyclomatic Complexity, etc.
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.
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.
(Reference: Pressman, Chapter 22, Section 22.2 - Metrics in the Process and Project
Domains)
Size-Oriented Metrics
Size-oriented metrics are derived by normalizing quality and/or productivity measures by
considering the "size" of the software produced. Thousand lines of code (KLOC) are often
chosen as the normalization value.
So, if LOC is simply a count of the number of lines then the function shown contains 13
lines of code (LOC). Assuming that the average salary of a software engineer is
approximately Rs. 2,00,000 per year, and that 1000 lines of code are developed per year,
the average cost to develop a single line of code is approximately Rs. 200. Based on this
cost data, the total cost for development of selection sort can be calculated as Cost = 13 *
200 = Rs. 2600.
Function-Oriented Metrics
Function-oriented software metrics use a measure of the functionality delivered by the
application as a normalization value. The most widely used function-oriented metric is the
function point (FP). Function points are derived using an empirical relationship based on
countable (direct) measures of software's information domain and assessments of software
complexity.
(Reference: Pressman, Chapter 22, Section 22.6 - Reconciling LOC and FP Metrics)
Object-Oriented Metrics
Conventional software project estimation techniques require estimates of lines-of-code
(LOC) or function-points (FP), a potential problem since many OO projects use UML as
their normal notation. To address this, a number of extensions to the LOC and FP metrics
have been proposed for object-oriented systems. These are summarized in the table below.
Example: void selSort(int x[], int n) { //Below function sorts an array in ascending order int i,
j, min, temp; for (i = 0; i < n-1; i++) { min = i; for (j = i+1; j < n; j++) if (x[j] < x[min]) min = j; if (i
!= min) { temp = x[i]; x[i] = x[min]; x[min] = temp; } } }
(Reference: Pressman, Chapter 22, Section 22.7 - Metrics for Object-Oriented Projects)
(Reference: Pressman, Chapter 21, Section 21.6 - Factors That Influence Software
Projects)
[Link] 63/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Risk Management
Risk management is concerned with identifying risks and drawing up plans to minimize
their effect on a project.
(Reference: Pressman, Chapter 25, Section 25.2 - Reactive versus Proactive Risk
Strategies)
Maintain a global perspective—view software risks within the context of system and the
business problem.
Take a forward-looking view—think about the risks that may arise in the future; establish
contingency plans so that future events are manageable.
If these factors are considered, the project manager should monitor the effectiveness of
risk mitigation steps.
Risk management and contingency planning assume that mitigation efforts have failed
and that the risk has become a reality.
If you don’t actively attack the risks, they will actively attack you.
[Link] 64/65
11/29/25, 2:30 AM Software Engineering Fundamentals and Processes - Grok
Develop a shared product vision—if all stakeholders share the same vision of the
software, it is likely that better risk identification and assessment will occur.
[Link] 65/65
Both the Waterfall and Spiral models include phases such as planning and execution but differ fundamentally in flexibility. The Waterfall Model is linear and sequential, fitting stable projects with clear initial requirements, while the Spiral Model is iterative and risk-focused, suitable for large, high-risk projects with evolving requirements . The Spiral Model's ability to incorporate frequent feedback and manage risk makes it preferable for projects with significant uncertainty, unlike the rigidly structured Waterfall Model .
Verification involves checking that software achieves its requirements without executing code, ensuring the product is built right through static methods like reviews and inspections . Validation checks if the software meets user needs through dynamic testing, ensuring the right product is built and is traceable to requirements. Both processes are critical as they confirm the software's correctness and suitability for user needs, respectively .
Strategic issues in a testing plan include specifying quantifiable product requirements early, explicitly stating testing objectives, understanding user categories, developing a rapid cycle testing plan for quick feedback, and designing robust software with built-in testing capabilities. Additionally, regular technical reviews are critical to assess test strategies and improve them iteratively .
STLC phases include Requirement Analysis, Test Planning, Test Case Development, Environment Setup, Test Execution, and Test Cycle Closure . Requirement Analysis helps understand testing needs; Test Planning outlines strategies; Test Case Development creates specific scenarios for evaluation; Environment Setup ensures conditions mirror production; Test Execution involves running tests and recording outcomes; Test Cycle Closure reviews outcomes and metrics to refine and ensure quality .
Projects that suit the Waterfall Model typically have clearly defined requirements with minimal expected changes during development, such as Library Management Systems, Hospital Patient Record Systems, and Payroll Management Systems . This model is preferred in scenarios where the project requirements are stable and well-understood because it allows for independent testing of each phase, facilitating straightforward progress tracking and minimizing the impact of changes .
The Incremental Process Model allows client feedback through its iterative nature, where each subsequent release adds functionality, allowing clients to see completed parts early and provide input . Advantages include providing important functionality early, being flexible and less expensive to change, and simplifying testing and debugging by isolating errors in individual increments .
The Prototyping Model is beneficial when requirements are not well-understood, frequent changes are expected, and user interaction is a priority . However, it presents challenges such as potential slowdowns due to frequent changes, poor documentation, and increased costs in time and money due to the iterative nature of developing and revising prototypes .
The Spiral Model, combining aspects of the Waterfall, Iterative, and Prototyping models, involves continuous risk analysis, with the cycle including planning, risk analysis, engineering, and customer evaluation . It is advantageous in high-risk projects due to its focus on risk management, allowing risky components to be developed early. The use of prototypes helps visualize and refine requirements iteratively, accommodating changes and improving feedback incorporation, which is crucial for large and complex projects .
Test strategies for object-oriented software focus on testing classes and objects, emphasizing state-based and cluster testing, whereas conventional software strategies like top-down or bottom-up focus on procedural integration tests . OO strategies involve testing behaviors and collaborations of interacting objects, enhancing reliability and interoperability. They also capitalize on the modularity and reusability of OO designs, contrasting with traditional procedural methods .
White-box testing, particularly Basis Path Testing, plays a critical role in examining a program's internal structure to ensure all paths and logic are covered . Techniques such as control structure testing increase coverage by testing conditions, loops, and variables. Basis Path Testing uses control flow graphs to compute cyclomatic complexity and identify independent paths, facilitating thorough test case design and improving code reliability and maintainability .