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

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;

61 Cards in this Set

  • Front
  • Back
What is Procedural Programming?
Software is organized around the notion of procedures.
What is Object Oriented Programming?
Organizing procedural abstractions in the context of data abstractions.
Define "object" and its porperties and behaviors.
a chunk of structured data in a running software system.

Properties: represent its state.

Behavior: how it acts and reacts. May simulate the behavior of an object in the real world.
Define "class"
Is a unit of abstraction in an object oriented (OO) program.
define "Instance Variable"
variable defined inside a class corresponding to data present in each instance.
What is the difference between variables and objects?
A variable refers to an object. An object can be referred to by several different variables at the same time.
Define "class variable"
a Class variable's value is shared by all instances of a class. Also called a static variable.
Define "operation"
a higher-level procedural abstraction tha specifies a type of behavior.
Define "method"
a procedural abstraction used to impement the behavior of a class.
Define "polymorphism"
a property of object oriented software by which an abstract operation may be performed in different ways in different classes.
Define "over-riding"
a method would be inherited, but a subclass contains a new version instead.
What are Immutable objects?
Instance variables may only be set when an object is first created. Cannot change instance variables
Define "Framework"
reusable software that implements a generic solution to a generalized problem.
Name two types of frameworks
Horizontal and Vertical
What is a horizontal framework?
it provides general application facilities that a large number of applications can use.
What is a vertical framework?
Also called an application framework, it is more "complete" but still needs some slots to be filled to adapt it to specific application needs.
Describe the Client-Server architecture
a distributed system is a system in which computations are performed by separate programs, they're normally running on separate pieces of hardware and they cooperate to perform the task of the system.
What does the server do in the client-server architecture?
it is a program that provides a service for other programs that connect to it using a communcation channel.
What does the client do in the client-server architecture?
it is a program that accesses a server (or several servers) to obtain servers. A server may be accessed by many clients simultaneously.
Name some advantages of client-server systems.
The work can be distributed among different machines.

The clients can access the server's functionality from a distance.

The client and server can be designed separately.

They can both be simpler.

All the data can be kept centrally at the server.

Data can be distributed among many different geographically-distributed clients or servers.

The server can be accessed simultaneously by many clients.

Competeing clients can be written to communicate with the same server and vice versa.
Name some alternatives to the client-server architecture
Have a single program on one computer that does everything.

Have no communication.

Have some mechanism other than client-server communication for exchanging information.
What is a "thin" client system?
Client is made as small as possible.

Most of the work is done in the server.

Client easy to download over the network.
What is a "fat" client system?
As much work as possible is delegated to the clients.

Server can handle more clients.
Define "Domain Analysis"
The process by which an SE learns about the domain to better understand the problem.
name 3 benefits of performing domain analysis
Faster development.

Better system.

Anticipation of extensions.
What is a requirement?
A statement about the proposed system that all stakeholders agree must be made true in order for the customer's problem to be adequately solved.
Name two types of requirements
Functional and non-functional.
Define Functional requirements
Describe what the system should do.

What imputs the system should accept.

What outputs the system should produce.

What data the system should store that other systems might use.

What computations the system should perform.

The timing and synchronization of the above.
Define the three main Nonfunctional requirements
1. Categories reflecting: usability, efficiency, reliability, maintainability and reusability.

2. Categories constraining the environment and technology of the system.

3. Categories constraining the project plan and development methods.
Name the typical 4 architectural layers
1. Presentation layer
2. Application logic - Problem domain objects
3. Application logic - Service objects
4. Storage
Define "Use case"
A use case is a typical sequence of actions that a user performs in order to complete a given task.
What should a good set of use cases do?
Cover the full sequence of steps from the beginning of a task until the end.

Describe the user's interatction with the system.

should be written so as to be as independent as possible from any particular user interface design.

only include actions in which the actor interacts with the computer.
name 5 benefits of bbasing software development on use cases.
1. The can help to define the scope of the system

2. They are often used to plan the development process

3. They are used to both develop and validate the requirements

4. They can form the basis for the definition of testcases

5. They can be used to structure user manuals
Define "scenario"
A scenario is an instance of a use case. It expresses a specific occurrence of the use case.
Pause right now and make a use case. See an old quiz or something.
Draw something!
Define "Extensions" of use cases
Used to make optional interactions explicit or to handle exceptional cases.
Define "Generalizations" of use cases
Much like superclasses in a class diagram. A generalized use case represents several similar use cases.
Define "Inclusions" of use cases
Allow one to express commonality between several different use cases. They are included in other use cases and represent the performing of a lower-level task with a lower-level goal.
note 5 use case formats and describe each one briefly.
1. High level - describes a process in 2-3 sentences. Usually during initial requirements and project scoping to quickly understand the degree of complexity and functionality of a system.

2. Expanded - more detailed and has typical course of events.

3. Primary - major common processes

4. Secondary - minor or rare processes

5. Optional - processes that may not be tackled.
Random facts on use cases
Good to describe use cases independent of implementation.

Be as narrative as possible.

A use case could have more than one scenario.

State success scenarios.

Document failure scenarios.

Agree on a "format style" for use case description.

Name a use case starting with a verb in order to emphasize that it is a process.
What is the objective of a UML?
to assist in software development. It is not a methodology.

A model should use a standard notation, be understandable by clients and users, lead software engineers to have insights about the system, provide abstraction.

Models are used to help create designs, to permit analysis and review of those designs, as the core documentation describing the system.
Name and describe the 5 main symbols shown on class diagrams
1. Classes - represent the types of data themselves.

2. Associations - represent linkages between instances of classes.

3. Attributes - are simple data found in classes and their instances.

4. Operations - represent the functions performed by the classes and their instances.

5. Generalizations - group classes into inheritance hierarchies.
What is an aggregate and when do you use it?
Aggregations are special associations that represent 'part-whole' relationships.

You can mark an association as an aggregation if the parts "are part of" the aggregate or the aggregate "is composed of" the parts.

When something owns or controls the aggregate, then they also own or control the parts.
What is an Interface (in terms of UML)?
An interface describes a portion of the visible behavior of a set of objects. It is similar to a class, except it lacks instance variables and implemented methods.

"what vs. how"
What is a composition (in terms of UML)?
A composition is a strong kind of aggregation. If the aggregate is destroyed, then the parts are destroyed as well.
What is the Domain model (in terms of UML)?
The system domain model omits many classes that are needed to build a complete system.

It can contain less than half the classes of the system and should be developed to be used independently of particular sets of user interface classes and architectural classes.
What is the System model (in terms of UML)?
The comple system mode includes the system domain model, user interface classes, architectural classes and utility classes.
Discuss Design Patterns
Provides a scheme for refining the subsystems or components of a software system, or the relationships between them.

Describes a commonly recurring structure of communicating components that solves a general design problem within a paricuar context.

Medium scale patterns.

Independent of programming language or paradigm.
Discuss Behavioral Patterns
Concerned with algorithms, assignment of responsibilities between objects, patterns of objects and classes and the communcation between them.

Characterize complex control-flow that is difficult to follow at run-time.

Lets you concentrate on how objects are connected.

Use inheritance to distribute behavior between classes.
Discuss the Observer Pattern
Intent: defines a one-to-many dependencey between objects so that when one object changes state, all its dependents are notified and updated automatically.

Aka: Dependents, publish-subscribe

Motivation: maintaining consistency between related objects.
List the 5 participants in design patterns
1. Subject - knows its observers and provides an interface for attaching and detaching Observer objects.

2. Observer - defined an updating interface for objects that should be notified of changes in a subject.

3. ConcreteSubject - sotres state of interest to ConcreteObserver objects and sends a notification to its observers when state changes.

4. ConcreteObserver - maintains a reference to a ConcreteSubject object. Implements the Observer updating interface to keep its state consistent with the subject's.

5. Collaborations - ConcreteSubject notifies its observers whenever a change occurs that could make the observer's state inconsistent with its own. After being informed, ConcreteObserver may query the subject for information to reconcile its state.
Discuss the Iterator Pattern
Intent: provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.

Aka: Cursor

Motivation: same as the intent, traverse in many different ways, more than one traversal pending on the same list.
List 3 applicabilities for the Iterator Pattern
1. To access the aggregate object's contents without exposing the internal representation.

2. To support multiple traversals of aggregate objects.

3. To provide a uniform interface for traversing different aggregate structures (polymorphic iteration).
List the 4 participants in the Iterator Pattern
1. Iterator - defines an interface for accessing and traversing elements.

2. ConcreteIterator - implements the Iterator interface.

3. Aggregate - defines an interface for creating an Iterator object.

4. ConcreteAggregate - Implements the Iterator creation interface to return an instance of the proper ConcreteIterator.
Discuss Creational patterns
Abstract the instantiation process.

Make system independent of how objects are created, composed and represented.

Class creational pattern uses inheritance to vary the class that is instantiated.

Object creational pattern delegate instantiation to another object.
What is the motivation for creational patterns?
Systems evolve to depend more on object composition than class inheritance.

Emphasis shifts from hardcoding a fixed set of behaviors toward defining a smaller set of fundamental behaviors that can be composed into any number of complex ones.
What are the 4 recurring themes in creational patterns?
1. They all encapsulate knowledge about which concrete classes the system uses.

2. They hide how instances of these classes are created and put together.

3. All the system at large knows about the objects is their interfaces as defined by abstract classes.

4. Flexibility in terms of what gets created, who creates it, how it gets created, and when it gets created.
Discuss the Abstract Factory pattern.
Have a reusable framework that needs to create objects.

Class of objects depends on the specific application.

A programmer can add a new application-specific class into a system that uses the framework by retaining the benefits of the framework, not changing the framework, and letting the framework create objects for classes it doesn't know about.
Discuss the Singleton pattern
Intent: Ensure a class only has one instance. Provide a global point of access to it.

Motivation: one printer spooler for printers, one file system, one window manager, global variable makes it accessible (only) and make the class responsible for keeping track of its sole instance.
Discuss Structural patterns.
Concerned with composing classes and objects to form larger structures.

Structural class patterns: generalization - specialization used to compose interfaces or classes.

Structural object patterns: compose objects to realize new functionality. Composition can be changed at run-time!
Name a couple design patterns
composite

Proxy

Facade

MVC design