Software Engineering
Software Engineering
necessary improvements.
1. Define software engineering and explain its
6. Differentiate between iterative and incremental
importance.
models.
Ans: Software Engineering is the systematic approach to designing, developing, testing, and
Ans:
maintaining software using engineering principles. It aims to produce high-quality, reliable,
Aspect Iterative Model Incremental Model
and cost-effective software solutions.
Importance: It ensures the creation of reliable, scalable, and maintainable software on time Development Refining the entire system over Building and adding distinct features
and within budget. Focus multiple iterations. or parts over time.
2. What are the reasons for the Failure of Water Fall Revisits and improves phases in Develops a portion of functionality in
Phases
Model? each iteration. each increment.
Ans:Rigid & Inflexible – Difficult to accommodate changes once the process starts. Continuous feedback from each Feedback after each increment,
Feedback
Late Testing – Bugs are found late in the development cycle, increasing costs. iteration. affecting the next.
High Risk – If initial requirements are incorrect, the entire project may fail. A complete system is delivered after Partial system delivered after each
System Delivery
Slow Delivery – A fully functional product is delivered only at the end. several iterations. increment.
Poor Adaptability – Not suitable for complex or evolving projects. Flexibility More flexibile Less Flexible
Limited User Feedback – Users see the product only after completion, leading to
potential dissatisfaction. 7. What are the advantages and disadvantages of the Agile
3. What are software requirements? Model?
Ans:Software requirements are the specifications of what a software system should do and Ans:Advantages of the Agile Model:
how it should perform. They define the functional and non-functional needs of a system. Flexibility: Easily adapts to changes in requirements even late in development.
Types of Software Requirements: Customer Involvement: Continuous feedback from customers ensures the product meets
Functional Requirements – Describe what the system should do (e.g., login, generate their needs.
reports). Faster Delivery: Features are developed in smaller increments, leading to quicker releases.
Non-Functional Requirements – Define system qualities. Improved Quality: Frequent testing and revisions lead to higher quality.
Domain Requirements – Specific to the application’s domain or environment. Disadvantages of the Agile Model:
4. Describe the phases of the Software Development Life Cycle Less Documentation: Emphasis on working code over comprehensive documentation.
(SDLC). Scope Creep: Continuous changes can lead to unclear project scope and direction.
Ans:Requirement Analysis:Gather and analyze user [Link] clear software Requires Experienced Teams: Success relies on skilled and self-motivated team members.
requirements. 8. Identify Object Oriented approach of Software Design.
System Design:Plan the architecture and [Link] design documents (e.g., data Ans:The Object-Oriented (OO) approach to software design focuses on structuring a
flow, UI design). system around objects rather than actions or logic. These objects represent real-world entities
Coding:Developers write the actual code based on the design. and interact with one another to achieve desired behaviors.
Testing:Test the software for bugs, errors, and requirement compliance. Key Concepts:
Deployment:Release the software to users for real-world use. Encapsulation: Bundling data and methods that operate on the data into a single unit (class).
Maintenance:Fix issues, improve features, and ensure long-term operation. Protects data by restricting direct access to it.
5. Describe the Waterfall Software Development Life Cycle Inheritance: Allows a new class to inherit properties and behaviors from an existing class,
Model. promoting code reuse.
Ans:The Waterfall Software Development Life Cycle (SDLC) Model is a linear and Polymorphism: Enables one interface to be used for different underlying data types,
sequential approach where each phase must be completed before moving to the next. It is allowing methods to behave differently based on the object.
called "Waterfall" because progress flows downward like a waterfall, through distinct phases. Abstraction: Hiding the complex implementation details and showing only essential features
Phases of the Waterfall Model: to the user.
Requirement Gathering and Analysis:All software requirements are collected and
[Link] analysis is performed to understand the needs of the system. 9. Describe the feasibility study in software development.
System Design:Based on the requirements, system architecture and design are Ans:A feasibility study is an assessment of a project's viability before significant
[Link] high-level design (overall system structure) and low-level design (individual investment. It evaluates whether the project is practical, achievable, and profitable.
components) are created. Types of Feasibility Study:
Implementation (Coding):Developers start coding according to the design documents. 1. Technical Feasibility – Assess whether the required technology, tools, and expertise
Integration and Testing:The system is tested for bugs, issues, and whether it meets the are available.
requirements defined earlier.
Deployment:The system is deployed to the user environment and made operational.
2. Economic Feasibility – Evaluates cost-effectiveness by comparing expected benefits Model Structure Advantages Challenges
with project costs.
3. Legal Feasibility – Ensures compliance with laws, regulations, and contractual Builds system in Faster delivery, easier
Integration can be complex,
obligations. Incremental small parts testing and debugging,
needs careful planning
4. Operational Feasibility – Determines if the project meets business needs and is (increments) customer feedback
acceptable to users.
5. Schedule Feasibility – Analyzes if the project can be completed within the given Iterative with risk Good for large, high-risk Complex to manage,
time frame. Spiral analysis and repeated projects, emphasizes risk expensive, requires skilled
10. What is SRS? Explain its advantages. development management risk assessment
Ans:SRS (Software Requirements Specification) is a document that clearly and
comprehensively defines the requirements for a software system. It outlines the expected Less documentation, depends
Iterative and flexible Highly flexible, promotes
functionality, performance, and constraints of the system, providing a detailed description of heavily on team
Agile with frequent delivery customer involvement, fast
what the software will do and how it will behave. communication and
cycles and continuous delivery
Advantages of SRS: discipline
Clear Communication:It ensures that all stakeholders (clients, developers, testers) have a
clear understanding of the software requirements.
Basis for Design and Implementation:Provides a solid foundation for the design and 3. Evaluate the effectiveness of Waterfall and Agile
development of the system, reducing ambiguity. models.
Improved Quality:Helps identify potential issues and gaps early in the development process, Ans:Waterfall Model:The Waterfall model is a linear and sequential software development
leading to better-quality software. process where each phase (requirements, design, implementation, testing, deployment,
Test Planning:Defines clear criteria for testing, making it easier to verify if the system meets maintenance) must be completed before the next begins.
the requirements. Effectiveness:
Best suited for projects with clear, fixed requirements and where the technology is
well understood.
MARKS 5 Offers strong documentation, making it easier to manage large teams or projects in
1. Explain the fundamental principles of software regulated environments.
engineering. Testing occurs late, so errors are often discovered after most development is done,
Ans:· Modularity – Dividing the system into smaller, manageable modules helps in which can be costly to fix.
reducing complexity and improving maintainability. Inflexible to changes—once a phase is completed, going back is difficult.
· · Abstraction – It allows developers to focus on high-level design by hiding complex Agile Model:Agile is an iterative and incremental model where development is broken into
details, making the system easier to understand. small cycles (called sprints), with continuous feedback and collaboration.
· · Encapsulation – Protects data by bundling it with related operations, promoting data Effectiveness:
integrity and modularity. Highly effective for projects with changing or unclear requirements.
· · Reusability – Designing software components in a way that they can be reused in Focuses on customer satisfaction by delivering working software frequently.
different applications reduces duplication and saves development time. Encourages collaboration between developers and stakeholders.
· · Maintainability – Software should be designed to accommodate changes easily, Testing is continuous, allowing early detection and resolution of issues.
ensuring long-term usability and efficiency in updates or bug fixes. However, it requires experienced teams, and minimal documentation can be
2. Analyse different software process models, comparing their problematic in some contexts.
structures, advantages, and challenges. 4. Analyse the Software Development Life Cycle (SDLC)
Ans: phases, explaining how each phase contributes to the
Model Structure Advantages Challenges successful delivery of a software product.
Ans:1. Requirement Analysis
Linear and sequential Simple to use and manage, Inflexible, poor for changing Purpose: Gather detailed and clear requirements from stakeholders.
Waterfall (one phase after good for well-defined requirements, late error Contribution: Ensures the development team understands what the software must
another) projects detection achieve, reducing misunderstandings and scope creep.
2. System Design
Extension of Purpose: Create a detailed design of the system architecture, data models, and
Early detection of defects, Rigid structure, difficult to
V-Model Waterfall with interfaces.
better quality assurance accommodate changes
parallel testing phases Contribution: Provides a blueprint that guides development and helps ensure the
system meets all requirements efficiently.
3. Implementation (Coding) Guide the design and implementation of core software capabilities.
Purpose: Translate design documents into actual software code. Help in creating test cases to verify software behavior.
Contribution: Builds the working product; quality coding directly impacts software Ensure the software meets the user’s direct needs and expectations.
performance and reliability. Non-Functional Requirements:
4. Testing Specify how the system performs (quality attributes like performance, security,
Purpose: Validate the software against requirements and detect defects. usability).
Contribution: Ensures the software is reliable, functional, and free of critical bugs Ensure the software is reliable, efficient, and user-friendly.
before release. Influence system architecture and technology choices.
5. Deployment Help meet regulatory and compliance standards.
Purpose: Release the software for use in the production environment. Affect user satisfaction and long-term system success.
Contribution: Makes the software available to users, enabling real-world application 7. Evaluate various software design methodologies and
and feedback. determine which is most effective for different types of
6. Maintenance projects, justifying your choice with examples.
Purpose: Provide ongoing support, fix issues, and update the software as needed. Ans:
Contribution: Keeps the software relevant, improves performance, and adapts it to Design
changing user needs and environments. Best For Key Strengths Example Justification
Methodology
Promotes reusable
Reusability,
Object-Oriented Large, complex, E-commerce components and
scalability,
Design evolving projects platform handles complexity
flexibility
well.
Inflexible to changes: Difficult to accommodate changes once the project progresses beyond Scheduling
the requirements phase. Description Best Suited For Advantages Limitations
Technique
Late testing: Testing happens after implementation, so defects can be discovered late and be
costly to fix. scheduling.
Not suitable for complex or evolving projects: Poor adaptability for projects with changing
or unclear requirements. Agile Breaks project into Projects with Allows
Less predictable
User feedback delayed: Users see the product only at the end, risking a mismatch between Scheduling iterations with evolving adaptability and
timelines and
expectations and the final product. (Sprint flexible planning per requirements and continuous
scope.
Risk of project failure: If early phases are misunderstood, the entire project may be at risk. Planning) sprint. frequent changes. feedback.
9. Analyse the importance of cost estimation in software
engineering. Adjusts schedules to Optimizes May extend
Projects with
Resource balance resource resource project duration if
Ans:·Facilitates Project Planning: Accurate cost estimation helps in developing realistic limited or shared
project schedules and allocating appropriate resources, ensuring that the project progresses Leveling usage and avoid utilization and resources are
resources.
smoothly without unexpected delays. overload. prevents burnout. limited.
·Budget Management: It allows organizations to allocate financial resources wisely,
preventing overspending and ensuring the project stays within its budget limits.
·Sets Stakeholder Expectations: Clear cost estimates help stakeholders understand the
investment required and the timeline, fostering transparency and trust. (Chap-2)(Marks-3)
·Supports Decision-Making: With cost information, managers can evaluate project 1. Differentiate between functional and non-functional
feasibility, decide on feature prioritization, and make trade-offs between cost, quality, and requirements.
time. Aspect Functional requirements Non-functional requirements
·Risk Identification and Mitigation: Early cost estimation can highlight potential areas of Definition Describes what the Describes how the system
risk where costs might escalate, allowing teams to develop mitigation strategies proactively. system should do. should perform.
·Resource Allocation: Helps determine the number and type of personnel, tools, and Focus Functionality, features, and Performance, security,
infrastructure needed, ensuring the project is neither under- nor over-resourced. operations. usability, and reliability.
10. Evaluate various software project scheduling techniques
and determine which technique is most suitable for User login authentication System response time
different types of software projects. Examples - Payment processing - Data encryption
Ans: - Order tracking - User interface aesthetics
Scheduling Testability Can be tested with input- Requires performance,
Description Best Suited For Advantages Limitations
Technique output validation. security, or usability testing.
importance Ensures the system works as Ensures the system is
Visual timeline Easy to expected. efficient, secure, and user-
Small to medium Can become
showing tasks, understand and friendly.
Gantt Chart projects with clear complex for large
durations, and communicate
tasks. projects.
dependencies. progress. 2. Explain Decision Trees and Decision Tables with
examples.
Identifies the longest Ans:Decision Tree:A Decision Tree is a graphical representation of decision-making, where
sequence of Projects with Helps identify Requires accurate each node represents a condition, branches represent choices, and leaves indicate outcomes. It
Critical Path
dependent tasks to well-defined tasks critical tasks to task estimates and helps in making structured decisions based on conditions and rules.A company decides on
Method (CPM)
determine project and dependencies. prioritize. dependencies. loan approval based on income and credit score.
duration. Income > 50K?
/ \
Program Uses probabilistic Complex projects Accounts for More complex to Yes No
Evaluation and time estimates with uncertain uncertainty and implement and / \
Review (optimistic, task durations. variability. maintain. Credit Score > 700? Loan Rejected
Technique pessimistic, most / \
(PERT) likely) for Yes No
Loan Approved Loan Rejected
Decision Table:A Decision Table is a tabular representation of rules and conditions for estimate the effort, time, and cost required to develop a
decision-making. It is useful when multiple conditions affect the outcome. software project based on the size of the project (usually in
Example: KLOC – thousands of lines of code).
A simple decision table for a loan approval system: Significance in Cost Estimation:
Predicts Project Cost and Effort: Helps in planning budgets and timelines accurately.
Improves Decision Making: Assists in choosing between project alternatives and resource
allocation.
Early Estimation: Provides useful estimates in early stages of development.
Standardized Approach: Offers a proven, quantitative method over subjective guessing.
7. Differentiate between LOC and FP metrics.
3. Describe the significance of Data Flow Diagrams (DFD) in Ans:
system design. Aspect LOC (Lines of Code) FP (Function Point)
Ans:A Data Flow Diagram (DFD) is a graphical representation of how data moves through a
Measures the size of software by Measures the functionality
system, showing inputs, processes, storage, and outputs. It helps in understanding system Definition
counting lines of code written. delivered to the user.
functionality and data interactions.
Key Significance: Based on user-visible functions
1. Clear System Understanding – Visualizes how data flows and transforms within the Focus Based on code length.
and features.
system.
2. Improved Communication – Bridges the gap between technical teams and Language Highly dependent on programming
Language-independent.
stakeholders. Dependency language.
3. Identifies Process Inefficiencies – Helps detect redundancies, bottlenecks, and
optimization areas. Can be estimated early in the
Early Estimation Difficult to estimate in early stages.
4. Facilitates System Documentation – Acts as a reference for future maintenance and project lifecycle.
updates. Measurement
5. Supports Modular Design – Enables a structured approach to system development Physical size metric. Logical size metric.
Type
4. What are the key components of UML Use Case Better for maintenance and Better for cost estimation and
Usefulness
Diagrams? productivity tracking. comparison across projects.
Ans:A UML Use Case Diagram visually represents system interactions with users and
external systems, focusing on functionalities rather than implementation details.
Key Components: 8. Describe the role of PERT and CPM in project
1. Actors – Entities (users or external systems) interacting with the system. scheduling.
2. Use Cases – Functionalities or actions the system provides to actors. Ans:Role of PERT in Project Scheduling:
3. System Boundary – Defines the scope of the system being modeled. Focus: Time estimation and uncertainty management.
4. Relationships: Use: Best suited for projects with uncertain task durations.
1. Association – Links actors and use cases. Function:
2. Include – Represents mandatory functionality reuse. Uses three time estimates for each task:Optimistic (O),Most likely (M),Pessimistic (P)
3. Extend – Represents optional or conditional functionality. Calculates expected time:TE = (O + 4M + P) / 6
5. Generalization – Represents inheritance between actors or use cases. Helps identify critical tasks and estimate total project time with variability.
Role of CPM in Project Scheduling:
[Link] is level-0 DFD? Focus: Time and cost optimization.
Ans:A Level-0 Data Flow Diagram (DFD), also known as a Context Diagram, is the highest- Use: Best for projects with predictable, well-known task durations.
level representation of a system. It provides a bird’s-eye view of how the system interacts Function:
with external entities (users, other systems) and shows the main data flow without detailing Identifies the critical path (longest duration path through the project).
internal processes. Helps schedule tasks to avoid delays and allocate resources efficiently.
Highlights tasks with slack (float) and those without it.
6. What is COCOMO model? Explain its significance in 9. What is risk management in software projects?
cost estimation. Ans:Risk management in software projects is the process of identifying, analyzing, planning
Ans:COCOMO (Constructive Cost Model) is a software cost for, and responding to potential risks that could negatively impact the project’s success.
estimation model developed by Barry Boehm. It is used to Key Steps in Risk Management:
Risk Identification:Recognizing possible risks (e.g., scope changes, technology issues, Aspect Black Box Testing White Box Testing
resource shortages).
Risk Analysis:Assessing the probability and impact of each risk. Verify software functionality against
Validate internal logic, code paths,
Risk Prioritization:Ranking risks based on their severity and likelihood. Objective requirements without knowing internal
and implementation correctness.
Risk Planning (Mitigation):Developing strategies to avoid, reduce, or respond to risks (e.g., code structure.
backup plans, training, better tools).
Risk Monitoring and Control:Continuously tracking risks and adjusting responses as Focuses on input-output testing using
Involves code coverage analysis, path
needed. techniques like equivalence
Methods testing, statement and branch testing.
10. Explain Black Box and White Box testing. partitioning, boundary value analysis,
Requires knowledge of source code.
Ans:Black Box Testing: and functional testing.
A software testing method where the tester evaluates the functionality of the application
without any knowledge of the internal code, structure, or logic. It focuses on input-output Requirements, specifications, and user
Test Basis Source code and design documents.
behavior based on requirements. scenarios.
White Box Testing:
A software testing method where the tester has full knowledge of the internal workings of the Tester No need for programming or code Requires deep understanding of code
code, including logic, structure, and paths. It is used to test how the software works Knowledge knowledge. and logic.
internally. Effective at detecting missing or Effective at finding hidden errors,
MARKS 5 Effectiveness incorrect functions, usability issues, and logical errors, and optimizing code
1. Analyse the risk management process in software interface errors. coverage.
engineering and determine its impact on project
Can be time-consuming and complex;
success Cannot test internal code structure, may
Limitations may overlook missing functionalities
Ans:Risk Management Process: miss hidden bugs inside code.
Risk management in software engineering involves identifying, assessing, prioritizing, and not in the code.
controlling risks that could negatively affect a project. The typical process includes:
Risk Identification: Recognizing potential risks early, such as technical challenges, 3. Explain the significance of software quality assurance
resource shortages, or requirement changes.
(SQA).
Risk Analysis: Evaluating the likelihood and impact of each risk to understand its
Ans:Software Quality Assurance (SQA) is a systematic process that ensures software
severity.
products and processes meet defined quality standards and requirements throughout the
Risk Prioritization: Ranking risks based on their potential effect on the project,
development lifecycle. Its significance lies in:
focusing on the most critical ones.
Ensuring Product Quality: SQA helps deliver reliable, efficient, and defect-free
Risk Mitigation Planning: Developing strategies to reduce or eliminate risks, such as
software that meets user expectations and requirements.
contingency plans or alternative solutions.
Preventing Defects: By embedding quality practices early in development, SQA reduces
Risk Monitoring and Control: Continuously tracking risks throughout the project and
the likelihood of errors and costly fixes later.
adjusting plans as necessary.
Compliance and Standards: It ensures adherence to industry standards, regulations, and
Impact on Project Success:
organizational policies, which is critical in regulated industries.
Effective risk management significantly improves project success by minimizing surprises
Customer Satisfaction: High-quality software leads to increased user satisfaction, trust,
and enabling proactive handling of potential issues. It helps in:
and competitive advantage.
Reducing delays and cost overruns by anticipating problems early.
Risk Reduction: SQA identifies and mitigates risks related to software failures, security
Improving decision-making with clear insights into risks and their effects.
vulnerabilities, and performance issues.
Enhancing stakeholder confidence through transparent risk handling.
Cost Efficiency: Early detection and prevention of defects reduce rework, saving time
Increasing project quality by addressing risks that could impact functionality or
and costs in the long run.
performance.
4. Analyse different software reliability metrics, explaining
Facilitating better resource allocation by focusing efforts on high-risk areas.
2. Analyse Black Box and White Box testing approaches, how each metric contributes to assessing software
comparing their objectives, methods, and effectiveness in dependability and performance.
ensuring quality. Ans:·Mean Time to Failure (MTTF): Measures the average time software operates without
failure; indicates software stability and expected lifespan.
Ans:
·Mean Time Between Failures (MTBF): Calculates the average time between consecutive
failures in repairable systems; helps plan maintenance and assess reliability over time.
·Failure Rate: Counts how often failures occur within a given time or number of operations; Model Strengths Weaknesses
reflects software robustness and user experience impact.
·Fault Density: Number of defects per thousand lines of code (KLOC); provides insight into milestones testing
code quality and areas needing improvement.
·Defect Removal Efficiency (DRE): Percentage of defects detected and fixed before release; Flexible, adaptive to change, Requires disciplined team, less
Agile
measures effectiveness of testing and quality assurance processes. continuous feedback predictability
·Availability: Percentage of time software is operational and accessible; critical for assessing Delivers usable software early, Integration challenges,
readiness in systems requiring high uptime. Incremental
flexible requires good planning
·Recovery Time: Time needed to recover from a failure; indicates system resilience and
impact on users after faults occur. Risk-focused, iterative Complex, costly, requires
5. What are the different types of software maintenance? Spiral
refinement expertise
Explain.
Ans:Corrective Maintenance:Involves fixing bugs and errors discovered after the software Emphasizes testing at each Rigid, similar to Waterfall’s
V-Model
is deployed. It ensures the software continues to operate as intended by correcting faults. stage, clear structure inflexibility
Adaptive Maintenance:Modifying software to keep it compatible with changes in the
RAD (Rapid Application Not suitable for large complex
environment, such as new operating systems, hardware upgrades, or regulatory changes. Fast delivery, user involvement
Development) projects
Perfective Maintenance:Enhancing software by improving performance, usability, or adding
new features based on user feedback and changing requirements.
Preventive Maintenance:Making changes to the software to prevent future problems, 8. Evaluate the impact of Agile methodology in modern
improve maintainability, and reduce the risk of faults before they occur. software development.
6. Analyse the processes of software re-engineering and reverse
Ans:Enhanced Flexibility and Adaptability: Agile allows teams to respond quickly to
engineering, comparing their goals, techniques, and changing requirements and market demands, enabling continuous improvement throughout
outcomes in software maintenance. the development cycle.
Ans: Improved Customer Collaboration: Regular feedback from customers and stakeholders
Aspect Reverse Engineering Software Re-engineering ensures the product better aligns with user needs and expectations.
Faster Delivery: Agile’s iterative approach enables frequent releases of working software,
Understand and extract knowledge from Improve or modernize existing providing value to users early and often.
Goal existing software, often when software to enhance functionality, Higher Product Quality: Continuous testing and integration within Agile cycles help detect
documentation is missing or outdated. performance, or maintainability. defects early, improving overall software quality.
Risk Reduction: Frequent reviews and iterative development minimize the risk of project
Code analysis, documentation extraction, failure by identifying issues early.
Source code restructuring, redesign,
Techniques model recovery, and system Challenges: Agile requires disciplined teams and active stakeholder involvement; without
code translation, and optimization.
comprehension. these, projects may face scope creep or lack of clear documentation
9. Design a UML class diagram for an online shopping
Analyzes and extracts system Modifies and updates software
Process system.
specifications, architecture, and design components based on insights gained
Focus Ans:
from the software. from reverse engineering.
Use Systematically captures combinations of inputs and their resulting actions. High flexibility, adaptive to Requires strong collaboration, can
Agile
changes, customer-focused. be chaotic without proper planning.
Strengths Excellent for handling complex rule sets; concise and complete coverage.
Weaknesses Can be less intuitive; harder to visualize the flow of logic or order of events. 2. Evaluate the role of SDLC in software project success.
Ans:The SDLC (Software Development Life Cycle) provides a structured framework for
developing software in a systematic manner. It ensures that:
10. Design a modular architecture for a software system of Project requirements are met.
your choice, explaining how your design enhances Clear stages for design, development, and testing are defined.
maintainability, flexibility, and performance. Risks are identified and managed early.
Ans:Modular Architecture: Online Food Delivery System Efficient resource and time management.
User Module:Handles user registration, login, profile management. By following a structured SDLC, project success is more likely, as the process helps maintain
Restaurant Module:Manages restaurant data, menus, availability, and ratings. focus, reduces errors, and ensures timely delivery.
Search & Filter Module:Enables search by cuisine, location, or ratings.
Order Management Module:Manages order placement, confirmation, and order history. 3. Design a simple use case diagram for an online library
Payment Module:Integrates with payment gateways, handles transactions and invoices. management system.
Delivery Module:Manages delivery tracking, assignments, and status updates. Ans:
Admin Panel Module:Provides tools for managing users, restaurants, and analytics. 4. Assess the importance of DFDs in system design.
Notification Module:Sends email/SMS/notifications for order updates and promotions. Ans:Data Flow Diagrams (DFDs) are essential in system design as they:
Enhancement Through Modular Design Help visualize how data flows through the system.
Maintainability: Provide a clear representation of system functions and their interactions.
Each module has a single responsibility, making it easy to locate and fix bugs. Aid in identifying potential bottlenecks, redundancies, and inefficiencies.
Updates to one module (e.g., payment gateway changes) don’t affect the others. Serve as documentation for system analysis, making communication easier between
Flexibility: stakeholders.
New features (e.g., loyalty points or offers) can be added as independent modules. 5. Compare Object-Oriented modelling with structured
Modules can be swapped or upgraded (e.g., changing the notification service) without design in terms of modularity and reusability.
disrupting the system. Ans:
Performance: Aspect Object-Oriented Modeling Structured Design
Modules can be deployed and scaled independently (e.g., scaling the Order Encourages modularity via classes Divides the system into modules but often
Management Module during peak hours). Modularity and objects, making it easier to results in less flexibility when
Load balancing and caching can be applied to specific performance-critical modules like modify or extend. modifications are needed.
Search or Delivery Tracking.
High reusability due to inheritance, Reusability is lower as components are
Reusability
(Chap-4)(Marks-3) polymorphism, and encapsulation. often more tightly coupled.
Improving Processes:By providing a framework for measuring and improving quality, · Impact on Version Control:SCM provides tools and processes to track changes, manage
models can help organizations establish and improve their software development multiple versions, support branching and merging, and enable rollback. This ensures code
processes. integrity and easy recovery from errors.
Facilitating Communication:Models can serve as a common language for communication ·Impact on Collaboration:SCM enables multiple developers to work simultaneously on the
between developers, stakeholders, and users, ensuring everyone understands the same project by synchronizing changes, preventing conflicts, and providing transparency
expectations for software quality. through detailed change logs and histories.
Enhancing Testing:Models can help identify the most critical areas to focus testing efforts, Impact on Project Stability:By controlling changes, maintaining stable baselines, and
ensuring that the software meets the required quality standards. integrating with build and release processes, SCM reduces errors, avoids integration
[Link] the factors affecting software reliability and evaluate issues, and ensures consistent, reliable software delivery.
how different reliability growth models help improve software [Link] the impact of reverse engineering in
dependability. modernizing legacy software.
Ans:Complexity of Software: Ans:Understanding Legacy Systems
More complex software has more interactions, dependencies, and potential failure points. Helps uncover the internal structure, logic, and dependencies of legacy code.
Complex logic, numerous modules, and intricate algorithms can increase the chance of Provides insights needed to safely modify, extend, or replace parts of the system.
defects. Facilitates Migration and Re-engineering
Quality of Requirements and Design: Extracted models and documentation enable smoother migration to modern platforms,
Ambiguous, incomplete, or changing requirements lead to misunderstandings and errors. languages, or architectures.
Poor architectural and design decisions reduce robustness and error tolerance. Supports re-design efforts by revealing hidden complexities and obsolete components.
Coding Practices: Improves Maintenance and Debugging
Poor coding standards, lack of code reviews, and insufficient adherence to best practices Enhances comprehension of code behavior, which reduces maintenance time and cost.
cause defects. Helps identify redundant, dead, or poorly implemented code for cleanup.
Use of unproven or unreliable third-party libraries can introduce vulnerabilities. Enables Integration with New Systems:Provides clear interfaces and data flows, making it
Testing Effectiveness: easier to integrate legacy systems with new applications or services.
The thoroughness of test cases and coverage affects the detection of bugs before release. Supports Compliance and Risk Management:
Insufficient or ineffective testing results in undetected defects causing failures.
Development Environment: Reveals security vulnerabilities or compliance issues embedded in legacy code.
Tool support, programming language, and development methodologies impact defect Helps assess risks before modernization efforts.
injection and removal.
Changes in environment, like platform or hardware, can introduce unexpected behavior.
[Link] the role of software configuration management in (Chap-5)(Marks-3)
software development, examining its impact on version control, 1. Illustrate how CMMI helps improve software quality.
collaboration, and project stability. Ans: The Capability Maturity Model Integration (CMMI) helps improve software quality
Ans:Key Roles of SCM in Software Development by providing a structured framework for process improvement. It ensures:
Version Control Consistency: Standardized processes across the organization.
SCM systems manage multiple versions of software artifacts. Continuous improvement: By measuring and monitoring processes, CMMI encourages
They record changes made over time, who made them, and why. refinement.
Enable rollback to previous versions if defects are introduced or if a feature needs to be Risk management: Identifying risks and implementing controls to mitigate them.
reverted. Better project management: Clearer goals, objectives, and quality standards lead to more
predictable outcomes.
Facilitating Collaboration 2. What is a quality assurance plan in a software project?
SCM provides a shared repository for the team, ensuring all developers work with the Ans:A Quality Assurance (QA) Plan outlines the strategies and procedures for ensuring that
latest versions. software meets the required quality standards throughout its lifecycle. It typically includes:
It prevents conflicts through locking mechanisms or merging strategies. Quality goals: What quality criteria must be met.
Tracks changes and authorship, improving accountability and transparency. Testing strategies: Types of testing (unit, integration, system) to be conducted.
Ensuring Project Stability Roles and responsibilities: Who is responsible for quality activities.
SCM helps maintain a stable baseline of software by controlling changes rigorously. Tools and techniques: QA tools and methodologies to be used.
Enables controlled releases and build management, reducing integration issues. Metrics: How quality will be measured (e.g., defect density, test coverage).
3. Compare different reliability models and suggest the best
one for critical systems.
Ans: systems.
Model Advantages Limitations Ans:·Improved maintainability: Legacy systems can be made easier to modify and update.
· Extended lifespan: Re-engineering can extend the life of legacy systems without the need
Exponential Simple, suitable for systems with Assumes constant failure rate, which for a complete rewrite.
Model constant failure rate. isn't realistic for all systems. ·Increased efficiency: Refactoring or optimizing code during re-engineering can improve
Flexible, can model both increasing More complex, requires detailed data system performance.
Weibull Model ·Risk of disruption: There is a potential risk that re-engineering may introduce new defects
and decreasing failure rates. to be effective.
into the system.
Log-Normal Useful for systems where failures are Requires large amounts of data for 9. Create a software reuse model for a real-world
Model rare but severe. accurate prediction. application.
Ans:Create a software reuse model for a real-world application: For a web-based e-
commerce platform, a software reuse model could include:
4. What are some strategies for improving software Reusable components: Payment gateway, user authentication, shopping cart.
maintenance processes? Shared services: Inventory management, product recommendation engine.
Ans:Strategies for improving software maintenance processes: Reusable UI templates: Common components like header, footer, and product display
Automated Testing: Reduce the time and effort needed for regression testing. modules.
Code Refactoring: Continuously improve code structure to enhance maintainability. Centralized repository: A repository to store and version these components for use in future
Documentation: Maintain thorough documentation to aid future modifications. applications or updates.
Modularization: Break down the system into smaller, manageable parts to make [Link] can best practices for software reusability be applied to
maintenance easier. improve development efficiency?
Change Management: Establish formal processes for handling software updates and bug Ans:Encapsulation: Design components that are self-contained, with clear interfaces.
fixes. Documentation: Provide detailed documentation so others can easily understand and reuse
5. How can reverse engineering contribute to improving components.
software reusability? Modular design: Break down software into smaller, reusable units.
Ans:Understanding legacy code: Reverse engineering helps in understanding existing Code standards: Ensure consistency in coding practices to make it easier to reuse and
systems, making it easier to reuse code components. integrate code.
Modularization: Through reverse engineering, developers can identify reusable components Automated testing: Implement automated testing to quickly verify that reused components
and modularize them for future use. function correctly in different contexts.
Documentation: It generates documentation for undocumented systems, making it easier to
reuse parts of the system in future projects.
6. Propose a framework for implementing software reuse in an MARKS 5
enterprise. 1. What are the main challenges in implementing
Ans:Identify reusable assets: Start by identifying which parts of the code or system can be software reuse in large-scale applications?
reused across projects (e.g., libraries, functions, services). Ans:Implementing software reuse in large-scale applications offers significant benefits like
Centralized repository: Create a central repository to store reusable components. reduced development time, increased reliability, and lower costs. However, it also comes
Standardization: Develop standard guidelines for creating reusable code (e.g., coding with several challenges, especially at scale. Here are the main ones:
conventions, documentation standards). 1. Component Compatibility and Integration
Reuse awareness: Promote a culture of reuse within the organization. Challenge: Reusable components may not integrate smoothly with the architecture,
Quality control: Ensure reusable components are tested and meet quality standards before technologies, or data structures of a new application.
they are stored in the repository. Example: A module built for a monolithic app might not work well in a microservices-based
7. What are the main challenges organizations encounter when system.
adopting CASE tools? 2. Design Constraints and Rigidity
Ans:High initial cost: CASE tools can be expensive to purchase and implement. Challenge: Reusable components often have rigid interfaces or specific assumptions that
Training: Employees need to be trained to effectively use the tools. limit flexibility.
Resistance to change: Teams may be resistant to adopting new tools and processes. Result: Developers may need to heavily adapt or wrap these components, reducing the
Integration with existing systems: CASE tools may not integrate seamlessly with existing benefit of reuse.
software and workflows. 3. Lack of Standardization
Customization needs: CASE tools often require customization to fit the specific needs of the Challenge: Inconsistent coding practices, documentation, and naming conventions make
organization. components hard to understand or integrate.
8. Evaluate the impact of software re-engineering on legacy Large teams and distributed development often amplify this issue.
4. Poor or Missing Documentation Learning Curve: Some CASE tools are complex and require training.
Challenge: Without clear documentation, it's hard to understand how to use or configure Integration Issues: Compatibility with various development environments can be a
reusable components. concern.
Result: Developers may choose to rewrite instead of reuse. Cost: High-end CASE tools can be expensive.
5. Security and Quality Assurance 4. Compare various software re-engineering techniques.
Challenge: Reused code can introduce vulnerabilities if it’s not properly tested or Ans:
maintained. Technique Description Use Case Pros Cons
Example: Using outdated libraries with known security flaws. Improve code structure Enhances
Clean messy or No new features
Refactoring without changing readability &
2. Propose a software maintenance plan for a cloud based legacy code added
behavior maintainability
application.
Aids
Ans:A solid software maintenance plan for a cloud-based application should prioritize Analyze and recover Understand Time-
reliability, security, and scalability. Here's a well-structured approach: Reverse understanding for
design from existing undocumented consuming; may
1. Preventive Maintenance: Use tools like AWS CloudWatch, Azure Monitor, or Google Engineering future
code legacy systems miss full context
Cloud Operations Suite for real-time [Link] libraries, APIs, and frameworks enhancements
updated to prevent vulnerabilities. Rebuild system using Migrating to a Leverages Costly and
Forward
2. Corrective Maintenance: Implement an issue tracking system (e.g., JIRA, GitHub new tech based on old new platform or modern tools & requires full
Engineering
Issues) for efficient bug resolution. Define rollback strategies, failover mechanisms, and design language tech redevelopment
automated alerts for quick recovery. Normalize, Improves data Risk of data loss
3. Adaptive Maintenance: Utilize auto-scaling to handle traffic spikes and optimize Data Re- Improve database
migrate, or clean integrity and if not handled
costs. Periodically evaluate and migrate to newer cloud services for performance gains. engineering structure and quality
old databases performance carefully
4. Perfective Maintenance:Improve application functionalities based on user feedback
and analytics. Optimize code for better readability, efficiency, and maintainability Improve
Modify system structure Boosts efficiency May introduce
5. Security & Compliance:Conduct penetration testing and vulnerability Restructuring performance or
(code, UI, data) and usability new bugs
[Link] IAM policies and implement encryption for sensitive data. Ensure user experience
adherence to industry regulations like GDPR, HIPAA, or ISO 27001. Enables Compatibility
Move system to new Cloud migration,
6. Documentation & Training: Maintain updated API references, architecture Migration scalability and and performance
environment/platform OS change
diagrams, and troubleshooting guides. Conduct workshops and knowledge-sharing modernization risks
sessions to ensure best practices.
5. Design a software reuse strategy for a mobile application
3. Evaluate the effectiveness of CASE tools in software development company.
development. Ans:A software reuse strategy helps a mobile application development company improve
Ans:CASE (Computer-Aided Software Engineering) tools play a crucial role in software efficiency, reduce costs, and maintain consistency across projects.
development by improving efficiency, consistency, and maintainability. Their effectiveness 1. Establish a Modular Architecture
can be evaluated across several dimensions: Use component-based design where UI elements, business logic, and database
1. Productivity & Automation interactions are separate.
CASE tools automate repetitive tasks, such as code generation, documentation, and Create reusable modules for authentication, notifications, payment processing, and
testing. analytics.
They help reduce human errors and speed up development cycles. 2. Maintain a Centralized Repository
2. Standardization & Consistency Set up a code library with well-documented reusable components.
Ensure adherence to software engineering best practices (e.g., design patterns, Use GitHub, Bitbucket, or an internal repository for version control and access
structured methodologies). management.
Help maintain consistent code quality and documentation. 3. Develop Standardized APIs & SDKs
3. Software Design & Modeling Build RESTful APIs or GraphQL endpoints for common functions.
Support UML diagrams, DFDs, and ER models, improving system visualization. Offer an SDK for internal teams to integrate essential features easily.
Make collaboration between teams more structured 4. Automate Code Generation & Templates
4. Maintenance & Debugging Use code scaffolding tools like Yeoman or Plop for rapid project initialization.
Aid in version control, impact analysis, and automated regression testing. Create UI design templates using frameworks like Jetpack Compose (Android) or
Facilitate code refactoring, reducing technical debt. SwiftUI (iOS).
5. Limitations & Challenges
5. Implement a Microservices Approach Aspect Influence of Methodology
Develop independent microservices for common functionalities (e.g., user management, minimal but useful documentation, which may reduce clarity over time.
payments).
Ensure services are loosely coupled for easy integration across multiple apps.
8. Develop a testing framework for a web-based e
6. Define Reusability Guidelines
commerce application.
Establish coding standards and best practices to ensure uniformity.
Maintain proper documentation for reusable components to aid developers. Ans:A testing framework for a web-based e-commerce application should ensure
6. Assess the benefits and risks of using open-source reliability, security, and scalability across various components. Here’s a structured approach:
1. Define Testing Types
software components.
Functional Testing: Verify core functionalities like product search, cart management,
Ans:Benefits: checkout process.
Cost-Effective – No licensing fees; reduces development costs. Performance Testing: Assess load handling, response times, and scalability.
Customizable – Source code can be modified to fit specific needs. Security Testing: Identify vulnerabilities in payment gateways, user authentication, and
data protection.
Community Support – Active developers contribute to improvements and bug fixes.
Compatibility Testing: Ensure responsiveness across different browsers and devices.
Transparency & Security – Public scrutiny helps detect vulnerabilities early. Regression Testing: Validate new updates without breaking existing features.
Avoids Vendor Lock-in – No dependency on a single proprietary vendor. 2. Choose the Right Tools
Risks : Selenium/WebDriver: Automated UI testing.
JUnit/TestNG: Unit testing for backend logic.
Security Vulnerabilities – Some OSS lacks timely updates, exposing systems to risks (e.g.,
3. Implement Test Automation
Log4j). Create a test suite covering major functionalities.
Licensing Risks – Non-compliance with licenses (e.g., GPL) can lead to legal issues. Use CI/CD integration (e.g., GitHub Actions, Jenkins) for automated execution.
Lack of Official Support – Some projects rely on community help, not professional support. Maintain data-driven tests for realistic test scenarios.
4. Establish a Test Environment
Maintenance Overhead – Requires internal expertise to manage and update OSS.
Mirror production configurations, including databases and third-party integrations.
Unstable or Abandoned Projects – Some OSS may become outdated or unsupported. Use mock services for external dependencies like payment gateways.
7. Analyse how software engineering methodologies 5. Define Reporting & Debugging Mechanisms
influence project success. Implement logging and error tracking with tools like Log4j or ELK Stack.
Ans: Generate test reports (Allure, Extent Reports) for insights.
Aspect Influence of Methodology 9. Compare and contrast between function oriented and object
Methodologies like Waterfall enforce detailed upfront planning, -oriented design approaches
Project Planning reducing uncertainty but limiting flexibility. Agile promotes adaptive Ans:
planning, helping teams adjust to changes. Aspect Function-Oriented Design (FOD) Object-Oriented Design (OOD)
Agile and Scrum improve team communication through regular stand- Focuses on functions or procedures Focuses on objects that combine data
Team Collaboration Basic Concept
ups and feedback loops, increasing productivity and alignment. that operate on data and behavior
Iterative models (e.g., Agile, Spiral) allow early detection of scope Divides system into Divides system into interacting
Time & Budget Modularity
creep or cost overruns. Waterfall can risk major issues being found functions/modules objects/classes
Management
late. Data and functions (methods) are
Data Handling Data and functions are separate
Spiral methodology explicitly includes risk analysis, helping mitigate encapsulated together
Risk Management
technical and business risks early in the lifecycle. Reuse achieved by using common High reusability via inheritance and
Reusability
Test-driven development (TDD) and DevOps practices embedded in functions polymorphism
Product Quality Agile improve software quality through continuous testing and Can be harder as system grows due Easier due to encapsulation and clear
Maintenance
integration. to scattered data object boundaries
Customer Agile and Lean emphasize frequent releases and customer feedback, Example Structured programming languages Object-oriented languages like Java,
Satisfaction leading to higher satisfaction and relevance of features. Paradigm like C C++, Python
Change Agile and Kanban handle changing requirements well, while Waterfall Data hiding through access specifiers
Data Security Less control over data access
Management struggles with late-stage changes. (private/protected)
Documentation Waterfall emphasizes complete documentation upfront. Agile uses Typical Use Simple, computational or algorithm- Complex, large-scale, interactive