Software Engineering 4 - Multiple choice questions Flashcards
1) Which of the following statements accurately reflect the SOLID principles in object-oriented design?
(a) The Single Responsibility Principle states that a class should have only one reason to change, focusing on a single functionality.
(b) The Open/Closed Principle suggests that classes should be open for extension but closed for modification.
(c) The Liskov Substitution Principle implies that subclasses should be ignored during the design of a superclass.
(d) The Interface Segregation Principle advocates for larger, multipurpose interfaces for flexibility.
(e) The Dependency Inversion Principle emphasizes that high-level modules should not depend on low-level modules but on abstractions.
(a), (b), (e) are correct.
(a) The Single Responsibility Principle states that a class should have only one reason to change, focusing on a single functionality.
(b) The Open/Closed Principle suggests that classes should be open for extension but closed for modification.
(e) The Dependency Inversion Principle emphasizes that high-level modules should not depend on low-level modules but on abstractions.
2) What is the primary objective of Recovery Testing?
(a) To verify the system’s ability to withstand and successfully recover from possible failures.
(b) To check the system’s performance under peak load conditions.
(c) To ensure the system’s compatibility with different operating systems and hardware.
(d) To validate the accuracy of data input and output through the system.
(a) To verify the system’s ability to withstand and successfully recover from possible failures.
3) In the context of the Model-View-Controller (MVC) architecture pattern, which of the following statements are correct?
(a) The Model component is responsible for handling the data and business logic of the application.
(b) The View component is responsible for data storage and management.
(c) The Controller component manages user input and interacts with the Model to render the final output.
(d) In MVC, the View component should directly manage and modify the application data.
(e) The Model component serves as the interface for data manipulation and is separated from the user interface
(a), (c), and (e) are correct.
(a) The Model component is responsible for handling the data and business logic of the application.
(c) The Controller component manages user input and interacts with the Model to render the final output.
(e) The Model component serves as the interface for data manipulation and is separated from the user interface
4) In the context of UML (Unified Modeling Language), which of the following statements are true about sequence diagrams?
(a) Sequence diagrams primarily focus on representing the architecture of a system.
(b) Sequence diagrams depict the interaction between objects in a time sequence
(c) Sequence diagrams are used to show the static structure of the objects in a system
(d) Sequence diagrams illustrate how objects interact with each other and in what order
(e) Sequence diagrams can be used to explore the logic of a complex operation, function, or procedure
(b), (d), and (e) are correct.
(b) Sequence diagrams depict the interaction between objects in a time sequence
(d) Sequence diagrams illustrate how objects interact with each other and in what order
(e) Sequence diagrams can be used to explore the logic of a complex operation, function, or procedure
5) When designing tests for an object class in a system that utilizes inheritance, which of the following aspects should be considered to ensure complete test coverage? Select two or three correct answers.
(a) Testing only the methods in the derived class, ignoring inherited methods.
(b) Testing all operations associated with an object, including those inherited from parent classes.
(c) Setting and interrogating all object attributes, including those inherited.
(d) Ignoring the object’s state changes during testing.
(e) Exercising the object in all possible states, considering the impact of inheritance on these state
(b), (c), and (e) are correct.
(b) Testing all operations associated with an object, including those inherited from parent classes.
(c) Setting and interrogating all object attributes, including those inherited.
(e) Exercising the object in all possible states, considering the impact of inheritance on these state
6) In UML class diagrams, what does an association relationship represent?
a. A similarity or shared traits between two classes, indicating they are part of the same hierarchy.
b. A dependency between two classes, where changes to the definition of one class may affect the other class.
c. A generalization relationship where one class is a parent class of the other, indicating inheritance.
d. A relationship between two classes that shows how instances of one class are connected to instances of the other, representing a link between them in the modeled system.
(d) is correct
d. A relationship between two classes that shows how instances of one class are connected to instances of the other, representing a link between them in the modeled system.
7) What characterizes the Waterfall model of software development?
a. It is a non-linear, iterative approach that allows for phases of the project to overlap and repeat as needed.
b. It is a flexible approach that encourages frequent reassessment and adaptation of strategies throughout the development process.
c. It is a sequential design process, where progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, deployment, and maintenance.
d. It emphasizes continuous delivery and continuous integration throughout the development process, with a focus on automated testing.
(d) is correct
c. It is a sequential design process, where progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, deployment, and maintenance.
8) What is the primary purpose of a Burn-down Chart in Agile project management?
a. To display the total project budget versus the actual spending over time.
b. To show the number of features or user stories added to the product backlog over time.
c. To illustrate the rate at which work is completed and how much work remains to be done within a Sprint or project.
d. To track the number of bugs or defects identified and resolved throughout the development process
(c) To illustrate the rate at which work is completed and how much work remains to be done within a Sprint or project.
1-1) Identify, from among the following, the correct statement.
(a) One of the main challenges Software Engineering facing today is the requirement of most software systems to work with a multitude of homogenous systems
(b) Legacy systems are custom developed software systems for the legal domain
(c) Software does not wear-out in the traditional sense of the term, but software does tend to deteriorate as it evolves
(d) Since software is essentially intangible it is relatively easy to manage software projects
(e) With the advent of component-based software assembly, we find that only less than 20% of today’s software is still custom built.
The correct statement is:
(c) Software does not wear-out in the traditional sense of the term, but software does tend to deteriorate as it evolves.
This refers to software aging, where software can become harder to maintain and more prone to defects as it evolves due to factors such as accumulated changes, lack of proper documentation, and the challenge of adapting to new environments.
1-2) What is the fundamental reason that software cannot be considered to be engineered?
(a) It is designed by humans and therefore flawed
(b) Software engineering (as opposed to other forms of engineering, such as Civil) is an art - not a science
(c) The discipline is relatively new, say in comparison to bridge building that is an activity that has millennia of practice
(d) None of these are true. Software Engineering is a truly rigorous discipline
(e) The complexity of systems and their interaction continues faster than we can understand it.
(e) The complexity of systems and their interaction continues faster than we can understand it.
This is the fundamental reason why software cannot always be considered to be engineered in the traditional sense. Software systems can become highly complex, and the speed at which new technologies, components, and interactions evolve often outpaces our ability to fully comprehend and predict their behavior. This rapid complexity growth makes it difficult to apply traditional engineering principles in the same way as fields like civil or mechanical engineering, where systems are generally more stable and predictable.
1-3) Read the following paragraph and identify the correct statement.
Imagine that you were recently hired as a software engineer to a company that specializes in aircraft navigation control software. While orientating yourselves to the company’s work practices, you observe that they in fact do not conduct a few tests that they should in order to comply with the relevant safety standard. When you inquire about this from the project manager, he dismisses it saying that those tests are really unnecessary (and take an unreasonably long time to conduct, as well as being superfluous) and that they have managed with the other tests for so long, without any problems.
(a) You should immediately resign from the company and file a complaint with the relevant standard institution
(b) You should do nothing and let the matter slide.
(c) Although you are new to the company, and you hardly know anything about the internal processes and politics, you should insist on the company changing its work practices immediately; failing which you threaten to report the matter.
(d) Since you are new to the company, and you are unfamiliar with the internal processes and politics, you should first find out more about the issue and its background.
(e) None of the above statements is correct.
(d) Since you are new to the company, and you are unfamiliar with the internal processes and politics, you should first find out more about the issue and its background.
This approach is the most sensible because, as a new employee, you may not have enough context or information about the company’s processes, practices, or reasons behind certain decisions. It’s important to gather more information before taking any action. Understanding the background can provide clarity on whether the project manager’s view is a norm in the company or if it is an isolated instance of non-compliance. Once you have more knowledge, you can then decide how to proceed.
1-4) Which property of the rapid prototype is not important?
(a) The speed with which it can be developed
(b) The speed with which it can be modified
(c) Its ability to determine the clients’ real needs
(d) The insights that the design team can gain from it, even if they are of the how not to do it variety
(e) Its internal structure.
(e) Its internal structure.
In rapid prototyping, the focus is more on quickly creating a version of the system that can be tested, iterated on, and refined based on feedback, rather than ensuring the internal structure is optimized or well-architected. The internal structure of the prototype is typically not a priority since the goal is to quickly demonstrate the concept and gather feedback, not to develop a final, robust system.
1-5) An example of the risk involved in software development is
(a) Key personnel may resign before the product is complete
(b) The manufacturer of critical components (e.g. the hardware associated with a real-time system) may go bankrupt
(c) Technology changes may render the product obsolete
(d) Competitors may market a fully functional lower-cost equivalent package
(e) All of these are risks involved in software development.
(e) All of these are risks involved in software development.
Explanation: Each of the options listed represents a potential risk that can negatively impact a software development project:
(a) Key personnel resigning can cause delays or a loss of critical knowledge, affecting the project’s progress.
(b) If a critical component provider goes bankrupt, the project may lose access to necessary resources or hardware.
(c) Rapid technology changes can make the software obsolete before it is even released, especially if the software is based on outdated technology.
(d) Competitors releasing similar products at a lower cost can undermine the market position of the software being developed.
Therefore, all of these factors are valid risks in software development.
1-6) Prototyping is appropriate for
(a) Data-oriented applications
(b) Applications with emphasis on the user interface
(c) Applications, which are highly interactive
(d) Development teams who lack domain experience
(e) All of the above
(e) All of the above
Explanation:
Prototyping is a development technique where an initial version of the software (prototype) is built to help understand requirements and test functionality. It is particularly useful in various scenarios:
(a) Data-oriented applications: Prototypes can help explore how data is processed and managed, making it useful for data-oriented applications.
(b) Applications with emphasis on the user interface: Prototypes help to quickly design and test user interfaces, allowing for feedback and adjustments based on user interaction.
(c) Applications that are highly interactive: Since prototyping emphasizes interaction and iterative feedback, it works well for applications that require frequent user interactions, such as web applications or mobile apps.
(d) Development teams who lack domain experience: Prototyping allows development teams to quickly build and refine systems, helping them learn and adapt as they get more familiar with the domain.
Thus, prototyping is a flexible technique that fits all of these scenarios.
1-7) Which of the following could be a deliverable for a software system?
(a) Source Code
(b) Reference Manual
(c) Requirements Document
(d) User Guide
(e) All the Above
The correct answer is:
(e) All the Above
Explanation:
In software development, various deliverables are produced during the lifecycle of a project. These deliverables include:
(a) Source Code: The actual code written for the software system is one of the key deliverables.
(b) Reference Manual: A technical manual that provides detailed information on the system’s architecture, components, and how to interact with the software.
(c) Requirements Document: A document that defines what the software is supposed to do, outlining the functional and non-functional requirements.
(d) User Guide: A manual designed for end-users that explains how to use the software effectively.
All of these are essential deliverables in the context of software development, making “All of the Above” the correct answer.