CpSc
871

MidTerm
Exam

Name________________________________

Answer any FOUR of the five questions. Place a large X on
the page for the question you are not answering. If you answer all five, I will
eliminate the one on which you did the best. All questions are counted the
same: 25 points each. Be certain to answer ALL parts of the questions you
select to answer. Answer the question that is asked and then stop. You are
allowed the notes you have taken and printouts but no electronics such as laptops,
phones, etc.

We
have discussed several basic architecture styles.

The SDK
begins with a default architecture of MVC. Why
is that a valid assumption?
(Be specific)

AADL
uses the “annex” concept. Give two reasons why. What software
engineering properties does this enhance for the language?

The
plug-in architectural style is used to describe the connection of an app
to the platform it is extending. How does this appear in the structure of
an Android app?

Give
one complete quality attribute scenario for your app. Explain how this
scenario affected the architecture.

a.      Apps
require interaction with the ser which is the
strength of MVC

b.     Annex
modularizes the definitions. Each annex is a cohesive unit that by its name
tells whether you need it and whether a behavior you are about to add belongs
or not.

c.      The
callback functions such as onClick establish the
connection and the structured xml data that is read and used at startup time.

d.     Answer
varies but must include all fields.

Requirements

Use
cases, feature models, and English sentences are all used to communicate
requirements. What are the strengths and weaknesses of each notation?

During
requirements elicitation we collect requirements stakeholder by
stakeholder. How does the requirements analysis task regroup and modify
the requirements?

Who
would be the highest priority stakeholder for your app? Why?

The
architect decides on the style(s) to be used. What information in the
requirements contributes to that decision?

a.
Use cases relate directly to the functional properties
of the system and to
several stakeholders but they do not integrate similar scenarios
into one algorithm. Feature models allow for requirements for a set of products
and allow mixing functional and non-functional req. but they do not tie to
stakeholders so are not good for traceability. English sentences are flexible
and can be used for everything but they are often vague and ambiguous.

b.
The analysis groups similar functions together so that
we can trace a
stakeholder’s requirements to the implementation of the
product.

c.
Answer varies

d.
Mainly the non-functional requirements but within a
specific domain some architecture patterns are used more than others.

Design

How
is the Liskov Substitutability Principle useful
in a software product line?

Give
one risk for your app. Write the complete risk statement. Describe one
design decision that could mitigate some of that risk.

&
d. The Adapter pattern relates to making the interfaces of modules
compatible. If we are using a design by contract strategy, what
responsibilities does the Client have with respect to the interface of
the Target and what responsibilities does the Target have? How do the
responsibilities of the Target affect the Adapter and Adaptee?

a.
Generalization in which one subtype can be substituted
for the abstract base type provides one variation mechanism.

b.
Answer varies but must include the event, probability
of occurrence, and consequence.

c.
The Client checks the precondition for the request
method. The Adapter is a direct substitute for the Target so same
responsibilities at least.

Process

Development
of all types of software products go through the same basic steps:
requirements, architecture, design, implementation, and testing.  How are the processes different
between a life critical product and an entertainment product?

In
OSATE we create AADL descriptions of an architecture
and then apply tools to either that architecture definition or to an
instance of the architecture. What can we analyze about the generic architecture
definition and what is different about what can we analyze about an
instance?

The
Software Process Engineering Meta-model defines roles, tasks, workproducts, and guidance as the fundamental
elements needed to define a process. Give examples of each in the process
for the building of a life critical app.

Tools
such as cyclomatic complexity can be used
during architecture design and implementation. What is the same about its
use at these two different points in the development process and what is
different?

a.
The amount of detail such as the level of test coverage
changes. The outputs for each step are developed more specifically to ensure
clear communication.

b.
The generic is static and so structure and structural
qualities can be analyzed while the instance is dynamic and both the structure
and the dynamic properties such as performance can be analyzed.

c.
Role – a reviewer of design documents; tasks
– conduct architecture evaluation; workproduct
– the architecture model being reviewed

d.
The same basic graph traversal algorithms can be used
but with different interpretations.

Fundamentals

The
act of abstracting involves removing detail. Relate this to using AADL to
represent the architecture of a product.

The
state machine formalism is used in many ways including in the error annex
of AADL and in controller designs in MVC. What qualities about the
architecture does the use of this formalism emphasize?

Liskov’s Substitutability Principle is a
fundamental principle in object-oriented programming. How does this
Principle enhance flexibility?

The
modules in a product must be coupled to some degree for the product to
perform its functions, but too much is a bad thing. Likewise a module
must be cohesive but not to the point that every method calls every other
method. What criteria does the designer use to tradeoff coupling and
cohesion between modules to know when they have the best design?

a.
The AADL syntax provides a specification without
providing an implementation.

b.
Moving from one discrete configuration of data to
another due to a specific action.

c.
By allowing substitutions without rewriting the logic
or recompiling the program.

d.
Modularity and complexity