Week 1 Flashcards

1
Q

basic definition of software design

3 things

A

Software design involves problem solving and planning a software solution.

Include:
-> low level component
-> algorithm design
above two is like data structurers and actual coding

-> high level architectural design
overall overview of the system and how data flow and system communicate.

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

5 common aspects in software design

A

Requirements gathering
Object-oriented design
Design patterns
Architectural patterns
Testing

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

what is meant by requirement gathering

A

Understanding and documenting what the software should do by collecting functional and non functional requirement from stakeholders

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

what is object oriented design

A

OOD is designing software using principles like encapsulation, inheritance, polymorphism to create reusable and independent components

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

what are design patterns

A

reusable solutions to common design problems. helps improve code maintainability and scalability.

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

what are architectural patterns

A

High level design structures like MVC (model view controller) or microservices.
They define how different components of a system interact and organize the overall structure

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

Testing?

A

ensuring software meets its requirements.
unit testing, PENETRATION

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

tf do software engineers do vs programmer

A

their have to understand how the system-to-be needs to interact with user and environment and then design the software-to-be.

programmer implements the software designer’s design

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

best strategy to solve problems

A

divide and conquer
done by identifying logical parts of the system that each solves a part of the problem
Need help of domain expert who already how tf the shit work to help us model the problem domain

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

3 parts in a problem domain

A

actors
concepts / objects
user stories

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

what are actors

A

agents external to the system that interact with it

ATM: customer, actual ATM and datacentre
(easily identifiable)

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

what are concepts

A

Agents working inside the system for it function

ATM: bookkeeper, safe keeper, dispenser etc
(harder to identify)

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

What are user stories

A

possible user scenarios for the system

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

3 main software design methodologies

A

Waterfall
Iterative and incremental
Agile

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

basic definition for waterfall

A

Sequential process, one phase after the other and unidirectional

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

water fall pros

A

simple to design
easy to manage

17
Q

waterfall cons

A

Working product at the very end
hard to revise, cant change after planning
high risk and high uncertainty
no feedback
not good for large systems

18
Q

basic definition for Iterative and Incremental

A

Create a MVP ( min viable product) and then incrementally add to it. keep repeating till done

19
Q

Iterative and Incremental pros

A

get a MVP out sooner
feedback after every iteration
can accommodate requirement changes
work in order of priority

20
Q

Iterative and Incremental cons

A

harder to manage
defining increments is difficult and every increment must work with future increments so BIG planning.

21
Q

basic definition for Agile

A

builds on iterative and incremental but increments are defined by time.
focuses more on immediate requirements and colllaborations so less planning

22
Q

Agile pros

A

frequent releases
constant feedback
able to accommodate changing requirements

23
Q

Agile cons

A

difficult to constantly meet customer
needs more discipline to meet time goals
time estimation needs to be good

24
Q

3 roles involved in the scrum

A

Development team
product owner
scrum Master

25
Q

5 Scrum ceremonies

A

Sprint Planning
Daily Scrum
Sprint Review
Sprint Retrospective
Backlog Refinement

26
Q
  1. Sprint planning
A

Product backlogs - list of requirements (user stories)

dev team and product owner pull these backlog items into the sprint to break it down into tasks, give time frames and prisonisations between these items

27
Q
  1. Daily scrum
A

quick meeting everyday to get everyone on board, creating plan for the day and keeping check everyone is doing what is meant to be done and any issues

28
Q
  1. Backlog refinement
A

refine the backlog
break down items into small tasks
reassess priorities and adjust estimations

29
Q
  1. Sprint review
A

meet owner
live demo of current version
they say which backlog items are done
code is completed and deployed and tested

30
Q
  1. Sprint retrospective
A

reflect on last sprint
what went good and what went bad.