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

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;

146 Cards in this Set

  • Front
  • Back

Waterfall Process: Emphasis, Weakness, Style

Emphasizes:


Simplicity, Traceability




Weakness:


Requirement design mistakes costly




Style:


Highly controlled, High Ceremony

Spiral Process: Emphasis, Weakness, Style

Emphasis:


Risk management


Exploring alternatives




Weakness:


Exploring alternatives Costly




Style:


Moderately controlled, Moderate Ceremony

Agile Process: Emphasis, Weakness, Style

Ephasis:


Flexibility, Immediacy




Weakness:


Continual rework costly




Style:


Rapid low control, Low ceremony

traceability

document relationships between requirements and system elements

immediacy

getting some sort of working system to the customer as fast as possible

rework

redesigning the architecture/refactoring the code

controlled

conformance to process is highly valued even if it slows project

ceremony

how much analysis, documentation and planning involved

iterative

WHOLE system working PRETTY well, then add feature in system

incremental

get PART of system REALLY well, then add more

T/F


You can mix/match iterative and incremental with spiral/waterfall/agile?

true

When is incremental good to use?

Most of a system's value is tightly concentrated in small # of components

When is iterative good to use?

When you need to implement most of a system BEFORE you can get much value

Waterfall process: What are the 5+1 steps?

Requirements analysis


+1 Prototyping


Design


Implementation


Testing


Operation

Spiral process: LOTS o steps

Generic each time:


draft, analyze, plan, establish




For each


requirements, architecture, program designs




Finally


implementation, testing, operation



Agile process: 7 steps

1 Cust provides stories


2 do spike to evaluate & control risk


3 prioritize stories, plan


4 write/run/modify unit tests


5 implement, can reiterate unit testing


6 system and acceptance tests


7 operation



When is waterfall used?




a. small systems, fully understood


b. larger systems with vague req and many alternatives


c. rapidly create small but useful, and expand from there

a.

When is Spiral Used?




a. small systems, fully understood


b. larger systems with vague req and many alternatives


c. rapidly create small but useful, and expand from there

b.

What are Functional Requirements?

Tell what the system can do



How can functional requirements be presented?

Written as unstructured text


-External Viewpoint (requirements definition)


-System Viewpoint (requirements specification)




Written as structured use cases

What is Requirements Definition?

Stated from an external viewpoint


emphasis on role of the system

What is Requirements Specification?

Stated from internal viewpoint


emphasis on how system works

Requirements Definition




External Example: Sprinklers

"The sprinkler never runs on rainy days"

Requirements Specification




Internal Example: Sprinklers

"The controller will not engage the water pump any time the ambient water sensor is triggered"

Define Non-Functional Requirements

How well the system should do stuff




-unstructured text


-written in terms of Fit Criteria

What is Fit Criteria?

-Based on customer needs


-Exactly how good does system need to be?


-Related to Quality Attributes

Here are the Quality Attributes:

-Reliability -Portability


-Efficiency -Reusability


-Integrity -Interoperability


-Usability -Flexibility


-Testability -Maintainability

Fit Criteria Example: Sprinklers

"The system must be compatible with the following ambient water sensors X, Y, Z"

What is a Use Case

Structured requirement definition




Describes a way to use the system. More formal and precise.

What is in a basic Use Case?

Use Case Name


Actor


Pre-conditions


Post-conditions


Flow of Events



UML Class diagram

Shows:


Entities, attributes, relationships




*=unlimited cardinality


Lines w/o arrow = Reference


Lines with OPEN arrow = Specialization


Lines with REG arrow = Dependencies



ERD diagram: Entity Relationship Diagram

Shows:


Entities, attributes, relationships




Diamond lines show Relationships


One box per entity


Numbers on lines show Cardinality

Dataflow Diagram

Ovals: Function provided by the system


Rectangles: Actors


Half-Rectangle: Data Store


Arrow in = Parameter


Arrow out = output




*Often clearer 1 diagram per use-case

Message Sequence Diagram

One box per entity


Dashed vertical line = lifeline of entity


Arrows: Messages, arrow back if return val


Conditionals: Written with Brackets []


Loops: Shaded box

State Chart: Change over time

One box per state


Arrow: Possible state transition


(Annotated: To show when trans occurs)


Filled Circle: Start


Nested Filled Circle: Stop

What are the 3 parts to prototyping general idea?

1. Depict how you think system should look


2. Test the prototypes with users


3. Fix Up the prototypes with your learning



Throwaway Prototypes


vs.


Evolutionary Prototypes

Throwaway:


-Paper Proto: Sketches


-Low-Fidelity: Use tool Photoshop




Evolutionary:


-High-fidelity: Implemented on platform

Paper Proto

Doesn't:


Need beauty


Worry much about color, font etc




Does:


Show all important UI


Intelligible by User

"Testing" Proto

Let UI speak for itself


The user is always right in proto

Stakeholder Review

1. Meet stakeholders


2. Devs present their understanding of Reqs


3. Stakeholders correct understanding


4. Discuss (focus on risk mgmt)


5. Devs revise requirements

Manual Analysis

Systematically check consistency

Formal Analysis

Provable guarantee

Order these in terms of:


Good for Validation as 1


Good for Verification as 4




Paper Proto, Manual Analysis, Formal Analysis, Low and high fidelity proto

1. Paper


2. Low/High fid


3. Manual


4. Formal

Wk4


Architecture

Shows piece of system and their relationships

Component

Self Contained piece of system, clearly defined interfaces

Connector

Link between components via interface

Architectural style

Common kind of architecture, typical

Client-Server

Client: Interacts with user, calls server


Server: Provides services



Peer to Peer

User<-->Clients<-->itself

Publish-Subscribe

Publish: send events


Subscribe: Receive certain events

Classic Repository


Blackboard Ropos

client-server


publish-subscribe

Pipe and Filter

Filter: Component that xforms data


Pipe: Connector that passes data between filters

Layer

Component that provides services to the next layer, hide lower layers

Decomposition

Detailed view of a component

Types of Decomposition

Functional


Data-oriented


Object oriented


Process-oriented


Feature-oriented


Event-oriented

Functional Decomp

Break into functions, then sub-functions

Data-oriented Decomp

Data structs contains part of the data

Object Oriented

Data Orient + Functional Decomp


One class component per data function package

You can mix and match Decompositions

TRUE

Event Oriented

Break requirements into systems of events, receives and sends events


components like stateful agent


state notifies state notifies state

Feature oriented

Break req into services, then services into features




Service 1, sub: feature 1-3


Service 2, sub: feature 1-3

Process oriented

Break into steps, then sub-steps

3 ways to evaluate architectural design

1. Compare against QA quality attributes


2. Check for failure modes


3. Go through use cases




Goal: identify improvement areas

Quality Attributes

Reliability


Efficiency


Integrity


Usability


Maintainability


Testability


Flexibility


Portability


Reusability


Interoperability

Maintainability

How hard will it be to modify?

Efficiency

Can sys respond quickly, do a lot of work, and scale?

Reliability

Perform properly under most conditions

Integrity

Possible to get system in bad state?


Security features

Usability

Can users complete goals with system?

Testability

Can you semi-auto test if system is good?

Flexibility

Can system adapt to unusual conditions

Portability

Run on different platform

Reusability

Can parts of code be used in new system

Interoperability

Can system talk to other systems (API like)

Fault tree

And: this and this flat half circle


Or: this or this concave half circle

All code should have a...

purpose, concern

Coupling

Module involved in another module concern

Cohesion

Module devoted to its concern

Levels of coupling

Content: A mods B WORST


Common: A/B read/write same data


Control: A call B


Stamp: A provides structured data to B


Data: A provides unstructured data to B


Uncoupled: best

Advanced Coupling


How to evaluate coupling

Count the number of lines cross package boundaries


Determine what worst kind is

Levels of cohesion

Functional/informational (best): A/B work together


Communicational: A/B use same data


Procedural: A execs, then B execs. vaguely related


Temporal: A execs, then B execs. NOT related


Logical: Either A or B exec


Coincidental: (worst)

What is the Law of Demeter?

Don't talk to stranger's kids

What does Sandwiching do?

Breaks cycles into pieces

Object oriented design tips

Move code to where it is used, reducing inter-package coupling

OOP


use composition to:

reuse code


add features

OOP


Use inheritance to:

add a new version of an entity

Example of Polymorphism using an interface


Printer Controller

Print by Email Controller


Print by Printer Controller


Print by Web Controller

OOP


An interface is a...

Promise: "I can do eeeet!"

Polymorphism:

A/B/C/D each implement interface


-All make same "I can do eeet!" promise

Suppose you want another version, Z, of some component Y.


X accesses Y. You want X to access Z and Y

Implement Z


Create interface V


Make Y and Z Implement V


Modify X to access V only

OOP


Incremental vs Iterative

Incremental: Make one, add more later


Iterative: Make all, improve all as you go

OOP: You want to reduce X and increase Y

X: Coupling


Y: Cohesion

OOP Design Patterns


Builder

Big Complex object


Use when instantiating an object requires filling it with lengthy configuration

OOP Design Patterns


Adapter

Converts one interface to another by wrapping


overcomes incompatibility

OOP Design Patterns


Facade

Provides high-level interface to subsystem


Use when calling subsystem requires frequent use of complex lines of code

OOP Design Patterns


Memento

Snapshot of system / State save /Undo and redo example

OOP Design Patterns


Interpreter

Parses and acts on instructions in certain syntax


Scriptability




IE business rules in Justware or something like JWXML

OOP Design Patterns


Observer

Listen for state change


Event driven


Like email notifications in JW

OOP Design Patterns


Template method

Skeleton algorithm can be used by classes to make slightly different versions with the same underpinnings




-Subdivision home builder example

OOP Design Patterns


Factory Method

Interface for creating objects, like template for objects


Example: ToyCarMold, ToyDuckMold both call InjectionMold to create object

OOP Design Patterns


Strategy

Set of algorithms that can be used interchangeably


IE Modes of transportation to airport

OOP Design Patterns


Decorator

Add new stuff to an object dynamically


Wrap a gift, put in a box, wrap the box

OOP Design Patterns


Composite

Tree-like structure of object expanded


..can contain composite within composites

OOP Design Patterns


Visitor

this visits this, then loses control


Cab company


Iterate over existing data structure, TREE or GRAPH

Purpose of Design patterns?

ideas for organizing code in response to common problems

Agile


4 Forms of Agile?

Scrum


XP


Crystal


DSDM Dynamic Systems Dev Method: Users come from all over to test stuff facilitated workshop

Agile


Agile Iterations

Few small problems instead of one big


Scrum: 1 month


XP: 1-2 weeks


Iterations have releases


Sub-iteration. Iteration can have sub

Agile XP


Principles of XP

Communication: talk w customer


Simplicity: KISS


Feedback: get user feedback often


Courage: speak truth with respect

Agile XP


Role of realisim

Be realistic about meeting needs


Small increments


No superheroes

Agile XP


Role of design

Simple design


Improve as needed


Metaphor: Design around coherent Idea


Continuous integration: check if system on track

Agile XP


Role of teamwork

Pair Prog


Test driven dev: TDD Test first, code 2nd


Collective code ownership


Coding standards, pick format

Agile


A user story can fit..

on a 3x5 notecard


Name+ short desc

Agile


T/F


A user story can be revised

True, expected

Agile


User story Minimalism

Don't add stuff the customer didnt ask for

Agile


Do what with a user story?

Break it down now

Agile - User Story


Estimates done in...

Units based on experience


OR


Do a simple Spike to estimate difficulty


BE CONSERVATIVE


HONEST

Agile - User Story


Release dates don't...

slip. Functionality slips

Agile - Acceptance tests


Each user story can have...

multiple acceptance tests

Agile - Acceptance tests


Who writes acceptance tests?

Ideally, customer does, but devs sometimes

Agile - Acceptance tests


How often to run?

once a week or more

Schedule


What is the critical path?

Longest route through the activity graph

Schedule


What is Slack Time?

latest a proj can be done


minus


earliest




2mon, 4 month = 2 month slack time



Schedule


Activities on the critical path always have __ slack time

ZERO

Schedule


Gant Chart

Diamond = milestone


Arrows show dependencies


1 bar per activity

Testing Code


2 focus points



Functional Correctness:


Does code ever do right thing




Reliability QA:


Does code almost always do right thing

Testing Code


Black box testing

tester cannot see code

Testing Code


White box testing

tester can see code

Testing Code


Stages of testing

Unit testing


Integration testing: interaction


system testing: whole


acceptance testing: customer/users

Integration testing

combines unit tested modules and tests how they interact

System testing

try to break the system

acceptance testing

meet requirements of customer user?

regression testing

changes may break old code

TDD test driven dev

new test that fails until new feature implemented


implement feature


test again

TDD problems

difficult for waterfall


lots of time taken


false confidence

most effective way of finding bugs?

Code inspection

Refactoring


YAGNI

you arent gonna need it




Only meet business needs

Refactoring


Rules of simple design

In ORDER


1 System must communicate everything u want


2 no duplicate code


3 fewest classes


4 fewest methods

What is Refactoring?

Improve organization, not function

Refactoring


Bad smells

LOOONG function method


Duplicate Code


Large classes



When is refactoring allowed?

When all your tests are passing

COCOMO cost estimation

Rate Programmer Ability


Rate Component Difficulty


Rate dev tools

Professionalism


What is PSP?

Track personal time on projects to predict how long it takes in future

Professionalism


diff between law, moral, ethic

law = jail


moral = reputation


ethic = conscience

Professionalism


speeding in LA 65 in 55

illegal, moral, maybe ethical

Professionalism


speeding 85 in 25 school zone

illegal, immoral, unethical

Professionalism


IEEE code of ethics

Act in pub interest


Act in interest of client


Produce quality


Maintain indep judgement


manage ethically


protect integrity


support colleagues


pursue lifelong learning