Software development and design Flashcards
S: SDLC
software development life cycle
The most common phases of an SDLC are:
- Requirements & Analysis
- Design
- Implementation
- Testing
- Deployment
- Maintenance
S: MVP
minimum viable product
S: SRS
Software Requirement Specification
S: HLD
High-Level Design
S: LLD
Low-Level Design
Three most popular software development methodologies
- Waterfall
- Agile
- Lean
The values of agile are:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile manifesto lists twelve different principles:
1- Customer focus 2- Embrace change and adapt 3- Frequent delivery of working software 4- Collaboration 5- Motivated teams 6- Face-to-face conversations 7- Working software 8- Work at a sustainable pace 9- Agile environment 10- Simplicity 11- Self-organizing teams 12- Continuous Improvement
Agile Scrum
focuses on small, self-organizing teams that meet daily for short periods and work in iterative sprints, constantly adapting deliverables to meet changing requirements.
Agile Methods
- Agile Scrum
- Lean
- Extreme Programing (XP)
- Feature-Driven Development (FDD)
Lean
emphasizes elimination of wasted effort in planning and execution, and reduction of programmer cognitive load
Sprint
the purpose of sprints is to accomplish the frequent delivery of working software principle of the Agile manifesto
Backlog
backlog is made up of all of the features for the software, in a prioritized list
User Stories
When a feature gets close to the top of the priority list, it gets broken down into smaller tasks called user stories. Each user story should be small enough that a single team can finish it within a single sprint
Scrum Teams
Scrum teams are usually made up of people with different roles in order to accomplish the full SDLC
seven principles for lean:
- Eliminate waste
- Amplify learning
- Decide as late as possible
- Deliver as fast as possible
- Empower the team
- Build integrity in
- -Optimize the whole
There are seven wastes of software development:
- Partially Done Work
- Extra Processes
- Extra Features
- Task Switching
- Waiting
- Motion
- Defects
C: create a virtual environment:
python -m venv devfun
C: install packages for a virtual environment:
source devfun/bin/activate
C: show pip instalations
pip freeze
C: install the packages required by the project.
pip install -r requirements.txt
best practice to use v_ e_ when working with Python projects
virtual environments
MVC framework for Python
Django
MVC framework for Ruby
Rails
MVC framework for Java
Spring
MVC framework for Javascript
Backbone.js
the Gang of Four divided patterns into three main categories:
- Creational
- Structural
- Behavioral
the Gang of Four divided patterns into three main categories | Creational:
Patterns used to guide, simplify, and abstract software object creation at scale.
the Gang of Four divided patterns into three main categories | Structural:
Patterns describing reliable ways of using objects and classes for different kinds of software projects.
the Gang of Four divided patterns into three main categories | Behavioral:
Patterns detailing how objects can communicate and work together to meet familiar challenges in software engineering.
Observer design pattern
is a subscription notification design that lets objects (observers or subscribers) receive events when there are changes to an object (subject or publisher) they are observing.