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.
MVC Components | Model
The model is the application’s data structure and is responsible for managing the data, logic and rules of the application. It gets input from the controller.
MVC Components | View
The view is the visual representation (the presentation) of the data. There can be multiple representations of the same data.
MVC Components | Controller
The controller is like the middleman between the model and view. It takes in user input and manipulates it to fit the format for the model or view.
Working Copy
is the individual’s personal copy of the files, where they can make changes without affecting others.
Some of the benefits of version control are:
- It enables collaboration
- Accountability and visibility
- Work in isolation
- Safety
There are three types of version control:
- Local version control system
- Centralized version control system
- Distributed version control system
There are three stages in Git:
- repository ( the .git directory)
- working directory
- staging area
there are three matching states for a Git file:
- committed
- modified
- staged
Git has two types of repositories:
- local
- remote
Branching enables users to:
- Work on a feature independently while still benefitting from a distributed version control system
- Work on multiple features concurrently
- Experiment with code ideas
- Keep production, development, and feature code separately
- Keep the main line of code stable
Git and GitHub difference
Git is an implementation of distributed version control and provides a command line interface, while GitHub is a service, provided by Microsoft, that implements a repository hosting service with Git.
GitHub also provides additional features (over Git) such as:
- code review
- documentation
- project management
- bug tracking
- feature requests
Configure a username and an e-mail
$ git config –global user.name “”
$ git config –global user.email “”
To make a new or existing project a Git repository, use the following command:
$ git init
To get a copy of and contribute to existing repositories
git clone [target directory]
Git supports four major transport protocols for accessing the :
Local, Secure Shell (SSH), Git, and HTTP.
command to get a list of files that have differences between the working directory and the parent branch.
git status
command that is essentially a generic file comparison tool
git diff
command to add file(s) to the staging area
git add
command to remove files from the Git repository
git rm
command to update the local repository with the changes that have been added in the staging area.
git commit
command to update the remote Git repository with the content changes from the local Git repository.
git push
Git provides a git pull command to get updates from a branch or repository
git pull
command to list, create, or delete a branch.
git branch
command to switch the working directory to the new branch.
git switch
command to create a branch and switch the working directory to that branch
git checkout -b
command to delete a branch
git branch -d
command to get a list of all the local branches
git branch or git branch –list
command to merge a branch
git merge branchX
for the work that you’ve contributed, you need to associate your name and email address with your work. To do that in Git, you use the command.
git config –global user.name “Sample User”
git config –global user.email sample@example.com
git config –global core.pager cat
you may want to review the commit history for a repo. To view the most recent commits, you use the command
git log
Clean code is…
the result of developers trying to make their code easy to read and understand for other developers
Methods and functions share the same concept; they are…
blocks of code that perform tasks when executed
Syntax of a function in Python
# Define de function def functionName: ...blocks of code...
# Call the function functionName()
The difference between methods and functions is that…
functions are standalone code blocks while methods are code blocks associated with an Object, typically for Object-Oriented programming.
Modules are…
a way to build independent and self-contained chunks of code that can be reused
Object-oriented programming (OOP), as originally conceived, is based on some formally-defined properties:
- Encapsulation
- Data abstraction
- Polymorphism
- Inheritance
Outside of a virtual environment, your interpreter could be called by many names:
python py -2 (Windows only) py -3 (Windows only) python2 python3 python3.6 python3.7
Inside a virtual environment, your interpreter always responds to…
python
Command that gives you the full path to the interpreter in use.
which python
Python data types
int, float, bool, str and bytes
Python numeric operators
\+ Addition - Subtraction * Multiplication / Division // Floor Division % Modulus (remainder) ** Power
Python string operators
+ Concatenation
* Multiplication
Python function syntax:
def function_name(arg_1, arg_2): statements... return value
three most commonly used data structures
- lists
- tuples
- dictionaries
python data structure | list:
Ordered list of items, mutable (can be changed after created), items can be different data types, and it can contain duplicate items.
python data structure | tuple:
Just like a list; except: it’s immutable (cannot be changed).
python data Structure | dictionary:
Ordered key-value pairs, keys don’t have to be same data type, values don’t have to be same data type. Keys are unique; must be immutable.