est

60 flashcardsby Tora
Study these flashcardsFree · spaced repetition · iPhone, Android, Mac & web

All cards

1
Functional Decomposition
Think of a system as a function and break it down into smaller, simpler functions. Then, rebuild these small functions to build system.
2
Relational Database Design
Use tables to store data and illustrate relationships between them. Most common type of database.
3
Object Oriented / UML
Each module turns into a class that has a name, attributes, and functions.
4
User Interface Design
A drawing of an interface for testing and feedback.
5
Abstraction
A fundamental 43 principle. Removes irrelevant info and highlights relevant info. Software engineering is about constructing and elaborating abstractions / models.
6
Storyboards
Illustrate user interaction. A series of pictures that shows context of use, often with emotion. It refines requirements and interactions pre-build.
7
Sketches
A mix of notations, formal or informal
8
Notations
Represent some aspect of a software system, and this is what software engineering is about.
9
High Cohesion
Grouping related functionality. All things having to do with one concern are in one place.
10
Low Coupling
Modules aren't tightly knit together.
11
A-B Testing
Putting a variation of a feature in front of users and collect data on user's responses; see what they like best.
12
HCI - Personas
A fictional user of your system. Must have a picture, nickname, actual name, and characteristics that are relevant to the system.
13
HCI - Scenarios
Write a story-like description of a user using the system.
14
HCI - Site Map
Shows what elements lead to what screens. Draw one with a given number of screens.
15
HCI - Mockups
Draw a picture of picture of what the user interface will look like.
16
HCI - Design guidelines
Include color schemes, wire frames. All for reuse, consistency, and to incorporate well-known heuristics.
17
Interaction Design Patterns
Like guidelines, more focused on common usability problems. Things like how to navigate, search, display data.
18
Validation
Check that a system or any artifact match what the user's needs are. "Implement the proper idea."
19
Verification
Check that the eventual system behaves according to the specifications. "Implement the idea properly."
20
Error
Human mistake in programmer's mind.
21
Fault (Defect)
Discrepancy in code.
22
Failure
External behavior, execution, output is incorrect.
23
Unit Testing
Test a small unit / file / section. Lots of these are used.
24
Functional / Integration Testing
Testing interaction between units of a system. Less of these are used.
25
System Acceptance
Testing the entire system for satisfaction of requirements. Used sparingly
26
Oracle
Says what a program's expected output should be to know if we fail or succeed (can be a calculator, dictionary, brain, etc.)
27
"Program Testing Shows the Presence of Bugs, Never Absence"
We can't prove 100% correctness since we can't test every possible input. We can't prove anything about inputs we didn't run.
28
When To Know Testing is Over
Fixed period of time, have quality requirements (98% bug free), rate of problems per unit time stabilizes, formula where fake bugs are inserted.
29
Black Box Testing
Based on specification, assumes no access to code.
30
White Box Testing
Expects access to code, a graph model is used.
31
Partitioning (Testing)
Takes all the inputs of a function and divide them into a subdomain / equivalence class.
32
Boundary Value Analysis
Testing inputs that are at the boundaries of subdomains (partitions)
33
Node Testing
Every statement executed at least once
34
Edge Testing
Every branch taken at least once
35
Build and Fix - Software Processes
Char: Simple, leaves out all activities.
Pros: good for small programs
Cons: not rigorous enough for non-trivial projects
36
Waterfall - Software Processes
Char: linear, sequential, one drops to next, have to finish one before moving on, lots of documentation.
Pros: Lots of documentation, promotes understanding of requirements. Good for short projects.
Cons: Rigid, not amenable to change. Can't incorporate customer feedback.
37
Rapid Prototyping - Software Processes
Incorporates more user feedback
38
Incremental - Software Processes
More of a customer feedback loop to waterfall. Iterate over small pieces and get customer feedback (Windows 10)
39
Spiral - Software Processes
Char: Wants more flexibility to waterfall. What happens in each step is based off risk analysis. It's iterative and variable. Every process is different
Pros: good when things are uncertain
Cons: you need to do / understand risk analysis
40
RUP - Software Processes
Char: use case driven, architecture centric, iterative and incremental
Pros: Risk driven, incremental, lots of tool support
Cons: Complicated, heavy, requires an expert to implement.
41
OSS Classic - Software Processes
Char: devs are volunteers, rarely meet. Starts with one person, others come to build. Many devs work on projects. More evolutionary; no deadlines
Cons: not proprietary, bad technical support and compensation is iffy.
Pros: very successful. Bugs are easily found by many eyes. Scales up well
42
OSS Corporate - Software Processes
Companies using open source software, sponsoring projects, open sourcing their own code.
43
XP - Software Processes
Uses test driven development and pair programming.
Determine desired features, implement / deliver each task, follow values & principles.
44
Agile - Software Processes
Char: Category of XP, scrum. Very anti-waterfall; instead of having a plan, it's about responding to changes at any time. Very popular.
Cons: won't work in certain conditions.
Pros: great for customer satisfaction.
45
Moore's Law
Complexity of hardware doubles every two years, so we can write more complex software
46
Project Estimation
Project factors -> estimation method -> project estimates
47
Purpose of Designs
Designs to think, talk and prescribe. Designs are developed iteratively.
48
Relationships Between Classes
Inheritance, association (multiplicity), whole part (aggregation and composition).
49
Association Relationships
Student takes from teacher
Router accesses DNS
50
Aggregation
One object contains a set of other objects. They are transitive and asymmetric. I.e. bottle -> crate
51
Composition
A variation of aggregation that adds the property of existence dependence. I.e. room -> house
52
Information Hiding
Hide design decisions that are most likely to change, thereby protecting other parts of the program from change if the design decision is changed.
53
Who Does Testing?
Programmers, testers, users (alpha / beta, acceptance testing, crowdsourcing/ bug bounties).
54
Black Box Testing Process
1. Identify set of all inputs
2. Identify a base for subdividing the set of inputs
3. Use this basis to divide set of all inputs into subdomains.
4. From each subdomain, choose representatives to be test case inputs.
55
XP Practices and Principles
Whole team
Small releases
Customer tests
Simple design
Pair programming
Test-driven development
Coding standards
Open space
56
Heuristic Evaluation
Visibility of system status
Match system words to real world
User control & freedom
Consistency & standards
Error prevention
Recognition rather than recall
Accelerators
Minimalistic design
Help users recognize & recover from errors
Help & documentation
57
Estimation Factors
Requirements
Application domain experience
Process quality
Project size
Technology support
Working environment
58
Estimation Outputs
Effort (person months)
Duration (calendar months)
Cost (dollars)
KLOC (thousands of lines of code)
59
Estimation Methods
COCOMO
Function point estimation
Object oriented effort estimation
Work breakdown structure
60
Effort Estimation
Difficult, requires a lot of experience and intelligence. May require data that doesn't exist, design to be done, and updates.
Study all 60 cards for free