• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/49

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

49 Cards in this Set

  • Front
  • Back
What is abstraction and why is it important in software design?
The suppression of some properties to provide problem simplification and structured problem solving.
What is a model and why is it important in software design?
It represents software components. It helps with:
-problem understanding
-design creation and investigation
-documentation
Explain the difference between software product design and software engineering design.
software product design is for software components and software engineering design is for the basis that the software operates on.
What is the difference between architectural and detailed design?
Architecture Design: The relationships between software components and the externally visible properties of those components

Detailed Design: Defines the procedures for program component with its corresponding data inputs and outputs.
What is the difference between mid-level and low-level detailed design?
Mid-Level: class level design, and their properties, relationships, and interactions.

Low-Level: Filling in the smallest details at the lowest levels of abstraction.
What does the acronym DeSCRIPTR-PAID stand for? What is it used for?
Decomposition
States
Collaborations
Responsibilities
Interfaces
Properties
Transitions
Relationships
-
Packaging
Algorithms
Implementation
Data structures
Write a T program to recognize all strings that start with the letter a, followed by 0 or more letters, followed by a single a.
machine AStringA
pragmas characterInput
sets
alphabet { "a", "b", "c", ... }
states
initial Start [
on { "a" } goto String;
on other goto Dead;
]
final String [
on alphabet goto String;
on other goto Dead;
]
Dead []
Make a UML activity diagram illustrating the standard processing of a compiler.
[Lexical Analyzer] -> [Parser] -> [Semantic Analyzer] -> [Code Generator]

Legend:
[] Filter
-> Pipe
What sections does a Software Architecture Document (SAD) generally contain?
1. Product Overview
2. Architecture Models
3. Mapping Between Models
4. Architectural Design Rationale
What is a quality attribute? What are quality attributes used for in software
design? Give three examples of quality attributes.
the design must uphold quality assurance standards that ensure that the product will be implemented as planned.
ex) maintainability, reusability, reliability, availability, security, performance.
What is a box-and-line diagram? What are these diagrams used for in software design?
components of a system connected by lines to show associativity. they are used for static and dynamic modeling which models interaction/relationships.
Name three heuristics for making good box-and-line diagrams.
1. only use when no other standard notation meets needs.
2. keep it simple
3. make symbols for different things obvious.
4. be consistent
5. don't mix static and dynamic elements.
What is a software design pattern (broadly construed)? What sorts of patterns are useful in software design?
The broker design pattern. Patterns that are useful increase programming efficiency, quality, reuse, communication.
Why are patterns important in software design?
promoting communication, streamlining documentation, increasing developer efficiency, supporting software reuse, and providing design ideas.
What is the uses relation and why is it important for Layered style architectures?
uses relation is when one module uses another. layered architectures use this to indicate what modules have access to.
Define the Pipe and Filter architectural style and give an example of its use.
dynamic model in which program components are filters connected by pipes.

Pipe: a conduit over which a stream of data flows
Filter: a program component that transforms a stream of input data to a stream of output data.
What is responsibility-driven design? What sorts of responsibilities need to be considered in responsibility-driven design?
inspired by the client/server model. The client may only make the requests specified, the server must answer them.
What is component and interaction codesign?
generating, evaluating, and improving designs of components and interactions together.
What is outside-in design?
A top down design approach, moving from the higher to lower levels of abstraction.
What is the difference between polling and notification?
Cohesion and efficiency is greater in notification structure.

Polling: works by having one object (observer) query another object (subject) until some subject condition becomes true.
Notification: the observer is passive until the subject notifies it that some subject condition is true.
State and explain the Law of Demeter.
ensure that objects send messages only to objects that are "directly known" to them.
Explain how the Iterator pattern is a broker pattern.
The iterator provides access to elements of a collection on behalf of a client.
Explain, compare, and contrast the Class and Object Adapter patterns.
the class adapter subclasses the adaptee object and the object adapter holds reference to the adaptee object and delegates work to it.
Compare and contrast the Proxy and Object Adapter patterns.
The proxy pattern takes care of illegitimate or routine messages without accessing the real object. While the object adapter pattern simply delegates all responsibility for processing to the supplier object.
Under what circumstances is the Façade pattern used?
To ease the interaction between a client and a sub-system of suppliers by providing a simpler interface to the sub-system.
Explain how the Mediator pattern can be considered a multiple-Façade pattern.
A request is sent to the mediator broker that then distributes calls to the Colleague objects as needed. If a colleague object needs another colleague, it interacts with the mediator to do so. The mediator acts as a multiple-facade because it is a broker between both the client and the sub-system of colleagues.
State the goal of the Composite pattern and explain how the pattern achieves this goal.
Composite allows a group of objects to be treated in the same way as a single instance of an object. By creating a superclass component that all composite classes subclass.
Explain what a factory method is.
a non-constructor operation that creates and returns class instances.
What are shallow and deep copies? Why is this a concern when making clones?
shallow copy: values stored in an entity are reproduced in the copy.

deep copy: references to the entities in the original composite are placed in the copy.
When is the Prototype pattern used?
It can be used when clients need to be decoupled from products.
Draw a class diagram illustrating the static structure of the Abstract Factory
pattern.
Client -> Factory <- ConcreateFactory createProduct() : Product
.|
\/
Product <- ConcreateProduct
Does every Factory class contain a factory method? Why or why not?
Yes, a factory class just acts as a container for a factory method. decoupling the client and the products produced by the factory.
Is every use of a factory method an instance of the Factory Method pattern? Why or why not?
No, the factory method can be used without the use of the pattern. This is because the factory method can be used as a broker between one object and a client rather than using a factory class or pattern to accomplish this task.
Is the Abstract Factory pattern a specialization of the Factory Method pattern, or vice-versa? Support your answer.
Yes, it is a specialization. The Abstract Factory pattern generalizes the Factory Method pattern because the generator class has several factory methods producing several different but usually related products. It allows for enforcing constraints on which classes need what.
Can any class be made into a Singleton? Explain why not, or how to do it.
Yes, set the constructor to private or protected, include a factory method to obtain a unique instance of the class.
Draw the static structure of the Visitor pattern.
Client -> Element <- ConcreteElement accept(Visitor : Object)
.|
\/
Visitor -> ConcreteVisitor visit(ConcreteVisitor : Object)
Explain who is responsible for object structure traversal in the Visitor pattern.
The element's accept methods make recursive calls accepting visitor objects and instantiating the concrete visitor object operations on each of the elements successive element accept calls.
What are the phases of behavior in a reactor pattern?
Setup Phase: The Client registers the Reactor with the Target.

Operational Phase: The Reactor responds to event notifications from the Target.
Explain what functors, function objects, and function classes are. Why are they necessary?
Functor / Function Object: An object that encapsulates an operation.
Function Class: The class that is encapsulating the operation.

To allow treating operations as values in object-oriented languages that do not support this facility.
Is every use of a function class an instance of the Command pattern?
Yes, Since the Command pattern follows the basic principals of how a function class should be used. A Command pattern is used every time a function class is.
Can a single class be an observer of two different subject or observable classes?
If so, how can it distinguish notifications from different subjects?
No, each subject needs a separate observer.
Name and define the design principles we have studied in this class.
Principle of Feasibility: A design is acceptable only if it can be realized.
Principle of Adequacy: Designs that meet more stakeholder needs and desires, subject to constraints, are better.
Principle of Economy: Designs that can be built for less money, in less time, with less risk, are better.
Principle of Changeability: Designs that make a program easier to change are better.
What is the difference between syntax, semantics, and pragmatics? What role do these play in specifying module interfaces in software design?
Syntax: what are valid combination's of lexical elements in the language.
Semantics: the meaning of a statement.
Pragmatics: how messages are used in context to accomplish a certain task.
Each service provided must account for the syntax semantics and pragmatics of its operations.
Discuss what scenario profiles are, how they are generated using utility trees, and how they are used to evaluate software architectures.
scenario profiles are a set of scenarios used to evaluate whether a product is likely to meet a set of requirements.
Derived from a utility tree, where the subtrees are profiles and the leafs are scenarios.
Architectural alternatives are evaluated by "walking through" each scenario.
Explain and illustrate the generic design process, discuss the difference between analysis and resolution, and discuss the role of iteration in design resolution.
O -> Software Product Design -> Software Engineering Design -> O
Analysis: Breaking down a design problem to understand it.
Resolution: Solving a design problem.
Iteration is used to insure the correct resolution is achieved.
Discuss four ways to implement lexical analyzers or scanners for a translation program. Discuss the advantages and disadvantages of each of these approaches.
INSERT
Explain what a controller is, what the three main types of control styles are, and how difference control styles can be recognized in a design.
A controller is a program component that makes decisions and directs other components.
Centralized: a few controllers make all significant decisions.
Delegated: decision making is distributed throughout.
Dispersed: decision making is spread widely throughout.
Explain the differences between internal and external iteration control, and built-in and separate iteration mechanisms. What are the advantages and disadvantages of each?
External control: the client sets up a loop and asks the iteration mechanism to supply collection elements one at a time for processing.
Internal control: the client passes an operation to the iteration mechanism, which then uses a loop to apply the operation to each collection element.
Built-in control is less flexible, prone to error, not easy to simultaneously iterate through collection.
separate control allows for more control and manipulation over the iteration.
Discuss the similarities and differences between the Command and Observer patterns. Argue for or against the claim that the Command pattern is simply a special case of the Observer pattern.
Command and Observer patterns both adhere to the Reactor pattern principles. They both decouple parts of their structure, allow better reuse, increase maintainability, and decompose clients.