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 laptops.

We
have discussed several basic architecture styles.

Why
did we use the MVC style for our computation application? In other words,
which quality attributes were enhanced and which were degraded?

How
does a layered architecture style enhance modifiability?

Describe
one architectural view of our sample computational problem? Explain why
that view is useful to the architect and to the person writing the code.

For
a particular design problem there are usually several styles that will
work. Describe the method for making a choice. What are the roles, tasks,
and work products associated with that method of decision making?

a.      Modifiability
was enhanced and latency degraded there is little communication between the
model and view so the drop in latency is acceptable

b.     The
style constrains the direction of dependencies and uses encapsulation to reduce
complexity

c.      The
developer of the model component needs a view that describes any parallelism in
the implementation of the computation

d.     The
architects make the choice of styles but other stakeholders contribute to
prioritizing the qualities, priorities must be established and mapped to the
styles to know which enhances the most qualities

Requirements
elicitation

Why
is a use case approach to requirements elicitation better than the
traditional approach of writing individual statements?

Why is
it important to include many different stakeholders in the elicitation
process?

Who
would be the highest priority stakeholder for the computational system
example? Why?

For
purposes of security there is a requirement that all login mechanisms
must use the same table of authorized users. How does this requirement
flow from requirements to architecture design and on to detailed design
and become an application of the Singleton pattern? What would happen at
each step that makes it increasingly clear that Singleton is the correct
pattern?

a.
The use case approach links direct actions by the users
to features of the product

b.
Each stakeholder has information that no one else does

c.
The client

d.
The components of security are confidentiality,
integrity and availability. As the requirement is incorporated into structures
in the architecture the need to share the file raises its level of visibility
and its scope but it must still be encapsulated.

Design

The work
breakdown structure in the definition of a process in EPF links roles,
tasks, and work products. Describe how an entry in the work break down
structure should look for using design patterns. (Not the actual
appearance but what is the information in the entry?)

Give
one risk for our computational example. Write the complete risk
statement.

&
d. Consider how Topcased maintains an xml-based
file and a graphics file for each diagram. The Visitor design pattern
could be used to implement the screen refresh operation of the graphical
editor from the contents of the xml-based file. Given the Visitor pattern
UML representation below, draw the classes and relationships that would
be created for the graphical refresh. What would the Visitor represent
and what would the Element represent?

a.
A top level heading such as “use design patterns”
would have underneath it subtasks such as “Search design pattern catalogs”,
“select candidate patterns”, “evaluate each pattern against
qualities”

b.
{Don’t remember that example well enough. For the
wireless charging …}There is a 40% chance that
the efficiency of power transfer will be below acceptable limits requiring a 6
month delay while the hardware is redesigned.

c.
The Visitor would represent the drawing algorithm and
the Elements would be the xml clauses representing individual  graphical elements

Process

Agile
development processes treat a product as a composition of several
increments. How can they ensure that they have consistent error handling
across the product?

What
is the purpose of having ports on structural architectural elements, such
as systems, processes, and threads, in AADL?

How
can traceability be ensured in a software development product?

Where
should cyclomatic complexity be used in the
software development life cycle and what guidance does it provide?

a.
There needs to be architectural views that define error
flows that run end-to-end in the system. Each increment must correctly implement
that protion of the architecture

b.
A port provides an architectural element that can
describe constraints on the flow in and out of the component such as the type
of the values being passed.

c.
Traceability can be included in the process with
explicit roles and tasks to record the transformation from one to the other.
The mapping can also be explicitly in some artifacts such as using the same
names for methods in an implementation as for ports in the architecture.

d.
Cyclomatic complexity can
first be used to evaluate dependencies in the architecture and then in the code.
It shows areas that are relatively more complex.

We are
using these tools for our work: The Topcased editors
for AADL and the use case, state, class, and sequence diagrams and EPF for
process definition.

How are
the scenarios from a use case captured in either AADL or UML(not the little ovals, the scenarios)?

We
used the state machine diagram to capture fault models after a hazard
analysis. Explain what the states and transitions represent in that use
of the model.

How
do SysML, UML, and AADL all add value to a
development project? Describe how each separately contributes and then
how they work in combination to improve a project.

The
OPEN/CLOSED principle (A design is open for extension but closed for
modification) is considered a good thing. What qualities does it enhance
and which does it degrade? Why is it a good thing?

a.
In UML a sequence diagram or an activity diagram will
show a scenario.  In AADL the flows
show a group of scenarios per flow

b.
A state represents a fault and a transition represents
arriving at a fault through some program action

c.
Notations give a concrete realization of the design
thoughts of the team.  SysML is a high level system wide representation, UML is a
more detailed design level view of the software and AADL provides the bridge bwteen the two by taking a system wide view of the software
design

d.
Enhances extensibility and flexibility and degrades complexity
by requiring a more complex architectural mechanism than a totally static
design would