Practice Exam questions for SE Flashcards
SE revision (11 cards)
QA: 1. Consider the integration and process model shown below for reuse-oriented software engineering. Explain why it is essential to repeat the requirements engineering activity in the process
Requirements engineering is repeated because discovered components may not meet original needs. The process model includes software discovery and evaluation, followed by requirements refinement, where specs are adjusted based on what reusable parts are available. This loop continues until a practical, component-based solution is defined, ensuring alignment between available components and system goals.
QA: 1b(possible scenario) Consider the integration and process model shown below for incremental development model engineering. Explain why it is essential to repeat the requirements engineering activity in the process
Requirements evolve with each increment. As software is built and validated, user feedback leads to refined needs. The model shows this through interleaved specification, development, and validation, repeated with each new increment until the final version is achieved.
QA: 2. Suggest why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements engineering process
User requirements define what users need in non-technical terms; system requirements specify how the system will meet those needs in technical detail. Making this distinction during development helps tailor communication to different audiences, prevents misunderstandings, and ensures user needs are accurately translated into implementable specifications.
QA: 3. Think about the email systems you use, Model the classes that might be used in such a system implementation to represent a mailbox and an email message
+—————————-+
Mailbox
+—————————-+
| - messages: List<EmailMessage> |
\+----------------------------+
| +addMessage(msg)| |+deleteMessage(id) |
| +getMessages() |
\+----------------------------+</EmailMessage>
+—————————-+
| EmailMessage |
+—————————-+
| - subject: String |
| - body: String |
|timestamp:DateTime
| - sender: String |
| - receiver: String |
| - isRead: boolean |
+—————————-+
| +markAsRead() |
| +reply() |
+—————————-+
| - owner: String |
Mailbox |
QA: 4. There are 4 common associations between classes; what are they, briefly describe and represent each as a UML diagram involving 2 classes them
Association→
Relationship where a class uses or refers to another
Aggregation◇→
A “has-a” relationship. The part can exist independently of the whole. Library “has-a” book
Composition◆→
A strong “contains-a” relationship. Part’s lifecycle depends on the whole. House “contains-a” room
Inheritance▲→
A subclass inherits from a superclass. “Is-a” relationship. Dog “is-a” animal.
QA: 5. Software engineering is not only concerned with issues like system heterogeneity, business and social change, trust, and security, but also with ethical issues affecting the domain. Give some examples of ethical issues that have an impact on this domain
- Privacy and Data Protection =
Engineers design systems to collect, store and transmit user data(location, names). Failure to do so (without consent) violates the privacy rights. In EU, GDPR mandates data protection; violations lead to heavy fines. Mobile health app sending personal data to 3rd parties without clear user consent
- Bias and Fairness in Algorithms =
Algorithms trained on biased data reinforce inequality, moreso in high-stakes systems. Discrimination may not be intentional yet harmful to underrepresented or vulnerable groups. Developers are ethically responsible for testing and mitigating bias in AI/ML systems. AI hiring tool favouring male candidates due to historical hiring patterns in training data.
- Cybersecurity Responsibility =
Engineers must protect users and systems from any vulnerabilities. Negligence in doing so can expose users to theft, fraud, data leaks. Security isnt simply technical - its ethical; users place trust in systems to look after their data. software failing to encrypt passwords, leading to a data breach affecting millions.
QA: 6. Draw a simple sequence diagram showing the interactions involved when a student registers for a course in a university. Courses may have limited enrolment, so the registration process must include checks that places are available. Assume that the student accesses an electronic course catalogue to find out about available courses. Use the time line headings: ‘:Student’ with components ‘:CourseCalatogue’ and ‘:Course’ as below
sequence diagram - use lines to go down for left right and bottom, bars on the side lines to show processes, box to show looping
getAvailableCourses() request from :Student to :CourseCatalog
registerForCourse() goes from :Student to :Course
checkAvailability() is an internal method inside :Course, so its drawn as a self-message
registrationConfirmed is the response back to the :Student
QA: 7. What is the most important difference between generic software product development and custom software development? What might this mean in practice for users of generic software products?
- Generic software = built for general use - sold to many customers
- Custom software = built for specific client - based on exact needs
Implications of generic
a) Users cannot influence requirements or future updates
b) May include features they dont need or lack features they do need
c) Generic software faster to deploy lower in cost
QA: 8. Agile development methodologies like Scrum easily accommodate the evolution of software from the development phase into the maintenance phase. Justify this statement 8 marks
Work is done in short sprints - changes can be added continuously
Maintenance is integrated onto ongoing cycles, not a separate phase
Bugs + new requirements are added and prioritised
Scrum involves the Product Owner, who reflects real user needs
Reflect and adapt at end of each cycle
Web app gets real-user feedback = team adds bug fixes and improvements to backlog = they are then estimated, prioritised and implemented next sprint
QA: 9. Briefly discuss why it is usually cheaper in the long run to use software engineering methods and techniques for software systems. 12 marks
Using SE methods enables: upfront investment, long-term savings through fewer bugs, reusable code, easier updates. Prevention + structure = lower total cost of ownership
QA: 10. Explain how the principles underlying agile methods lead to the accelerated development and deployment of software. 10 marks
It does it by breaking down work into small, manageable iterations that deliver working software early and often. Agile reduces delays, enables continuous progress, speeds up delivery.
For example, instead of waiting 6 months to release a game, you may take 4-5 weeks implementing features and releasing a demo version of the product, getting real user feedback and iterating accordingly.