Reference: Diagrams to Know
All diagrams from the Software Engineering course that you need to know for the exam.
Reference: Diagrams to Know
Diagrams to Know
Waterfall Model
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌──────────────────────┐
│ Requirements │
│ definition │
└──────────┬───────────┘
│
┌──────────▼───────────┐
│ System & software │
│ design │
└──────────┬───────────┘
│
┌──────────▼───────────┐
│ Implementation & │
│ unit testing │
└──────────┬───────────┘
│
┌──────────▼───────────┐
│ Integration & │
│ system testing │
└──────────┬───────────┘
│
┌──────────▼───────────┐
│ Operation & │
│ maintenance │
└──────────────────────┘
Boehm’s Spiral Model
1
2
3
4
5
6
7
8
9
10
11
12
Determine objectives,
alternatives, constraints
4th ◄──────────────────────────────── 1st
quadrant quadrant
Plan next Identify and
iteration resolve risks
▲ ▼
3rd 2nd
quadrant quadrant
Develop and Evaluate
validate next alternatives
level ─────────────────────────►
SDLC Framework Activities
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌──────────────────────────┐
│ Communication │
│ (Requirements gathering)
└────────────┬─────────────┘
│
┌────────────▼─────────────┐
│ Planning │
│ (Resources, schedule)
└────────────┬─────────────┘
│
┌────────────▼─────────────┐
│ Modeling │
│ (Analysis, design)
└────────────┬─────────────┘
│
┌────────────▼─────────────┐
│ Construction │
│ (Coding, testing)
└────────────┬─────────────┘
│
┌────────────▼─────────────┐
│ Deployment │
│ (Delivery, feedback)
└──────────────────────────┘
Scrum Sprint Cycle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Product Sprint Potentially
Backlog ────────► Planning ────────► Shippable
(prioritized Meeting Product
feature list) │ Increment
│
┌────────▼──────────┐
│ SPRINT │
│ (2–4 weeks) │
│ │
│ Daily Scrum │
│ (15-min standup) │
│ ┌──────────────┐ │
│ │ What did I │ │
│ │ do yesterday?│ │
│ │ What today? │ │
│ │ Any blocks? │ │
│ └──────────────┘ │
└───────────────────┘
│
┌────────▼──────────┐
│ Sprint Review │
│ Sprint │
│ Retrospective │
└───────────────────┘
Requirements Engineering Process
1
2
3
4
5
6
7
8
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Requirements │───►│ Requirements │───►│ Requirements │
│ Elicitation │ │ Specification │ │ Validation │
│ & Analysis │ │ │ │ │
└────────────────┘ └────────────────┘ └────────────────┘
▲ │
└────────────────────────────────────────────┘
(iterative)
Testing Hierarchy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌─────────────────┐
│ Acceptance │ ← User tests the system
│ Testing │
└────────┬────────┘
│
┌────────▼────────┐
│ System │ ← Integration of all components
│ Testing │
└────────┬────────┘
│
┌────────▼────────┐
│ Integration/ │ ← Modules combined and tested
│ Component Test │
└────────┬────────┘
│
┌────────▼────────┐
│ Unit │ ← Individual functions/classes
│ Testing │
└─────────────────┘
Traditional Testing Process (Plan-Driven)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Test ┌──────────┐ ┌──────────┐ ┌──────────┐
Plan ────►│ Unit │───►│Component │───►│ System │
│ Testing │ │ Testing │ │ Testing │
└──────────┘ └──────────┘ └──────────┘
│
┌─────────────────────────────────────▼──┐
│ Release Testing │
│ (Testing by independent team) │
└─────────────────────────────────────┬──┘
│
┌─────────────────────────────────────▼──┐
│ User Testing │
│ (Alpha / Beta / Acceptance) │
└─────────────────────────────────────────┘
Acceptance Testing Process
1
2
3
4
5
6
7
8
┌──────────────────────────────────────────────────────────┐
│ Acceptance Testing Process │
├──────────┬──────────┬──────────┬──────────┬─────────────┤
│ Define │ Plan │ Derive │ Run │ Negotiate │
│ accept- │ accept- │ accept- │ accept- │ & decide │
│ ance │ ance │ ance │ ance │ on accept- │
│ criteria│ tests │ tests │ tests │ ance │
└──────────┴──────────┴──────────┴──────────┴─────────────┘
Risk Management Process
1
2
3
4
5
6
7
8
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Risk │──►│ Risk │──►│ Risk │──►│ Risk │
│ Identifi- │ │ Analysis │ │ Planning │ │ Monitoring │
│ cation │ │ │ │ │ │ │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
List potential Assess Strategies to Monitor risks;
risks probability & avoid, minimize, update analysis
impact or manage as project evolves
Essential Attributes of Good Software
1
2
3
4
5
6
7
8
9
10
11
12
┌─────────────────────────────────────────────────────────┐
│ GOOD SOFTWARE ATTRIBUTES │
├───────────────────┬─────────────────────────────────────┤
│ Acceptability │ Must be acceptable to users it is │
│ │ designed for │
├───────────────────┼─────────────────────────────────────┤
│ Dependability │ Reliable, secure, and safe │
├───────────────────┼─────────────────────────────────────┤
│ Efficiency │ No wasteful use of system resources │
├───────────────────┼─────────────────────────────────────┤
│ Maintainability │ Must evolve to meet changing needs │
└───────────────────┴─────────────────────────────────────┘
Plan-Driven vs. Agile Processes
1
2
3
4
5
6
7
8
9
10
Plan-Driven Agile
────────────────────────── ──────────────────────────
All activities planned in Incremental planning
advance
Requirements documented up Requirements emerge through
front iteration
Change is costly Change is expected & welcomed
Suitable for large, stable Suitable for changing,
requirements unclear requirements
Examples: Waterfall, RUP Examples: Scrum, XP
Verification vs. Validation
1
2
3
4
5
6
7
8
9
10
11
Verification Validation
──────────────────────── ────────────────────────
"Are we building the "Are we building the
product right?" right product?"
Checks against Checks against
specification customer needs
Static (reviews, Dynamic (running
inspections) the software)
or dynamic
Types of Requirements
1
2
3
4
5
6
7
8
9
10
11
12
Requirements
├── Functional requirements
│ └── Describe what the system should do
│ (e.g. "The system shall allow users to search by keyword")
│
├── Non-functional requirements
│ ├── Product requirements (reliability, efficiency, portability)
│ ├── Organizational requirements (standards, implementation environment)
│ └── External requirements (legal, ethical)
│
└── Domain requirements
└── Derived from the application domain
This post is licensed under CC BY 4.0 by the author.