Week 1 Flashcards
(19 cards)
What is SD?
SD is problem solving and planning a software solution.
low level component design
algorithm design
high level architectural design
What are some common aspects of SD?
Requirements gathering
Object-oriented design
Design patterns
Architectural patterns
Testing
What is the role of a Software engineers, meaning what is their task?
To understand how the software-to-be needs to interact with the user or environment so that customers requirements is met and design the software-to-be
Programmer’s task
To implement the software-to-be designed by the engineer
Divide and conquer works like how
Identify logical parts of the system that each solves a part of the problem
Easiest done with the help of a domain expert who already knows the steps in the process (“how it is currently done”)
Result: Model of the problem domain
What are Actors
in terms of atm give example
Agents external to the system that interact with it
Easy to identify, most visible part of equation : Bank customer, ATM, Datacentre
what are Concepts/Objects
in terms of atm give example
Agents working inside the system to make it function
Hard to identify, Conceptual parts
Window clerk, Bookkeepper, Dispenser, safekeeper, telephone, safe, cash , transaction record
What are user stories
in terms of atm give example
Scenarios for using the system
Typing in a pin, withdrawing, collecting cash (when the machine prompts you)
What are the 3 SD methodologies
Waterfall
Iterative & Incremental
Agile
Waterfall : what is it pros and cons
One phase after another
Unidirectional
Pros:
Simple to come up with
Easy to manage
Cons:
Only have a working product at the very end
Hard to revise; locked in after planning
High risk, high uncertainty
Does not incorporate feedback
Not suitable for larger systems
Iterative and Incremental: what is it pros and cons
Create a Minimum Viable Product (MVP), and incrementally add to it
Increments defined by amount of work to be done
Repeat until product is done
Pros:
Get minimum viable product (MVP) out sooner
Can work in order of priority
Can accommodate requirements changes
Client can give feedback after every iteration
Cons:
Harder to manage
Initial planning must be efficient as every increment must work with future increments
Defining increments can be difficult
Agile: what is it pros and cons
Build on Iterative and Incremental
Increments are defined by timed intervals
Not so much planning, focus more on immediate requirements
Focus on collaboration
Pros:
Early and frequent releases
Can accommodate changing requirements
Constant feedback
Simple
Cons:
Can be difficult to constantly meet with client
Requires more discipline to meet time goals
Time estimation needs to be good
What is part of the Scrum and who are those people
Development Team :
Developers, Analysts, Designers, Domain Experts, etc.
Autonomy on how to develop increment
Collaborative
Product Owner:
Responsible for vision
Final arbiter on requirements
Reprioritises backlog constantly
ScrumMaster:
Part of the dev team
Helps facilitate the scrum process
Ensures the team works together smoothly
Is a leader, but not a manager
Scrum Ceremonies, what are they
Sprint Planning
Daily Scrum
Sprint Review
Sprint Retrospective
Backlog Refinement
Sprint Planning : explain
Product Backlog: list of requirements (user stories)
Dev team and product owner work together to pull backlog items into the sprint
Break each backlog item into tasks
Need to estimate how many backlog items to do in time window
Need to prioritise certain backlog items over others
Daily Scrum : explain
~15 minutes every day
Create plan for today
Discuss goals, impediments, etc.
What did I do yesterday? What did I do today?
Are there any impediments?
Commitment to you and your team
Sprint Review : explain
Meet with product owner
Live demo of current version of product
Product owner determines which backlog items are done
Code complete
Deployed to appropriate env
Adequately tested Feedback
Sprint Retrospective: explain
Reflect on how the last sprint went
How can the team improve?
Needs to be transparent and a safe space for all devs
Avoid blaming
Backlog Refinement: explain
Take the product backlog and refine it
Break down large items into smaller ones
Smaller, evenly-sized tasks are easier to estimate times for
Adjust estimates based on progress
Reassess priorities
Prune unnecessary items