CSC375 · TU past paper
Software Engineering 2077 question paper
The complete TU 2077 exam paper for Software Engineering (CSC375), all 12 questions with solved model answers written to the mark scheme.
Tap a question to open its answer.
- 110 marksIntroduction to Quality Management and ConHideAnswer
Explain the detail tasks in a software configuration management process with example.[10]
Software Configuration Management (SCM) Process - Detailed Tasks
Definition
Software Configuration Management (SCM) is the general process of managing a changing software system. During the development process, we have to keep track of the many different versions of each software component and ensure that changes made by different developers do not interfere with each other. SCM is concerned with the policies, processes, and tools for managing changing software systems.
Why SCM is Needed
Software systems are constantly changing during development and after delivery. Multiple developers may work on the same system simultaneously, different versions exist for different customers, and bugs must be fixed while new features are added. Without SCM, chaos results - wrong versions get delivered, changes are lost, and conflicts arise between developers.
Example Context: Consider a team of 5 developers building an Online Banking System. Developer A is fixing a security bug in
Login.java, while Developer B is adding a new feature to the same file. Without SCM, one developer's work will overwrite the other's.
Detailed Tasks in SCM Process
Task 1: Change Management
Definition: Change management is the process of keeping track of requests for changes to the delivered software from customers and developers, working out the costs and impact of making these changes, and deciding whether and when the changes should be implemented.
Steps involved:
- A change request is submitted formally
- The change is analyzed for cost, impact, and feasibility
- A Change Control Board (CCB) approves or rejects the change
- Approved changes are assigned to developers
- Changes are tracked until completion
Example: In the Online Banking System, a customer requests: "Add UPI payment support."
- A Change Request Form (CRF) is filled out
- The team estimates it will take 3 weeks and affect
Payment.java,Transaction.java - CCB approves the change
- Developer C is assigned the task
- The change is tracked from request to deployment
Task 2: Version Management
Definition: Version management is the process of keeping track of different versions of software components and the systems in which these components are used. It also involves ensuring that changes made by different developers to these versions do not interfere with each other.
Key concepts:
- Version: A specific instance of a software item (e.g., v1.0, v1.1, v2.0)
- Variant: A version created for different environments (e.g., Windows variant, Linux variant)
- Baseline: A snapshot of a system at a particular point in time
Example:
Online Banking System Versions: - v1.0 --> Initial release (basic login, balance check) - v1.1 --> Bug fix release (fixed login timeout issue) - v2.0 --> Major release (added UPI payment support) - v2.0-Windows --> Windows variant - v2.0-Android --> Android variantTools like Git, SVN, or CVS are used for version management. For example:
git commit -m "Fixed login timeout bug - v1.1" git tag v1.1 git branch feature/upi-payment # new branch for v2.0 development
Task 3: System Building
Definition: System building is the process of assembling program components, data, and libraries, then compiling and linking these to create an executable system. Different versions of components may be included in different builds.
Steps involved:
- Identify which versions of components to include
- Retrieve those versions from the version management system
- Compile and link all components
- Run automated tests on the built system
- Create a build report
Example:
For the Online Banking System, a build specification might be:
Build: v2.0 Release Build Components: - Login.java (version 1.3 - security patched) - Payment.java (version 2.1 - UPI added) - Transaction.java (version 1.8) - Database.java (version 1.5) Build Tool: Maven / Gradle Command: mvn clean install Output: BankingApp-v2.0.jarBuild tools like Maven, Gradle, Ant, or Make automate this process. Continuous Integration (CI) tools like Jenkins can trigger automatic builds whenever a developer commits code.
Task 4: Release Management
Definition: Release management involves preparing software for external release and keeping track of the system versions that have been released for customer use. It includes creating the release package (executable, documentation, configuration files) and distributing it to customers.
A release includes:
- The executable programs (compiled code)
- Configuration files
- Data files needed for installation
- Installation programs
- Electronic and paper documentation
- Packaging and associated publicity
Types of releases:
Type Description Example Major release Significant new functionality v1.0 to v2.0 Minor release Small improvements and bug fixes v2.0 to v2.1 Patch release Emergency bug fixes only v2.1 to v2.1.1 Example:
For the Online Banking System v2.0 release:
Release Package Contents: - BankingApp-v2.0.jar (executable) - config.properties (configuration file) - database_schema_v2.sql (data file) - install.sh / setup.exe (installation script) - UserManual_v2.0.pdf (user documentation) - ReleaseNotes_v2.0.txt (what changed)The release manager records: "v2.0 released to customers on 2024-01-15, deployed on Linux servers, supports UPI payments."
Summary Table
SCM Task Purpose Key Tool/Artifact Change Management Track and control change requests Change Request Form, CCB Version Management Track different versions of components Git, SVN, CVS System Building Assemble and compile components into an executable system Maven, Gradle, Ant, Make, Jenkins Release Management Prepare a release package and track what was shipped to customers Release package, release notes
Conclusion
The four tasks form a single controlled loop. A change request is raised and approved by the CCB, the developer checks out the affected components and checks in new versions under version management, the build process assembles a specific set of those versions into an executable system, and release management packages that build with its documentation and records what was delivered. Because every artefact is versioned and every change is traced back to an approved request, the team can always reproduce any past build of the Online Banking System exactly.
- 210 marksAgile DevelopmentHideAnswer
Explain the agile software development. Compare between agile software development with prototyping software development.[10]
--- Agile Development is a software development method based on iterative and incremental development in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It was mainly intende...
- 310 marksValidation and Verification TestingHideAnswer
Compare between verification and validation. Why validation is particularly difficult process? Explain with example.[10]
Verification is the process of checking whether the software system correctly implements the specifications. It asks the question: "Are we building the product right?" It ensures that the software conforms to its design documents, requir...
- 45 marksAttributes of Good SoftwareHideAnswer
What are the good characteristics of software? Explain. [5]
The attributes (characteristics) of good software are the essential qualities that a software product must possess to be considered professionally developed and fit for purpose. According to the notes, these characteristics ensure that s...
- 55 marksRequirements Engineering ProcessHideAnswer
Explain the process of requirement engineering. [5]
Requirement Engineering is a process that involves all of the activities required to create and maintain a system requirement document. The purpose of requirements engineering is to make the problem that is being stated clear and complet...
- 65 marksSoftware Process ModelsHideAnswer
Differentiate between waterfall model and spiral model. [5]
The waterfall model is a sequential approach where each fundamental activity of a process is represented as a separate phase arranged in linear order. Each phase is carried out completely before proceeding to the next. The process is str...
- 75 marksIntroduction to Quality Management and ConHideAnswer
Explain the software quality assurance with example. [5]
Software Quality Assurance (SQA) is a set of activities that ensures processes, procedures, and standards defined for a software project are implemented correctly. It is a process that works parallel to the development of software and fo...
- 85 marksRequirements SpecificationHideAnswer
Discuss the structure of SRS document. [5]
An SRS (Software Requirements Specification) document is a formal document that precisely describes all the requirements of the software system to be developed. It serves as a contract between the client and the development team. --- A s...
- 95 marksProject PlanningHideAnswer
Explain with example how COCOMO can be used for software cost estimation? [5]
The Constructive Cost Model (COCOMO) is an algorithmic software cost estimation model that predicts the effort required, total project cost, and scheduled time for a software project. It depends primarily on the number of lines of code (...
- 105 marksSoftware Process ModelsHideAnswer
Discuss with example of reuse base software engineering. [5]
Reuse-based software engineering (also called Component-Based Software Engineering - CBSE) is a software development approach that focuses on designing and building systems by integrating existing, reusable software components rather tha...
- 115 marksSoftware MaintenanceHideAnswer
Write down the software version control process. [5]
Software version control (also called configuration management or revision control) is the process of managing and tracking changes to software artifacts -- source code, documentation, configuration files, and other project components --...
- 125 marksUser TestingHideAnswer
Differentiate between Alpha testing and Beta testing. [5]
Alpha Testing is a type of testing performed to identify bugs before releasing the product to real users. It is typically conducted by QA (Quality Assurance) people or internal testers within the development organization. Beta Testing is...