Group B — Medium / Descriptive Questions (5 Marks Each)

Q1Explain Classical Waterfall Model phases, advantages, and limitations.

Classical Waterfall Model

The Classical Waterfall Model is the oldest and simplest Software Development Life Cycle (SDLC) model. It is a linear-sequential model where progress flows strictly downwards through distinct phases.

graph TD A[Requirements] --> B[Design] B --> C[Implementation] C --> D[Testing] D --> E[Deployment] E --> F[Maintenance] style A fill:#e0f2fe,stroke:#0284c7 style B fill:#e0f2fe,stroke:#0284c7 style C fill:#e0f2fe,stroke:#0284c7 style D fill:#e0f2fe,stroke:#0284c7
  • Advantages: Simple to understand. Easy to manage because each phase has specific deliverables and a review process. Phases are completed one at a time without overlap.
  • Limitations: Highly inflexible. Once a phase is finished, you cannot go back (no feedback loops). High risk of failure if initial requirements are misunderstood. No working software is produced until late in the lifecycle.
  • Suitability: Best for small projects with crystal clear, frozen requirements (like a simple payroll system).
Q2Explain Spiral Model quadrants and risk-driven approach.

Spiral Model

The Spiral Model (proposed by Barry Boehm) is a risk-driven iterative software development process. It combines the systematic aspects of the Waterfall model with the iterative nature of the Prototyping model.

The project is developed in continuous loops (spirals). Each loop represents a phase of the process and consists of 4 quadrants:

  1. Determine Objectives: Identify specific goals, alternatives, and constraints for the current iteration.
  2. Identify & Resolve Risks: Evaluate alternatives relative to objectives and constraints. The core of this quadrant is building prototypes to mitigate technical and market risks.
  3. Development & Testing: Develop the next version of the product (similar to the standard waterfall phases for that iteration).
  4. Plan Next Phase: Review the iteration's output with the customer and plan the next spiral based on feedback.

Suitability: Ideal for large, expensive, and complex projects (e.g., aerospace software) where risk mitigation is paramount.

Q3Explain Prototyping Model workflow and suitability.

Prototyping Model

The Prototyping Model involves building a working, simplified version (a prototype) of the software before developing the actual final product. This prototype is used to understand requirements better.

Workflow

  1. Initial Requirements: Gather basic requirements from the client.
  2. Quick Design & Build: Rapidly design and develop a prototype focusing on the user interface and core functionality (ignoring performance, security, and maintainability).
  3. Customer Evaluation: The client uses the prototype and provides feedback.
  4. Refine Prototype: The prototype is modified based on feedback until the client is satisfied.
  5. Develop Final Product: Once the prototype is approved, it serves as the definitive specification for building the actual software using a rigorous SDLC (like Waterfall). The initial prototype is usually thrown away (Throwaway Prototyping).

Suitability: Highly suitable when the client is unsure about their exact requirements, or for systems with complex User Interfaces.

Q4Explain Agile Scrum Framework roles, events, and artifacts.

Agile Scrum Framework

Scrum is a popular Agile framework that breaks software development into short, time-boxed iterations called Sprints (usually 2-4 weeks long).

1. Roles

  • Product Owner: Represents the customer. Owns the Product Backlog and prioritizes features.
  • Scrum Master: A servant-leader who ensures the team follows Scrum practices and removes any impediments blocking the team.
  • Development Team: A self-organizing, cross-functional team of developers, testers, and designers who build the product.

2. Artifacts

  • Product Backlog: A master list of all desired features, bug fixes, and requirements, prioritized by the Product Owner.
  • Sprint Backlog: The subset of items from the Product Backlog chosen by the team to be completed in the current Sprint.

3. Events

  • Sprint Planning: Meeting to define what will be done in the Sprint.
  • Daily Standup: A 15-minute daily meeting where team members answer: What did I do yesterday? What will I do today? Are there any blockers?
  • Sprint Review: Meeting at the end of the Sprint to demo the working software to stakeholders.
  • Sprint Retrospective: Meeting to reflect on the Sprint process and identify improvements for the next one.
Q5Explain SRS Document characteristics (Correct, Complete, Unambiguous, Verifiable).

Characteristics of a Good SRS Document

A Software Requirement Specification (SRS) is a formal document detailing what the software must do. To be effective, an SRS must be:

  1. Correct: Every requirement stated must accurately reflect what the customer actually wants. There should be no technical errors in the specifications.
  2. Complete: It must include all significant requirements (functional, non-functional, constraints, interfaces). No feature expected by the client should be missing.
  3. Unambiguous: Every requirement must have one, and only one, interpretation. Language should be precise; vague terms like "fast," "user-friendly," or "good" should be avoided.
  4. Verifiable (Testable): A requirement is verifiable if there exists a finite, cost-effective process to check whether the final software meets that requirement. (e.g., Instead of "system should be fast", use "system must respond within 2 seconds").
  5. Consistent: No two requirements should contradict each other.
  6. Traceable: It should be easy to trace the origin of each requirement and track it through design, code, and testing phases.
Q6Explain Requirement Elicitation techniques (Interviews, Questionnaires, Prototyping).

Requirement Elicitation Techniques

Requirement Elicitation is the process of gathering requirements directly from stakeholders, users, and customers. It is the most critical step in requirement engineering.

  • Interviews: Direct face-to-face (or virtual) conversations with stakeholders.
    Structured: Following a strict predefined list of questions.
    Unstructured: Open-ended discussions allowing the stakeholder to express their vision freely.
  • Questionnaires / Surveys: Useful when there is a massive user base (e.g., thousands of employees) spread across different locations. It helps gather quantitative data efficiently, though it lacks deep qualitative insights.
  • Prototyping: Building a quick, interactive mockup of the proposed system. Users interact with the prototype and provide immediate, concrete feedback on what they like, dislike, or feel is missing. This is highly effective for resolving ambiguous requirements.
  • Brainstorming: Group sessions where stakeholders and developers freely generate ideas without immediate criticism.
Q7Explain Data Flow Diagrams (DFD) notation rules and leveling.

Data Flow Diagrams (DFD)

A DFD is a graphical representation of the flow of data through an information system. It focuses purely on data movement, ignoring control flow (like loops and if-statements).

Notation Rules

  • Circle/Bubble: Represents a Process (a function that transforms data).
  • Arrow: Represents Data Flow (movement of data). Must be labeled.
  • Parallel Lines: Represents a Data Store (database or file).
  • Rectangle/Square: Represents an External Entity (source or sink of data, like a User or an External API).

Leveling

DFDs are constructed hierarchically (Top-Down Approach):

  • Level 0 (Context Diagram): Shows the entire system as a single process bubble interacting with external entities. Gives a high-level overview.
  • Level 1: Decomposes the Level 0 process into its major sub-processes, showing internal data stores and data flows between these sub-processes.
  • Level 2+: Further decomposes complex Level 1 processes into more granular sub-processes.
Q8Explain Use Case Diagrams in UML with `<>` and `<>`.

Use Case Diagrams

In UML, a Use Case Diagram models the dynamic behavior of a system by showing the interactions between external Actors (stick figures) and the system's Use Cases (ovals).

Relationships between Use Cases

  • <<include>>: Used when one use case always requires the functionality of another use case to complete its task. It represents mandatory, reusable behavior.
    Example: (Withdraw Money) --<<include>>--> (Verify PIN). You cannot withdraw money without verifying the PIN.
  • <<extend>>: Used when a use case optionally adds functionality to a base use case under specific conditions. It represents optional or exceptional behavior. The arrow points from the extending (optional) use case to the base use case.
    Example: (Print Receipt) --<<extend>>--> (Withdraw Money). Printing a receipt only happens if the user specifically requests it during withdrawal.
Q9Explain Cohesion types from Functional (highest) to Coincidental (lowest).

Cohesion in Software Design

Cohesion measures the degree to which the elements inside a single module belong together. High cohesion is desired.

Types of Cohesion (from Best to Worst):

  1. Functional Cohesion (Best): All elements in the module execute a single, well-defined task (e.g., a function calculateTax()).
  2. Sequential Cohesion: The output of one element acts as the input for the next element within the same module (like an assembly line).
  3. Communicational Cohesion: Elements operate on the same core data structure, but perform different operations.
  4. Procedural Cohesion: Elements are grouped because they always execute in a specific sequence, even if they process different data.
  5. Temporal Cohesion: Elements are grouped solely because they must execute at the same time (e.g., an initializeAll() function that boots up the database, clears the screen, and loads user config).
  6. Logical Cohesion: Elements perform logically similar tasks (like all input routines) but are controlled by a flag passed by the caller.
  7. Coincidental Cohesion (Worst): Elements are grouped completely randomly with no meaningful relationship.
Q10Explain Coupling types from Content (highest/worst) to Data (lowest/best).

Coupling in Software Design

Coupling measures the degree of interdependence between two different modules. Low (Loose) coupling is desired.

Types of Coupling (from Worst to Best):

  1. Content Coupling (Worst): One module directly modifies or accesses the internal local data or code of another module. A nightmare for maintainability.
  2. Common Coupling: Multiple modules share access to the same Global Data (global variables). Changing the global data structure forces changes in all connected modules.
  3. Control Coupling: One module passes a control flag (like a boolean) to another module, dictating its internal execution logic.
  4. Stamp Coupling: Modules pass complex composite data structures (like a massive Struct or Object), but the receiving module only actually needs a few specific fields from it.
  5. Data Coupling (Best): Modules communicate strictly by passing simple, fundamental data types (like an int or string) via parameters. The receiving module uses all the data it is given.
Q11Explain Cyclomatic Complexity calculation methods with flow graph example.

Cyclomatic Complexity Calculation

Cyclomatic Complexity V(G) is a software metric used to indicate the complexity of a program. It directly measures the number of linearly independent paths through a program's source code.

Calculation Methods

Given a Control Flow Graph (CFG) of the code:

  1. Edge/Node Formula: \(V(G) = E - N + 2P\)
    Where \(E\) = Number of edges, \(N\) = Number of nodes, \(P\) = Number of connected components (usually 1 for a single program).
  2. Predicate Node Formula: \(V(G) = D + 1\)
    Where \(D\) = Number of predicate (decision) nodes (like if, while, for).
  3. Region Formula: \(V(G) = R\)
    Where \(R\) = Number of regions in the planar flow graph (including the 1 infinite outer region).

Example: A simple if-else statement has 1 decision node (the if condition). Therefore, \(V(G) = 1 + 1 = 2\). There are exactly 2 independent paths (the true branch and the false branch).

Q12Explain White-Box Testing techniques: Statement, Branch, and Path Coverage.

White-Box Testing Techniques

White-Box testing involves testing the internal structures, logic, and code of the software rather than its external functionality. The tester must know programming.

  • Statement Coverage: Designing test cases so that every single line of code (statement) in the program is executed at least once. It is the weakest metric (e.g., it might miss an empty else branch).
  • Branch Coverage (Decision Coverage): Designing test cases so that every possible outcome (True and False) of all decision nodes (if, while) is executed at least once. It guarantees statement coverage.
  • Path Coverage: Designing test cases to execute every possible independent execution path through the code from start to finish. The number of required test cases is exactly equal to the Cyclomatic Complexity \(V(G)\). This is the strongest metric but often impractical for large programs with loops.
Q13Explain Black-Box Testing techniques: Equivalence Partitioning & Boundary Value Analysis.

Black-Box Testing Techniques

Black-Box testing focuses entirely on the inputs and outputs of the software without looking at the internal code. The goal is to verify the software meets its requirements.

  • Equivalence Partitioning: Divides the input domain into "classes" (partitions) of equivalent data. The assumption is that if one value in a partition works, all values in that partition will work.
    Example: An age field accepting 18 to 60. Partitions: Invalid (< 18), Valid (18-60), Invalid (> 60). Test cases: 15, 30, 75.
  • Boundary Value Analysis (BVA): An extension of Equivalence Partitioning. Since bugs frequently occur at the boundaries of input ranges, BVA specifically tests the exact boundary values and the values just inside and just outside the boundaries.
    Example: For age 18 to 60. Test cases: 17, 18, 19, 59, 60, 61.
Q14Explain Integration Testing strategies: Top-Down vs Bottom-Up (Stubs & Drivers).

Integration Testing: Top-Down vs Bottom-Up

Integration testing verifies that individually tested modules work correctly when combined together.

  • Top-Down Integration: Testing starts from the main control module and moves downwards to subordinate modules.
    Stubs: Since lower-level modules might not be developed yet, "Stubs" are used. A stub is a dummy program that simulates the behavior of the missing lower-level module.
    Pros: Major design flaws at the top are caught early.
  • Bottom-Up Integration: Testing starts from the lowest-level atomic modules and moves upwards to the main control module.
    Drivers: Since the upper-level control modules might not be developed, "Drivers" are used. A driver is a dummy program that passes test cases down to the module being tested.
    Pros: Easy to test utility modules thoroughly. No need for complex stubs.
Q15Explain Basic COCOMO Model effort and development time formulas.

Basic COCOMO Model

The Constructive Cost Model (COCOMO), developed by Barry Boehm, is an algorithmic model used to estimate the Effort and Time required to develop a software project based on its estimated size in Kilo Lines of Code (KLOC).

Formulas

  1. Effort (E): Measured in Person-Months (PM).
    \(E = a \times (KLOC)^b\)
  2. Development Time (Tdev): Measured in Months (M).
    \(T_{dev} = c \times (E)^d\)

Project Modes (Constants a, b, c, d)

  • Organic: Small team, familiar environment. (a=2.4, b=1.05, c=2.5, d=0.38)
  • Semi-Detached: Medium size, mixed experience. (a=3.0, b=1.12, c=2.5, d=0.35)
  • Embedded: Complex, hardware constraints, tight regulations. (a=3.6, b=1.20, c=2.5, d=0.32)
Q16Explain Function Point Analysis components and calculation.

Function Point Analysis (FPA)

FPA is a method to estimate the size of a software project based on the functionality it provides to the user, rather than counting Lines of Code (LOC), which is language-dependent.

Components

The system is evaluated based on 5 functional parameters, each rated as Simple, Average, or Complex:

  1. External Inputs (EI): Screens/forms where users input data into the system.
  2. External Outputs (EO): Reports/screens where the system outputs data to the user.
  3. External Inquiries (EQ): Simple queries that retrieve data without updating files.
  4. Internal Logical Files (ILF): Databases/files maintained entirely within the system.
  5. External Interface Files (EIF): Files read by the system but maintained by another external system.

Calculation: Calculate the Unadjusted Function Points (UFP) by summing the weighted components. Then multiply UFP by the Value Adjustment Factor (VAF) to get the final FP count.

Q17Explain Software Project Scheduling tools: Gantt Chart vs PERT/CPM.

Project Scheduling: Gantt Chart vs PERT/CPM

Feature Gantt Chart PERT / CPM Network Graph
Format Horizontal bar chart. Directed network graph (nodes and arrows).
Focus Focuses on the timeline and schedule. Easily shows when tasks start and end. Focuses on dependencies between tasks and identifying the Critical Path.
Dependencies Can show simple dependencies, but becomes very messy for complex projects. Excellent at showing complex, intertwined task dependencies.
Audience Best for high-level management and clients for easy visualization of progress. Best for Project Managers to calculate slack time and optimize schedules.
Q18Explain Risk Management steps: Identification, Analysis, Planning, Monitoring.

Risk Management Process

Risk Management is a proactive approach to dealing with uncertain events that could negatively impact the software project.

  1. Risk Identification: Systematically brainstorming potential risks (e.g., technology failures, staff turnover, requirement changes).
  2. Risk Analysis (Projection): Assessing each identified risk based on two metrics:
    Probability: The likelihood of the risk occurring (e.g., 10%).
    Impact: The severity of the damage if it occurs (e.g., 1 to 5 scale).
    • Risk Exposure = Probability × Impact.
  3. Risk Planning (Mitigation): Developing strategies to reduce the probability or impact of the highest-exposure risks (e.g., training staff, buying backup servers).
  4. Risk Monitoring: Continuously tracking the identified risks throughout the project lifecycle to see if their probability is increasing, and executing contingency plans if they occur.
Q19Explain Software Quality Assurance (SQA) activities.

Software Quality Assurance (SQA)

SQA encompasses the entire software development process, monitoring and improving the process to ensure that the final product meets specified quality standards.

Key SQA Activities:

  • Process Definition & Improvement: Establishing standard SDLC processes, coding standards, and methodologies (like Agile or CMMI) and continuously improving them.
  • Formal Technical Reviews (FTR): Conducting structured peer reviews and code walkthroughs to find defects early before formal testing.
  • Auditing: Checking if the development team is actually following the defined organizational processes and standards.
  • Testing Management: Overseeing the testing strategy (unit, integration, system testing) to ensure adequate test coverage.
  • Configuration Management: Ensuring all changes to code and documents are tracked and controlled properly via version control systems.
Q20Explain Capability Maturity Model Integration (CMMI) 5 Maturity Levels.

Capability Maturity Model Integration (CMMI)

CMMI is a framework that assesses the maturity and quality of an organization's software development processes across 5 levels:

  1. Level 1 (Initial): Processes are unpredictable, poorly controlled, and reactive. Success depends entirely on individual heroics.
  2. Level 2 (Managed): Processes are planned, documented, and monitored at the project level. Basic project management (requirements, scheduling) is in place.
  3. Level 3 (Defined): Processes are standardized and documented across the entire organization. Projects tailor these standard processes for their specific needs.
  4. Level 4 (Quantitatively Managed): The organization uses statistical and quantitative techniques to measure process performance and control quality precisely.
  5. Level 5 (Optimizing): The organization focuses on continuous process improvement through quantitative feedback and adopting innovative new technologies.
Q21Explain Software Maintenance types: Corrective, Adaptive, Perfective, Preventive.

Types of Software Maintenance

Software maintenance is the process of modifying software after delivery to correct faults, improve performance, or adapt it to a changing environment. It consumes the majority of the software lifecycle cost.

  • Corrective Maintenance: Reactive modification to fix discovered bugs and errors that prevent the software from functioning as specified. (e.g., Fixing a crash when users enter a negative number).
  • Adaptive Maintenance: Modifying the software to keep it usable in a changing environment, such as a new OS version, updated hardware, or a new database schema. (e.g., Updating an iOS app to work with iOS 18).
  • Perfective Maintenance: Enhancing the software by adding new features, improving the UI, or increasing performance based on user requests. (e.g., Adding a "Dark Mode" feature).
  • Preventive Maintenance: Modifying the software to prevent potential future problems. This involves code refactoring, optimizing database queries, and updating deprecated libraries before they break.
Q22Explain Software Re-engineering and Reverse Engineering pipeline.

Software Re-engineering & Reverse Engineering

Software Re-engineering is the process of examining, altering, and rebuilding an existing legacy system to reconstitute it in a new form without changing its overall functionality.

Re-engineering Pipeline:

  1. Inventory Analysis: Sorting through legacy applications to decide which ones need re-engineering based on business value and maintenance cost.
  2. Document Restructuring: Updating outdated documentation to match the current state of the system.
  3. Reverse Engineering: Analyzing the legacy source code to extract higher-level design documents (like UML class diagrams and DFDs). It moves backwards through the SDLC (Code → Design → Requirements).
  4. Code/Data Restructuring: Refactoring spaghetti code into structured programming and normalizing legacy databases, keeping the same architecture.
  5. Forward Engineering: Using the recovered design documents to build a completely new, modern system (e.g., rewriting a legacy COBOL mainframe app into a modern Java/React microservice).
Q23Explain Verification vs Validation with concrete examples.

Verification vs. Validation

Verification Validation
"Are we building the product RIGHT?" "Are we building the RIGHT product?"
Checks if the software conforms to its specification (the SRS document). Checks if the software actually meets the customer's true needs and expectations.
Typically done by developers through static analysis, code reviews, and unit testing. Typically done by testers and users through System Testing and User Acceptance Testing (UAT).
Catches errors introduced during the translation from design to code. Catches errors where the original requirement itself was misunderstood or flawed.
Q24Explain Formal Technical Reviews (FTR) and Code Walkthroughs.

Formal Technical Reviews (FTR)

An FTR is a highly structured group meeting conducted by software engineers to uncover errors in logic, function, or implementation early in the process.

Goals of FTR:

  • Uncover errors early (cheaper to fix).
  • Ensure the software meets predefined standards.
  • Make projects more manageable by creating milestones.

Code Walkthroughs:

A specific type of FTR where the author of the code leads the review team through a manual simulation of the code execution. The review team acts as a "human compiler," feeding test data into the logic to find edge cases, infinite loops, and logic errors. It is a form of static White-Box testing.

Q25Explain Software Architecture styles: Layered, Client-Server, Microservices.

Software Architecture Styles

  • Layered Architecture: The system is organized into hierarchical layers (e.g., Presentation Layer → Business Logic Layer → Data Access Layer). Each layer only communicates with the layer directly below it. Pros: Excellent separation of concerns.
  • Client-Server Architecture: The system is divided into two parts: Clients (which request services) and Servers (which provide services over a network). Pros: Centralized data management and security.
  • Microservices Architecture: A large application is broken down into a suite of small, loosely coupled, independently deployable services that communicate via lightweight APIs (REST/gRPC). Pros: Highly scalable and resilient; different teams can use different tech stacks.
Q26Explain SOLID Principles of Object-Oriented Design.

SOLID Principles of Object-Oriented Design

SOLID is an acronym for five design principles intended to make software designs more understandable, flexible, and maintainable.

  • S - Single Responsibility Principle: A class should have one, and only one, reason to change. (It should only do one specific job).
  • O - Open/Closed Principle: Software entities should be open for extension (adding new features), but closed for modification (don't change existing working code).
  • L - Liskov Substitution Principle: Subtypes must be completely substitutable for their base types without altering the correctness of the program.
  • I - Interface Segregation Principle: Clients should not be forced to depend on interfaces they do not use. (Better to have many small, specific interfaces than one massive, generic one).
  • D - Dependency Inversion Principle: High-level modules should not depend on low-level modules. Both should depend on abstractions (interfaces).
Q27Explain Creational, Structural, and Behavioral Design Patterns.

Software Design Patterns

Design patterns are typical, reusable solutions to common problems in software design.

  • Creational Patterns: Deal with object creation mechanisms, creating objects in a manner suitable to the situation.
    Example (Singleton): Ensures a class has only one instance and provides a global point of access to it (e.g., a Database Connection pool).
  • Structural Patterns: Deal with object composition, helping to ensure that if one part of a system changes, the entire structure does not need to do so.
    Example (Adapter): Allows incompatible interfaces to work together (like a plug adapter).
  • Behavioral Patterns: Deal with communication and assignment of responsibilities between objects.
    Example (Observer): A publish-subscribe model where multiple objects listen and react to state changes in a subject.
Q28Explain User Interface (UI) Design Golden Rules.

Golden Rules of UI Design

Theo Mandel proposed three "Golden Rules" for designing effective User Interfaces:

  1. Place the User in Control: Do not force users into rigid sequences. Allow users to undo actions easily. Hide technical internals from the casual user. Provide shortcuts for power users.
  2. Reduce the User's Memory Load: The system should remember things so the user doesn't have to. Use recognizable visual cues (icons) rather than requiring the user to recall commands. Follow the "Rule of 7" (human short-term memory can hold roughly 7 items).
  3. Make the Interface Consistent: Keep layout, colors, typography, and button placements uniform across all screens. Follow established platform standards (e.g., a "Save" icon should always look like a floppy disk; red usually means "Delete" or "Error").
Q29Explain Software Metrics: Size, Complexity, and Defect Density metrics.

Software Metrics

Software metrics provide a quantitative basis for the development and management of software.

  • Size Metrics: Measure the physical size of the product. The most common is LOC (Lines of Code) or KLOC (Thousands of Lines of Code). Alternatively, Function Points (FP) measure the functionality provided to the user.
  • Complexity Metrics: Measure the logical complexity of the code. The most famous is McCabe's Cyclomatic Complexity \(V(G)\), which counts the number of independent paths through the code. High complexity correlates with high bug rates.
  • Quality (Defect) Metrics:
    Defect Density: Number of defects found per KLOC (Defects / KLOC). Lower is better.
    Defect Removal Efficiency (DRE): A measure of how effectively the QA team finds bugs before shipping.
Q30Explain Software Configuration Management (SCM) and Version Control.

Software Configuration Management (SCM)

SCM is the discipline of managing, organizing, and controlling changes to software assets (code, documents, diagrams) over time.

Key SCM Activities:

  • Version Control (VCS): Tracking every single change made to source code. Systems like Git allow developers to branch off, experiment, and merge code back together without destroying the main project.
  • Change Control: A formal process to evaluate, approve, and implement change requests from clients.
  • Configuration Audit: Verifying that the software product matches its baseline requirements.
  • Release Management: Packaging the software, generating version numbers (e.g., v1.4.2), and distributing it to users.
Q31Explain Fault, Error, and Failure definitions and relationships.

Fault, Error, and Failure

These terms represent the chronological sequence of a software defect:

  1. Error (Mistake): A human action that produces an incorrect result. (e.g., A programmer misunderstands a requirement or makes a typo in the code).
  2. Fault (Defect/Bug): The manifestation of an error in the software code or documentation. A fault is a static defect in the code (e.g., if (x = 5) instead of if (x == 5)). A fault may remain dormant forever if that specific code block is never executed.
  3. Failure: The observable, incorrect behavior of the software when a fault is actually executed by the CPU. The software fails to perform its required function.

Relationship: An Error made by a human causes a Fault in the code, which, when executed under specific conditions, results in a system Failure.

Q32Explain System Testing types: Performance, Stress, Load, Security.

System Testing: Non-Functional Types

System testing validates the fully integrated software product against its requirements. Non-functional testing focuses on how well the system performs.

  • Performance Testing: Testing the system's speed, responsiveness, and stability under a normal expected workload. (e.g., Does the page load in under 2 seconds for 100 concurrent users?)
  • Load Testing: Testing the system's behavior when subjected to the maximum expected concurrent user load. It checks if the system can handle its peak designed capacity.
  • Stress Testing: Pushing the system beyond its maximum designed capacity until it breaks. The goal is to see how the system fails (does it crash gracefully or corrupt data?) and how it recovers.
  • Security Testing: Evaluating the system's vulnerability to malicious attacks, unauthorized access, SQL injections, and data breaches.
Q33Explain Cleanroom Software Engineering approach.

Cleanroom Software Engineering

Cleanroom software engineering is a formal, mathematically-based approach focused on defect prevention rather than defect removal.

Core Principles:

  1. Formal Specification: The software requirements are mathematically modeled using state-box, clear-box, and black-box specifications.
  2. Incremental Development: The product is developed in small, verifiable increments.
  3. Statistical Testing: Instead of traditional unit testing, the software undergoes statistical use testing based on usage probability distributions.
  4. No Execution by Developers: Developers write the code and verify it mathematically (using correctness proofs), but they are not allowed to compile or execute it. An independent certification team tests the final integrated code.
Q34Explain Software Reliability Models and MTBF metrics.

Software Reliability and MTBF

Software Reliability is the probability that a software system will fulfill its intended function without failure for a specified period of time in a specified environment.

Key Metrics:

  • MTTF (Mean Time To Failure): Average time the software operates continuously before failing.
  • MTTR (Mean Time To Repair): Average time taken to fix the fault after a failure occurs.
  • MTBF (Mean Time Between Failures): \(MTBF = MTTF + MTTR\). It represents the average time between two consecutive failures.
  • Availability: The probability that the system is operating successfully at any given moment. \(Availability = \frac{MTTF}{MTBF} \times 100\%\).

Reliability Models: Models like the Jelinski-Moranda model or the Goel-Okumoto model use statistical formulas to predict future reliability and failure rates based on historical testing data.

Q35Explain Code Refactoring techniques and benefits.

Code Refactoring

Refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behavior.

Common Techniques:

  • Extract Method: Taking a long, complex function and breaking it into several smaller, well-named helper functions.
  • Rename Variable: Giving variables descriptive names instead of vague ones (e.g., changing x to customerAge).
  • Replace Magic Number with Symbolic Constant: Replacing hardcoded numbers with named constants (e.g., replacing 3.14 with PI).

Benefits:

Improves code readability, reduces cyclomatic complexity, makes the code easier to maintain and extend, and helps uncover hidden bugs.

Q36Explain Static Analysis tools and Code LINTing.

Static Analysis and Code LINTing

Static Analysis is the automated checking of source code without actually compiling or executing it.

Code LINTing: A specific type of static analysis. A "linter" (like ESLint for JavaScript or SonarQube) scans the source code to flag:

  • Stylistic Errors: Deviations from team coding standards (e.g., missing semicolons, wrong indentation).
  • Programming Errors: Potential bugs like using uninitialized variables, unreachable code, or infinite loops.
  • Security Flaws: Hardcoded passwords or vulnerable dependencies.

Benefits: Enforces code quality automatically, catches silly mistakes early before they reach code review, and trains junior developers on best practices.

Q37Explain Component-Based Software Engineering (CBSE).

Component-Based Software Engineering (CBSE)

CBSE is a paradigm that emphasizes the design and construction of software systems using reusable, independent, off-the-shelf software components.

Key Concepts:

  • Component: A self-contained, deployable software package that provides a specific functionality through well-defined interfaces (e.g., a pre-built payment processing module).
  • Interface: Components interact exclusively through standard interfaces, making their internal implementations completely hidden (black-box).

Benefits: Drastically reduces development time and cost, improves reliability (since components are already heavily tested), and simplifies maintenance (components can be swapped out easily without affecting the rest of the system).

Q38Explain DevOps principles and CI/CD Pipeline integration.

DevOps and CI/CD Pipeline

DevOps is a culture and set of practices that combines Software Development (Dev) and IT Operations (Ops) to shorten the development lifecycle and provide continuous delivery of high-quality software.

CI/CD Pipeline:

  • Continuous Integration (CI): Developers frequently merge their code changes into a central repository (like GitHub). Automated builds and unit tests run immediately upon every commit to detect integration errors instantly.
  • Continuous Delivery (CD): The automated process of preparing the tested code for release to production. The software is always in a deployable state.
  • Continuous Deployment: Taking it one step further, every change that passes the automated tests is automatically deployed directly to the production servers without human intervention.
Q39Explain Software Economics and Cost Estimation trade-offs.

Software Economics and Cost Estimation

Software Economics deals with making business decisions regarding software development based on cost, schedule, and quality trade-offs.

Trade-offs:

  • Brooks's Law: "Adding manpower to a late software project makes it later." You cannot infinitely reduce the schedule by adding more developers due to communication overhead.
  • Cost-Quality-Time Triangle: You can only pick two. If you want high quality fast, it will cost a lot. If you want it cheap and fast, quality will suffer.

Cost Estimation Techniques:

Methods to estimate the required budget include Algorithmic Models (COCOMO), Expert Judgment (Delphi technique), and Estimation by Analogy (comparing to similar past projects).

Q40Explain CASE Tools classification and environment integration.

CASE Tools (Computer-Aided Software Engineering)

CASE tools are automated software utilities that assist software engineers throughout the various phases of the SDLC.

Classification:

  • Upper CASE Tools: Support the early phases of SDLC (Requirements, Analysis, and Design). Examples: Diagramming tools (Visio) and prototyping software (Figma).
  • Lower CASE Tools: Support the later phases of SDLC (Coding, Testing, and Maintenance). Examples: IDEs (VS Code), Compilers, and Testing frameworks (Selenium).
  • Integrated CASE (I-CASE) Environments: Comprehensive suites that support the entire SDLC seamlessly from requirements to deployment (e.g., Azure DevOps, Jira).