Group A — Short Answer Questions (1 Mark Each)

Q1Define Software Engineering.

Ans: Software Engineering is, per IEEE 610.12, the application of a systematic, disciplined and quantifiable approach to the development, operation and maintenance of software. It differs from mere programming by using engineering principles, defined processes and measurement to build large, reliable software economically within schedule and budget.

Q2What is Software Development Life Cycle (SDLC)?

Ans: The Software Development Life Cycle (SDLC) is the structured sequence of phases — requirement analysis, design, coding, testing, deployment and maintenance — through which a software product passes from conception to retirement. It defines the deliverable and the verification criterion of each phase, so that progress is visible and controllable.

Q3Define Waterfall Model.

Ans: The Waterfall Model is a linear sequential life-cycle model in which each phase must be completed and its output document baselined before the next phase begins, with no overlapping of phases. It is chosen only when requirements are fixed, well understood and unlikely to change, since it produces no working software until late.

Q4What is Spiral Model?

Ans: The Spiral Model (Boehm) is a risk-driven, evolutionary meta-model in which the product is developed in a series of spiral cycles, each cycle passing through four quadrants: objective setting, risk analysis and prototyping, engineering/development, and planning of the next cycle. Explicit risk analysis in every cycle makes it suitable for large, expensive, high-risk projects.

Q5Define Prototyping Model.

Ans: The Prototyping Model builds a quick, partially functional working model of the system so that the customer can evaluate it and refine the requirements through feedback, after which the prototype is either discarded (throwaway) or evolved into the product. It is chosen when the customer cannot state the requirements precisely at the outset.

Q6What is Agile Methodology?

Ans: Agile is an iterative and incremental development approach that delivers working software in short time-boxed iterations with continuous customer involvement and welcome of late requirement changes. The Agile Manifesto values individuals and interactions, working software, customer collaboration and responding to change over processes and tools, comprehensive documentation, contract negotiation and following a plan.

Q7Define Scrum Sprint.

Ans: A Sprint is a fixed time-box in Scrum (usually 2–4 weeks, never more than one month) at the end of which a “Done”, potentially shippable product increment is delivered. Its scope is frozen once the Sprint begins, and each Sprint ends with a Sprint Review and a Sprint Retrospective.

Q8What is Product Backlog?

Ans: The Product Backlog is the single, ordered and continuously evolving list of all known requirements, features, enhancements and fixes for the product. It is owned and prioritised by the Product Owner, and it lives for the entire life of the product.

Q9Define Sprint Backlog.

Ans: The Sprint Backlog is the subset of Product Backlog items selected for the current Sprint together with the task-level plan for delivering them as an increment. It is owned by the Development Team (not the Product Owner) and exists only for the duration of that one Sprint.

Q10What is Software Requirement Specification (SRS)?

Ans: The Software Requirement Specification (SRS) is the formal document that completely states the functional and non-functional requirements agreed between customer and developer, and acts as the contract and the baseline for design, testing and validation. A good SRS is complete, consistent, unambiguous, verifiable, modifiable and traceable — it says what the system must do, whereas the Software Design Document (SDD) says how it will do it.

Q11Define Functional Requirement.

Ans: A Functional Requirement specifies what the system must do — a particular service, behaviour or input-to-output transformation that the system shall perform. Example: “The ATM shall dispense cash after successfully verifying the customer’s PIN.”

Q12Define Non-Functional Requirement.

Ans: A Non-Functional Requirement (NFR) specifies a quality attribute or constraint on how well the system performs its functions — performance, reliability, security, usability, portability, maintainability. It generally applies to the system as a whole rather than to one function, and must be stated in a measurable form, e.g. “response time shall be under 2 seconds for 95% of queries”.

Q13What is Requirement Elicitation?

Ans: Requirement Elicitation is the first activity of requirement engineering, in which requirements are discovered and gathered from stakeholders, existing systems and documents. Common techniques are interviews, questionnaires, brainstorming, FAST (Facilitated Application Specification Technique), observation, use-case workshops and prototyping.

Q14Define Use Case in UML.

Ans: A Use Case in UML is a description of a complete sequence of interactions between an actor and the system that yields an observable result of value to that actor. It is drawn as an ellipse in a use-case diagram and may be related to other use cases by «include», «extend» or generalisation.

Q15What is Data Flow Diagram (DFD)?

Ans: A Data Flow Diagram (DFD) is a structured-analysis tool that graphically depicts the flow and transformation of data through a system using four symbols: process (bubble), data flow (arrow), data store (open rectangle) and external entity (square). The Level 0 (context) diagram shows the entire system as a single process with its external entities and no data stores, while the Level 1 DFD explodes that single process into its major sub-processes and data stores.

Q16Define Cohesion in software design.

Ans: Cohesion is an intra-module measure of the degree to which the elements inside a single module belong together and contribute to one single, well-defined task. Its types run from worst to best as: coincidental, logical, temporal, procedural, communicational, sequential and functional cohesion (best).

Q17Define Coupling in software design.

Ans: Coupling is an inter-module measure of the degree of interdependence between two modules, i.e. the strength of the connection between them. Its types run from best (loosest) to worst as: data coupling (best), stamp, control, external, common and content coupling (worst).

Q18What is High Cohesion and Low Coupling?

Ans: High cohesion with low coupling is the fundamental goal of modular design: each module performs one well-defined function internally, while interacting with other modules as little as possible and only through simple, well-defined data interfaces. Such a design is easier to understand, test independently, reuse and maintain, because a change in one module produces little ripple effect on the others.

Q19Define Modularity.

Ans: Modularity is the decomposition of software into separately named and addressable components (modules) that can be designed, coded and tested independently and then integrated to satisfy the requirements. Pressman notes that the effort per module falls as the number of modules grows while the integration effort rises, so there is an optimum number of modules giving minimum total cost.

Q20What is Software Architecture?

Ans: Software Architecture is the overall structure of the system — the set of software components, their externally visible properties and the relationships and interactions among them. It represents the earliest and hardest-to-change design decisions; common architectural styles are layered, client–server, pipe-and-filter, repository (data-centred) and MVC.

Q21Define Cyclomatic Complexity.

Ans: Cyclomatic Complexity, proposed by McCabe, is a quantitative measure of the logical complexity of a program, defined as the number of linearly independent paths through its control flow graph. It gives the upper bound on the number of test cases needed for basis-path testing and the lower bound on the number of paths that must be executed for branch coverage; a module with \( V(G) > 10 \) is regarded as too complex and a candidate for redesign.

Q22What is McCabe's Cyclomatic Complexity formula?

Ans: For a control flow graph \( G \), McCabe’s formula is \( V(G) = E - N + 2P \), where \( E \) = number of edges, \( N \) = number of nodes and \( P \) = number of connected components (\( P = 1 \) for a single program, giving \( V(G) = E - N + 2 \)). Two equivalent forms are \( V(G) = D + 1 \), where \( D \) is the number of decision (predicate) nodes, and \( V(G) = R \), the total number of regions into which the planar flow graph divides the plane, i.e. the bounded regions plus the one outer unbounded region.

Q23Define White-Box Testing.

Ans: White-box testing (glass-box or structural testing) derives test cases from knowledge of the internal logic and source code of the module, so as to exercise statements, branches, conditions, independent paths and loops. Basis-path testing uses \( V(G) = E - N + 2 \) to fix the number of independent paths that must be tested, and it is normally performed by developers at the unit level.

Q24Define Black-Box Testing.

Ans: Black-box testing (functional or behavioural testing) derives test cases only from the specified input–output behaviour in the SRS, with no knowledge of the internal code structure. Its standard techniques are equivalence partitioning, boundary value analysis, decision tables, cause–effect graphing and state-transition testing.

Q25What is Unit Testing?

Ans: Unit Testing is the testing of the smallest testable component — a single module, function or class — in isolation from the rest of the system. It is predominantly white-box, is carried out by the developer, and uses stubs and drivers to stand in for the modules that the unit calls and is called by.

Q26What is Integration Testing?

Ans: Integration Testing tests the interfaces and interactions between modules that have already passed unit testing, so as to expose defects arising from their combination rather than from within a module. Its strategies are big-bang, top-down (needs stubs), bottom-up (needs drivers) and sandwich/hybrid integration.

Q27Define System Testing.

Ans: System Testing is black-box testing of the complete, fully integrated software in an environment resembling production, validating it against the SRS as a whole. It covers functional behaviour together with non-functional aspects — performance, load, stress, security, recovery and usability — and is normally carried out by an independent test team.

Q28What is Acceptance Testing?

Ans: Acceptance Testing is formal testing carried out by the customer or end user against pre-agreed acceptance criteria to decide whether the delivered system is acceptable. It follows system testing, is entirely black-box and driven by user requirements rather than the SRS alone, and takes the two forms alpha and beta testing.

Q29Define Alpha Testing.

Ans: Alpha Testing is acceptance testing performed by the customer or potential users at the developer’s site in a controlled environment, with the developer present and recording errors and usage problems as they occur. It always precedes beta testing.

Q30Define Beta Testing.

Ans: Beta Testing is a “live” test performed by real end users at their own sites in an uncontrolled environment, with the developer not present. The users report the problems they encounter at intervals, and the developer makes final modifications before general release.

Q31What is Equivalence Partitioning?

Ans: Equivalence Partitioning is a black-box technique that divides the input domain into classes (partitions) whose members the program is expected to treat identically, so that testing one representative value from each valid and invalid class is as effective as testing every member. It sharply reduces the number of test cases without losing functional coverage.

Q32What is Boundary Value Analysis (BVA)?

Ans: Boundary Value Analysis (BVA) is a black-box technique that complements equivalence partitioning by choosing test values at and just around the edges of each partition, since defects cluster at boundaries rather than in the middle of a range. For an input range \( [a,\,b] \) the test values are \( a-1,\ a,\ a+1,\ b-1,\ b,\ b+1 \).

Q33Define Regression Testing.

Ans: Regression Testing is the re-execution of a selected subset of previously passed test cases after a modification (bug fix, enhancement or environment change), to confirm that the change has not introduced new defects in the unchanged parts of the software. It differs from retesting, which re-runs only the specific failed test case to verify that one particular reported defect is now fixed.

Q34What is Smoke Testing?

Ans: Smoke Testing is a shallow-and-wide “build verification” test that exercises only the critical end-to-end functionality of a newly integrated build, in order to decide whether the build is stable enough to be accepted for detailed testing. If the smoke test fails the build is rejected outright and returned to development.

Q35What is Sanity Testing?

Ans: Sanity Testing is a narrow-and-deep, usually unscripted check made on a relatively stable build to verify that a particular bug fix or newly added function works and that the surrounding area behaves rationally, before committing to full regression testing. It is thus a subset of regression testing, whereas smoke testing is a check on the acceptability of the build itself.

Q36Define Stub and Driver in integration testing.

Ans: A Stub is a dummy called (lower-level) module that simulates a subordinate module by returning a canned result, and is required in top-down integration testing. A Driver is a dummy calling (higher-level) module that invokes the module under test with test inputs and displays the results, and is required in bottom-up integration testing.

Q37What is COCOMO Model?

Ans: COCOMO (Constructive Cost Model), developed by Barry Boehm, is an algorithmic cost-estimation model that predicts effort and schedule from the estimated size of the product in KLOC (thousands of delivered lines of code). Basic COCOMO gives effort \( E = a\,(KLOC)^{b} \) person-months and development time \( D = c\,(E)^{d} \) months, so average staff size \( = E/D \) persons. The coefficients depend on the project mode, chosen by team and product size and by the rigidity of the constraints:

  • Organic — small (< 50 KLOC), familiar in-house project, small experienced team, flexible requirements: \( a = 2.4,\ b = 1.05,\ c = 2.5,\ d = 0.38 \).
  • Semi-detached — medium (50–300 KLOC), mixed-experience team, medium constraints: \( a = 3.0,\ b = 1.12,\ c = 2.5,\ d = 0.35 \).
  • Embedded — large (> 300 KLOC), tight hardware, software and regulatory constraints (e.g. real-time/avionics): \( a = 3.6,\ b = 1.20,\ c = 2.5,\ d = 0.32 \).
Q38Define Function Point (FP) analysis.

Ans: Function Point (FP) analysis is Albrecht’s size metric that measures the functionality delivered to the user independently of the programming language, by counting five function types — External Inputs, External Outputs, External Inquiries, Internal Logical Files and External Interface Files — each weighted as simple, average or complex to give the Unadjusted Function Points. The final size is \( FP = UFP \times VAF \), where \( VAF = 0.65 + 0.01 \sum_{i=1}^{14} F_i \) and each of the 14 general system characteristics \( F_i \) is rated from 0 to 5.

Q39What is Software Reliability?

Ans: Software Reliability is the probability of failure-free operation of a program in a specified environment for a specified period of time. For a constant failure rate \( \lambda \) it is given by \( R(t) = e^{-\lambda t} \), and in practice it is measured through MTBF, failure intensity or defect density \( = \dfrac{\text{Number of defects}}{\text{Size (KLOC or FP)}} \).

Q40Define Mean Time Between Failures (MTBF).

Ans: Mean Time Between Failures (MTBF) is the average time elapsing between two consecutive failures of a repairable system, and therefore includes both the operating time and the repair time: \( MTBF = MTTF + MTTR \). System availability follows as \( \text{Availability} = \dfrac{MTTF}{MTTF + MTTR} \times 100\% \).

Q41Define Mean Time To Failure (MTTF).

Ans: Mean Time To Failure (MTTF) is the average time for which the system operates correctly, from the instant it is started or restored until the next failure occurs — i.e. the pure up-time component of MTBF. It excludes repair time and is the measure normally used for non-repairable items.

Q42Define Mean Time To Repair (MTTR).

Ans: Mean Time To Repair (MTTR) is the average time taken to detect, diagnose and correct a failure and restore the system to service — i.e. the down-time component of \( MTBF = MTTF + MTTR \). It is a measure of maintainability rather than of reliability.

Q43What is Software Quality Assurance (SQA)?

Ans: Software Quality Assurance (SQA) is the umbrella set of planned and systematic activities — standards and procedures, reviews and inspections, audits, process definition, measurement and reporting — that give management confidence that the product will conform to its requirements. SQA is process-oriented and preventive, whereas quality control (testing) is product-oriented and detective.

Q44Define CMMI.

Ans: CMMI (Capability Maturity Model Integration) is the SEI’s process-improvement framework that assesses and rates the maturity of an organisation’s software processes. Its five staged maturity levels are 1 Initial, 2 Managed (Repeatable), 3 Defined, 4 Quantitatively Managed and 5 Optimising.

Q45What is Software Maintenance?

Ans: Software Maintenance is the modification of a software product after delivery to correct faults, to adapt it to a changed environment, or to improve its performance and other attributes (IEEE 1219). It consumes roughly 60–70% of the total life-cycle cost and is classified as corrective, adaptive, perfective and preventive maintenance.

Q46Define Corrective Maintenance.

Ans: Corrective Maintenance is the reactive modification carried out to diagnose and remove residual faults (errors) discovered in the software after delivery. It restores the software to its specified behaviour and accounts for roughly 20% of total maintenance effort.

Q47Define Adaptive Maintenance.

Ans: Adaptive Maintenance is the modification carried out to keep a working software product usable in a changed or changing environment — a new operating system, hardware platform, DBMS or compiler, or a change in statutory and regulatory rules. It neither fixes reported bugs nor adds user-requested features.

Q48Define Perfective Maintenance.

Ans: Perfective Maintenance is the modification carried out to add new functionality requested by the user, or to improve the performance, usability or maintainability of software that is already working correctly. It is the largest category, absorbing about 50% of the total maintenance effort.

Q49Define Preventive Maintenance.

Ans: Preventive Maintenance is the proactive modification carried out to detect and correct latent faults before they manifest as failures, and to make the software easier to maintain in future — for example re-documentation, code restructuring, refactoring and optimisation. It is not a response to any reported problem.

Q50What is Software Re-engineering?

Ans: Software Re-engineering is the examination and alteration of an existing legacy system so as to reconstitute it in a new, more maintainable form without changing its external functionality. It typically proceeds as inventory analysis → reverse engineering → restructuring and re-documentation → forward engineering.

Q51Define Reverse Engineering.

Ans: Reverse Engineering is the process of analysing an existing program or executable in order to recover its design, data structures and specification at a higher level of abstraction — that is, a design-recovery process. It only extracts information and produces documentation and does not alter the subject system, unlike re-engineering.

Q52What is CASE Tool?

Ans: A CASE (Computer-Aided Software Engineering) Tool is automated software that supports one or more software-engineering activities. Upper CASE tools support planning, analysis and design (diagram editors, data dictionaries), lower CASE tools support coding, testing and maintenance (code generators, debuggers, test harnesses), and I-CASE integrates both across the whole life cycle.