Important Questions

BIT302 · Exam intelligence

Software Engineering important questions

From 5 past TU papers: which questions keep coming back, how much they carry, and what is most likely to show up next. Every question links to a model answer.

Most likely in the next examStatistical

Ranked by how often a topic is asked, its marks weight, and whether it is due after skipping the 2082 paper. No guarantees; study the whole syllabus.

1asked 2xavg 8 marks · due (skipped 2082) · Requirements engineering process
Answer

Briefly explain requirement engineering process. [5]

Definition: Requirement Engineering (RE) is a systematic process of defining, documenting, and maintaining the requirements for a software system. It acts as a bridge between the customer's needs and the software development team. --- - ...

2asked 2xavg 5 marks · due (skipped 2082) · Requirements elicitation techniques
Answer

Explain different requirements elicitation techniques. [5]

Note: No specific reference notes were found for this topic. The following answer is based on standard Software Engineering curriculum as taught in BSc CSIT programs. --- Requirements elicitation is the process of gathering, discovering,...

3asked 2xavg 5 marks · due (skipped 2082) · Black box testing
Answer

Differentiate between black box testing and white box testing. [5]

Black box testing is a software testing technique in which the internal structure, design, or implementation of the system is not known to the tester. The tester only focuses on the inputs and outputs of the system without any knowledge ...

4asked 2xavg 5 marks · due (skipped 2082) · Agile software development
Answer

Write short notes on: a. Agile software development b. Context model [5]

Short Notes

a. Agile Software Development

Agile software development is an iterative and incremental approach to software development that focuses on delivering working software quickly, responding to change, and close collaboration between developers and customers.

Key Principles (Agile Manifesto):

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Characteristics:

  • Development is done in short cycles called sprints or iterations (typically 2-4 weeks)
  • Requirements are allowed to evolve throughout the project
  • Continuous feedback from the customer is incorporated
  • Self-organizing, cross-functional teams work together
  • Regular reflection and adaptation of processes
  • Scrum - uses sprints, daily stand-ups, sprint reviews
  • Extreme Programming (XP) - focuses on coding practices
  • Kanban - visual workflow management

Advantages:

  • Faster delivery of working software
  • Better adaptability to changing requirements
  • Higher customer satisfaction

b. Context Model

A context model is used to illustrate the operational context of a system - it shows what lies outside the system boundaries (the environment in which the system operates) and defines what is included in and excluded from the system.

Purpose:

  • To define the system boundary
  • To identify external entities (other systems, people, organizations) that interact with the system
  • To show the relationships and interactions between the system and its environment

Key Features:

  • It does not show the nature of the relationships in detail
  • It helps stakeholders understand the scope of the system
  • External entities are shown as boxes or actors outside the system boundary

Example Representation:

[Payroll System] <---> [Employee Database]
[Payroll System] <---> [Bank System]
[Payroll System] <---> [HR Manager]

Types of Models Used:

  • Activity diagrams can supplement context models to show how the system is used in business processes
  • UML use case diagrams can also represent context

Importance:

  • Helps avoid scope creep by clearly defining boundaries
  • Assists in identifying all external dependencies
  • Provides a foundation for further detailed modeling
5asked 2xavg 5 marks · due (skipped 2082) · Version management and version control
Answer

What is version management? How is it carried Out? [5]

Version Management

Definition

Version management (also called version control or revision control) is the process of tracking and controlling changes made to software source code, documents, and other files over time. It allows multiple versions of a software system to be stored and retrieved, enabling developers to manage the evolution of software components systematically.


Key Concepts in Version Management

  • Version/Revision: A distinct state of a software component at a particular point in time.
  • Baseline: A tested, approved version that serves as the basis for further development.
  • Repository: A central storage location where all versions of files are maintained.
  • Check-in / Check-out: The process of submitting changes to or retrieving files from the repository.

How Version Management is Carried Out

1. Version Identification

Each version of a component is assigned a unique identifier (e.g., v1.0, v1.1, v2.0). Versions may be identified by:

  • Sequential numbering
  • Date/time stamps
  • Attribute-based identification (author, date, purpose)

2. Storage and Repository Management

All versions are stored in a version control repository (e.g., Git, SVN, CVS). The repository maintains:

  • Complete history of all changes
  • Who made the change and when
  • Why the change was made (commit messages)

3. Check-out and Check-in Mechanism

  • A developer checks out a file to work on it (may lock it to prevent conflicts).
  • After modification, the developer checks in the updated file, creating a new version.

4. Branching and Merging

  • Branching: Creating a separate line of development (e.g., for a new feature or bug fix) without affecting the main codebase.
  • Merging: Combining changes from different branches back into the main branch.
Main:    v1.0 -----> v1.1 -----> v2.0
                \               /
Branch:          --> fix-branch

5. Change Logging

Every version change is recorded with:

  • Description of changes made
  • Author name
  • Date and time
  • Version number

6. Conflict Resolution

When two developers modify the same file, the version management system detects conflicts and assists in resolving them before merging.


Benefits of Version Management

BenefitDescription
History trackingFull record of all changes over time
RollbackAbility to revert to a previous stable version
CollaborationMultiple developers can work simultaneously
BackupRepository acts as a secure backup
TraceabilityChanges can be linked to requirements or bug reports

Common Version Management Tools

  • Git (most widely used, distributed)
  • SVN (Subversion) (centralized)
  • CVS (Concurrent Versions System)
  • Mercurial

Note: Version management is a core part of Software Configuration Management (SCM), which also includes build management, change management, and release management.

Most repeated questions

Topics asked at least twice, most-asked first.

asked 3xavg 7 marks · 2082, 2081, 2079
Answer

Explain the test driven development. List its advantages and disadvantages.[10]

Test Driven Development (TDD)

Note: No specific reference notes were found for this topic. The following answer is based on standard Software Engineering curriculum content appropriate for BSc CSIT, Tribhuvan University.


Definition

Test Driven Development (TDD) is a software development approach in which test cases are written before the actual code is written. The developer first writes a failing test, then writes the minimum amount of code to pass that test, and finally refactors the code. This cycle is repeated throughout the development process.

TDD follows the principle: "Write tests first, then write code to satisfy those tests."


The TDD Cycle (Red-Green-Refactor)

The core process of TDD follows three repeating steps:

1. RED    --> Write a test that FAILS (feature not yet implemented)
2. GREEN  --> Write just enough code to PASS the test
3. REFACTOR --> Clean up the code without breaking the test

This cycle is also known as the "Red-Green-Refactor" cycle.


Steps in TDD Process

  1. Add a Test

    • Before writing any functional code, write a test case for the new feature or function.
    • The test will fail initially because the feature does not exist yet.
  2. Run All Tests

    • Run the test suite to confirm the new test fails (Red phase).
    • This verifies the test is valid and the feature is truly missing.
  3. Write the Code

    • Write the minimum amount of code necessary to make the failing test pass.
    • Do not write extra or unnecessary code at this stage.
  4. Run Tests Again

    • Run all tests to confirm the new test now passes (Green phase).
    • Ensure no existing tests are broken.
  5. Refactor the Code

    • Clean up the code: remove duplication, improve readability, optimize structure.
    • Run tests again to ensure refactoring did not break anything.
  6. Repeat

    • Repeat the cycle for the next feature or requirement.

Diagram of TDD Cycle

        +------------------+
        |  Write a Test    |  <--- (Test Fails - RED)
        +--------+---------+
                 |
                 v
        +------------------+
        |  Write Code to   |  <--- (Test Passes - GREEN)
        |  Pass the Test   |
        +--------+---------+
                 |
                 v
        +------------------+
        |  Refactor Code   |  <--- (Clean Code - REFACTOR)
        +--------+---------+
                 |
                 v
           (Repeat Cycle)

Advantages of TDD

#AdvantageDescription
1Early Bug DetectionBugs are identified at an early stage since tests are written before code.
2Better Code QualityForces developers to write clean, modular, and well-structured code.
3Simplified DebuggingWhen a test fails, only the recently written code needs to be checked.
4Living DocumentationTest cases serve as documentation that describes how the system should behave.
5Confidence in RefactoringDevelopers can refactor code confidently knowing tests will catch any regression.
6Reduced Cost of ChangesDefects found early are cheaper to fix than those found after deployment.
7Better DesignEncourages loosely coupled and highly cohesive design since code must be testable.
8Faster FeedbackDevelopers get immediate feedback on whether their code works correctly.
9Regression TestingThe test suite automatically checks that new changes do not break existing functionality.
10Increased Developer ConfidenceDevelopers feel more confident releasing software when all tests pass.

Disadvantages of TDD

#DisadvantageDescription
1Slow Initial DevelopmentWriting tests before code takes extra time initially, slowing down the development speed.
2Difficult for BeginnersRequires a shift in mindset; new developers may find it hard to write tests before code.
3Maintenance OverheadAs the codebase grows, maintaining a large number of test cases becomes complex and time-consuming.
4Not Suitable for All ProjectsTDD may not be practical for small, short-lived projects or rapid prototyping.
5False Sense of SecurityPassing all tests does not guarantee the software is completely bug-free or meets user needs.
6Poorly Written TestsIf test cases are poorly designed, they may not effectively catch real bugs.
7UI Testing is DifficultTDD is less effective for testing graphical user interfaces (GUIs) and visual components.
8Requires DisciplineTDD requires strict discipline and commitment from the entire development team.
9Integration IssuesUnit tests in TDD may pass individually but integration problems may still exist.
10Legacy Code ChallengesApplying TDD to existing legacy codebases is very difficult and often impractical.

Summary

AspectDetail
Full FormTest Driven Development
Core IdeaWrite tests before writing code
CycleRed --> Green --> Refactor
GoalProduce clean, working, and well-tested software
Best Suited ForAgile and iterative development environments

Conclusion: TDD is a powerful development methodology that improves code quality, reduces bugs, and increases developer confidence. However, it requires discipline, proper training, and is most effective when applied consistently throughout the development lifecycle.

asked 3xavg 5 marks · 2082, 2081, 2080
Answer

What do you understand by the model driven architecture? Explain. [5]

Model Driven Architecture (MDA) is a software development approach proposed by the Object Management Group (OMG) that focuses on creating and exploiting domain models (abstract representations of the problem domain) rather than focusing ...

asked 2xavg 8 marks · 2081, 0
Answer

Briefly explain requirement engineering process. [5]

Definition: Requirement Engineering (RE) is a systematic process of defining, documenting, and maintaining the requirements for a software system. It acts as a bridge between the customer's needs and the software development team. --- - ...

asked 2xavg 5 marks · 2080, 2079
Answer

Explain different requirements elicitation techniques. [5]

Note: No specific reference notes were found for this topic. The following answer is based on standard Software Engineering curriculum as taught in BSc CSIT programs. --- Requirements elicitation is the process of gathering, discovering,...

asked 2xavg 5 marks · 2080, 0
Answer

Differentiate between black box testing and white box testing. [5]

Black box testing is a software testing technique in which the internal structure, design, or implementation of the system is not known to the tester. The tester only focuses on the inputs and outputs of the system without any knowledge ...

asked 2xavg 5 marks · 2080, 0
Answer

Write short notes on: a. Agile software development b. Context model [5]

Short Notes

a. Agile Software Development

Agile software development is an iterative and incremental approach to software development that focuses on delivering working software quickly, responding to change, and close collaboration between developers and customers.

Key Principles (Agile Manifesto):

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Characteristics:

  • Development is done in short cycles called sprints or iterations (typically 2-4 weeks)
  • Requirements are allowed to evolve throughout the project
  • Continuous feedback from the customer is incorporated
  • Self-organizing, cross-functional teams work together
  • Regular reflection and adaptation of processes
  • Scrum - uses sprints, daily stand-ups, sprint reviews
  • Extreme Programming (XP) - focuses on coding practices
  • Kanban - visual workflow management

Advantages:

  • Faster delivery of working software
  • Better adaptability to changing requirements
  • Higher customer satisfaction

b. Context Model

A context model is used to illustrate the operational context of a system - it shows what lies outside the system boundaries (the environment in which the system operates) and defines what is included in and excluded from the system.

Purpose:

  • To define the system boundary
  • To identify external entities (other systems, people, organizations) that interact with the system
  • To show the relationships and interactions between the system and its environment

Key Features:

  • It does not show the nature of the relationships in detail
  • It helps stakeholders understand the scope of the system
  • External entities are shown as boxes or actors outside the system boundary

Example Representation:

[Payroll System] <---> [Employee Database]
[Payroll System] <---> [Bank System]
[Payroll System] <---> [HR Manager]

Types of Models Used:

  • Activity diagrams can supplement context models to show how the system is used in business processes
  • UML use case diagrams can also represent context

Importance:

  • Helps avoid scope creep by clearly defining boundaries
  • Assists in identifying all external dependencies
  • Provides a foundation for further detailed modeling
asked 2xavg 5 marks · 2080, 2079
Answer

What is version management? How is it carried Out? [5]

Version Management

Definition

Version management (also called version control or revision control) is the process of tracking and controlling changes made to software source code, documents, and other files over time. It allows multiple versions of a software system to be stored and retrieved, enabling developers to manage the evolution of software components systematically.


Key Concepts in Version Management

  • Version/Revision: A distinct state of a software component at a particular point in time.
  • Baseline: A tested, approved version that serves as the basis for further development.
  • Repository: A central storage location where all versions of files are maintained.
  • Check-in / Check-out: The process of submitting changes to or retrieving files from the repository.

How Version Management is Carried Out

1. Version Identification

Each version of a component is assigned a unique identifier (e.g., v1.0, v1.1, v2.0). Versions may be identified by:

  • Sequential numbering
  • Date/time stamps
  • Attribute-based identification (author, date, purpose)

2. Storage and Repository Management

All versions are stored in a version control repository (e.g., Git, SVN, CVS). The repository maintains:

  • Complete history of all changes
  • Who made the change and when
  • Why the change was made (commit messages)

3. Check-out and Check-in Mechanism

  • A developer checks out a file to work on it (may lock it to prevent conflicts).
  • After modification, the developer checks in the updated file, creating a new version.

4. Branching and Merging

  • Branching: Creating a separate line of development (e.g., for a new feature or bug fix) without affecting the main codebase.
  • Merging: Combining changes from different branches back into the main branch.
Main:    v1.0 -----> v1.1 -----> v2.0
                \               /
Branch:          --> fix-branch

5. Change Logging

Every version change is recorded with:

  • Description of changes made
  • Author name
  • Date and time
  • Version number

6. Conflict Resolution

When two developers modify the same file, the version management system detects conflicts and assists in resolving them before merging.


Benefits of Version Management

BenefitDescription
History trackingFull record of all changes over time
RollbackAbility to revert to a previous stable version
CollaborationMultiple developers can work simultaneously
BackupRepository acts as a secure backup
TraceabilityChanges can be linked to requirements or bug reports

Common Version Management Tools

  • Git (most widely used, distributed)
  • SVN (Subversion) (centralized)
  • CVS (Concurrent Versions System)
  • Mercurial

Note: Version management is a core part of Software Configuration Management (SCM), which also includes build management, change management, and release management.

asked 2xavg 5 marks · 2079, 0
Answer

Draw Class diagram for online voting system where user can vote the candidates. The system also generates the final result with respective vote counts as well. The user has to register and will be eligible only after proper validation. [5]

Class Diagram for Online Voting System

Description of Classes and Relationships

The following class diagram represents an Online Voting System with registration, validation, voting, and result generation functionalities.


Class Diagram (UML Notation)

+------------------+          +----------------------+
|      User        |          |    Registration      |
+------------------+          +----------------------+
| - userId: int    |1       1 | - regId: int         |
| - name: String   |----------| - email: String      |
| - email: String  |          | - password: String   |
| - password: String|         | - status: String     |
| - isEligible: bool|         +----------------------+
+------------------+          | + register(): void   |
| + login(): bool  |          | + validate(): bool   |
| + logout(): void |          | + getStatus(): String|
| + viewResult():void|        +----------------------+
+------------------+
        |
        | 1
        |
        | (after validation)
        |
        | *
+------------------+          +------------------+
|      Vote        |          |    Candidate     |
+------------------+          +------------------+
| - voteId: int    |  *     1 | - candidateId:int|
| - userId: int    |----------| - name: String   |
| - candidateId:int|          | - party: String  |
| - voteTime:DateTime         | - voteCount: int |
+------------------+          +------------------+
| + castVote():bool|          | + getVoteCount() |
| + confirmVote()  |          |     : int        |
+------------------+          | + updateCount()  |
        |                     |     : void       |
        |                     +------------------+
        |                            |
        |                            | 1
        |                            |
        | *                          | *
+------------------+          +------------------+
|   Validation     |          |     Result       |
+------------------+          +------------------+
| - validationId   |          | - resultId: int  |
| - userId: int    |          | - candidateId:int|
| - isVerified:bool|          | - totalVotes: int|
+------------------+          | - rank: int      |
| + checkEligibility|         +------------------+
|     (): bool     |          | + generateResult()|
| + verifyUser()   |          |     : void       |
|     : bool       |          | + displayResult()|
+------------------+          |     : void       |
                              | + getWinner()    |
                              |     : Candidate  |
                              +------------------+

Relationships Summary

RelationshipTypeMultiplicityDescription
User -- RegistrationAssociation1 to 1Each user must register once
Registration -- ValidationDependency1 to 1Registration triggers validation
User -- VoteAssociation1 to *A user can cast one or more votes (one per election)
Vote -- CandidateAssociation* to 1Many votes belong to one candidate
Candidate -- ResultAssociation1 to *Each candidate has result entries

Key Design Points

  1. User registers through the Registration class and is validated before being marked eligible (isEligible = true).
  2. Validation class checks user credentials and eligibility before allowing voting.
  3. Vote class records each vote with timestamp, linking user and candidate.
  4. Candidate maintains a running voteCount updated on each vote.
  5. Result class aggregates all votes and generates the final result with rankings and total vote counts.
asked 2xavg 8 marks · 2082, 2080
Answer

Explain different architectural views with a neat diagram. [5]

An architectural view is a representation of a software system from a specific perspective, addressing the concerns of particular stakeholders. The most widely accepted model for describing software architecture using multiple views is t...

asked 2xavg 5 marks · 2082, 0
Answer

Write short notes on:

a) Non-functional requirement Write short notes on:

b) Principles of agile [2.5+2.5]

Short Notes

a) Non-Functional Requirements

Non-functional requirements (NFRs) define the quality attributes and constraints of a system rather than specific behaviors or functions. They describe how the system performs its functions, not what it does.

Key Characteristics:

  • Also called quality requirements or system quality attributes
  • They apply to the system as a whole, not to individual features
  • Failure to meet NFRs can make the entire system unacceptable

Common Types of Non-Functional Requirements:

TypeDescriptionExample
PerformanceSpeed and response timeSystem must respond within 2 seconds
ReliabilityAvailability and fault tolerance99.9% uptime
SecurityProtection from unauthorized accessData must be encrypted
ScalabilityAbility to handle growthSupport 10,000 concurrent users
MaintainabilityEase of modificationCode must follow coding standards
PortabilityAbility to run on different platformsMust run on Windows and Linux
UsabilityEase of useUser must complete task within 3 clicks

Importance:

  • They constrain the design and implementation choices
  • They are often more critical than functional requirements
  • They are typically measurable and testable

b) Principles of Agile

Agile is a software development philosophy based on iterative development, collaboration, and flexibility. The Agile Manifesto (2001) defines 12 guiding principles:

Core Values (Agile Manifesto):

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

The 12 Principles of Agile:

  1. Customer Satisfaction - Highest priority is to satisfy the customer through early and continuous delivery of valuable software.

  2. Welcome Change - Welcome changing requirements, even late in development.

  3. Frequent Delivery - Deliver working software frequently (weeks rather than months).

  4. Collaboration - Business people and developers must work together daily throughout the project.

  5. Motivated Individuals - Build projects around motivated individuals; give them the environment and trust they need.

  6. Face-to-Face Communication - The most efficient method of conveying information is face-to-face conversation.

  7. Working Software - Working software is the primary measure of progress.

  8. Sustainable Development - Agile processes promote sustainable development at a constant pace.

  9. Technical Excellence - Continuous attention to technical excellence and good design enhances agility.

  10. Simplicity - The art of maximizing the amount of work NOT done is essential.

  11. Self-Organizing Teams - The best architectures, requirements, and designs emerge from self-organizing teams.

  12. Regular Reflection - At regular intervals, the team reflects on how to become more effective and adjusts accordingly.

Key Benefit:

Agile allows teams to adapt quickly to changing requirements, deliver value incrementally, and maintain high quality through continuous feedback and improvement.

Study every one of these with model answers, flashcards, and MCQs.

Open BIT302 study modes