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;
109 Cards in this Set
- Front
- Back
List the categories of the "FURPS+" model
|
Functional, Usability, Reliability, Performance, and Supportability requirements
|
|
In the FURPS model, ____ is concerned with characteristics such as aesthetics and consistency in the user interface
|
usability
|
|
In the FURPS mode, _____ is concerned with characteristics such as availability (the amount of system "up time"), accuracy of system calculations, and the system's ability to recover from failure.
|
reliability
|
|
In the FURPS model, _____ is concerned with characteristics such as throughput, response time, recovery time, start-up time, and shutdown time.
|
performance
|
|
In the FURPS model, _____ is concerned with characteristics such as testability, adaptability, maintainability, compatibility, configurability, installability, scalability, and localizability
|
supportability
|
|
The + in FURPS helps us to remember constraints such as:
|
design reqs, implementation reqs, interface reqs, physical reqs
|
|
Three main perspectives for characterizing the quality attributes of a software product (SQA article)
|
Product revision (ability to change).
Product transition (adaptability to new environments). Product operations (basic operational characteristics). |
|
Software development can thought thought of as an ____, _____ process that can be represented using a _____ model.
|
integrated, iterative, spiral
|
|
(T/F) For custom systems, the costs of software maintenance usually exceed the software development costs.
|
true
|
|
The process of software evolution is driven by requests for changes and includes: (3 things)
|
change impact analysis, release planning, and change implementation
|
|
______, such as the notion that change is continuous, describe a number of insights derived from long-term studies of system evolution
|
Lehman's laws
|
|
Software engineering is concerned with ______ and ______ software to make it easier to understand and change
|
restructuring and redocumenting
|
|
2/3 of software costs are _____
|
evolution costs
|
|
Changing the software after delivery is called
|
"software maintenance"
|
|
What is the difference between evolution and servicing when it comes to software maintenance?
|
Evolution: significant changes to the software architecture
Servicing: relatively small, essential changing |
|
2/3 of software costs are _____
|
evolution costs
|
|
Process of change identification and system evolution are _____ and continue throughout the life cycle of sys
|
cyclic
|
|
Changing the software after delivery is called
|
"software maintenance"
|
|
What problems arise when the dev team uses agile but evolution team uses plan-based:
|
detailed documentation to support evolution is not there; no definitive statement of
the sys requirements that can be modified as changes are made |
|
What is the difference between evolution and servicing when it comes to software maintenance?
|
Evolution: significant changes to the software architecture
Servicing: relatively small, essential changing |
|
Process of change identification and system evolution are _____ and continue throughout the life cycle of sys
|
cyclic
|
|
What problems arise when the dev team uses agile but evolution team uses plan-based:
|
detailed documentation to support evolution is not there; no definitive statement of
the sys requirements that can be modified as changes are made |
|
Why is it harder and more expensive to make changes in the future?
|
1. team stability
2. poor development practice 3. staff skills (often unfamiliar with app domain) 4. program age and structure (as changes are made, program structure tends to degrade; as they get older, become harder to understand) |
|
(T/F) Most new business software systems are developed from the ground up
|
False.
most new business software systems are now developed by reusing knowledge and code from previously implemented systems |
|
There are many different ways to reuse software, some of which include:
|
range from the reuse of classes and methods in libraries to the reuse of complete application systems
|
|
What are some advantages of software reuse?
|
lower costs, faster software development, and lower risks. System dependability is increased, and specialists can be used more effectively by concentrating their expertise on the design of reusable components
|
|
_____ are collections of concrete and abstract objects that are designed for reuse through specialization and addition of new objects
|
application frameworks
|
|
Describe what a software product line is
|
related applications that are developed from one or more base applications. A generic system is adapted and specialized to meet specific requirements for functionality, target platform, or operational configuration
|
|
______ is concerned with the reuse of large-scale, off-the-shelf systems. These provide _____. Can be configured by building a single one, or by integrating two of these.
|
COTS product reuse.
a lot of functionality and their reuse can radically reduce costs and development time |
|
______ are examples of large-scale COTS reuse. You create an instance of one by configuring a generic system with info about the customer's business processes and rules
|
Enterprise Resource Planning systems (ERPs)
|
|
List some problems with COTS-based reuse:
|
1. lack of control over functionality and performance
2. lack of control over system evolution 3. need for support from external vendors 4. difficulties in ensuring that systems can interoperate |
|
List some costs/problems associated with software reuse:
|
1. significant cost associated with understanding whether or not a component is suitable for reuse
2. increased maintenance costs 3. lack of tool support 4. not-invented-here syndrome 5. creating, maintaining, and using a component library |
|
List some factors to know when planning reuse
|
1. development schedule for the software
2. the expected software lifetime 3. background, skills, and experience of the development team 4. the criticality of the software and its non-functional requirements 5. the app domain |
|
three classes of frameworks
|
1. system infrastructure frameworks
2. middleware integration frameworks (.NET, Java Beans) 3. enteprise application frameworks: concerned with specific application domains such as financial systems |
|
List the patterns of MVC
|
Observer pattern, strategy pattern, and composite pattern
|
|
______ is a reuse-based approach to defining, implementing, and composing loosely coupled independent components into systems
|
component based software engineering
|
|
What is a component
|
a software unit whose functionality and dependencies are completely defined by a set of public interfaces. Components can be composed with other components without knowledge of their implementation and can be deployed as an executable unit
|
|
Components can be implemented as _____ or as _______
|
programs units that are included in a system
external services that are referenced from within a system |
|
A component model defines a set of standards for components, including:
|
interface standards, usage standards, and deployment standards
|
|
______ is the process of wiring components together to create a system. Some of these include:
|
component composition
sequential composition, hierarchical composition, and additive composition |
|
Difference between CBSE reuse and software process for original software dev are:
|
1.user requirements are initially developed in outline, stakeholders are flexible indefining their requirements; need a complete set of requirements so that you can identify as
many components as possible for reuse 2. requirements are refined and modified early in the process depending on the components available 3. further component search and design refinement activity after the sys architecture has been designed 4. development is a composition process where the discovered components are integrated; involved integrating the components with the component model infrastructure |
|
a ______ is a general reusable solution to a commonly occurring problem within a given context in software design.
|
design pattern
|
|
Implementing the ________ pattern lets clients treat individual objects and compositions uniformly
|
composite pattern
|
|
The ______ pattern specifies how to evaluate sentences in a language
|
interpreter pattern
ex: expression ::= plus | minus | variable | number plus ::= expression expression '+' minus ::= expression expression '-' variable ::= 'a' | 'b' | 'c' | ... | 'z' digit = '0' | '1' | ... '9' number ::= digit | digit number |
|
the _______ pattern is a way of separating an algorithm from an object structure on which it operates
|
visitor
|
|
A ______ is an object that provides a simplified interface to a larger body of code, such as a class library
|
facade or facade pattern
|
|
When should you use an adapter, and when should you use a facade?
|
An Adapter is used when the wrapper must respect a particular interface and must support a polymorphic behavior.
On the other hand, a facade is used when one wants an easier or simpler interface to work with. |
|
A ________ defines the program skeleton of an algorithm. One or more of the algorithm steps can be overridden by subclasses to allow differing behaviors while ensuring that the overarching algorithm is still followed.
|
template method pattern
|
|
The ______ pattern is a design pattern that translates one interface for a class into a compatible interface. It allows classes to work together that normally could not because of incompatible interfaces, by providing its interface to clients while using the original interface.
|
the adapter pattern
|
|
(T/F) we will never find a process that allows us to design software in a perfectly rational way
|
true.
however, we can fake it |
|
What are the elements of the rational design process?
|
A. Establish and document requirements
B. Design and document the module structure C. Design and document the module interfaces D. Design and document the uses hierarchy E. Design and document the module internal structures F. Write programs G. Maintain |
|
What is wrong with documentation today?
|
1. Poor organization
2. Boring prose 3. Confusing and inconsistent terminology 4. Myopia |
|
Testing and debugging depend on _____
|
knowing common errors
|
|
What is an assertion and give an example
|
Statements about a program's executions that are either true or false. This is used in contract-based development.
Examples: Variable is not nil v1 < v2 |
|
Describe precondition and postcondition assertions
|
A precondition assertion is an assertion that must be true before a function is executed in order for it to work.
A poscondition assertion is an assertion that is true after a function |
|
Describe invariant, class invariant, and loop invariant
|
An invariant is an assertion that is always true
A class invariant is a precondition and a postcondition of every method in the class. A loop invariant is an assertion that is true before the loop, after the loop, and every time through the loop |
|
When should you use assertions?
|
During testing and debugging. They should not be executed in production code. They should be written incrementally.
|
|
What are the goals of quality measurements?
|
what is causing poor quality?
where are we spending all our time on software development? how accurate are out estimates? What is the most cost-effective way to improve our quality? |
|
What are the software quality factors?
|
Know the triangle on slide 6 of quality metrics lectures.
They are: Correctness, reliability, efficiency, integrity, usability, maintainability, flexibility, testability, portability, reuseability, interopability |
|
What are the differences between correctness vs. functionality
|
Correctness:
-Does the system meet the documented requirements Functionality: -Does the system meet the actual requirements? Are the written requirements the actual requirements of the user? |
|
What are metrics for "correctness"?
What are metrics for "functionality"? |
Correctness:
# tests for each req # tests that pass # outstanding bugs Functionality: -ratings for a survey -average time to complete task on a prototype |
|
Methods for evaluating quality should be:
|
simple and computable, empirically and intuitively persuasive, repeatable, and programming language independent
|
|
What are metrics for portability?
|
-# of platforms that system runs on
-Amount of work to make system run on another system -# of modules (lines of code)that are platform-independent |
|
What are metrics for reliability?
|
-Days system has run without crashing
-Mean time between failures -Time to recover from failure -Frequency of backups |
|
What are metrics for supportability?
|
-Can be installed in 15 minutes by first-time user
-90% of new developers can fix first bug in first week on the job -90% of changes can be made by modifying only one module -Every module/class/method has a comment |
|
In cost measurements, ____ is most important cost.
|
labor
|
|
Give the mathematical equation for productivity
|
amount produced / cost
|
|
CORBA uses ____ to define the interface component.
COM has a ______for interfaces .NET ____ allows languages to interoperate |
IDL (interface description language)
binary standard standard run time |
|
In the COM developed by MSoft, an interface is _______
|
an array of pointers to functions
|
|
Give examples of WWW as a component system
|
one server can reuse services from other servers by embedding links in pages (MapQuest, Amazon, PayPal)
XML SOAP REST |
|
What are some architectures that are based on components?
|
ASP, JavaBeans, Servlets, Eclipse plugins
|
|
GIve the mathematical equation for reuse benefit (reuse metric):
|
RB(S) = (CostNoReuse(S) - CostWithReuse(S)) / CostNoReuse(S)
|
|
Define cost savings from reuse (formula):
|
cost savings = cost without reuse - costs associated with reuse - cost of software as delivered
|
|
Where do the costs of reuse come from?
|
-royalties and licenses
-training -support and enhancement of components -Domain analysis and modeling -Increased documentation for reuse -Reuse repository |
|
(T/F) COTS will thrive in any size market
|
False.
requires a big market |
|
(T/F) reusable software is more expensive than non-reusable software
|
true.
you must reuse the software many times for it to pay off |
|
(T/F) Best to develop for internal use, then internal reuse, then to sell to others
|
true
|
|
List some differences between internal reuse and COTS
|
-COTS requires marketing
-COTS requires training programs -COTS requires very good documentation |
|
Reusable software is developed by _______
|
iteration
|
|
What are the benefits of an iterative approach to designing components/reusable software?
|
-Cost is spread out, income comes in quickly
-Teaches you the domain, prevents costly mistakes -Must know how to refactor -Can be traumatic for the first customer (lots of changes, etc) |
|
What are design patterns and pattern languages
|
Design patterns - expert solutions to recurring problems in a certain domain
Pattern languages - a collection of patterns, guiding the users through the decision process in building a system |
|
Describe the structure of the composite pattern
|
Composite and component have the exact same interface
-enumerating children -Component has empty iterator -Only composite adds/removes children |
|
What is an application example that uses the composite pattern? Draw a diagram for it
|
Book example or eclipse UI (SWT)
Slide 20 lecture 20 |
|
Compose objects (composite pattern) into tree structures to represent _______
|
part-whole hierarchies
|
|
Composite lets clients treat individual objects and compositions of _______
|
objects uniformly
|
|
The interpreter pattern distributes an algorithm over a ________
|
class hierarchy
|
|
When should you use a centralized algorithm
|
when you need to:
-change entire algorithm at once -look at entire algorithm at once -work with only a few kinds of components -change algorithm, but not add new classes of components |
|
What is one disadvantage of the visitor pattern?
What is one disadvantage of the interpreter pattern |
Visitor: adding a new kind of parse node requires adding a new function to each visitor
Interpreter: writing a new interpretation requires adding a method to every class |
|
What patterns are often used with Interpreter/Visitor patterns?
|
Composite - to make a tree
Iterator - to make traversal more abstract Template method - to put reusable code in abstract class |
|
An adapter object will make the _____ act like it has the ____ interface
|
adaptee
target |
|
Give an example of an adapter
|
IJavaElement is an adapter to IResource
|
|
To support an adapter, which interface does the class have to support?
|
IAdaptable
|
|
Template methods separates the _____ from the parts that vary with each subclass
|
invariant part of an algorithm
|
|
When is a good situation to use a template method?
|
when some classes have a similar algorithm, but it is a little different for each class
|
|
What are some benefits of a facade?
|
-hide complexity of system
-make a single API instead of a set of classes -allows subsystem to change without affecting clients |
|
(T/F) Patterns reduce complexity
|
False.
patterns add complexity. only use them if you need them |
|
Due to short term memory, how many new ideas should documentation add at a time?
|
7 +- 2
|
|
(T/F) "Everybody is responsible" is a good way to go about documentation
|
False.
means "nobody is responsible" |
|
What is the intent of the Observer pattern?
|
When one object changes state, all the dependent objects are notified and updated.
Reduces coupling between objects |
|
What are the key players in the observer pattern and what do they do?
|
Subject - knows its observes; defines interface for notifying the subjects of changes to the object
Observer - defines an updating interface ConcreteSubject - sends notifications to observers when state changes ConcreteObserver - implements observer interface to keep state consistent with subject |
|
How do you fix cycles of dependence (ie classes C and D both depend on each other)?
|
put them in the same package
|
|
What is one example from Eclipse that uses the Observer pattern?
|
SWT. Subject - button, Observer - SelectionListener()
|
|
What is the intent of the command pattern?
|
Encapsulate a request as an object command
|
|
When should you use the command pattern?
|
when you need to tell the program to execute the command later.
i.e. sending command objects over a network or saving them in a collection class |
|
Give an example of eclipse using the command pattern
|
-Every refactoring is a command (performChange returns the undo change)
-Copy/paste/cut and most of the menu actions that change the source code |
|
What is the intent of the strategy pattern
|
make a family of algorithms, encapsulate each one, and make them interchangeable
|
|
When should you use the strategy pattern?
|
-Many related classes differ in behavior. strategies can configure a class with many behaviors
-Need to use the same algorithm with a slight variation -Hides complex, algorithm-specific data structures from the client -Eliminate conditional branches and put them in their own separate strategy class |
|
What trade offs are associated with the strategy pattern?
|
PROS:
-Eliminates large conditional statements -Easier to keep track of different behavior because they are in different classes -A variety of implementations for the same behavior CONS: -Increase the number of classes |
|
What is an example of when to use the strategy pattern?
|
When you have an array and at run-time you want to decide which sort algorithm to use. Encapsulate each different sort algorithm using strategy pattern.
|