BSc CSIT (TU) Science Software Engineering (BSc CSIT, CSC364) Question Paper 2082 Nepal
This is the official BSc CSIT (TU) (Science stream) Software Engineering (BSc CSIT, CSC364) question paper for 2082, as set in the annual (regular) examination. It carries 60 full marks and a time allowance of 180 minutes, across 12 questions. On Kekkei you can attempt this Software Engineering (BSc CSIT, CSC364) 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 BSc CSIT (TU) Software Engineering (BSc CSIT, CSC364) exam or solving previous years' question papers, this 2082 paper is a great way to practise under real exam conditions.
| Level | BSc CSIT (TU) |
|---|---|
| Stream | Science |
| Subject | Software Engineering (BSc CSIT, CSC364) |
| Year | 2082 BS |
| Exam session | Regular (annual) |
| Full marks | 60 |
| Time allowed | 180 minutes |
| Questions | 12, all with step-by-step solutions |
Section A: Long Answer Questions
Attempt any TWO questions.
What is software testing? Explain the software testing process in detail. Differentiate between development testing and release testing. How does Test-Driven Development (TDD) improve software quality? Explain with an example.
Software Testing
Software testing is the process of executing a program with the intent of finding errors and verifying that the software meets its specified requirements and behaves as expected. It is a key part of verification and validation (V&V): it demonstrates that the software does what it is intended to do (validation) and conforms to its specification (verification), and it exposes defects before the software is delivered.
Testing can only show the presence of defects, not their absence; the goal is to find as many defects as possible with realistic effort.
The Software Testing Process
The general testing process moves from individual components to the whole system:
- Unit / Component Testing — Individual components (functions, objects, classes) are tested in isolation, usually by the developer, to ensure each works correctly.
- Integration Testing — Components are combined and tested together to expose interface and interaction defects.
- System Testing — The integrated system is tested as a whole against the requirements (functional and non-functional, e.g., performance, security).
- Acceptance / Release Testing — The system is tested by/for the customer to confirm it is acceptable for deployment.
A typical model-based test workflow:
Design test cases -> Prepare test data -> Run program with test data -> Compare results to expected
^ |
|______________________ (re-test after fixing defects) _________________________|
Test cases are derived from the specification (black-box) and/or program structure (white-box), with techniques such as equivalence partitioning, boundary value analysis, and path testing.
Development Testing vs Release Testing
| Aspect | Development Testing | Release Testing |
|---|---|---|
| Who performs it | The development team (developers) | A separate team / for the customer |
| Goal | Find and remove bugs (defect testing) | Show the system is good enough to release (validation) |
| Scope | Unit, component and integration testing during development | Testing a complete release of the whole system |
| Knowledge | Often white-box (knows the code) | Usually black-box (works to the specification) |
| Environment | Developer/test environment | A simulated or real operational environment |
In short, development testing is internal, defect-finding testing done while building the software; release testing validates a finished version against requirements before it is given to users.
How Test-Driven Development (TDD) Improves Software Quality
Test-Driven Development is an approach in which tests are written before the code. Development proceeds in short cycles known as Red–Green–Refactor:
- Red — Write a small automated test for the next bit of functionality; it fails (no code yet).
- Green — Write the minimum code needed to make the test pass.
- Refactor — Clean up the code while keeping all tests passing.
TDD improves quality because:
- Every piece of code is covered by tests, giving high test coverage and a safety net against regressions.
- Defects are found immediately, when they are cheapest to fix.
- It clarifies requirements — writing the test first forces you to define expected behavior precisely.
- It encourages simple, modular, testable design.
- The test suite serves as living documentation and supports confident refactoring.
Example
Suppose we need an add(a, b) function.
# Step 1 (Red): write the test first
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
# Running it fails: 'add' is not defined.
# Step 2 (Green): write minimum code to pass
def add(a, b):
return a + b
# Now test_add() passes.
# Step 3 (Refactor): improve code/tests while keeping them green.
Because the test existed first, the function is guaranteed correct for the specified cases, and any future change that breaks add is caught instantly — directly raising software quality.
Explain architectural design decisions that must be made during the architectural design process. Describe the following architectural patterns with suitable diagrams:
-
a) Model-View-Controller (MVC) architecture
-
b) Client-Server architecture
-
c) Pipe and Filter architecture
Architectural Design Decisions
Architectural design is the process of identifying the major structural components of a system and the relationships between them. It is a creative process; however, regardless of domain, architects must make a number of common architectural design decisions that fundamentally shape the system:
- Is there a generic application architecture that can act as a template for the system being designed?
- How will the system be distributed across hardware/cores (centralized vs distributed)?
- Which architectural patterns/styles are appropriate (e.g., MVC, layered, client-server, pipe-and-filter)?
- What approach will be used to structure the system (decomposition into modules/components)?
- How will the structural components be decomposed into sub-components?
- What control strategy will manage component operation (centralized control, event-based)?
- How will the architectural design be evaluated against quality attributes?
- How should the architecture be documented (views/diagrams)?
These decisions are driven by the required non-functional attributes — performance, security, safety, availability, and maintainability — which often conflict and must be traded off.
a) Model-View-Controller (MVC) Architecture
MVC separates a system into three logically distinct components so that presentation and interaction are decoupled from data and logic.
- Model — manages the system data and associated business logic.
- View — defines and manages how the data is presented to the user.
- Controller — handles user input, passes it to the model/view, and manages interaction.
+-----------+ change notification +---------+
| Model |------------------------->| View |
+-----------+ +---------+
^ ^
update| user | sees
| +-------------+ |
+----------| Controller |<-----------+
+-------------+
^
user input
Use: web applications and GUI systems where multiple views of the same data are needed. Advantage: data can change independently of its representation. Disadvantage: extra complexity for simple interfaces.
b) Client-Server Architecture
The system is organized as a set of services provided by servers and a set of clients that use those services, communicating over a network.
- Servers offer services (e.g., database, print, file).
- Clients request services; they need to know what servers exist but servers need not know all clients.
Client 1 Client 2 Client 3
\ | /
\ | /
+---------------------+
| Network |
+---------------------+
/ | \
+---------+ +---------+ +-----------+
| Catalog | | Video | | Payment |
| Server | | Server | | Server |
+---------+ +---------+ +-----------+
Advantage: distributed, servers can be replicated/scaled, easy to add new clients. Disadvantage: each service is a single point of failure; performance depends on the network.
c) Pipe and Filter Architecture
Data flows through a sequence of filters (processing components), connected by pipes that carry the output of one filter to the input of the next. Each filter transforms its input and is independent of the others.
Input --> [ Filter 1 ] --pipe--> [ Filter 2 ] --pipe--> [ Filter 3 ] --> Output
(read) (process) (write)
Example: A classic batch data-processing pipeline — Read records -> Validate -> Compute -> Print report, or Unix commands chained with |.
Advantage: easy to understand, supports reuse and transformation reuse, naturally matches many business/data processes. Disadvantage: common data format must be agreed; not suited to interactive systems.
What is project management? Explain different project management activities in detail. Discuss risk management process with suitable example showing how risks are identified, analyzed, and mitigated in a software project.
Project Management
Software project management is the discipline of planning, organizing, leading and controlling the resources, activities and people involved in a software project so that the software is delivered on time, within budget, and to the required quality, while meeting organizational goals. It is needed because software is intangible, projects are often unique, and processes are not standardized, making software projects especially hard to manage.
Project Management Activities
- Project Planning — Identifying the activities, milestones and deliverables; estimating effort, cost and schedule; allocating resources. Plans are produced at the start and revised continuously.
- Risk Management — Identifying risks that may affect the project, assessing them, and planning to minimize their impact (detailed below).
- People Management — Choosing the right people, organizing the team, motivating and coordinating staff, and dealing with communication and morale.
- Project Scheduling — Breaking work into tasks, estimating durations, sequencing tasks (allowing for dependencies), and representing them using Gantt charts or activity networks (PERT).
- Cost/Effort Estimation — Estimating the resources required, using techniques such as COCOMO, function points or expert judgement.
- Proposal Writing — Preparing the bid/proposal that describes objectives and how the work will be done (at project initiation).
- Monitoring and Reviews — Tracking progress against the plan, comparing actual vs planned cost/schedule, and taking corrective action.
- Report Writing & Presentations — Communicating status and results to stakeholders and senior management.
Risk Management Process
Risk management is an iterative process with four key stages:
- Risk Identification — Identify project, product and business risks.
- Risk Analysis — Assess the probability and impact (seriousness) of each risk; compute risk exposure to prioritize.
- Risk Planning — Plan responses: avoidance (reduce probability), minimization (reduce impact), or contingency (fallback plan).
- Risk Monitoring — Continuously track risks and the effectiveness of mitigation; revise plans at each milestone.
Identify --> Analyse --> Plan --> Monitor --> (loop back to Identify)
Worked Example — Online Examination System
| Risk | Type | Probability | Impact | Mitigation |
|---|---|---|---|---|
| Key developer leaves | Project | Moderate | Serious | Cross-train staff, document code, share knowledge |
| Server crashes during exam (high load) | Technical | Moderate | Catastrophic | Load testing, redundant servers, auto-scaling, backups |
| Requirements change mid-project | Project/Business | High | Tolerable | Use incremental delivery, agree change-control process |
| Database technology is new to team | Technical | High | Serious | Training, build a prototype early to reduce uncertainty |
Walkthrough of one risk:
- Identify: "The exam server may crash under peak load when thousands of students log in simultaneously."
- Analyse: probability = moderate, impact = catastrophic (an exam could be invalidated) → high exposure, must address.
- Mitigate (plan): perform load/stress testing, deploy redundant/auto-scaling servers, and keep a contingency plan (paper/offline backup) ready.
- Monitor: watch server metrics and re-evaluate as student numbers grow.
This disciplined loop keeps the project's threats visible and under control throughout development.
Section B: Short Answer Questions
Attempt any EIGHT questions.
What is requirements elicitation? Explain different requirements elicitation techniques used in requirements engineering process.
Requirements Elicitation
Requirements elicitation (and analysis) is the process of working with system stakeholders — customers, end-users, domain experts — to discover, understand and gather the requirements of the system: the services it should provide, its required performance, and its constraints. It is the first technical activity of requirements engineering and is challenging because stakeholders may not know what they want, may express needs in their own terms, and may have conflicting requirements.
Requirements Elicitation Techniques
-
Interviews — Talking to stakeholders directly. Closed interviews use a predefined set of questions; open interviews explore issues without a fixed agenda. Good for in-depth understanding but interviewers must avoid bias and capture tacit knowledge.
-
Questionnaires / Surveys — A set of written questions distributed to many stakeholders. Useful for gathering information from a large, geographically spread group quickly, though answers can be shallow.
-
Observation (Ethnography) — The analyst observes users doing their actual work in their environment. Reveals tacit, real-world work practices and social factors that users cannot easily articulate.
-
Scenarios — Describing example sessions of how the system will be used in real-life situations (a sequence of normal events plus exceptions). They make requirements concrete and easy for users to relate to.
-
Use Cases — A UML technique that identifies actors and the interactions (use cases) they have with the system; complements scenarios.
-
Prototyping — Building an early working model so users can try it and give feedback, helping them discover and refine requirements.
-
Brainstorming / Workshops (e.g., JAD) — Group sessions where stakeholders and developers jointly generate and agree requirements.
-
Document/Domain Analysis — Studying existing systems, manuals and documents to extract requirements.
In practice several techniques are combined to obtain complete and consistent requirements.
A software project is estimated to be 320 KLOC. Using the COCOMO model, calculate the effort (person-months) and development time (months) for:
-
a) Organic mode
-
b) Embedded mode
Use the following formulas:
-
Organic: Effort = 2.4(KLOC)^1.05, Time = 2.5(Effort)^0.38
-
Embedded: Effort = 3.6(KLOC)^1.20, Time = 2.5(Effort)^0.32
COCOMO Estimation for a 320 KLOC Project
Given KLOC = 320. We apply the Basic COCOMO formulas for each mode.
a) Organic Mode
Effort = 2.4 × (KLOC)^1.05
Effort = 2.4 × (320)^1.05
= 2.4 × 10^(1.05 × log10 320)
= 2.4 × 10^(1.05 × 2.5051)
= 2.4 × 10^(2.6304)
= 2.4 × 427.0
≈ 1024.8 person-months
Development Time = 2.5 × (Effort)^0.38
Time = 2.5 × (1024.8)^0.38
= 2.5 × 10^(0.38 × log10 1024.8)
= 2.5 × 10^(0.38 × 3.01065)
= 2.5 × 10^(1.1440)
= 2.5 × 13.93
≈ 34.8 months
Organic: Effort ≈ 1025 person-months, Time ≈ 34.8 months.
b) Embedded Mode
Effort = 3.6 × (KLOC)^1.20
Effort = 3.6 × (320)^1.20
= 3.6 × 10^(1.20 × 2.5051)
= 3.6 × 10^(3.00614)
= 3.6 × 1014.3
≈ 3651.5 person-months
Development Time = 2.5 × (Effort)^0.32
Time = 2.5 × (3651.5)^0.32
= 2.5 × 10^(0.32 × log10 3651.5)
= 2.5 × 10^(0.32 × 3.56245)
= 2.5 × 10^(1.13998)
= 2.5 × 13.80
≈ 34.5 months
Embedded: Effort ≈ 3651 person-months, Time ≈ 34.5 months.
Summary
| Mode | Effort (person-months) | Development Time (months) |
|---|---|---|
| Organic | ≈ 1025 | ≈ 34.8 |
| Embedded | ≈ 3651 | ≈ 34.5 |
(Values may vary slightly with rounding.) The embedded mode requires far more effort because of its higher exponent and coefficient, reflecting the tighter constraints of embedded systems.
Differentiate between incremental development and integration and configuration model. Which model is suitable for large-scale enterprise systems and why?
Incremental Development vs Integration and Configuration
Both are software process approaches but differ fundamentally in whether software is built afresh or assembled from existing parts.
| Aspect | Incremental Development | Integration and Configuration |
|---|---|---|
| Basic idea | Software is built and delivered in a series of increments, each adding functionality | System is built mainly by reusing/configuring existing components (COTS, frameworks, services) |
| Source of code | New code is written for each increment | Existing reusable components are integrated and configured |
| Development effort | High — most functionality is developed from scratch | Lower — reuse reduces new code and development time |
| Flexibility | Easy to accommodate changing requirements between increments | Constrained by what existing components can do |
| Cost & Time | Generally higher cost and longer time | Faster delivery and lower cost (reuse) |
| Risk | Risk of building everything; later increments may force rework | Risk that components don't exactly match needs; loss of control over evolution |
| Example | Building a custom ERP increment-by-increment | Assembling a system from a CMS, payment gateway, and configured ERP modules |
Which is suitable for large-scale enterprise systems, and why?
For large-scale enterprise systems, the Integration and Configuration (reuse-based) approach is generally most suitable. Such systems are large, complex and costly to build from scratch, and the market offers mature, proven components — ERP suites (SAP, Oracle), databases, middleware, payment and authentication services. Reusing and configuring these:
- reduces development cost, time and risk, since components are already tested and reliable;
- allows the organization to focus effort on business-specific configuration rather than reinventing standard functionality;
- improves reliability and maintainability by relying on well-supported, widely-used software.
Incremental development is still valuable and is often combined with reuse, but for very large enterprise systems building everything incrementally from scratch would be prohibitively expensive and slow.
Draw a context model and use case diagram for an Online Food Delivery System. Make necessary assumptions.
Online Food Delivery System — Context Model & Use Case Diagram
Assumptions:
- Actors are Customer, Restaurant, Delivery Rider (Agent), and Admin.
- The system integrates with an external Payment Gateway and a Maps/Location service (e.g., for tracking).
- Customers browse restaurants, place orders, pay online, and track delivery.
1. Context Model
A context model shows the system as a single process and the external entities (systems/people) that interact with it, defining the system boundary.
+-----------+ +------------------+
| Customer | | Payment Gateway |
+-----------+ +------------------+
\ /
\ /
v v
+-----------------------------------------------+
| Online Food Delivery System |
| (central system) |
+-----------------------------------------------+
^ ^ ^
/ | \
/ | \
+--------------+ +------------------+ +----------------+
| Restaurant | | Delivery Rider | | Maps / Location |
+--------------+ +------------------+ +----------------+
The diagram shows that the system exchanges data with customers (orders, payments), restaurants (menus, order acceptance), riders (delivery assignment/status), the payment gateway (transactions) and the maps service (tracking).
2. Use Case Diagram
Actors & key use cases:
- Customer: Register/Login, Browse Restaurants, Search Food, Place Order, Make Payment, Track Order, Rate & Review.
- Restaurant: Manage Menu, Accept/Reject Order, Update Order Status.
- Delivery Rider: View Assigned Deliveries, Update Delivery Status.
- Admin: Manage Users, Manage Restaurants, View Reports.
- Payment Gateway (external): handles
Make Payment.
Online Food Delivery System
+-------------------------------------------------------------+
| ( Register / Login ) |
| ( Browse Restaurants ) ( Manage Menu ) |
Customer --( Place Order )--<<include>>--> ( Make Payment ) ------|--> Payment Gateway
| ( Track Order ) ( Accept Order ) <-------|-- Restaurant
| ( Rate & Review ) ( Update Status ) <------|-- Delivery Rider
| ( Manage Users ) <------|-- Admin
| ( View Reports ) |
+-------------------------------------------------------------+
Relationships: Place Order includes Make Payment; Track Order extends Place Order; the Payment Gateway is associated with Make Payment. This captures the core interactions between all actors and the system.
What is software quality management? Explain the relationship between quality management, quality assurance, and quality control with examples.
Software Quality Management
Software Quality Management (SQM) is the set of management activities that ensure a software product achieves the required level of quality. It establishes a framework of organizational quality processes and standards, checks that they are followed, and continuously improves them. SQM operates at three levels — organizational (quality processes/standards), project (a quality plan), and process (applying QA and QC).
Its main concerns are defining quality goals, managing quality processes, and assuring & controlling quality throughout development.
Quality Management, Quality Assurance, and Quality Control
| Term | Meaning | Focus | Example |
|---|---|---|---|
| Quality Management (QM) | The overall management activity that establishes quality policies, standards and procedures and oversees QA and QC | Whole organization/project — managing quality | Defining the company's quality policy and quality plan for a project |
| Quality Assurance (QA) | Process-oriented activities that define and establish the standards/procedures that lead to high-quality software; aims to prevent defects | The process — "are we doing the right things?" | Defining coding standards, review procedures, and a testing process to be followed |
| Quality Control (QC) | Product-oriented activities that check the actual products against standards to detect defects | The product — "did we do things right?" | Conducting code reviews, inspections and testing on a delivered module |
Relationship
Quality Management (defines & oversees)
/ \
Quality Assurance Quality Control
(process: prevent defects) (product: detect defects)
- Quality Management is the umbrella; it sets up and supervises both QA and QC.
- QA focuses on the process — building quality in by establishing good standards and procedures (defect prevention).
- QC focuses on the product — verifying that deliverables meet those standards via reviews, inspections and testing (defect detection).
Together they ensure that quality is both planned and built into the process (QA) and verified in the product (QC), under the coordination of overall quality management.
Explain the concept of Model-Driven Architecture (MDA). How does it help in system modeling? What are its advantages and disadvantages?
Model-Driven Architecture (MDA)
Model-Driven Architecture (MDA) is a model-focused approach to software design and implementation, proposed by the Object Management Group (OMG). It uses a set of UML models at different levels of abstraction as the primary artifacts of development; code is (semi-)automatically generated from these models. MDA is a particular instance of the broader idea of Model-Driven Engineering (MDE).
The Three MDA Models
MDA proposes building a system through successive, more detailed models:
- Computation Independent Model (CIM) — Also called the domain model; it models the important domain concepts and the environment, independent of any computation. ("What the business needs.")
- Platform Independent Model (PIM) — Models the system's operation and functionality without reference to a specific implementation platform; usually a UML model showing static structure and dynamic behavior. ("What the system does.")
- Platform Specific Model (PSM) — Transforms the PIM into a model tied to a particular platform/technology (e.g., Java EE, .NET), from which code can be generated. ("How it runs on a platform.")
CIM --transform--> PIM --transform--> PSM --generate--> Code
(domain) (platform-independent) (platform-specific)
How MDA Helps in System Modeling
- It raises the level of abstraction — engineers work with models, not code, so they reason about the problem rather than implementation detail.
- Transformations between CIM → PIM → PSM → code can be automated, improving consistency and productivity.
- A single PIM can be retargeted to different platforms by applying different transformations, supporting portability and long-lived designs.
Advantages
- Higher abstraction lets developers focus on business/domain logic rather than platform details.
- Platform independence — the same model can be reused across technologies.
- Potential for automatic code generation, improving speed and consistency.
- Models serve as durable documentation.
Disadvantages
- Requires specialized tools and expertise; tool support is limited and varies in quality.
- Full automatic transformation is hard — generated code often still needs manual work.
- Abstract models may not capture all platform-specific details, and the approach is not widely adopted in practice.
- Significant upfront learning and modeling effort.
What do you understand by implementation issues in software development? Discuss reuse, configuration management, and host-target development as implementation issues.
Implementation Issues in Software Development
Implementation is the activity of translating a design into a working program. Beyond simply writing code, several broader implementation issues strongly affect the cost, quality and manageability of the resulting software. Three of the most important are software reuse, configuration management, and host-target development.
1. Software Reuse
Reuse is the practice of building new software from existing software assets rather than writing everything from scratch. Reuse can occur at several levels:
- Abstraction level — reusing knowledge/patterns (e.g., design patterns).
- Object/component level — reusing classes, objects or components from a library.
- System level — reusing whole application systems (COTS) and configuring them.
Benefits: lower cost, faster delivery, and higher reliability (reused components are already tested). Costs/issues: finding suitable components, the effort to understand and adapt them, and possible loss of control over their evolution.
2. Configuration Management
Configuration management (CM) is the management of an evolving system so that changes to its components are controlled and a consistent, buildable system can always be produced. Key concerns during implementation:
- Version management — tracking versions of components (using a VCS such as Git) so concurrent changes don't conflict.
- System building — assembling and compiling components into an executable system, often automated and integrated with continuous integration.
- Change management — recording, evaluating and approving change requests in a controlled way.
CM is essential because many developers change many components over time; without it the system becomes inconsistent and unbuildable.
3. Host-Target Development
Most software is developed on one computer (the host) but executes on a different one (the target).
- The host is the development machine (with IDE, compilers, debuggers, build tools).
- The target is the platform where the software finally runs (e.g., a server, mobile device or embedded system).
Developers use an integrated development environment (IDE) on the host and then deploy the software to the target, often testing on a simulator/emulator of the target or on the target itself. Issues to manage include differences between host and target environments, deployment configuration, and choosing appimport tools.
Together, attention to reuse, configuration management and host-target development leads to cheaper, more reliable and more maintainable implementations.
Differentiate between corrective, adaptive, perfective, and preventive maintenance. Which type of maintenance consumes the most resources and why?
Types of Software Maintenance
Software maintenance is the modification of a software product after delivery. It is classified into four types based on the reason for the change:
| Type | Purpose | Trigger | Example |
|---|---|---|---|
| Corrective | Fixing discovered faults/bugs to make the software behave as specified | A reported defect/failure | Fixing a calculation error in a payroll report |
| Adaptive | Modifying the software to keep it usable in a changed environment | New OS, hardware, regulations or platform | Updating software to run on a new Windows version or a new tax rule |
| Perfective | Enhancing the software — adding new features or improving performance/usability per user requests | New/changed user requirements | Adding a new report or speeding up a slow query |
| Preventive | Modifying software to prevent future problems, improving maintainability without changing behavior | Anticipated future issues, code decay | Refactoring/restructuring code, updating documentation |
Which Type Consumes the Most Resources, and Why?
Perfective maintenance (closely followed by adaptive) consumes the most resources. Studies (e.g., by Lientz and Swanson) show that the largest share of maintenance effort — typically around 50–65% — goes to perfective maintenance.
Reasons:
- Once software is in successful operation, users continually request new features and improvements, generating a steady stream of enhancement work.
- Business environments evolve, so the system must keep growing in functionality to remain useful and competitive.
- Adding/changing functionality often requires understanding, modifying and re-testing large parts of an existing system, which is expensive.
- Corrective (bug-fixing) maintenance is typically a smaller fraction (~20%), because most serious defects are removed before release.
Thus the demand for continual enhancement of working software makes perfective maintenance the most resource-intensive category.
Write short notes on:
-
a) Open-source development
-
b) Agile project management
a) Open-Source Development
Open-source development is an approach in which the source code of a software system is made publicly available, and volunteers (and organizations) from around the world are invited to contribute to its development, modification and improvement.
Key characteristics:
- Source code is freely available and can be read, modified and redistributed under an open-source license (e.g., GPL, MIT, Apache).
- Development is community-driven: a large, distributed community of contributors submits patches/features, often coordinated through version-control platforms (e.g., GitHub) and a core maintainer team.
- Examples: Linux, Apache, Mozilla Firefox, MySQL, Python.
Advantages: lower cost, rapid bug detection and fixing ("many eyes"), transparency, and avoidance of vendor lock-in. Issues: managing many contributors, ensuring quality/consistency, license compatibility, and uneven documentation/support.
b) Agile Project Management
Agile project management is the management of software projects developed using agile methods, which emphasize iterative, incremental delivery, flexibility, and close customer collaboration rather than detailed up-front planning.
Key features:
- Work is delivered in short, time-boxed iterations (sprints, typically 2–4 weeks), each producing a potentially shippable increment.
- Requirements are kept in a prioritized product backlog; the most valuable items are built first.
- Scrum is the most widely used framework, with roles (Product Owner, Scrum Master, Development Team) and events (sprint planning, daily stand-up/scrum, sprint review, retrospective).
- Progress is tracked visually using burndown charts and boards rather than heavy documentation.
- The team self-organizes, welcomes changing requirements, and continuously improves through retrospectives.
Benefits: faster delivery of value, adaptability to change, high customer satisfaction, and early visibility of progress and risks.
Frequently asked questions
- Where can I find the BSc CSIT (TU) Software Engineering (BSc CSIT, CSC364) question paper 2082?
- The full BSc CSIT (TU) Software Engineering (BSc CSIT, CSC364) 2082 (Regular (annual)) 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 (BSc CSIT, CSC364) 2082 paper come with solutions?
- Yes. Every question on this Software Engineering (BSc CSIT, CSC364) past paper includes a step-by-step solution, plus instant AI feedback when you attempt it on Kekkei.
- How many marks is the BSc CSIT (TU) Software Engineering (BSc CSIT, CSC364) 2082 paper?
- The BSc CSIT (TU) Software Engineering (BSc CSIT, CSC364) 2082 paper carries 60 full marks and is meant to be completed in 180 minutes, across 12 questions.
- Is practising this Software Engineering (BSc CSIT, CSC364) past paper free?
- Yes — reading and attempting this Software Engineering (BSc CSIT, CSC364) past paper on Kekkei is completely free.