1/25 - Software Engineering Process Flashcards

1
Q

Software Process

A
  1. Most projects follow recognized stages.

2. Process means HOW things are done, not what is done.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Top Layer of Software Engineering

A

Tools: automate processes and methods

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Middle Layer of Software Engineering

A

Methods: the technical “how to”; design review, code review and testing

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Bottom Layer of Software Engineering

A

Process: framework of required tasks

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Waterfall Model

A
  1. Gather requirements
  2. Specification
  3. Design
  4. Implementation
  5. Integration
  6. Product
  7. Testing after each phase
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Gather Requirements

A
  1. Figure out the “what is this thing supposed to do?”
  2. Raw list of features written down
  3. Purpose: avoid building the wrong thing and gather information for planning
  4. Talk to clients to figure out what they want
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Specification

A

A written description of what the system does for all inputs and in all possible states:

  1. Covers all situations
  2. More comprehensive than requirements
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Design

A
  1. System architecture
  2. Decompose the system into modules
  3. Specify interfaces between modules
  4. It’s more about HOW the system works than what it does
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Implementation

A
  1. Code up the design
  2. Plan how things will be done
    a. Specify the order
    b. Specify priorities
  3. Test each module
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Integration

A
  1. Put the pieces together

2. Test the entire system

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Product

A
  1. Ship

2. Start maintenance

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Risks of Waterfall Model

A
  1. Relies heavily on being able to accurately assess requirements at the start
  2. Little feedback from the user until its late
  3. Problems with specs found very late
  4. Whole process can take a long time before a first version is seen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Time

A
  1. Taking a long time to build software is risky because
    a. the world changes quickly
    b. Others produce competitive software
    c. Tech becomes obsolete
    • Software depends on libraries, OS, compilers etc
  2. Being fast simplifies programming
  3. Being fast means you can refine your requirements quickly
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Accuracy of Models

A
  1. Neither of these models are true to life

2. In reality you need feedback at all stages, waterfall model with feedback loops

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Iterative Models: Plan for Change

A
  1. Use the same stage as the waterfall model
  2. But plan to iterate the whole cycle several times
  3. Gather requirements but don’t spend too much time; without something to show, cannot get full requirements.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Pros of Iterative Models

A
  1. Find problems sooner
  2. Get early feedback
  3. More quantifiable than waterfall model
17
Q

Cons of Iterative Model

A

Major mistakes in:

  1. Requirements
  2. Specs
  3. Design