Software Development
http://thecodelesscode.com/
Working as designed (WAD)
Component An element within a system
Calling Application (CA)
Technical debt (or code debt)
“Upstream refers to the material inputs needed for production, while downstream is the opposite end, where products get produced and distributed.”
Software Development Life Cycle
Analysis -> Design -> Development -> Testing -> Deployment -> Maintenance
Consider use cases
Software Documents
- SRS, Software Requirements Specification
- SPMP
- SDD
-
RAS, Requirement Analysis Specification
- Functional Design Document
- Software Architecture Design Document
- Product Security Management Plan
Methodologies
Waterfall
Agile
Incremental methods used in software development
https://twitter.com/AgileRamsay
“Uncle” Bob Martin - “The Future of Programming” https://www.youtube.com/watch?v=ecIWPzGEbFc
- Kanban
- A visual SDLC workflow process
- Scrum master
- A developer who leads scrum meetings
- Story
- Software system requirement
- Active Sprint
- A sprint that has been started
User Story Designs (USD)
Definition of Done (DoD)
- Epic
- Large body of work broken up into stories
Acceptance Test-Driven Development
Extreme Programming
Scrum
Scrum Flow
Scrum Theory
Scrum Team
Scrum Artifacts: Product Backlog
Scrum Artifacts: Increment
Scrum Events: Sprint Planning
Scrum Artifacts: Sprint Backlog
Scrum Events: The Sprint
Scrum Events: Development Work & Daily Scrum
Scrum Events: Sprint Review
Scrum Events: Sprint Retrospective
Scaled Scrum
Lean
Test-Driven Development
Behavior-Driven Development
Contract-First Development
Commonly used for web services and APIs Goal is to understand the functionality before any implementation is done
Swagger (formerly OpenAPI) tells the humans and computers to understand the service capabilities without access to source code, documentation, etc.
Swagger Specification 2.0
Swagger Specification 3.0
Environments
Dev -> QA -> Staging -> UAT -> Production
CDE continuous delivery environment
Clean Code
Naming variables
Writing functions
Guard clauses
# This function has no guard clause
def f_noguard(x):
if isinstance(x, int):
return x + 1
# Equivalent function with a guard clause
def f_guard(x):
if not isinstance(x, int):
return None
return x + 1
Testing
Release Acceptance Criteria (RAC)
Unit testing
Component testing
Contract testing
End-to-End Verification testing
Chaos testing
Performance testing
Visual testing
Automated testing
Integration testing
Smoke Testing is done to see if the build is stable enough before it is sent to the testing team for further testing
Shakeout Testing is done before the testing start to make sure that the applications are pointing to the correct environments/URLs and data is flowing
Sanity Testing is done whenever there is a small change made in the application to ensure that the application is working correctly
SIT system integration testing
UAT user acceptance testing testing is done by end-user / client side, goal is to see if the solution delivered meets the business requirements for the customer
IST integration system testing IST tests integration part or module of the application, goal is to verify if the technology works
UAT and IST are test environments
IST should come first, before UAT
software_engineering
methodology
SM
SDLC
ATDD
XP
TDD
BDD
]