Software Engineering Mid-Term Exam Answers
Section 1: Multiple-Select Questions (20 Marks)
1. Key Characteristics of Good Software (2 Marks)
•
•
•
Maintainability
Dependability
Efficiency
2. Software Engineering Statements (2 Marks)
•
•
It applies engineering principles to software development
It involves software design, development, testing, and maintenance
3. Process Models with Iterative Development (2 Marks)
•
•
Agile methodologies
Spiral model
4. Agile Development Statements (2 Marks)
•
•
Agile allows for iterative and incremental development
Agile focuses on customer collaboration
5. Extreme Programming (XP) Practices (2 Marks)
•
•
Test-driven development
Pair programming
6. Scrum Team Roles (2 Marks)
•
•
•
scrum Master
product Owner
development Team
7. Non-Functional Requirements (2 Marks)
•
•
the system must support 100 concurrent users
the response time must be under 2 seconds
8. Requirements Elicitation Methods (2 Marks)
•
•
•
Interviews
Surveys
Observation
9. UML Diagrams Representing Dynamic Behavior (2 Marks)
•
•
Sequence diagrams
Activity diagrams
10. Sequence Diagram Statements (2 Marks)
•
•
They show the flow of control between objects
They focus on object interaction over time
Section 2: Short Answer Questions (30 Marks)
11. Primary Goal of Software Engineering (3 Marks)
The primary goal of software engineering is to develop high-quality, reliable, and cost-effective
software systems that meet user requirements. This involves applying systematic, disciplined,
and quantifiable approaches to software development, maintenance, and evolution.
12. Software Maintenance Expense (3 Marks)
Software maintenance is often more expensive than initial development because it involves
complex activities like understanding legacy code, fixing unanticipated bugs, adapting to
changing requirements, and managing technical debt accumulated during initial development.
13. Validation vs. Verification (3 Marks)
•
•
Verification asks: "Are we building the product right?" - Checking if the software meets
specified requirements and design specifications.
Validation asks: "Are we building the right product?" - Ensuring the software meets
actual user needs and provides the intended functionality. 14. Agile Development
and Customer Satisfaction (3 Marks)
Agile improves customer satisfaction by:
•
•
•
enabling frequent customer collaboration
delivering working software incrementally
allowing rapid response to changing requirements
•
Providing transparency in development process
15. Purpose of Backlog in Scrum (3 Marks)
The product backlog is a dynamic, prioritized list of features, requirements, enhancements, and
fixes that represents the changes to be made to the product in future releases. It serves as the
single source of work for the Scrum Team.
16. Importance of Requirements Engineering (3 Marks)
Requirements engineering is critical because it:
•
•
•
Defines the scope and objectives of the software project
Ensures alignment between stakeholder expectations and software functionality
Reduces the risk of project failure due to misunderstood requirements
17. Functional vs. Non-Functional Requirements (3 Marks)
•
Functional Requirements: Specific behaviors the system must perform (e.g., "User can
transfer money between accounts securely").
•
Non-Functional Requirements: Quality attributes describing system characteristics (e.g.,
"System must process transactions within 2 seconds under peak load").
18. Benefits of UML Diagrams (3 Marks)
UML diagrams provide:
•
•
•
•
Visual representation of system architecture
Communication tool for stakeholders
Documentation of system design and interactions
Blueprint for implementation
19. Test-Driven Development (TDD) Benefits (3 Marks)
TDD improves software quality by:
•
•
•
•
Ensuring code is testable from the start
Providing immediate feedback on code functionality
Creating comprehensive test coverage
Encouraging modular and loosely coupled design 20. Advantages of
Automated Testing (3 Marks)
Automated testing offers:
•
•
•
•
Consistent and repeatable test execution
Faster feedback on code changes
Ability to run extensive test suites quickly
Reduced human error in testing process
Section 3: Practical Application Questions (50 Marks)
21. Banking System Requirements (5 Marks)
Functional Requirements:
1. Users must be able to transfer money between their own accounts
2. System must validate account details before transaction
3. Provide transaction confirmation with unique transaction ID
Non-Functional Requirements:
1. System must process transactions within 2 seconds
2. Maintain 99.99% uptime
3. Encrypt all financial transaction data
22. Mobile Shopping App - Process Model (5 Marks)
I would choose the Agile/Scrum process model because:
•
•
•
•
•
Allows iterative development for a dynamic mobile app environment
Enables rapid feature implementation and quick market response
Supports easy incorporation of user feedback
Flexible for frequent UI/UX improvements
Manages changing market requirements effectively
23. Improving Agile Process with Late Requirements Changes (5 Marks)
Strategies to improve the process:
1.
2.
3.
4.
5.
Implement a more robust change management protocol
Conduct frequent backlog refinement sessions
Use story pointing and velocity tracking to assess impact of changes
Improve communication with product owner
Establish clear change request evaluation criteria
24. Product Filtering User Story - Acceptance Criteria (5 Marks)
Acceptance Criteria:
1. Users can set minimum and maximum price range
2. Filtered results update in real-time without page reload
3. Clear visual indication of active price filter
25. UML Diagrams for Large Software System (5 Marks)
Recommended UML Diagrams:
1.
2.
3.
4.
5.
Class Diagram - Show system structure and relationships
Sequence Diagram - Illustrate interaction between system components
Use Case Diagram - Represent system functionality from user perspective
Activity Diagram - Model business processes and workflows
Component Diagram - Show system's architectural components 26. Improving
Waterfall Model Project Completion (5 Marks)
Recommended Changes:
1.
2.
3.
4.
5.
Introduce iterative elements from Agile methodology
Implement more frequent milestone reviews
Use parallel development tracks
Enhance risk management processes
Adopt more flexible requirement management
27. Airline Reservation System - Non-Functional Requirements (5 Marks)
Prioritized Non-Functional Requirements:
1.
2.
3.
4.
5.
Performance: Handle 10,000+ concurrent users
Security: PCI DSS compliance for payment processing
Reliability: 99.99% system uptime
Scalability: Support global user base
Response time under 2 seconds for booking operations
28. Class Diagram (10 Marks)
Conceptual Class Diagram Structure:
Potential Design Improvements:
1.
2.
3.
4.
5.
Add validation for email and address fields
Implement soft delete for orders
Include timestamp with timezone
Create separate billing/shipping address classes
Add product inventory management
29. Introducing Test-Driven Development (TDD) (5 Marks)
Implementation Strategy:
1.
2.
3.
4.
5.
Conduct comprehensive TDD workshop
Start with small, manageable modules
Pair programming for knowledge transfer
Set up continuous integration environment
Gradually increase test coverage
30. Diagnosing Web Application Performance (5 Marks)
Diagnostic and Improvement Approach:
1.
2.
3.
4.
5.
Conduct performance profiling
Analyze server-side and client-side metrics
Check database query optimization
Implement caching mechanisms
Review and minimize unnecessary network requests