BE Computer Engineering (IOE, TU) Software Engineering (IOE, CT 601 / ENCT 352) Question Paper 2078 Nepal
This is the official BE Computer Engineering (IOE, TU) Software Engineering (IOE, CT 601 / ENCT 352) question paper for 2078, as set in the regular annual examination. It carries 80 full marks and a time allowance of 180 minutes, across 12 questions. On Kekkei you can attempt this Software Engineering (IOE, CT 601 / ENCT 352) past paper online with a timer, get instant AI feedback and step-by-step solutions, and track the topics where you lose marks — completely free. Whether you are revising for your BE Computer Engineering (IOE, TU) Software Engineering (IOE, CT 601 / ENCT 352) exam or solving previous years' question papers, this 2078 paper is a great way to practise under real exam conditions.
Section A: Long Answer Questions
Attempt all / any as specified.
(a) Compare and contrast the Waterfall model and the Spiral model of software development, clearly stating the conditions under which each is most suitable. (6)
(b) Suppose you are assigned to develop a web-based examination portal for a university where the requirements are likely to change frequently and the client wants working software delivered in increments. Recommend a suitable process model and justify your choice with reference to its phases. (6)
(a) Waterfall vs. Spiral Model (6)
| Aspect | Waterfall Model | Spiral Model |
|---|---|---|
| Nature | Linear, sequential | Iterative, cyclic with spirals |
| Phases | Requirements -> Design -> Implementation -> Testing -> Deployment -> Maintenance, each completed before the next | Each loop repeats four quadrants: determine objectives, risk analysis, develop & test, plan next iteration |
| Risk handling | No explicit risk analysis; risks surface late | Explicit risk analysis in every cycle; risk-driven |
| Requirements | Must be frozen and well understood up front | Can evolve over successive iterations |
| Customer involvement | Mainly at start and end | Continuous, at every prototype/iteration |
| Cost of change | Very high once a phase is signed off | Lower; changes absorbed in the next spiral |
| Documentation | Heavy, formal | Moderate, supported by prototypes |
Most suitable conditions:
- Waterfall is best when requirements are clear, stable and well understood, the technology is familiar, the project is small to medium and short, and where strong documentation/traceability is mandated (e.g. defence or regulatory projects).
- Spiral is best for large, complex, high-risk projects where requirements are uncertain or evolving, where new technology is involved, and where the budget allows repeated risk analysis and prototyping.
(b) Recommended Model for the Examination Portal (6)
Because the requirements are likely to change frequently and the client wants working software delivered in increments, the Incremental / Agile (iterative) model (e.g. Scrum) is recommended rather than the rigid Waterfall.
Justification with reference to its phases:
- Requirement gathering (per increment): Only the requirements for the current increment are detailed, so frequent changes are accommodated without re-doing the whole specification.
- Design & build: A small, working slice of functionality (e.g. student registration, then online exam, then result publishing) is designed and coded in each iteration.
- Testing & integration: Each increment is tested and integrated with previously delivered increments, producing a shippable working product early.
- Delivery & feedback: The client uses each increment and provides feedback, which feeds the requirements of the next iteration — directly satisfying the demand for incremental delivery.
- Iteration: The cycle repeats until all features are delivered.
This model gives early and continuous delivery of working software, easy accommodation of changing requirements, and continuous client involvement, exactly matching the portal's needs. (The Spiral model would also handle changing requirements but is heavier and risk-focused; for incremental working-software delivery, Incremental/Agile is the better fit.)
For a Library Management System that allows members to search, issue, and return books and lets a librarian manage the catalogue:
(a) Draw a context-level (Level-0) Data Flow Diagram and explain its components. (5)
(b) Identify the main entities and draw an Entity-Relationship (ER) diagram showing relationships and cardinalities. (5)
(c) Differentiate between functional and non-functional requirements with two examples each from this system. (2)
(a) Context-Level (Level-0) DFD (5)
A context diagram models the whole Library Management System (LMS) as a single process and shows the external entities (terminators) and the major data flows between them.
Description of the diagram (drawn as one bubble in the centre):
search request / book details
Member -----------------------------> +-------------------------+
<----------------------------- | |
search results / due info | 0. |
| Library Management |
issue/return request | System |
Member -----------------------------> | |
<----------------------------- | |
confirmation +-------------------------+
^ |
Librarian catalogue updates / queries | | reports / catalogue data
--------------------------------->-+ v
<---------------------------------- (to Librarian)
Components:
- Process (circle/bubble, numbered 0): the entire LMS, the single transformation in a context diagram.
- External entities (rectangles): Member and Librarian — sources/sinks of data outside the system boundary.
- Data flows (arrows): labelled movements of data, e.g. search request, search results, issue/return request, confirmation, catalogue update, reports.
- There are no data stores shown at Level 0; they appear only when the process is decomposed to Level 1.
(b) Entity-Relationship Diagram (5)
Main entities and attributes:
- Member (MemberID, Name, Address, Phone)
- Book (BookID/ISBN, Title, Author, Subject, Copies)
- Librarian (StaffID, Name)
- Loan/Issue (associative entity: IssueID, IssueDate, DueDate, ReturnDate)
Relationships and cardinalities:
[Member] ===<Borrows>=== [Book] (M:N, resolved via Loan)
1 M
| |
+----< Loan >--------------+ Member 1 -- M Loan ; Book 1 -- M Loan
[Librarian] ==<Manages>== [Book] (1:N : one librarian manages many catalogue entries)
- Member — Loan: one member can have many loans -> 1:N.
- Book — Loan: one book (title) can appear in many loans -> 1:N.
- (Hence Member — Book is conceptually M:N, resolved by the Loan associative entity.)
- Librarian — Book: one librarian manages many catalogue entries -> 1:N.
Entities are drawn as rectangles, relationships as diamonds, attributes as ellipses, with cardinality markings (1, M, N) on the connecting lines.
(c) Functional vs. Non-Functional Requirements (2)
- Functional requirements describe what the system must do (services/behaviour). Examples: the system shall allow a member to search a book by title/author; the system shall let a member issue and return a book.
- Non-functional requirements describe how well / under what constraints the system operates (quality attributes). Examples: a search shall return results within 2 seconds; the system shall be available 24x7 and support at least 100 concurrent users securely.
(a) Explain the three modes of the Basic COCOMO model (Organic, Semi-detached, and Embedded) and state the type of project each represents. (4)
(b) A software project is estimated to have 33.3 KLOC and is of the Semi-detached type. Using the Intermediate/Basic COCOMO coefficients (a = 3.0, b = 1.12 for effort; c = 2.5, d = 0.35 for development time), compute the estimated effort in person-months, the development time in months, and the average staffing required. Show all steps. (6)
(c) State two limitations of the COCOMO estimation technique. (2)
(a) Three Modes of Basic COCOMO (4)
The Basic COCOMO model classifies projects into three modes based on size, team experience and constraints:
| Mode | Project type | Coefficients (a, b) |
|---|---|---|
| Organic | Small, simple projects; small experienced team working in a familiar, stable environment (e.g. a small payroll system). | a = 2.4, b = 1.05 |
| Semi-detached | Medium-sized projects of intermediate complexity; team with mixed experience; some requirement uncertainty (e.g. a database/transaction-processing system). | a = 3.0, b = 1.12 |
| Embedded | Large, complex projects with tight hardware, software and operational constraints (e.g. real-time/air-traffic or embedded control systems). | a = 3.6, b = 1.20 |
(b) Estimation for 33.3 KLOC, Semi-detached (6)
Given: , .
Step 1 — Effort:
Step 2 — Development time:
Step 3 — Average staffing:
Results: Effort PM, Development time months, Average staff people.
(c) Two Limitations of COCOMO (2)
- It depends on an accurate estimate of KLOC (lines of code), which is very hard to predict reliably at the start of a project.
- It ignores many real factors (e.g. requirement volatility, customer skill, hardware constraints in the basic version) and is calibrated on historical project data that may not match a new project, so estimates can be inaccurate.
(a) What is software architecture? Explain any three architectural styles (e.g. layered, client-server, repository, pipe-and-filter) with a suitable diagram for each. (7)
(b) Differentiate between black-box testing and white-box testing. Explain how integration testing differs from unit testing and system testing. (5)
(a) Software Architecture and Architectural Styles (7)
Software architecture is the high-level structure of a software system — the set of its principal components/modules, their externally visible properties, and the relationships (connectors) and constraints among them. It defines how the system is organised and provides a blueprint that satisfies functional and quality (non-functional) requirements.
Three architectural styles:
1. Layered (n-tier) architecture Components are organised into horizontal layers; each layer provides services to the layer above and uses the layer below.
+-----------------------------+
| Presentation / UI layer |
+-----------------------------+
| Application / Business layer |
+-----------------------------+
| Data-access layer |
+-----------------------------+
| Database |
+-----------------------------+
Eases maintenance and portability; a change in one layer affects only the adjacent interface.
2. Client–Server architecture A central server provides services/resources to multiple clients that send requests over a network.
[Client 1] \
[Client 2] ---requests---> [ Server ] ---> [Database]
[Client 3] / <--responses--
Supports centralised data and many distributed users (e.g. web applications).
3. Pipe-and-Filter architecture Data flows through a series of processing components (filters) connected by pipes; each filter transforms its input stream and passes it on.
[Source] -->(pipe)--> [Filter A] -->(pipe)--> [Filter B] -->(pipe)--> [Sink]
Each filter is independent and reusable (e.g. a Unix command pipeline or a compiler's lexer->parser->codegen).
(Repository style — components share a central data store/blackboard — is an acceptable alternative.)
(b) Black-box vs. White-box Testing & Test Levels (5)
| Black-box testing | White-box testing |
|---|---|
| Tests functionality against the specification, without knowledge of internal code. | Tests the internal logic / structure of the code. |
| Based on inputs/outputs; e.g. equivalence partitioning, boundary value analysis. | Based on code paths; e.g. statement, branch and path coverage. |
| Done by testers/users. | Usually done by developers. |
| Cannot detect unexercised internal logic errors directly. | Can miss missing-functionality (spec) errors. |
Levels of testing:
- Unit testing tests the smallest individual components (a single module/function/class) in isolation, usually by the developer, often with stubs/drivers.
- Integration testing tests the interfaces and interactions between combined units/modules to find errors in how they work together (e.g. top-down, bottom-up, or sandwich integration). It sits between unit and system testing.
- System testing tests the complete, integrated system as a whole against the overall functional and non-functional requirements in a production-like environment.
In short: unit -> verifies a part; integration -> verifies parts working together; system -> verifies the whole product.
Section B: Short Answer Questions
Attempt all / any as specified.
Explain the requirement engineering process. Why is requirement validation important, and what techniques are used to validate requirements?
Requirement Engineering Process
Requirement engineering is the systematic process of discovering, documenting and maintaining the requirements for a system. Its main activities are:
- Feasibility study — assess whether the system is technically, operationally and economically viable.
- Requirement elicitation & analysis — gather requirements from stakeholders (interviews, questionnaires, observation, use cases) and analyse them for conflicts and priorities.
- Requirement specification — document the agreed requirements formally in a Software Requirements Specification (SRS), separating functional and non-functional requirements.
- Requirement validation — check that the documented requirements are correct, complete and consistent.
- Requirement management — control changes to requirements throughout the project (traceability).
Importance of Requirement Validation
Validation is important because errors in requirements are the most expensive to fix if they reach later phases (design, coding or after release). Validation ensures the SRS is correct, complete, consistent, unambiguous, feasible and verifiable, so the team builds the right product and avoids costly rework.
Validation Techniques
- Requirement reviews / inspections — a team systematically reads the SRS to find errors and omissions.
- Prototyping — build an executable model and let users confirm requirements.
- Test-case generation — derive tests from each requirement; if a test cannot be written, the requirement is poorly stated.
- Requirement checklists / consistency checking — verify against a checklist of quality criteria (completeness, consistency, ambiguity).
Define coupling and cohesion. Explain different types of coupling and cohesion, and state how they relate to a good modular design.
Coupling and Cohesion
- Coupling is the degree of interdependence between modules — how strongly one module relies on others. Low (loose) coupling is desirable.
- Cohesion is the degree to which the elements inside a single module belong together and serve one well-defined purpose. High cohesion is desirable.
Types of Coupling (worst -> best)
- Content coupling — one module directly modifies or relies on the internals of another (worst).
- Common coupling — modules share global data.
- Control coupling — one module controls another's behaviour by passing a control flag.
- Stamp coupling — a whole data structure is passed when only part is needed.
- Data coupling — modules communicate only through simple parameters (best/loosest).
Types of Cohesion (worst -> best)
- Coincidental — elements grouped arbitrarily (worst).
- Logical — elements do similar kinds of work, selected by a flag.
- Temporal — elements executed at the same time (e.g. initialisation).
- Procedural — elements follow a sequence of execution.
- Communicational — elements operate on the same data.
- Sequential — output of one element is input to the next.
- Functional — all elements contribute to a single well-defined task (best).
Relation to Good Modular Design
A good modular design aims for high cohesion and low coupling. High cohesion makes each module simple, focused and reusable; low coupling makes modules independent, so changes in one module have minimal ripple effects on others. Together they improve maintainability, testability, reusability and understandability.
What is a test case? Design test cases using the boundary value analysis and equivalence partitioning techniques for a module that accepts an integer marks value in the range 0 to 100.
Test Case
A test case is a documented set of inputs, execution conditions and expected results designed to verify a specific requirement or feature of the software. It typically includes a test-case ID, input data, preconditions, the expected output and the actual result.
Test Design for marks in range 0–100
Valid range: 0 to 100 (inclusive). Anything below 0 or above 100 is invalid.
Equivalence Partitioning (EP)
Divide inputs into classes; one representative test per class.
| Class | Range | Sample input | Expected |
|---|---|---|---|
| Invalid (low) | < 0 | -10 | Rejected |
| Valid | 0–100 | 55 | Accepted |
| Invalid (high) | > 100 | 150 | Rejected |
Boundary Value Analysis (BVA)
Test at and just around the boundaries (min−1, min, min+1, max−1, max, max+1).
| Boundary | Input | Expected |
|---|---|---|
| Just below min | -1 | Rejected |
| Minimum | 0 | Accepted |
| Just above min | 1 | Accepted |
| Just below max | 99 | Accepted |
| Maximum | 100 | Accepted |
| Just above max | 101 | Rejected |
BVA is effective because most defects cluster at the edges of input ranges, while EP reduces the total number of tests by treating each class as equivalent.
What is software configuration management (SCM)? Explain version control and change control with the role of a baseline in SCM.
Software Configuration Management (SCM)
SCM is the discipline of identifying, organising and controlling changes to the artefacts (code, documents, designs, test data) produced during the software lifecycle, so that the integrity and traceability of the product are maintained throughout development and maintenance. Its key activities are configuration identification, version control, change control, configuration auditing and status reporting.
Version Control
Version control manages multiple versions/revisions of configuration items. It records every change, allows several developers to work concurrently (branching and merging), lets you retrieve any previous version, and prevents one developer's changes from overwriting another's (using tools such as Git, SVN, CVS).
Change Control
Change control is the formal procedure for handling change requests to baselined items. A typical flow is: submit change request -> evaluate impact -> approval/rejection by a Change Control Board (CCB) -> implement -> test -> update baseline and records. This ensures changes are made in a controlled, traceable manner.
Role of a Baseline
A baseline is a formally reviewed and agreed-upon configuration item (or set of items) that thereafter serves as the basis for further development and can be changed only through formal change control. Baselines (e.g. requirement baseline, design baseline) provide stable reference points, control the ripple effect of changes, and enable measurement of progress.
(a) Differentiate between verification and validation. (3)
(b) Explain the four types of software maintenance (corrective, adaptive, perfective, and preventive) with one example each. (3)
(a) Verification vs. Validation (3)
| Verification | Validation |
|---|---|
| "Are we building the product right?" | "Are we building the right product?" |
| Checks conformance to specifications/standards at each phase. | Checks that the final product meets the user's actual needs. |
| Static activity (reviews, inspections, walkthroughs) — no code execution needed. | Dynamic activity — usually involves executing/testing the software. |
| Done during development of each phase. | Done mainly at the end, on the complete product. |
(b) Four Types of Software Maintenance (3)
- Corrective maintenance — fixing detected faults/bugs. Example: correcting a wrong total in a payroll report.
- Adaptive maintenance — modifying software to keep it usable in a changed environment. Example: updating an app to run on a new OS version or a changed tax rate/regulation.
- Perfective maintenance — enhancing functionality or performance based on user requests. Example: adding a new search filter or speeding up a slow query.
- Preventive maintenance — changes made to prevent future problems and improve maintainability. Example: refactoring code and updating documentation to reduce future defects.
Explain risk management in software projects. Describe the activities of risk identification, risk projection, and risk mitigation, monitoring and management (RMMM).
Risk Management in Software Projects
A risk is a potential future event that, if it occurs, can adversely affect the project's cost, schedule or quality. Risk management is the proactive process of identifying, analysing and controlling risks before they become real problems, so their probability and impact are reduced.
(1) Risk Identification
Systematically discovering possible risks. Common categories include project risks (budget, schedule, staffing), technical risks (design, implementation, technology), and business risks (market, product viability). Techniques: checklists, brainstorming, reviewing past projects.
(2) Risk Projection (Estimation)
Assessing each identified risk by estimating:
- its probability/likelihood of occurring, and
- its impact/severity if it occurs.
Risks are then prioritised (e.g. using a risk table and an exposure value ) so the most significant risks get attention first.
(3) RMMM — Risk Mitigation, Monitoring and Management
- Mitigation: plan actions to reduce the probability or impact of a risk before it occurs (e.g. cross-train staff to reduce the impact of a key person leaving).
- Monitoring: continuously track risk indicators during the project to detect whether a risk is becoming more likely.
- Management: if a risk does materialise, execute the prepared contingency plan to limit damage.
The RMMM plan documents all these and is reviewed throughout the project.
What is the Capability Maturity Model (CMM)? Briefly describe its five maturity levels.
Capability Maturity Model (CMM)
The CMM, developed by the SEI (Software Engineering Institute), is a framework that describes the maturity of an organisation's software process. It defines five evolutionary levels, each building on the previous one, that an organisation can climb to improve process capability and predictability.
The Five Maturity Levels
- Level 1 — Initial: Process is ad hoc, chaotic and unpredictable; success depends on individual heroics. Few processes are defined.
- Level 2 — Repeatable (Managed): Basic project-management processes are established (planning, tracking, configuration management); earlier successes can be repeated on similar projects.
- Level 3 — Defined: The software process is documented, standardised and integrated into an organisation-wide standard process; all projects use a tailored version of it.
- Level 4 — Managed (Quantitatively Managed): The process and product quality are measured quantitatively and controlled using metrics; performance is predictable.
- Level 5 — Optimizing: Focus on continuous process improvement through quantitative feedback, innovation and defect prevention.
Write short notes on any TWO of the following:
(a) Software quality attributes (ISO 9126) (b) Formal technical reviews (c) Reverse engineering and re-engineering
(Answering any two as required.)
(a) Software Quality Attributes (ISO 9126)
ISO 9126 is an international standard that defines a model for software product quality through six main characteristics:
- Functionality — does it provide the required functions (suitability, accuracy, security, interoperability)?
- Reliability — maturity, fault tolerance, recoverability.
- Usability — understandability, learnability, operability.
- Efficiency — time behaviour and resource utilisation.
- Maintainability — analysability, changeability, testability, stability.
- Portability — adaptability, installability, replaceability across environments.
Each characteristic is broken into measurable sub-characteristics used to assess product quality.
(b) Formal Technical Reviews (FTR)
A Formal Technical Review is a planned, structured quality-assurance activity in which a small team of technical staff examines a work product (requirements, design or code) to find errors early, before they propagate to later phases. Characteristics: 3–5 participants, advance preparation, a meeting of 1–2 hours, defined roles (author, reviewer, recorder, moderator), and a review report listing issues. Walkthroughs and inspections are common forms. Benefits: early defect detection, knowledge sharing and improved quality at low cost.
(c) Reverse Engineering and Re-engineering
- Reverse engineering is the process of analysing existing software to recover its design, structure and specifications (extracting higher-level abstractions from code), typically when documentation is missing. It is an examination, not modification process.
- Re-engineering is restructuring or rewriting existing (legacy) software to improve its quality, maintainability or to migrate it to new technology, without changing its essential functionality. It usually involves reverse engineering to understand the system, then forward engineering to rebuild it.
Frequently asked questions
- Where can I find the BE Computer Engineering (IOE, TU) Software Engineering (IOE, CT 601 / ENCT 352) question paper 2078?
- The full BE Computer Engineering (IOE, TU) Software Engineering (IOE, CT 601 / ENCT 352) 2078 (regular) question paper is available free on Kekkei. You can read every question online and attempt the paper under timed exam conditions.
- Does the Software Engineering (IOE, CT 601 / ENCT 352) 2078 paper come with solutions?
- Yes. Every question on this Software Engineering (IOE, CT 601 / ENCT 352) past paper includes a step-by-step solution, plus instant AI feedback when you attempt it on Kekkei.
- How many marks is the BE Computer Engineering (IOE, TU) Software Engineering (IOE, CT 601 / ENCT 352) 2078 paper?
- The BE Computer Engineering (IOE, TU) Software Engineering (IOE, CT 601 / ENCT 352) 2078 paper carries 80 full marks and is meant to be completed in 180 minutes, across 12 questions.
- Is practising this Software Engineering (IOE, CT 601 / ENCT 352) past paper free?
- Yes — reading and attempting this Software Engineering (IOE, CT 601 / ENCT 352) past paper on Kekkei is completely free.