Comp 684 Final Exam Review
Be able to define and discuss the following terms and concepts:
Architecture Business Cycle (ABC)
Architectural structures (views)
General quality attribute scenario
Source of stimulus
Concrete quality attribute scenario
Business quality attributes
Time to market
Cost and benefit
Projected lifetime of the system
Integration with legacy systems
Architecture quality attributes
Correctness and completeness
Prevent ripple effects
Defer binding time
Recovering from attacks
Architectural patterns (styles)
Pipes and filters
Main program and subroutine
The Design Structure Matrix (DSM)
Attribute-Driven Design (ADD)
IEEE 1471 Standard (and its elements)
Be able to explain or describe:
How architectures are influenced by:
The developing organization
The background and experience of the architects
The technical environment
How architectures affect business goals
Creating the business case for the system
Understanding the requirements
Creating or selecting the architecture
Communicating the architecture
Analyzing or evaluating the architecture
Implementing based on the architecture
Ensuring conformance to an architecture
What makes a good architecture
Why software architecture is important
How it helps with stakeholder communication
How early design decisions affect the software development
What is its value is as a transferable re-usable model
Why different architectural views are needed
What a quality attribute scenario is
What the six parts of a scenario are
What the possible values are for each of the six parts for each quality attribute
Possible tactics to use to address specific quality attributes
The steps in the ADD process
Choose the module to decompose
Refine the module according to the following steps
Choose the architectural drivers
Choose an appropriate architectural pattern
Instantiate modules and allocate functionality
Define interfaces of the child modules
Verify and refine use cases and quality scenarios
Repeat the above steps for every module that requires decomposition
How a team structure is formed based on the architecture’s decomposition
What is meant by and what is the importance of building a skeletal system
How to build a Design Structure Matrix
The concepts of complexity and modularity with respect to architectural design
The concepts of cohesion and coupling with respect to architectural design
The uses of architectural documentation
How to choose the relevant views to document
What to include when documenting a view
Glossary of terms
Sample Short Answer Questions:
1. Aside from creating the architecture itself, describe one other architectural activity.
2. Explain what is meant by the Architecture Business Cycle (ABC).
3. Software architecture is often described as “high-level design”. What is wrong with this definition?
4. Identify and explain one reason software architecture is important.
5. What is a process structure (view) useful for?
6. In a quality attribute scenario what is meant by the response?
7. For a performance scenario what would be typical response measures?
8. What is meant by the business quality attribute of time to market?
9. What is meant by the architecture quality attribute of conceptual integrity?
10. Identify a specific tactic to use for fault recovery to achieve high availability in a system.
11. One tactic to use when trying to achieve high performance is to manage the resource demand. Explain one way to do this.
12. What is meant by an architectural pattern?
13. When documenting a view, what is meant by the primary presentation?
14. Identify one piece of information you might include in the architecture background portion of your documentation of a view.
15. Identify one important use of architectural documentation.
Sample Essay Questions
1. Why is it important to have an architect as part of the requirements engineering team?
2. List and describe the main activities associated with the job of a software architect.
3. Software architectures are influenced by the stakeholders, the development organization, the background and experience of the architect, and the technical environment. For each of these influences, explain specifically how the architecture is affected. Give examples to illustrate your points.
4. It is claimed that the quality attributes defined for a software product drive the software architecture of that product (at least, if done correctly). Explain why this is the case. Give examples showing potential problems that could result from ignoring, or failing to recognize, required quality attributes.
5. Describe the Design Structure Matrix (DSM) and explain how creating and utilizing one can aid in dealing with complexity in the software architecture process. Since modularity can help to manage complexity, how can a DSM help us to correctly modularize our architecture?
6. Even with significant advances in software engineering processes over the past several years, achieving quality in products today seems to be as big a problem as it ever was. In your opinion (especially based on what you have learned in this course), what is the reason for this? What are the barriers to achieving quality, and what specific actions would you recommend be taken within a software development organization to improve the quality of the software produced?
7. Suppose you were the architect working on a software engineering project to develop a medical information processing system. Assume that the stated goal of this system was to manage the health records of patients for a large health maintenance organization. Among the identified functions of the system were capabilities for doctors to access patient history online, especially in emergency situations, to add new information based on examinations and laboratory tests, and to allow patients access to their own medical information. It is also recognized that this system will potentially need to upload and download information from a National Health Information Management System in the future. Regarding nonfunctional requirements little information is currently available. With regard to security, the preliminary requirements specification only said that the system should be secure, with regard to performance it stated that the system should respond quickly in emergency situations, and with regard to usability it said that the system should be user friendly. As the architect you decide to meet with the stakeholders of the system to better understand the nonfunctional (quality) requirements. What questions would you ask to help in establishing the important quality attributes of the system to be built? Based on your limited understanding of this system what architectural style or styles do you think would be appropriate to apply and why?
8. Suppose you worked for a software development company that, although they followed a sound software engineering process, did not really have any individual(s) designated as architects, nor did they really engage in any activity resembling architectural design. How would you try to convince your management that it would advantageous to add architectural design as a fundamental activity in the development process and to designate one or more individuals as software architects? That is, development an argument that would explain the advantages of conducting architectural design and/or the disadvantages of not doing so, as far as the good of the company was concerned.
9. Explain how the Attribute-Driven Design process is different from approaching architecture design using a Design Structure Matrix and give an example to show how different architectural designs might result for the same problem depending on which approach is taken.
10. Consider the case of an ATM (Automatic Teller Machine) system. Using the general security scenario shown below, identify one specific security requirement and develop an appropriate concrete quality attribute scenario for it. Then identify useful tactics that you could use to satisfy this requirement.
Portion of Scenario
Individual or system that is correctly identified, identified incorrectly, of unknown identity who is internal/external, authorized/not authorized with access to limited resources, vast resources
Tries to display data, change/delete data, access system services, reduce availability to system services
System services; data within system
Either online or offline, connected or disconnected, firewalled or open
Authenticates user; hides identity of the user; blocks access to data and/or services; allows access to data and/or services; grants or withdraws permission to access data and/or services; records access/modifications or attempts to access/modify data/services by identity; stores data in an unreadable format; recognizes an unexplainable high demand for services, and informs a user or another system, and restricts availability of services
Time/effort/resources required to circumvent security measures with probability of success; probability of detecting attack; probability of identifying individual responsible for attack or access/modification of data and/or services; percentage of services still available under denial-of-services attack; restore data/services; extent to which data/services damaged and/or legitimate access denied