• 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/109

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;

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.