Software Engineering Design Overview
Software Engineering Design Overview
ARCHITECTURE OF ENGINEERING:
• Waterfall model
• V-model (Validation and Verification Model)
• Incremental model
• RAD model (Rapid Application Development)
• Agile model
• Iterative model
• Prototype model
• Spiral model
WATERFALL MODEL:
The Waterfall Model is one of the earliest and most straightforward software development
methodologies. It is a linear and sequential approach, where each phase of the development process
flows downward like a waterfall.
3. Quality Control: The waterfall model places a high emphasis on quality control and testing at
each phase of the project, to ensure that the final product meets the requirements and
expectations of the stakeholders.
4. Rigorous Planning: The waterfall model involves a careful planning process, where the
project scope, timelines, and deliverables are carefully defined and monitored throughout
the project lifecycle.
1. Requirements: The first phase involves gathering requirements from stakeholders and
analyzing them to understand the scope and objectives of the project.
2. Design: Once the requirements are understood, the design phase begins. This involves
creating a detailed design document that outlines the software architecture, user interface,
and system components.
4. Testing: In the testing phase, the software is tested as a whole to ensure that it meets the
requirements and is free from defects.
5. Deployment: Once the software has been tested and approved, it is deployed to the
production environment.
22CS392-SOFTWARE ENGINEERING DESIGN
6. Maintenance: The final phase of the Waterfall Model is maintenance, which involves fixing
any issues that arise after the software has been deployed and ensuring that it continues to
meet the requirements over time.
4. Works for Stable Requirements: Ideal for projects with well-defined, unchanging
requirements.
3. Delayed Feedback: Testing happens only after the implementation phase, potentially
leading to late discovery of critical issues.
4. Not Suitable for Iterative Work: It does not accommodate ongoing feedback or iterative
improvements.
The V-Model is an extension of the Waterfall Model, emphasizing verification (building the product
correctly) and validation (building the correct product). In this model, every development phase is
paired with a corresponding testing phase, forming a "V" shape when visualized.
22CS392-SOFTWARE ENGINEERING DESIGN
Design Phase:
• Requirement Analysis: This phase contains detailed communication with the customer to
understand their requirements and expectations. This stage is known as Requirement
Gathering.
• System Design: This phase contains the system design and the complete hardware and
communication setup for developing the product.
• Architectural Design: System design is broken down further into modules taking up different
functionalities. The data transfer and communication between the internal modules and
with the outside world (other systems) is clearly understood.
• Module Design: In this phase, the system breaks down into small modules. The detailed
design of modules is specified, also known as Low-Level Design (LLD).
Testing Phases:
• Unit Testing: Unit Test Plans are developed during the module design phase. These Unit Test
Plans are executed to eliminate bugs at the code or unit level.
• System Testing: System testing tests the complete application with its functionality,
interdependency, and communication. It tests the functional and non-functional
requirements of the developed application.
• User Acceptance Testing (UAT): UAT is performed in a user environment that resembles the
production environment. UAT verifies that the delivered system meets the user’s
requirement and the system is ready for use in the real world.
Industrial Challenge: As the industry has evolved, the technologies have become more complex,
increasingly faster, and forever changing, however, there remains a set of basic principles and
concepts that are as applicable today as when IT was in its infancy.
• Validate that the application they had built adhered to the authorized business
requirements.
1. Early Defect Detection: Testing begins in the early stages, reducing cost and effort for fixing
defects later.
2. Clear Structure: Well-defined stages and deliverables for both development and testing.
4. Suitable for Critical Projects: Ideal for projects where failure is unacceptable, such as
medical or aerospace software.
22CS392-SOFTWARE ENGINEERING DESIGN
1. Inflexibility: Like the Waterfall Model, it is difficult to accommodate changes once a phase is
completed.
3. Not Suitable for Dynamic Requirements: Performs poorly in projects with frequently
changing requirements.
4. Time-Consuming: Testing each phase thoroughly adds to the overall project duration.
INCREMENTAL MODEL:
The Incremental Model is a software development approach where the system is developed and
delivered in small, manageable increments or modules. Each increment builds upon the previous
one until the complete system is developed. This model combines elements of both iterative and
linear development.
1. Requirements Gathering: Identify the requirements for the increment being developed.
Only a subset of the overall system requirements is considered for each increment.
2. Design: Design the system architecture for the current increment, ensuring it integrates with
the existing increments.
3. Implementation: Develop the code for the current increment. Each increment delivers a
functional module of the software.
4. Testing: Test the increment individually and integrate it with the previous increments.
Ensures both individual module functionality and system integration.
5. Deployment: Deploy the completed increment for user feedback or production use.
1. Early Delivery: The user gets functional parts of the system early in the process.
3. Risk Reduction: Early increments can identify and address critical issues.
4. Cost-Effective: Only essential features are developed initially, allowing staged investment.
1. Requires Good Planning: Dividing requirements and prioritizing features can be challenging.
3. Inconsistent Quality: Some increments might be more polished than others if not managed
well.
4. Time and Resource Demands: Testing and revising after each increment can extend
timelines and demand additional resources.
Example
1. Deliver a basic shopping cart and payment system in the first increment.
RAD MODEL:
The Rapid Application Development (RAD) Model is a software development methodology that
emphasizes rapid prototyping and quick feedback over lengthy planning and development cycles. It
focuses on delivering high-quality systems in a short time frame.
1. Business Modelling: Understand the business objectives and identify critical information.
Define the flow of information between business processes.
2. Data Modelling: Define the data required to support the business model. The structure of
the data to ensure integrity and accessibility.
3. Process Modelling: Identify and define the processes needed to manipulate and use the
data. Define process workflows based on business rules.
4. Application Generation: Use tools and techniques (like CASE tools) to rapidly build
prototypes and functional modules. Focus on reusability and automation to accelerate
development.
5. Testing and Integration: Conduct iterative testing of prototypes and increments to identify
and resolve issues. Integrate modules into the final system for delivery.
• User Involvement: Heavy interaction with end-users to gather feedback and refine the
system.
2. High User Satisfaction: Frequent user feedback ensures the final system meets user needs.
5. Reduced Risk: Early testing and continuous feedback help identify issues early.
2. High Dependency on User Involvement: Active and consistent user participation is critical.
3. Not Suitable for Large, Complex Systems: Limited to systems that can be modularized.
1. Business Modelling: Define user activities like checking account balance, transferring funds,
and paying bills.
2. Data Modelling: Identify data structures for account details, transactions, and user profiles.
3. Prototyping: Create a prototype with basic functionalities like login and view balance.
22CS392-SOFTWARE ENGINEERING DESIGN
4. Feedback & Refinement: Incorporate user feedback for enhancements, such as adding bill
payments or investment tracking.
ITERATIVE MODEL:
The Iterative Model is a software development approach where the system is developed
incrementally, through repeated cycles (iterations). Each iteration involves planning, design,
implementation, and testing and results in a more refined version of the software until the final
product is complete.
1. Requirement gathering & analysis: In this phase, requirements are gathered from customers and
check by an analyst whether requirements will fulfil or not. Analyst checks that need will achieve
within budget or not. After all of this, the software team skips to the next phase.
2. Design: In the design phase, team design the software by the different diagrams like Data Flow
diagram, activity diagram, class diagram, state transition diagram, etc.
3. Implementation: In the implementation, requirements are written in the coding language and
transformed into computer programmes which are called Software.
4. Testing: After completing the coding phase, software testing starts using different test methods.
There are many test methods, but the most common are white box, black box, and grey box test
methods.
5. Deployment: After completing all the phases, software is deployed to its work environment.
6. Review: In this phase, after the product deployment, review phase is performed to check the
behaviour and validity of the developed product. And if there are any error found then the process
starts again from the requirement gathering.
7. Maintenance: In the maintenance phase, after deployment of the software in the working
environment there may be some bugs, some errors or new updates are required. Maintenance
involves debugging and new addition options.
• Partial Deployment: Deliverables from each iteration may be functional and deployable.
• Refinement Through Feedback: Early versions improve based on user and stakeholder
feedback.
22CS392-SOFTWARE ENGINEERING DESIGN
1. Early Feedback: Users and stakeholders can provide input early, improving satisfaction.
2. High Resource Demand: Needs frequent testing and review after each iteration.
3. Uncertain End Date: If iterations are not well-controlled, projects may extend indefinitely.
4. Cumulative Errors: Flaws in earlier iterations may propagate if not identified and corrected.
PROTOTYPE MODEL:
The Prototype Model is a software development approach where a working prototype of the
system is built early in the development cycle. This prototype demonstrates key features and
functionality, enabling users to provide feedback before the final system is developed.
1. Requirements Gathering and Analysis: Gather high-level and unclear requirements from
stakeholders. Focus on features critical to the prototype.
22CS392-SOFTWARE ENGINEERING DESIGN
2. Quick Design: Create a basic design to represent the overall system structure and
functionality. Emphasis is on speed, not perfection.
3. Build Prototype: Develop a working model of the system with limited functionality. Use it to
represent the look, feel, and behave of the final product.
4. User Evaluation: Present the prototype to stakeholders for review and feedback. Collect
input on system functionality, usability, and design.
5. Refinement: Incorporate feedback into the next iteration of the prototype. Repeat the cycle
until the prototype is refined to meet user expectations.
6. System Development: Discard the prototype (or use it as a basis) and develop the final
system using the gathered requirements.
7. Testing and Maintenance: Test the final product thoroughly and provide ongoing
maintenance post-deployment.
How does a spiral model represent a process suitable to represent a real-time problem? A software
project which is considered to be very simple and the customer is positioned of keeping all the
requirements of the initial state, what process could you prefer development software project?
Explain the concept of prospective process models and specialized process models. Provide
examples of each and discuss scenarios where they are most effectively used.
1. Improved Requirements Clarity: Helps stakeholders visualize the system and refine unclear
requirements.
2. Early User Feedback: Incorporates user input during the development process, ensuring
satisfaction.
5. Cost-Effective for Requirement Refinement: Saves cost by addressing issues in the early
stages.
1. Increased Cost and Time for Prototyping: Building and refining prototypes can be time-
consuming and costly.
3. User Misunderstanding: Stakeholders might mistake the prototype for the final product.
4. Quality Issues: Prototypes are often developed quickly, which may introduce technical debt
if reused in the final system.
SPRIAL MODEL:
The Spiral Model is a software development process that combines elements of both the Iterative
Model and Risk-Driven Approach. It focuses on risk analysis and is particularly useful for large,
22CS392-SOFTWARE ENGINEERING DESIGN
complex, and high-risk projects. The process is represented as a spiral with multiple loops, where
each loop corresponds to a development phase.
2. Identify and Resolve Risks (Risk Analysis): Assess risks related to cost, time, technical
feasibility, and user satisfaction. Develop strategies to mitigate these risks, including
prototypes or simulations.
3. Development and Testing (Engineering): Build and test the system incrementally based on
the identified requirements. Develop prototypes or functional modules as needed.
4. Review and Plan the Next Iteration (Evaluation): Evaluate the results of the current phase
with stakeholders. Decide whether to proceed to the next iteration, refine the existing
system, or terminate the project.
1. Risk Management: Identifies and addresses risks early, reducing the likelihood of project
failure.
3. Improved Quality: Early risk analysis ensures a more robust final product.
4. Early Prototyping: Stakeholders can visualize and interact with the system early in the
process.
3. Not Suitable for Small Projects: The overhead may not justify the benefits for small, simple
projects.
4. Uncertain Timeline: The iterative nature makes it challenging to predict the exact
completion date.
1. First Loop (Concept Development): Assess requirements, identify risks like technical
feasibility, and build a proof-of-concept prototype.
2. Second Loop (System Design): Develop a more detailed system design while mitigating
identified risks.
4. Fourth Loop (System Integration): Integrate and test the complete system.
AGILE MODEL:
The Agile Model is a flexible and iterative approach to software development that focuses on
collaboration, customer feedback, and rapid delivery of small, functional increments. Agile
emphasizes adaptability to changing requirements and continuous improvement throughout the
development process.
• Scrum: serves as a framework for tackling complex projects and ensuring their successful
completion. It is led by a Scrum Master, who oversees the process, and a Product Owner,
who establishes the priorities. The Development Team, accountable for delivering the
software, is another key player.
• Extreme Programming (XP): uses specific practices like pair programming, continuous
integration, and test-driven development to achieve these goals. Extreme programming is
ideal for projects that have high levels of uncertainty and require frequent changes, as it
allows for quick adaptation to new requirements and feedback.
• Lean Development: is rooted in the principles of lean manufacturing and aims to streamline
the process by identifying and removing unnecessary steps and activities. This is achieved
through practices such as continuous improvement, visual management, and value stream
mapping, which helps in identifying areas of improvement and implementing changes
accordingly.
1. Requirement Gathering: In this step, the development team must gather the requirements,
by interaction with the customer. development team should plan the time and effort
needed to build the project. Based on this information you can evaluate technical and
economic feasibility.
2. Design the Requirements:- In this step, the development team will use user-flow-diagram or
high-level UML diagrams to show the working of the new features and show how they will
apply to the existing software. Wireframing and designing user interfaces are done in this
phase.
3. Construction / Iteration: In this step, development team members start working on their
project, which aims to deploy a working product.
4. Testing / Quality Assurance:- Testing involves Unit Testing, Integration Testing, and System
Testing. A brief introduction of these three tests is as follows:
• Unit Testing: Unit testing is the process of checking small pieces of code to ensure
that the individual parts of a program work properly on their own. Unit testing is
used to test individual blocks (units) of code.
• Integration Testing: Integration testing is used to identify and resolve any issues
that may arise when different units of the software are combined.
• System Testing: Goal is to ensure that the software meets the requirements of the
users and that it works correctly in all possible scenarios.
5. Deployment: In this step, the development team will deploy the working project to users.
6. Feedback: This is the last step of the Agile Model. In this, the team receives feedback about
the product and works on correcting bugs based on feedback provided by the customer.
Iterative and Incremental: Small, functional increments are delivered throughout the project.
3. Customer Satisfaction: Close collaboration and regular updates keep stakeholders engaged.
3. Not Suitable for All Projects: Works best for projects that can be delivered incrementally.
4. Team Dependency: Success depends heavily on the skills and collaboration of the team.
13mark
[Link] and contrast the Waterfall model with the Agile model. How do they differ in terms of
flexibility and customer involvement?
[Link] the main practice of the agile proccess .How do the process ensure the successful delivery
of the software project provide example
[Link] the key element of extreme programming (XP). How does XP ensure the quality and
success of software project .provide a detailed case study example.
4. How does a spiral model represent a process suitable to represent a real-time problem? A
software project which is considered to be very simple and the customer is position of giving all the
requirements at the initial state, what process could you prefer development software project?
[Link] the concept of prospective process models and specialized process models. Provide
examples of each and discuss scenarios where they are most effectively used
22CS392-SOFTWARE ENGINEERING DESIGN
REQUIREMENT:
TYPES OF REQUIREMENTS:
1. Functional Requirements:
• These define the specific behavior or functions the software must perform. They describe
what the system should do.
• Example: The system must allow users to log in using their email and password.
2. Non-Functional Requirements:
• These describe the qualities or attributes the system must have, such as performance,
security, and scalability.
. Example: The system should handle 500 concurrent users without crashing.
Definition: A critical SDLC phase for collecting, analyzing, and documenting stakeholders' needs
and expectations.
2. Objectives:
3. Process Includes:
4. Significance:
• Decide on the techniques to be used for gathering the requirements (e.g., interviews,
surveys, workshops, etc.).
This step focuses on collecting the needs, expectations, and constraints from all stakeholders. Some
common techniques for elicitation include:
• Workshops: Collaborative sessions where stakeholders discuss their needs and brainstorm
ideas.
3. Requirement Documentation:
After gathering the requirements, they need to be documented in a clear, structured format.
Documentation can include:
• Functional Requirements Document (FRD): Describes the specific functionalities the system
must support.
• Use Cases/Use Case Diagrams: Describes how the system should interact with users or
other systems.
22CS392-SOFTWARE ENGINEERING DESIGN
• User Stories: Short, simple descriptions of how a user will interact with the system, often
used in Agile methodologies.
4. Requirement Analysis:
• Prioritize Requirements: Determine the most critical features or constraints for the system
based on business goals.
• Feasibility Study: Assess the technical, financial, and operational feasibility of meeting the
requirements.
• Risk Analysis: Identify any potential risks that could arise in meeting the requirements and
suggest mitigation strategies.
Tools like SWOT analysis (Strengths, Weaknesses, Opportunities, Threats) or MoSCoW prioritization
(Must have, Should have, Could have, Won't have) can be helpful.
5. Requirement Validation:
Once the requirements are analyzed, it's important to validate them with the stakeholders to ensure
they are:
• Traceable: It is clear where each requirement came from and how it will be tested.
• Testable: The requirements should be framed in a way that they can be tested to verify their
fullfillment.
6. Requirement Specification:
The finalized and validated requirements are documented in the Software Requirements
Specification (SRS) document. The SRS serves as a blueprint for the design and development phases
and may include:
• Acceptance criteria.
iii. Outcome: Approval from all stakeholders ensures a shared understanding. A finalized and
agreed-upon requirements document, serving as the foundation for design and
development.
iv. Importance: Prevents costly changes during later stages. Aligns the development process
with stakeholder expectations.
The important parts of the Software Requirements Specification (SRS) document are:
3. Domain requirement.
Functional Requirements:
22CS392-SOFTWARE ENGINEERING DESIGN
The purposeful requirement part discusses the functionalities needed from the system.
❖ The system is taken into account to perform a group of high-level functions Fi. The functional
view of the system is shown in the below diagram
❖ Each function Fi of the system can be considered as a transformation of a set of input data Ii to
the corresponding set of output knowledge Oi.
The user will get some purposeful piece of labour done employing a high-level operation.
Non-functional Requirements:
Non-functional necessities accommodate the characteristics of the system which may not be
expressed as functions – like the maintainability of the system, mobility of the system, the usability
of the system, etc. Non-functional requirements may include:
1. Reliability issues
2. Accuracy of results
Domain Requirements
Definition: Domain requirements are specific to the domain or industry in which the software
operates. They include terminology, rules, and standards relevant to that particular domain.
Examples:
• Healthcare: The software must comply with HIPAA regulations for handling patient data.
• Finance: The system should adhere to GAAP standards for financial reporting.
• E-commerce: The software should support various payment gateways like PayPal, Stripe,
and credit cards.
1. Introduction
22CS392-SOFTWARE ENGINEERING DESIGN
• Purpose: States the purpose of the SRS document, the intended audience, and the system’s
intended use.
• Scope: Defines the scope of the system, including what the software will and will not do.
2. Overall Description
• Product Perspective: Describes the relationship of the product to other systems or products.
It provides context and explains where the software fits into the broader ecosystem.
• Product Features: High-level description of the major features of the system, broken down
into functional categories.
• User Characteristics: Describes the target users of the system, including their needs, skills,
and background.
• Assumptions and Dependencies: States any assumptions made during the requirement
gathering and design process, and external dependencies (e.g., third-party systems or
software).
3. System Features
• Input/Output: Defines the inputs required for the feature and the expected outputs.
• Error Handling: Describes how the system will respond to various errors related to the
feature.
• User Interface Requirements: If applicable, describes how the feature should appear to
users, such as UI design or layout.
Describes how the system will interact with external systems, hardware, and users.
• User Interfaces: Describes the user interface, including screen layouts, navigation, and
controls.
• Hardware Interfaces: Describes how the system will interface with hardware, including
devices, sensors, or other equipment.
5. System Attributes
Describes the system’s non-functional requirements, which are critical to ensure the system
performs efficiently and securely.
• Reliability: Defines the system’s expected reliability, including uptime and fault tolerance.
• Maintainability: Describes how easily the system can be maintained, including updates and
bug fixes.
• Scalability: Describes how well the system can grow to accommodate future expansion or
increased load.
6. Other Requirements
• Legal and Regulatory Requirements: Specifies any legal or regulatory constraints, such as
data privacy laws (e.g., GDPR, HIPAA).
• Data Requirements: Specifies how the software will manage data, including storage, backup,
and retrieval mechanisms.
Advantages:
2. Reduces Scope Creep: Defines project boundaries, preventing unnecessary feature additions
and changes during development.
3. Foundation for Design and Development: Acts as a blueprint for developers, guiding design
and ensuring the system meets specified requirements.
4. Facilitates Quality Assurance: Serves as the basis for creating test cases and acceptance
criteria, ensuring the system meets all requirements.
5. Aids in Change Management: Tracks and manages changes to requirements, allowing the
impact of changes to be assessed and managed effectively.
Disadvantages:
3. Complexity: For large systems, the SRS can become overly detailed, difficult to review, and
overwhelming for stakeholders.
22CS392-SOFTWARE ENGINEERING DESIGN
4. Potential Ambiguity: Misunderstandings may arise if the requirements are not written
clearly or are too vague.
Definition: Formal System Specification is a mathematical and precise approach to defining the
behaviour, requirements, and structure of a software system.
Purpose:
• Ensures the system's design and functionality align with intended goals.
Components:
• Behaviour Specification: Defines how the system behaves under various conditions.
• Constraint Definition: Specifies constraints and conditions that the system must adhere to.
2. Precise Definition: Unlike natural language requirements, which can be vague or ambiguous,
formal specifications are highly precise. They provide exact definitions of inputs, outputs,
state changes, and system behaviour under different conditions.
3. Verification and Validation: One of the primary benefits of formal specifications is that they
can be verified mathematically to ensure that the system's design meets the specified
requirements. Additionally, formal methods can be used to validate that the system will
function correctly under all specified conditions, reducing errors early in the design phase.
4. System Behavior Representation: Formal specifications are used to represent how the
system behaves, how different parts of the system interact, and how the system will
respond to various inputs or stimuli. This is often done using mathematical models such as
state machines, process algebra, or set theory.
5. Tool Support: Tools like theorem provers, model checkers, and formal specification
languages (e.g., Z, VDM, B-Method) support the development and analysis of formal
specifications, enabling automated checking and error detection.
1. Z-Notation: A widely used formal specification language based on set theory and first-order
logic. Z is used to specify data types, operations, and system behavior formally.
22CS392-SOFTWARE ENGINEERING DESIGN
o Example: Specifying a system where a bank account maintains balance and allows
deposits and withdrawals, defined in terms of sets, relations, and functions.
2. VDM (Vienna Development Method): A formal method that uses a combination of set
theory and algebra to specify both the data and the operations of the system.
o Example: Defining the operations on a stack data structure, including push and pop
operations.
3. B-Method: A formal method used for system modeling and refinement. It allows a system to
be specified abstractly and then refined incrementally through a series of steps.
o Example: Modeling a railway control system and refining it step by step to ensure
correctness.
4. Process Algebras: Used to specify concurrent and parallel systems, providing a formal way to
represent and reason about system processes and their interactions.
5. Temporal Logic: A formal specification technique used to reason about the behavior of
systems over time, often used for reactive or real-time systems.
o Example: Specifying that a system should always respond to a user request within a
specific time frame.
Advantages:
2. Early Error Detection: Formal methods allow for early detection of design flaws or
inconsistencies, reducing the likelihood of defects in later stages of development.
3. Verification and Validation: Systems can be verified to ensure that the design meets the
requirements and validated to ensure correct behavior under all conditions, increasing
confidence in the system's reliability.
4. Automated Tool Support: Formal specification languages are often supported by automated
tools that assist in model checking, theorem proving, and generating code, making the
development process more efficient.
5. Improved Design Quality: The rigor and discipline of using formal methods lead to higher-
quality designs, as the system is analyzed from multiple perspectives, including safety,
performance, and reliability.
Disadvantages:
2. High Initial Cost: The time and effort required to create formal specifications can result in
higher upfront costs. It may not always be justified for small or less critical systems.
22CS392-SOFTWARE ENGINEERING DESIGN
3. Limited Industry Adoption: While formal methods are beneficial in certain domains (e.g.,
critical systems), they are not widely adopted in mainstream software engineering,
particularly for non-critical applications.
5. Tool Limitations: While there are powerful tools available, they can be difficult to use and
may have limitations in handling large and complex systems.
PETRINETS:
A Petri Net is a mathematical modeling language used to describe and analyze the flow of
information, processes, and systems, especially those exhibiting concurrent or parallel behavior.
Key Features:
• Graphical Notation: Uses places, transitions, and arcs to visually represent system behavior.
1. Places: Represent conditions or states within the system. These are typically depicted as
circles. A place can hold tokens, which indicate the state of the system.
2. Transitions: Represent events or actions that cause changes in the system's state. These are
depicted as rectangles. A transition may fire (trigger) if the necessary conditions are met.
3. Tokens: Represent the dynamic state of the system. Tokens are placed in the places and
move between them when transitions fire. The presence of tokens indicates the system's
state or the availability of resources.
4. Arcs: Arcs are directed edges that connect places to transitions and transitions to places.
They represent the flow of control or resources in the system. Arcs are depicted as arrows.
5. Marking:A marking is the distribution of tokens across the places in the Petri net,
representing the current state of the system. The marking is dynamically updated as
transitions fire.
1. Basic Petri Net (Place/Transition Net): This is the simplest form of a Petri Net, consisting of
places, transitions, and arcs. It is used for basic modelling of systems where there are no
additional complexities such as priorities or time constraints.
2. Timed Petri Nets: These are Petri Nets in which transitions are associated with time delays.
Timed Petri Nets are used to model systems where the timing of events is crucial (e.g., real-
time systems).
22CS392-SOFTWARE ENGINEERING DESIGN
3. Coloured Petri Nets: In Coloured Petri Nets, places can hold tokens of different types or
"colours". This allows Petri Nets to represent more complex systems with different data
types, adding flexibility and power to the modelling.
4. Hierarchical Petri Nets: These are used for large, complex systems by nesting Petri Nets
inside each other. They allow for modular representation of system behavior, making them
easier to manage and understand.
5. Stochastic Petri Nets: Stochastic Petri Nets incorporate probabilities and randomness in the
firing of transitions. These are particularly useful for modelling and analyzing the systems
with uncertain or variable behavior, such as queuing systems and reliability analysis.
3. Formal Analysis: Allows for formal verification of system properties, such as deadlocks and
reachability.
4. Flexibility: Can be extended with time, stochastic elements, and hierarchical structures.
1. Complexity in Large Systems: Can become difficult to manage and analyze for large-scale
systems.
2. Limited Expressiveness: Not ideal for systems with continuous behaviors or complex data.
3. Scalability Issues: State space can grow exponentially, leading to performance challenges.
4. Learning Curve: Requires expertise for advanced usage and formal analysis.
5. Not Always Intuitive for Non-Experts: While graphical, advanced features may be hard for
beginners to grasp.
The UML is a language for specifying, constructing, visualizing, and documenting the software
system and its components. The UML is a graphical language with sets of rules and semantics. The
rules and semantics of a model are expressed in English in a form known as OCL (Object Constraint
Language). OCL uses simple logic for specifying the properties of a system.
1. class diagram:
22CS392-SOFTWARE ENGINEERING DESIGN
The UML class diagram is also known as object modeling. It is a static analysis diagram. These
diagrams show the static structure of the model. A class diagram is a connection of static model
elements, such as classes and their relationships, connected as a graph to each other and to their
contents.
Class: A class represents a blueprint for objects. It consists of three main parts:
Attributes:
• These are the properties or fields within a class that store data. Each attribute has a visibility
(public, private, protected), a name, and a type.
Methods/Operations:
• These represent the actions or behaviors the class can perform. Methods are represented
with their names, parameters, and return types.
Visibility Modifiers:
Associations:
• These represent relationships between classes, often shown as a line connecting two
classes.
• Multiplicity: Indicates how many instances of one class can be associated with instances of
another class (e.g., 1,* for one-to-many).
[Link]-case diagram:
22CS392-SOFTWARE ENGINEERING DESIGN
The functionality of a system can be described in a number of different use-cases, each of which
represents a specific flow of events in a system. It is a graph of actors, a set of use-cases enclosed in
a boundary, communication, associations between the actors and the use-cases, and generalization
among the use-cases.
[Link] diagram:
It is a dynamic model unlike all the others mentioned before. The objects of an object oriented
system are not static and are not easily understood by static diagrams. The behavior of the class’s
instance (an object) is represented in this diagram. Every use-case of the system has an associated
behavior diagram that indicates the behavior of the object. In conjunction with the use-case diagram
we may provide a script or interaction diagram to show a time line of events. It consists of sequence
and collaboration diagrams.
[Link] diagram:
It is the combination of sequence and collaboration diagram. It is used to depict the flow of events in
the system over a timeline. The interaction diagram is a dynamic model which shows how the
system behaves during dynamic execution.
It consists of state, events and activities. State diagrams are a familiar technique to describe the
behavior of a system. They describe all of the possible states that a particular object can get into and
how the object's state changes as a result of events that reach the object. In most OO techniques,
state diagrams are drawn for a single class to show the lifetime behavior of a single object
[Link] diagram:
It shows organization and their dependence among the set of components. These diagrams are
particularly useful in connection with workflow and in describing behavior that has a lot of parallel
processing. An activity is a state of doing something: either a real-world process, or the execution of
a software routine.
[Link] diagram:
It shows the implementation phase of the systems development, such as the source code structure
and the run-time implementation structure. These are relatively simple high level diagrams
compared to the others seen so far. They are of two sub-diagrams, the component diagram and the
deployment diagram.
[Link] diagram:
22CS392-SOFTWARE ENGINEERING DESIGN
These are organizational parts of a UML model. These are boxes to which a model can be
decomposed. They show the structure of the code itself. They model the physical components such
as source code, user interface in a design. It is similar to the concept of packages.
[Link] diagram:
The deployment diagram shows the structure of the runtime system. It shows the configuration of
runtime processing elements and the software components that live in them. They are usually used
in conjunction with deployment diagrams to show how physical modules of code are distributed on
the system.
[Link] diagram
Package Diagrams to depict how packages and their elements have been organized. A package
diagram simply shows us the dependencies between different packages and internal composition of
packages.
• Packages help us to organise UML diagrams into meaningful groups and make the diagram
easy to understand.
• They are primarily used to organise class and use case diagrams.
22CS392-SOFTWARE ENGINEERING DESIGN
Object diagram:
An Object Diagram can be referred to as a screenshot of the instances in a system and the
relationship that exists between them. Since object diagrams depict behaviour when objects have
been instantiated, we are able to study the behaviour of the system at a particular instant.
• An object diagram is similar to a class diagram except it shows the instances of classes in the
system.
• We depict actual classifiers and their relationships making the use of class diagrams.
• On the other hand, an Object Diagram represents specific instances of classes and
relationships between them at a point of time.
QUESTION BANK:
2mark:
[Link] SRS.
[Link] requirements.
13mark:
1. Discuss the key principles of software engineering. How do these principles guide the software
engineering development process?
[Link] the use case and class diagram. Draw use case diagram and class diagram for airline
reservation.
3. Explain activity diagram and interaction diagram and draw activity and interaction diagram for
ATM reservation.
[Link] how petri net can be used model and analysed the behaviour of concurrent system with
suitable example.
5. Explain the functional and nonfunctional requirement with the suitable case studies and create
SRS for password automation system it should be triple template.
Software design:
Software design is the process of envisioning and planning the architecture, components, and
interactions of a software system. It involves creating a detailed blueprint or model of the software's
structure, behavior, and user interface.
1. Architecture: Defines the overall structure and organization of the software system.
2. Components: Identifies the individual parts or modules that make up the software system.
3. Interfaces: Specifies how components interact with each other and with users.
5. Algorithms: Specifies the step-by-step procedures for solving problems or performing tasks.
2. Scalability: Create software that can adapt to growing demands and changing requirements.
3. Usability: Design software that is intuitive, user-friendly, and provides a positive user experience.
4. Performance: Optimize software for efficient use of resources, fast execution, and reliable
operation.
5. Security: Design software that protects against unauthorized access, data breaches, and other
security threats.
6. Flexibility: Create software that can accommodate changing requirements, new features, and
evolving technologies.
7. Reusability: Design software components that can be reused in other applications, reducing
development time and costs.
8. Testability: Create software that is easy to test, debug, and validate, ensuring reliability and quality.
Abstraction
❖ Definition: Representing complex systems in a simplified way, exposing essential features while
hiding implementation details.
❖ Goals:
Reduce complexity
- Improve modularity
- Enhance reusability
- Facilitate communication
22CS392-SOFTWARE ENGINEERING DESIGN
❖ Techniques:
- Data Abstraction
- Object-Oriented Abstraction
Encapsulation:
❖ Definition: Bundling data and methods that operate on that data within a single unit, controlling
access and modifications.
❖ Goals:
- Enhance security
❖ Techniques:
- Data Hiding
Refactoring
❖ Definition: The process of restructuring existing code without changing its external behavior.
❖ Goals: Improve code readability, reduce complexity, and enhance maintainability.
❖ Techniques: Rename variables/methods, extract methods, consolidate duplicate code, and
simplify conditional statements.
Information Hiding
❖ Definition: The principle of hiding internal implementation details of a module or class from the
outside world.
❖ Goals: Reduce coupling, increase encapsulation, and improve code modularity.
❖ Techniques: Use access modifiers (public, private, protected), encapsulate data, and avoid
exposing internal implementation details.
Refinement
❖ Definition: The process of transforming a high-level design into a more detailed and specific
implementation.
❖ Goals: Gradually add more detail and precision to the design, ensuring it meets the requirements.
❖ Techniques: Decompose high-level components into smaller ones, define interfaces, and specify
data structures.
Architecture
❖ Definition: The high-level structure and organization of a software system.
❖ Goals: Provide a framework for understanding the system's components, interactions, and overall
behavior.
❖ Techniques: Define the system's overall structure, identify key components, and specify how they
interact.
22CS392-SOFTWARE ENGINEERING DESIGN
Patterns
1. Requirement Analysis
Gathering and documenting software requirements through stakeholder interviews, surveys, and
observations to understand the problem, goals, and constraints.
Defining the overall structure and organization of the software system, including components,
interactions, and data flow.
3. Detailed Design
Creating a detailed, formal specification of the software's components, interfaces, and data
structures, including algorithms and data types.
4. Interface Design
Designing user interfaces, APIs, and other interfaces to ensure usability, accessibility, and seamless
interactions between components.
5. Database Design
Defining the structure and organization of the database, including schema, tables, relationships, and
data normalization.
6. Algorithm Design
Developing efficient, effective, and scalable algorithms to solve specific problems or perform complex
tasks.
7. Prototyping
Creating a preliminary version of the software to test assumptions, validate requirements, and gather
feedback from stakeholders.
Developing a comprehensive testing plan, including test cases, test data, and test environments, to
ensure the software meets requirements and works correctly.
Reviewing and refining software documentation, including requirements, design documents, and user
manuals, to ensure accuracy, completeness, and clarity.
Coupling:
Coupling refers to the degree of interdependence or connection between two or more modules,
classes, or components in a software system. It measures how closely these modules rely on each
other's functionality, data or behaviour.
22CS392-SOFTWARE ENGINEERING DESIGN
Cohesion:
Cohesion refers to the degree of unity, coherence, and logical consistency within a single module,
class, or component in a software system. It measures how well the elements within a module work
together to achieve a single, well-defined goal or responsibility.
Pattern Format
A pattern is a reusable solution to a common problem that follows a specific structure. This structure
consists of three essential elements:
❖ Context:
- Provides background information and sets the stage for the problem.
❖ Problem:
- Clearly articulates the issue, its consequences, and the need for a solution.
❖ Solution
- Provides guidance on how to implement the solution, including any trade-offs or considerations.
Layer Pattern:
❖ Context
❖ Solution
Divide the system into distinct layers, each with a specific responsibility and interface. Each layer
communicates only with adjacent layers, ensuring separation of concerns and reducing complexity.
❖ Benefits
Common Layers:
Broker Pattern:
❖ Context
A system requires communication and data exchange between multiple components or services, but
direct communication is impractical or inefficient.
❖ Problem
How to enable communication and data exchange between multiple components or services
without requiring direct connections between them.
❖ Solution:
Broker Responsibilities
Model-View-Controller:
Context:
A software application requires a clear separation of concerns between its data, user interface, and
business logic to ensure maintainability, scalability, and reusability.
Problem:
How to separate the application's data, user interface, and business logic into distinct components,
while ensuring they work together seamlessly
Solution:
- Controller: Acts as an intermediary between the Model and View, receiving input, updating the
Model, and updating the View.
Benefits:
- Separation of concerns
Responsibilities:
- View: Renders the user interface, displays data, and handles user input.
- Controller: Receives input, updates the Model, and updates the View.
22CS392-SOFTWARE ENGINEERING DESIGN
Publisher-Subscriber pattern:
Context:
Problem:
How to notify multiple components or services of events or changes without tight coupling and
without the publisher needing to know about the subscribers.
Solution:
- Publisher: Publishes events or notifications without knowing who the subscribers are.
- Subscriber: Subscribes to receive events or notifications from the publisher without knowing about
other subscribers.
Benefits:
Responsibilities:
❖ Context:
A system requires processing of data through a series of transformations or operations, where each
operation depends on the output of the previous one.
❖ Problem
How to structure the processing of data through multiple transformations or operations, while
allowing for flexibility, reusability, and scalability
❖ Solution
▪ Pipe and Filter architecture:
- Pipes: Connect filters together, allowing data to flow from one filter to the next.
❖ Responsibilities:
❖ Context:
A distributed system requires equal participants to share resources, communicate, and cooperate
without relying on a centralized authority.
❖ Problem:
How to design a system where equal participants can interact, share resources, and provide
services to each other without a central controller
Solution:
- Overlay Network: A logical network connecting peers, enabling communication and resource sharing.
❖ Benefits
❖ Responsibilities:
- Peers: Provide and consume services, share resources, and participate in the overlay network.
- Overlay Network: Manages peer connections, enables communication, and facilitates resource
discovery.
Service-Oriented-Architecture:
❖ Context:
A complex system requires integration of multiple services, applications, and data sources to provide
a unified and flexible solution.
❖ Problem:
How to design a system that integrates multiple services, applications, and data sources in a flexible,
scalable, and maintainable way
❖ Solution:
- Services: Loosely coupled, reusable, and autonomous components that provide specific business
functionalities.
- Service Interfaces: Well-defined contracts that specify how services interact with each other.
- Service Bus: An infrastructure that enables service communication, mediation, and management.
22CS392-SOFTWARE ENGINEERING DESIGN
Benefits:
Responsibilities:
- Services: Provide specific business functionalities and interact with other services through interfaces.
Client-Server pattern :
❖ Context
A system requires separation of concerns between the user interface and data processing, with
multiple users accessing shared resources.
❖ Problem
How to design a system that separates the user interface and data processing, allowing multiple users
to access shared resources efficiently?
❖ Solution:
- Client: Requests services or resources from the server, handling user input and displaying results.
- Server: Provides services or resources to clients, managing data storage, processing, and security.
Benefits
Responsibilities
- Client: Sends requests to the server, receives responses, and handles user interactions.
- Server: Receives requests, processes data, and sends responses back to clients.
❖ Context:
Multiple components or processes require access to common data, but maintaining multiple copies
of the data is inefficient or impractical.
❖ Problem:
How to provide multiple components or processes with access to common data, ensuring consistency
and efficiency?
❖ Solution:
- Access Mechanism: A controlled interface for components or processes to access and update the
shared data.
Benefits
Responsibilities
- Access Mechanism: Regulates access to the shared data, ensuring consistency and integrity.
22CS392-SOFTWARE ENGINEERING DESIGN
Context:
Large-scale data processing requires efficient and scalable methods to handle vast amounts of data.
Problem:
How to process and analyze large datasets efficiently, handling tasks such as data filtering,
aggregation, and transformation?
Solution:
- Map Phase: Breaks down the data into smaller chunks, processing each chunk in parallel to produce
intermediate results.
- Reduce Phase: Aggregates and combines the intermediate results from the map phase, producing
the final output.
Benefits
Responsibilities
- Reduce Phase: Aggregates and combines intermediate results, producing the final output.
22CS392-SOFTWARE ENGINEERING DESIGN
Multi-Tier pattern :
Context:
Problem:
How to design an application that separates presentation, application logic, and data storage, while
ensuring scalability, maintainability, and reusability?
Solution:
- Data Tier: Stores and manages data, ensuring data integrity and security.
Benefits
Responsibilities
- Presentation Tier: Handles user input, displays output, and manages user sessions.
- Application Tier: Executes business logic, validates data, and manages transactions.
- Data Tier: Stores, retrieves, and manages data, ensuring data consistency and security.
22CS392-SOFTWARE ENGINEERING DESIGN
Patterns
Patterns are general, reusable solutions to common design problems. They provide a high-level
description of a design structure, including the components, their relationships, and the forces that
shape the design.
Tactics
Tactics, on the other hand, are smaller, more focused design decisions that address specific concerns
or forces in a design. Tactics are often used to implement patterns or to address specific issues within
a pattern.
1. Patterns provide context for tactics: Patterns define the overall design structure, and tactics are
used to implement specific aspects of that structure.
2. Tactics implement patterns: Tactics are used to flesh out the details of a pattern, addressing specific
concerns or forces in the design.
3. Tactics can be combined to form patterns: Multiple tactics can be combined to create a pattern,
providing a more comprehensive solution to a design problem.
4. Patterns can be refined using tactics: As a design evolves, tactics can be used to refine and improve
the pattern, addressing new concerns or forces that arise.
Example: To illustrate the relationship between tactics and patterns, consider the example of a web
application that uses the Model-View-Controller (MVC) pattern.
- The MVC pattern provides the overall design structure, separating the application logic into three
interconnected components.
- Tactics, such as using dependency injection to manage dependencies between components, can be
used to implement specific aspects of the MVC pattern.
22CS392-SOFTWARE ENGINEERING DESIGN
- Another tactic, such as using a templating engine to separate presentation logic from application
logic, can be used to refine the MVC pattern and improve the separation of concerns.
QUESTION BANK:
2marks:
2. Which software design pattern is used to separate an object's abstraction from its implementation?
8. Which software design principle emphasizes making software entities open for extension but closed
for modification?
10. Which software design pattern is used to create a single instance of a class?
13marks:
2. Compare and contrast the Monolithic Architecture and Microservices Architecture patterns. Discuss
their advantages, disadvantages, and suitability for different types of applications.
3. Explain the concept of Separation of Concerns (SoC) in software design. Describe how SoC is
achieved through modularization, encapsulation, and abstraction. Provide examples of SoC in real-
world applications.
4. Describe the Singleton design pattern. Explain its purpose, structure, and benefits. Discuss potential
drawbacks and alternatives to the Singleton pattern. Provide an example of using the Singleton
pattern in a real-world application.
[Link] a client-server architecture for the online banking system, including the following:
- Explain how the client and server will communicate with each other.
- Discuss the security measures that will be implemented to protect customer data.
- Describe how the system will handle scalability and performance issues.
6. Explain the concept of loose coupling in software design. Describe how loose coupling is achieved
through interfaces, abstraction, and dependency injection. Provide examples of loose coupling in real-
world applications, including the use of architecture patterns such as Service-Oriented Architecture
(SOA).
22CS392-SOFTWARE ENGINEERING DESIGN
Quality
[Link] quality:
[Link] quality:
how well the software meets its structural/non-functional requirements such as row worthness and
maintainability.
[Link]:
it is the quality term which says how consistent, how available, for tolerant, for requirable.
Consistency
Availability
For tolerant
Requirable
Software defect is a flaw, error on failure in the computer program that causes it to produce an
incorrect (or) unexpected way.
1. Unit Testing:
2. Integration Testing:
3. System Testing:
• Definition: Testing the entire system as a whole in an end-to-end environment. It checks both
functional and non-functional requirements.
4. Regression Testing:
• Definition: Re-testing the software after modifications to ensure that new changes have not
introduced errors.
• Example: Re-running test cases after fixing a payment gateway bug to ensure all other
functionalities remain unaffected.
22CS392-SOFTWARE ENGINEERING DESIGN
• Explanation:
The "Add to Cart" function should correctly add a product to the cart when the user clicks the
button. During unit testing:
o Expected Output: The cart reflects the product P123 with a quantity of 2.
Unit testing ensures this function works in isolation without involving the rest of the
system.
• Scenario: Testing the interaction between the "Add to Cart" module and the "Cart Database."
• Explanation:
After adding an item to the cart, the system must store the updated cart details in the
database. Integration testing ensures:
o The "Add to Cart" module sends the correct data to the database.
o The database updates accurately and retrieves the cart details when requested.
This test checks the interaction between these two components.
• Explanation:
The entire workflow, from adding items to the cart to placing an order, is tested. Steps include:
• Scenario: A bug in the payment gateway is fixed, and regression testing is performed.
• Explanation:
After fixing the payment bug, regression testing is conducted to ensure:
o Other features like "Add to Cart," "Product Search," and "Checkout" are unaffected
by the changes.
Test cases for previously tested functionalities are re-executed to ensure system
stability.
The process of identifying defects The process of diagnosing, locating, and fixing
Definition
or issues in software. defects.
Testing tools like Selenium, Debugging tools like GDB, Chrome DevTools, or
Tools Used
JUnit, or Postman. IDE debuggers.
Test reports highlighting defects Fixed software where the identified bugs are
Outcome
or bugs. resolved.
Running a test case to find if Analyzing code to resolve why the login feature
Example
a login feature fails. fails.
SYMBOLIC EXECUTION:
22CS392-SOFTWARE ENGINEERING DESIGN
Symbiotic execution is a software testing technique that generates test data to improve software
quality.
Steps Involved:
Example:
• Applications like processing personal location data or string operations, e.g., processing
names of three individuals.
Results:
Applications:
• Useful in decision-making programs, string processing, and complex control flow testing.
[Link] data generation
[Link] Analysis
[Link] Domain checking
[Link] debugging.
PROGRAM ANALYSIS:
• Definition: Examination of program code to understand behavior, detect issues, and ensure it
meets requirements.
• Types:
o Static Analysis: Examines code without running it (e.g., syntax errors, unused code).
o Dynamic Analysis: Examines code during execution (e.g., memory usage,
performance).
o Control Flow Analysis: Analyzes the flow of program execution.
o Data Flow Analysis: Examines how data moves through the program.
o Symbolic Execution: Uses symbolic values to explore execution paths.
• Purpose:
o Detect bugs, improve performance, enhance security, and ensure correctness.
Definition:
A formal verification method to ensure a system's design meets its specifications by exhaustively
exploring all possible states.
Key Steps:
1. Model Creation:
2. Specification:
3. Verification: Use tools (e.g., SPIN, NuSMV) to check if the model satisfies specifications.
4. Counter example (or) exception case: Generate error traces if a property fails.
Goals:
Advantages:
• Exhaustive verification.
Challenges:
2. Specifications:
3. Results:
• Blackbox testing is also called as closed box testing and consumes less time.
22CS392-SOFTWARE ENGINEERING DESIGN
• Black Box Testing is a type of software testing where the tester focuses on the functionality of
the application without considering its internal workings, code structure, or implementation
details.
• Purpose:
✓ Implementation testing
✓ Specification testing
✓ Requirement testing
✓ Functionality testing
✓ System testing
✓ Acceptance testing
✓ Regression testing
• Techniques:
o Equivalence Partitioning
• Advantages:
• Disadvantages:
• Whitebox testing is also known as glass box testing or sphere box testing or structural testing.
• Whitebox testing is a type of testing in which it is aimed to analys e the internal structure
[array, queue] such as data structures, design and design patterns and code structure [for
loop, while, if].
• Purpose:
✓ Unit testing
✓ Integration testing
✓ regression testing
• The scope of the testingis at the unit level, intergration level and system level.
• Techniques:
o Statement Coverage
o Branch Coverage
o Path Coverage
• Advantages:
• Disadvantages:
o Time-consuming.
Summary:
22CS392-SOFTWARE ENGINEERING DESIGN
Answer: Software testing is the process of evaluating a software application to ensure it meets
specified requirements and is free of defects. It involves executing the software in controlled
conditions to identify errors and gaps.
Answer: Unit testing is a type of testing where individual components or functions of the software are
tested in isolation to ensure that they work correctly. It is usually done by developers.
Answer: Unit testing helps detect issues early in the development process, ensuring that each
component functions correctly before integration with other parts of the system. It improves code
quality and simplifies debugging.
Answer: Black box testing is a testing technique where the tester does not need knowledge of the
internal structure or code. The focus is on verifying that the software meets functional requirements
by providing inputs and checking outputs.
Answer: White box testing, also known as clear-box testing, involves testing the internal structures or
workings of an application. The tester has knowledge of the code and uses it to design test cases that
explore code paths and conditions.
[Link] is the key difference between black box and white box testing?
Answer: Black box testing focuses on functional behavior without considering internal code structure,
while white box testing involves testing based on knowledge of the code’s internal logic and structure.
Answer: Integration testing is the process of testing the interfaces between individual modules or
components to ensure that they work together as expected when integrated into a larger system.
Answer: System testing involves testing the entire system as a whole to verify that all components
work together as expected and that the system meets its overall requirements.
Answer: System testing ensures that all modules and components work together as intended and that
the system meets both functional and non-functional requirements, like performance and security.
Answer: Regression testing involves retesting a system after changes, such as bug fixes or
enhancements, to ensure that existing functionalities are not broken and the system continues to
work correctly.
Answer: Regression testing is important to ensure that new changes or additions to the software do
not introduce new bugs or break existing functionality, maintaining system stability.
[Link] is debugging?
Answer: Debugging is the process of identifying, isolating, and fixing bugs or defects in software. It is
typically performed after testing has detected a failure or incorrect behavior in the system.
Answer: Program analysis refers to the process of automatically analyzing the behavior of a software
program to detect potential errors, optimize code, or ensure correctness, often done statically
(without execution).
Answer: Static program analysis involves examining the code without executing it, using tools to
detect potential errors, security vulnerabilities, or code inefficiencies based on source code structure.
Answer: Symbolic execution is a testing technique where program paths are explored using symbolic
inputs rather than actual data, allowing for the identification of bugs by considering multiple execution
scenarios at once.
Answer: Symbolic execution allows the discovery of a wide range of potential bugs by exploring
different paths in a program without manually providing inputs, improving test coverage and fault
detection.
Answer: Model checking is a formal verification technique that systematically explores the state space
of a system model to verify that certain properties hold, such as safety or liveness, helping in detecting
errors in design.
Answer: Model checking is used to verify that a system meets certain specifications or properties, like
deadlock-freedom or correctness, by systematically exploring all possible states and transitions in the
system.
20. What is the difference between static testing and dynamic testing?
Answer: Static testing involves examining the software code or documentation without executing it
(e.g., code reviews), while dynamic testing involves executing the software and observing its behavior
during runtime.
Answer: Automated testing uses specialized tools or scripts to execute tests on software
automatically, comparing actual outcomes with expected ones, which speeds up the testing process
and improves test coverage.
[Link] are working on a financial application where different modules, such as the payment gateway,
user authentication, and account management systems, need to be integrated. You must ensure these
modules work together without failures. What type of testing will you use, and what will be your focus
in testing?
2.A web-based e-commerce application recently underwent a major update to include a new payment
method. However, you need to ensure that this new feature did not introduce bugs into the existing
checkout process. What type of testing would you conduct, and why?
[Link] the testing phase of a mobile application, users report that the app crashes under specific
conditions when accessing the profile section. As a developer, what would be your approach to resolve
this issue, and which technique will you use?
[Link] are testing a security-critical application that handles encrypted communications. Manually
testing all possible inputs to ensure every possible security vulnerability is time-consuming. What
advanced technique could you apply to thoroughly test the application's logic?
[Link] a mission-critical aviation software system, where ensuring that the system never enters an
unsafe state is essential, how would you verify that the software adheres to safety requirements?
Which formal method would you use, and why?
[Link] are tasked with testing the login functionality of a web-based e-learning platform. The login
form requires users to enter their username and password, and provides the following behaviors:
* The "Forgot Password" link should redirect the user to the password recovery page.
* The system must handle both valid and invalid inputs securely (e.g., SQL injection prevention).
Question:
Design a set of test cases to validate the login functionality of this platform. Consider valid, invalid,
and edge case inputs in your design.
Test Case
ID
Test Scenario
22CS392-SOFTWARE ENGINEERING DESIGN
Test Steps
Expected Result
TC_001
3. Click "Login"
TC_002
password
3. Click "Login"
TC_003
3. Click "Login"
TC_004
TC_005
3. Click "Login"
TC_006
3. Click "Login"
TC_007
injection prevention)
password
2. Click "Login"
or password" message
TC_008
page
TC_009
3. Click "Login"
TC_010
spaces before/after
22CS392-SOFTWARE ENGINEERING DESIGN
2. Click "Login"
2. Project:
3. Product:
o A product is the output of a project or process, intended to meet a specific user need
or market demand.
4. Project Management:
1. Waterfall Methodology:
o A linear, sequential approach where each phase of the project is completed before
moving to the next.
2. Agile Methodology:
o An iterative approach that breaks the project into smaller chunks called sprints and
delivers progress in short, manageable iterations.
3. Scrum:
o A type of Agile method, uses roles such as Scrum Master and Product Owner, and is
focused on delivering working software in short cycles.
4. Kanban:
• Project Management focuses on temporary projects, with specific goals and deadlines,
ensuring that the project is completed within scope, on time, and within budget.
• Process Management focuses on managing and improving ongoing, repetitive processes that
drive continuous performance and efficiency within an organization.
• Responsibilities:
o Tracking and Reporting: Track progress, handle changes, and report to stakeholders.
• Skills Required:
Example/Role Plays
• Example 1:
o Role Play: A project manager leads a team to develop a new e-commerce platform.
The manager defines the project scope, creates a timeline, assigns tasks, and ensures
communication between developers, designers, and testers.
• Example 2:
Uses Waterfall method (sequential phases). Uses iterative methods (e.g., Scrum, Kanban).
Fixed scope, timeline, and budget. Flexible scope and iterative progress.
Product Management:
• Definition: The process of overseeing the development and lifecycle of a product from
ideation to delivery and beyond.
• Key Aspects:
• Goal: Deliver products that meet market demands and create value for customers.
Project Management:
• Definition: The process of planning, executing, and overseeing the successful completion of a
project within scope, time, and cost constraints.
• Key Aspects:
o Risk Management: Identifying and mitigating potential risks during the project
lifecycle.
• Goal: Successfully deliver the project within the specified time, budget, and quality.
• Key Aspects:
1. Scope Management:
2. Time Management:
3. Cost Management:
4. Quality Management:
5. Risk Management:
6. Communication Management:
▪ Assigning and managing team roles based on skill sets and project
requirements.
8. Procurement Management:
9. Stakeholder Management:
▪ Engaging with stakeholders and keeping them informed about the project's
progress.
2. Planning: Develop a detailed project plan, including timelines, resources, and budgets.
3. Execution: Implement the plan by developing the software, managing the team, and
monitoring progress.
4. Monitoring and Controlling: Track the project's performance, making adjustments as needed.
5. Closure: Ensure all deliverables are completed, and the project is formally closed.
Example:
A company starts a software project to develop a customer management system. The project manager
defines the scope (what features the system should have), creates a timeline (how long it will take to
develop each feature), and assigns resources (team members for development, testing, and
deployment). Throughout the project, they track progress using tools like Jira and adjust timelines and
resources if necessary. After successful delivery, the project is closed with a final review of all
outcomes.
Definition:
SPM is the process of planning, organizing, and overseeing the execution of a software project to
achieve its goals within time, cost, and scope constraints.
Key Aspects:
o Scope Management:
o Time Management:
o Cost Management:
o Quality Management:
o Risk Management:
o Communication Management:
22CS392-SOFTWARE ENGINEERING DESIGN
▪ Assigning and managing team roles based on skill sets and project
requirements.
o Procurement Management:
o Stakeholder Management:
▪ Engaging with stakeholders and keeping them informed about the project's
progress.
1. Initiation:
2. Planning:
3. Execution:
5. Closure:
Scope-Based Explanation
Advantages:
Disadvantages:
6. Scope Creep: Uncontrolled changes can lead to delays and cost overruns.
Definition:
SCM is a process to manage, track, and control changes to software and its components throughout
the software development lifecycle.
Key Components:
• Goal: Ensure control over software components, track changes, and maintain consistency
throughout the software lifecycle.
• Software Configuration Items (SCI): Source code, documentation, configuration files, libraries,
executables.
• Baselines: Reference points representing approved versions of the software at a specific stage.
• Version Control: Manages and tracks changes in software. Examples: Git, SVN. It supports
collaboration, history, and branching.
Advantages:
Disadvantages:
PROJECT SCHEDULING:
• Definition: The process of planning and allocating resources, tasks, and timelines to ensure
the successful completion of a project.
• Purpose:
• Key Components:
3. Timeline: Specific start and end dates for each task and the overall project.
4. Dependencies: Understanding the relationship between tasks (which task depends on others).
• Techniques:
o Critical Path Method (CPM): Determines the longest sequence of tasks that must be
completed on time for the entire project to be completed on schedule.
o Program Evaluation and Review Technique (PERT): Uses statistical analysis to estimate
the time required to complete each task and the project as a whole.
Advantages:
22CS392-SOFTWARE ENGINEERING DESIGN
Disadvantages:
DEVOPS:
What is DevOps?
Principles:
Process:
Advantages:
1. Faster time-to-market.
2. Better collaboration.
5. Higher reliability.
7. Cost-effective.
Disadvantages:
5. Risk of over-automation.
6. Integration challenges.
DevOps aims to make development faster, more efficient, and reliable through collaboration and
automation.
Types of Cloud:
1. Public Cloud: Services are provided over the public internet and are available to anyone. (e.g.,
AWS, Azure)
22CS392-SOFTWARE ENGINEERING DESIGN
2. Private Cloud: Cloud infrastructure is used exclusively by one organization, offering more
control and security.
3. Hybrid Cloud: A mix of public and private clouds, enabling data and applications to be shared
between them.
1. Infrastructure as a Service (IaaS): Provides virtualized computing resources over the internet
(e.g., AWS EC2).
2. Platform as a Service (PaaS): Provides hardware and software tools over the internet, usually
for application development (e.g., Google App Engine).
3. Software as a Service (SaaS): Provides fully managed software applications over the internet
(e.g., Google Workspace, Microsoft Office 365).
Advantages of Cloud:
4. Reliability: Data is often replicated across multiple locations, ensuring high availability.
Disadvantages of Cloud:
4. Data Privacy Issues: Concerns over how data is handled and stored by providers.
Cloud computing allows businesses and individuals to leverage advanced technology without
managing physical infrastructure, offering flexibility, scalability, and efficiency.
DEPLOYMENT PIPELINE:
Definition:
A Deployment Pipeline is an automated set of processes for continuously building, testing, and
deploying software to various environments.
1. Source Stage:
o Purpose: Retrieves the latest version of the code from the version control system (e.g.,
Git).
o Key Feature: Continuous integration starts here, ensuring the latest code is always
tested and ready for deployment.
2. Build Stage:
o Purpose: Compiles the code into executable artifacts (e.g., .jar, .war files).
o Key Feature: Ensures that the code is error-free and ready for testing.
3. Test Stage:
o Purpose: Runs automated tests (unit tests, integration tests) to verify the correctness
of the code.
o Key Feature: Prevents faulty code from reaching production by catching bugs early.
o Purpose: Deploys the build to a staging environment that closely mirrors production.
o Key Feature: Allows testing in an environment that replicates the real world before
deploying to production.
o Key Feature: Once the build passes all tests and staging checks, it is deployed to
customers.
2. Continuous Integration (CI): Ensures that changes are continuously integrated and tested,
reducing integration issues.
3. Continuous Delivery (CD): Ensures that the software is always ready to be deployed at any
time, with minimal risk.
4. Quality Checks: Automated tests at each stage help catch bugs early and improve software
quality.
5. Rapid Feedback: Developers get immediate feedback on their code’s health, facilitating quick
corrections.
7. Scalability: The pipeline can handle multiple deployments and releases efficiently.
• Definition: Designing the structure of software, including components, data flow, and
interactions.
• Key Features:
2. Testing:
• Definition: Verifying the functionality and reliability of the software through various tests.
• Types:
o Regression Testing: Ensures that new changes do not break existing features.
22CS392-SOFTWARE ENGINEERING DESIGN
3. Deployment:
• Stages:
4. Tools:
5. Case Study:
o Tools:
Part-A Questions:
1. What is Software Project Management?
It involves planning, organizing, leading, and controlling software projects to ensure timely
delivery, staying within budget, and meeting requirements.
2. What is Software Configuration Management (SCM)?
A process for tracking and controlling software changes to ensure consistency, integrity, and
traceability throughout its lifecycle.
22CS392-SOFTWARE ENGINEERING DESIGN
PART-B QUESTIONS:
1. Explain the importance of Software Configuration Management (SCM) and describe how SCM
practices improve the software development lifecycle.
Introduction:
SCM manages and controls software changes, ensuring consistency, accountability, and traceability
throughout the lifecycle of software artifacts like code, documentation, and test scripts.
Importance of SCM:
• Version Control: Maintains a history of changes, enabling teams to track versions and revert
if needed.
• Traceability: Tracks the origin of changes, ensuring accountability and simplifying debugging.
• Automation and CI/CD Integration: Streamlines tasks like builds, testing, and deployment.
SCM Tools:
Tools like Git, SVN, and Mercurial enable effective SCM practices, including distributed version control
and seamless merging.
Conclusion:
22CS392-SOFTWARE ENGINEERING DESIGN
SCM enhances project efficiency, minimizes errors, and improves collaboration, making it integral to
successful software development.
2. Describe the process of project scheduling in software project management, its key challenges, and
how effective scheduling impacts project success.
Introduction:
Project scheduling involves allocating tasks, resources, and timelines. Effective scheduling aligns
project activities with goals, ensuring timely completion.
Scheduling Process:
3. Timeline Estimation: Use tools like PERT or Gantt charts for realistic timelines.
Key Challenges:
Conclusion:
Effective scheduling ensures resource optimization, risk reduction, and project success.
3. Discuss the motivation for adopting DevOps in modern software development and explain how
DevOps principles enhance the software development lifecycle.
Introduction:
DevOps bridges software development and IT operations, promoting collaboration and improving
delivery speed, quality, and reliability.
DevOps Principles:
• Continuous Integration (CI): Integrates code frequently for early defect detection.
• Continuous Delivery (CD): Automates updates, ensuring quick and reliable deployments.
Conclusion:
DevOps enhances software delivery speed, quality, and collaboration, making it indispensable for
modern development.
4. Explain the architecture of a deployment pipeline in DevOps. How does it improve software delivery,
and what are the key stages involved?
Introduction:
A deployment pipeline automates the workflow from version control to production deployment,
ensuring quality and efficiency.
Benefits:
Conclusion:
5. Discuss how cloud platforms support DevOps practices and explain the role of Infrastructure as
Code (IAC) in cloud-based DevOps environments.
Introduction:
Cloud platforms provide scalable, on-demand infrastructure, while IAC automates cloud resource
management in DevOps.
Role of IAC:
Conclusion:
Cloud platforms and IAC enable efficient, scalable, and automated DevOps workflows, enhancing
software delivery.