Software Engineering Final IST 356
Which is not a type of cohesion for Object-Oriented classes?
Data
What factors argue against developers testing their own code?
Developers have a vested interested in "proving" that their code is correct, and they may miss obvious errors since they are so close to the code. This is similar to a writer proof-reading their own work.
Which of the following is not one of the five design class types
Entity classes
"Good enough" software is always what you should strive for.
False
At the architectural design level, the details of method implementations are
False
Design patterns are not applicable to the design of object-oriented software?
False
During architectural design, the internal data structures and processing details of each component are represented at a level of abstraction that is close to code.
False
Infrastructure components or elaborated component-level classes should be named with names drawn from the problem domain, and have meaning to all stakeholders.
False
It may not be possible to predict the right architectural design choices before building a new product.
False
Since modularity is an important design goal it is not possible to have too many modules in a proposed design.
False
Technical reviews cannot really be applied to the architectural design.
False
Testing creates quality in a software product
False
The architectural description for a software project is explicitly visible in the source code used to implement it.
False
The best representation of a system architecture is an operational software prototype
False
The deployment design elements specify the build order for the software components.
False
The more a component depends on other concrete components (rather than on abstractions such as an interface), the less difficult it will be to extend.
False
The relative costs to find and repair an error or defect decrease dramatically as we go from prevention to detection to internal failure to external failure costs.
False
Top down integration eliminates the need for complex stubs.
False
We begin testing with the whole application, and then work our way inwards, ultimately testing components
False
When using structural design methodologies the process of stepwise refinement is unnecessary.
False
Explain how effective modular design is achieved through functional independence of the individual modules?
Functional independence of modules is achieved by making modules single-minded (high cohesion) and preventing excessive interaction (low coupling) with other modules or system elements. Independent modules are easier to develop, maintain, and test, because the impact of side effects is reduced (as is the propagation of errors). This also makes it easier to perform parallel implementation of modules.
Describe the software quality dilemma.
If you produce a software system that has terrible quality, you lose because no one will want to buy it. If on the other hand you spend infinite time, extremely large effort, and huge sums of money to build the absolutely perfect piece of software, then it's going to take so long to complete and it will be so expensive to produce that you'll be out of business anyway."
Why are lots of easy-to-run unit tests and regression testing so important in an agile software development model?
In agile, we expect change to happen often. So, we need a way to make sure that changes that we make have not broken something that was already working.
Describe the meaning of the Open-Closed Principle in Object-Oriented component- level design.
You should specify the component in a way that allows a class to be extended (withing the functional domain that it addresses) without the need to make internal (code or logic-level) modifications to the component itself.
The Open-Closed Principle states that:
a module [component] should be open for extension but closed for modification.
Which of the following cannot be considered architectural components of a software system?
algorithms
Which of the following is used to model the way in which the software interacts with entities external so its boundaries?
architectural context diagram
Which of the following are areas of concern in the design model?
architecture, data, interfaces
__________ is conducted at one or more end-user sites.
beta testing
Which are the constrained logical constructs from which any program can be performed? (Select all that apply)
condition, repetition, sequence
Which of the following is not a characteristics common to all design methods?
configuration management
__________ is the extent to which a program satisfies its specifications and fulfills the customer's mission objectives.
correctness
Which design model elements are used to depict a model of information represented from the user's view?
data design elements
Which of the following architectural styles is best applied when input data is to be transformed through a series of computational or manipulative components into output data?
data flow
What types of abstraction are used in software design?
data, procedural
Which is not a common view of components in a software system?
data-centric view
When should an independent test group (ITG) become involved in the development process?
during analysis and design
__________ is the degree to which operations and information can be located or initiated.
efficiency
Reliability is the degree to which the software satisfies stated needs
false
Testing is synonymous with debugging
false
Which is not one of Garvin's five different points of view regarding quality?
financial view
Cohesion is a qualitative indication of the degree to which a module can be written more compactly.
focuses on just one thing
Designs should strive for
high cohesion and low coupling.
Which of these are characteristics of a good design?
implements all requirements in the requirements model, provides a complete picture of the software.
__________ focuses on the design and construction of the software architecture.
integration testing
In McCall's Quality Factors, __________ is the extend to which access to software or data by unauthorized persons can be controlled.
integrity
Which design model is equivalent to the detailed drawings of the access points and external utilities for a house?
interface design
__________ is the effort required to couple one system to another.
interoperability
Coupling is a qualitative indication of the degrees to which a module can be written more compactly.
is connected to other modules and the outside world
Which is the following architectural design work product would most likely be preferred by managers or marketing experts?
language metaphor
Which of the following, according to the text, describes a view of components that relies on existing software components or design patterns?
process-related view
The importance of software design can be summarized in a single word.
quality
_________ ensures that new errors have not been introduced when code is modified.
regression testing
Where does the context for the architectural design come from?
requirements model
__________ is the degree to which the software handles bad input data or inappropriate user interaction.
robustness
__________ makes heavy use of testing techniques that exercise specific paths in the code, to ensure complete coverage and maximum error detection.
unit testing
_________ refers to the set of tasks that ensure that the software that has been built is traceable to customer requirements.
validation
__________ refers to the set of tasks that ensure that software correctly implements a specific function.
verification
An archetype is an abstraction, similar to a class, that represents one element of system behavior.
True
Architectural design is often done by design specialists, rather than the software engineers who will be actually building the software.
True
Architectural styles can be combined.
True
As the amount of communication and collaboration increases (i.e., as the degree of "connectedness" between classes increases), the complexity of the system also increases.
True
Classes that change together belong together -- i.e., they should be packaged cohesively.
True
Ideally, each component should be described according to its concept, content, and context.
True
In Object-Oriented design, it is good practice for a component that uses a base class to continue to function properly if a class derived from the base class is passed to the component instead.
True
In agile development, the architecture of the system may be developed iteratively.
True
In practice, many software architectures suffer from unnecessary complexity, driven by the inclusion of unnecessary features or nonfunctional requirements.
True
Information hiding makes program maintenance easier by hiding data and procedure from unaffected parts of the program.
True
It is important to keep some record of why architectural design decisions were made.
True
Many client-specific interfaces are better than one general-purpose interface.
True
Most agile developers agree that it is important to focus on architectural design before implementation if the system is complex.
True
Software design are refactored to allow the creation of software that is easier to integrate, easier to test, and easier to maintain
True
Software engineers are sometimes frustrated by the subjective nature of measuring quality
True
Software quality is often influenced as much by management decisions as it is by technology decisions.
True
Software that does not exhibit high quality is easier to hack.
True
Testing affirms the quality of a software product
True
The boundary between content and function is often blurred when Web-based systems and applications are considered.
True
The developer is always responsible for testing the individual units (components) of a program.
True
There is no definitive answer to the question, "how do we know that we've tested enough?"
True
We should write our unit tests before we write the code
True
Which of the following can be used to represent the architectural design of a piece of software?
All of the above
Which design model is equivalent to a set of detailed drawings for each room in a house?
Component level design
__________ is a qualitative measure of the degree to which classes are connected to one another.
Coupling
Garvin says that quality software should be "durable." What does this mean?
"Can the software be maintained (changed) or corrected (debugged) without the inadvertent generation of unintended side effects? Will changes cause the error rate or reliability to degrade with time?"
Which design equivalent to the floor plan of a house
Architectural design
Why is architectural design important?
Architectural design provides developers and other stakeholders with a big picture view of the system, and allows us to make key design decisions before implementation begins. Architecture "constitutes a relatively small, intellectually graspable model of how the system is structured and how its components work together."
One of the challenges facing widespread reuse of software components is _________.
Architectural mismatch
______ is a process that emphasizes the design and construction of computer-based systems using reusable software "components."
CBSE
Describe the principle of information hiding as it applies to software design.
The principle of information hiding implies that modules only share information with each other on a "need to know" basis to achieve some specific software function. Hiding enforces the procedural constraints to both the module procedural detail and any data structures local to the module.
Consider the "Keep It Simple, Stupid" (KISS) principle. Why should the architectural design be kept as simple as possible, while still solving the problem?
This can be boiled down to the "economy" architectural consideration: the best software is uncluttered and relies on abstraction to reduce -- not increase -- unnecessary detail.