1/26
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Software design
Problem solving and planning a software solution.
Low level company and algorithm design
High level architectural design
Software design methodologies
Strategies employed to create a software design
Aspects of software design
RODAT:
Requirement gathering
Object oriented design
Design patterns
Architectural patterns
Testing
Problem domain
Actors: agents external to the system interacting with it
Objects: agents working inside the system that make it function
User stories: scenarios for using the system
Software development methodologies
Waterfall
Iterative and incremental
Agile
Waterfall
Unidirectional
One phase after the other
Phases of Waterfall
Requirements
Design
Implementation
Verification
Maintenance
Role of software engineer
Understand how the system-to-be needs to interact with the user or environment so that customer requirements are met and design the software
Programmers task
Implement the software-to-be designed by software engineer
Waterfall pros
Simple to come up with
Easy to manage
Waterfall cons
Only have working product at the end
Hard to revise
Does not incorporate feedback
Not suitable for larger systems
Iterative and incremental
Create minimum viable product and incrementally add to it
Increments defined by amount of work to be done
Repeat till done
Iterative and incremental pros
MVP out sooner
Incorporates feedback
Can work in order of priority
Client can give feedback after each iteration
Iterative and incremental cons
Harder to manage
Initial planning must be efficient as every increment must work with future increments
Defining increments can be difficult
Agile
Builds on iterative and incremental
Increments defined by timed intervals
Not so much planning focus on immediate requirements
Focus on collaboration
Agile pros
Early and frequent release
Accommodate changing requirements
Constant feedback
Simple
Agile cons
Can be difficult to constantly meet with client
Requires more discipline to meet time goals
Time estimation needs to be good
Scrum
Development team: developers, analysts, domain experts
Product owner
Scrum master
Development team role
Autonomy on how to develop increment
Collaborative
Product owner role
Responsible for vision
Reprioritises backlog constantly
Final arbiter on requirements
Scrum master role
Part of dev team
Facilitate the scrum process
Ensure team works together smoothly
Leader not manager
Scrum ceremonies
Sprint planning
Daily scrum
Sprint review
Sprint retrospective
Backlog refinement
Sprint planning
Product backlog
Dev team and product owner work together to pull backlog items into the sprint
Break each backlog item into task
Estimate how many backlog items to do in time window
Prioritize certain backlog items over others
Daily scrum
15 min daily
Create plan for day
Discuss goals for today
Commit to you and your team
Sprint review
Meet with product owner
Live demo of current version of product
Code complete
Deployed to appropriate env
Adequately tested feedback
Product owner determines which backlog items are done
Sprint retrospective
Reflect on how the last sprint went
How team can improve
Needs to be transparent and safe space for devs
Avoid blaming
Backlog refinement
Take product backlog and refine it
Break down large items into smaller ones
Adjust estimates based on progress
Reassess priorities
Prune unnecessary items