BIT302 · TU past paper
Software Engineering 2080 question paper
The complete TU 2080 exam paper for Software Engineering (BIT302), all 12 questions with solved model answers written to the mark scheme.
Tap a question to open its answer.
- 110 marksIncremental delivery approachHideAnswer
Explain incremental delivery approach to software development with a neat diagram.[10]
Incremental delivery is a software development strategy in which the system is designed, implemented, and delivered in separate increments (parts). Each increment delivers a portion of the required functionality. The complete set of requ...
- 210 marksArchitectural views and design questionsHideAnswer
Explain different architectural views. What are the fundamental questions that needs to be answered when designing a system architecture?[10]
Architectural Views and Fundamental Questions in System Architecture Design
Part 1: Different Architectural Views
Software architecture cannot be fully described by a single diagram or perspective. Multiple architectural views are used to represent different aspects of a system, each addressing the concerns of different stakeholders.
The most widely accepted model is the "4+1" View Model proposed by Philippe Kruchten.
1. Logical View (Design View)
- Describes the functional requirements of the system -- what the system should provide to end users.
- Focuses on the object model of the design (classes, objects, relationships).
- Stakeholders: End users and designers.
- Represented using: Class diagrams, Object diagrams, State diagrams.
Example: How the system is decomposed into key abstractions and objects.
2. Process View
- Describes the dynamic aspects of the system -- how processes communicate and run concurrently.
- Addresses concerns of concurrency, distribution, performance, and scalability.
- Stakeholders: System integrators and performance engineers.
- Represented using: Activity diagrams, Sequence diagrams.
Example: How threads interact and how tasks are scheduled at runtime.
3. Development View (Implementation View)
- Describes the system from a programmer's perspective.
- Focuses on the organization of software modules in the development environment (packages, components, subsystems).
- Addresses concerns of software management, reuse, and portability.
- Stakeholders: Programmers and software managers.
- Represented using: Component diagrams, Package diagrams.
Example: How source code is organized into modules and libraries.
4. Physical View (Deployment View)
- Describes the mapping of software onto hardware.
- Addresses concerns of topology, distribution, delivery, and installation.
- Stakeholders: System engineers and network administrators.
- Represented using: Deployment diagrams.
Example: Which server hosts which component, and how nodes are connected.
5. Scenarios View (Use Case View) -- The "+1"
- Describes the system from the end user's perspective using use cases.
- Acts as the central view that ties all other views together.
- Used to validate and illustrate the architecture.
- Stakeholders: All stakeholders.
- Represented using: Use case diagrams, Interaction diagrams.
Example: A user logs in -- this scenario involves logical, process, development, and physical views simultaneously.
Summary Table
View Focus Stakeholder Notation Logical Functionality End users Class, State diagrams Process Concurrency/Runtime Integrators Activity, Sequence diagrams Development Software organization Programmers Component, Package diagrams Physical Hardware mapping System engineers Deployment diagrams Scenarios Use cases All Use case diagrams
Part 2: Fundamental Questions in Designing a System Architecture
When designing a system architecture, an architect must answer the following fundamental questions:
1. What are the system's functional requirements?
- What must the system do?
- What are the core features and services the system must provide to users?
2. What are the non-functional requirements (Quality Attributes)?
- What are the performance, scalability, reliability, security, and maintainability requirements?
- These often drive major architectural decisions.
3. How should the system be decomposed?
- How should the system be broken down into components, modules, or subsystems?
- What are the responsibilities of each component?
4. How will components communicate and interact?
- What interfaces and protocols will components use?
- Will communication be synchronous or asynchronous?
- How will data flow between components?
5. How will the system be distributed?
- Will the system run on a single machine or multiple nodes?
- How will it handle distributed computing, load balancing, and fault tolerance?
6. What architectural style or pattern should be used?
- Should the system follow layered, microservices, event-driven, client-server, or pipe-and-filter architecture?
- Which pattern best fits the requirements?
7. How will the system handle change and evolution?
- How flexible and extensible is the architecture?
- Can new features be added without major restructuring?
8. What are the technology and platform constraints?
- What programming languages, frameworks, databases, and hardware will be used?
- Are there legacy system constraints?
9. How will the system ensure security?
- How will authentication, authorization, and data protection be handled?
- Where are the security boundaries?
10. How will the system be tested, deployed, and maintained?
- What is the deployment strategy?
- How will the system be monitored and updated after deployment?
Conclusion
Architectural views provide multiple perspectives on a system to satisfy the concerns of different stakeholders. The 4+1 model (Logical, Process, Development, Physical, and Scenarios) is the standard approach. Answering the fundamental architectural questions ensures that the system is well-structured, meets both functional and non-functional requirements, and can evolve over time.
- 310 marksAlgorithmic cost modelingHideAnswer
What do you understand by algorithmic cost modeling? Explain COCOMO estimation models.[10]
--- Algorithmic cost modeling is a technique used in software project management where a mathematical model (formula or algorithm) is used to estimate the cost, effort, and duration of a software project based on measurable attributes of...
- 45 marksProject management fundamental activitiesHideAnswer
Briefly explain fundamental activities related to project management. [5]
Project management involves planning, organizing, and controlling resources to achieve specific goals within defined constraints. The fundamental activities are: - Defining project scope, objectives, and deliverables - Breaking down the ...
- 55 marksUse case diagramsHideAnswer
Draw use case diagram for online voting system where the students can vote for their favorite teachers based on their performance. The teachers will be notified by the system about their status based on their votes. The system will generate the class routine by selecting teachers with respect to their votes. The routine will be sent to director, admin department, teachers, students and parents. [5]
Actor Role ------------- Student Casts vote for favorite teacher Teacher Receives notification about vote status System Generates routine, sends notifications Director Receives generated routine Admin Department Receives generated routin...
- 65 marksRequirements elicitation techniquesHideAnswer
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,...
- 75 marksBlack box testingHideAnswer
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 ...
- 85 marksIssues affecting different software typesHideAnswer
Highlight on different issues that play a key role in affecting different types of software. [5]
Software development is a complex process influenced by numerous technical, managerial, and environmental factors. Different types of software (system software, real-time software, embedded software, web-based software, etc.) face distin...
- 95 marksModel-driven architecture and transformatiHideAnswer
Explain the need of Model-driven architecture transformations and how is it carried out? [5]
Note: No specific curriculum notes were found for this topic. The following answer is based on standard Software Engineering knowledge as taught in BSc CSIT programs. --- Model-Driven Architecture (MDA) is an approach to software develop...
- 105 marksAgile software developmentHideAnswer
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
Popular Agile Methods:
- 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
- 115 marksProgram inspection processHideAnswer
Explain program inspection process. [5]
Program inspection (also called code inspection or Fagan inspection) is a formal, structured method of static verification in which a group of people carefully examine source code (or other software artifacts) to detect faults, without e...
- 125 marksVersion management and version controlHideAnswer
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-branch5. 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
Benefit Description History tracking Full record of all changes over time Rollback Ability to revert to a previous stable version Collaboration Multiple developers can work simultaneously Backup Repository acts as a secure backup Traceability Changes 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.