BogoToBogo
  • Home
  • About
  • Big Data
  • Machine Learning
  • AngularJS
  • Python
  • C++
  • go
  • DevOps
  • Kubernetes
  • Algorithms
  • More...
    • Qt 5
    • Linux
    • FFmpeg
    • Matlab
    • Django 1.8
    • Ruby On Rails
    • HTML5 & CSS

Software Development Methodologies

Patterns.png




Bookmark and Share





bogotobogo.com site search:

Agile

Iterative and incremental development.

Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  1. Individuals and interactions over processes and tools
  2. Working software over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.


Agile.gif

Source: Dilbert



Scrum

Scrum is an iterative, incremental methodology for project management often seen in agile software development.

The name scrum came from rugby, where the whole team "tries to go the distance as a unit, passing the ball back and forth." Likewise, in scrum, the development phases strongly overlap and the whole process is performed by one cross-functional team across the different phases.

A key principle of Scrum is its recognition that during a project, there can be requirements churn, and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements.

Terminology

  1. Product Backlog
    Wish list for the features of final product.
  2. Release Backlog
    Priotirized list of Backlog.
  3. Spint Backlog
    Short duration (3-30dyas) milestones for ship-ready release.
  4. Burndown Chart
    This shows remaining work in the sprint backlog.


Extreme Programming (XP)

Extreme Programming (XP) is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates timeboxing, which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.

Other elements of extreme programming include: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, simplicity and clarity in code, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers.



Lean

Think big, act small, fail fast; learn rapidly."

Basic principles of lean are:

  1. Eliminate waste - Everything not adding value to the customer is considered to be waste
  2. Amplify learning - The learning process is sped up by usage of short iteration cycles each one coupled with refactoring and integration testing.
  3. Decide as late as possible- delaying decisions as much as possible until they can be made based on facts and not on uncertain assumptions and predictions.
  4. Deliver as fast as possible - The sooner the end product is delivered without considerable defect, the sooner feedback can be received, and incorporated into the next iteration.
  5. Empower the team
  6. Build integrity in - refactoring


Test-driven development (TDD)

Test-driven development (TDD) relies on the repetition of a very short development cycle. It's a technique for designing a code. In TDD, each new feature begins with writing a test not the production code. By writing the test code first, we're focusing on the behavior of a unit or its interface.

If we deliver a project using TDD, the code tends to be more cleaner and less complicated. This is because as I'm writing the test, I'm ensuring the code testable. Testable code is clean and simple so that we can isolate it and test it easily.



Water Fall

The waterfall model maintains that one should move to a phase only when its preceding phase is completed and perfected.


BeeSulSan




Software Development
  1. Software Development Methodology


DevOps

  • Phases of Continuous Integration
  • Software development methodology
  • Introduction to DevOps
  • Samples of Continuous Integration (CI) / Continuous Delivery (CD) - Use cases
  • Artifact repository and repository management
  • Linux - General, shell programming, processes & signals ...
  • RabbitMQ...
  • MariaDB
  • New Relic APM with NodeJS : simple agent setup on AWS instance
  • Nagios on CentOS 7 with Nagios Remote Plugin Executor (NRPE)
  • Nagios - The industry standard in IT infrastructure monitoring on Ubuntu
  • Zabbix 3 install on Ubuntu 14.04 & adding hosts / items / graphs
  • Datadog - Monitoring with PagerDuty/HipChat and APM
  • Install and Configure Mesos Cluster
  • Cassandra on a Single-Node Cluster
  • OpenStack install on Ubuntu 16.04 server - DevStack
  • AWS EC2 Container Service (ECS) & EC2 Container Registry (ECR) | Docker Registry
  • CI/CD with CircleCI - Heroku deploy
  • Introduction to Terraform with AWS elb & nginx
  • Kubernetes I - Running Kubernetes Locally via Minikube
  • Kubernetes II - kops on AWS
  • Kubernetes III - kubeadm on AWS
  • CI/CD Github actions
  • CI/CD Gitlab



  • DevOps / Sys Admin Q & A

  • (1A) - Linux Commands
  • (1B) - Linux Commands
  • (2) - Networks
  • (2B) - Networks
  • (3) - Linux Systems
  • (4) - Scripting (Ruby/Shell)
  • (5) - Configuration Management
  • (6) - AWS VPC setup (public/private subnets with NAT)
  • (6B) - AWS VPC Peering
  • (7) - Web server
  • (8) - Database
  • (9) - Linux System / Application Monitoring, Performance Tuning, Profiling Methods & Tools
  • (10) - Trouble Shooting: Load, Throughput, Response time and Leaks
  • (11) - SSH key pairs & SSL Certificate
  • (12) - Why is the database slow?
  • (13) - Is my web site down?
  • (14) - Is my server down?
  • (15) - Why is the server sluggish?
  • (16A) - Serving multiple domains using Virtual Hosts - Apache
  • (16B) - Serving multiple domains using server block - Nginx
  • (16C) - Reverse proxy servers and load balancers - Nginx
  • (17) - Linux startup process
  • (19) - phpMyAdmin with Nginx virtual host as a subdomain
  • (19) - How to SSH login without password?
  • (20) - Log Rotation
  • (21) - Monitoring Metrics
  • (22) - lsof
  • (23) - Wireshark introduction
  • (24) - User account management
  • (25) - Domain Name System (DNS)
  • (26) - NGINX SSL/TLS, Caching, and Session
  • (27) - Troubleshooting 5xx server errors
  • (28) - Linux Systemd: journalctl
  • (29) - Linux Systemd: FirewallD
  • (30) - Linux: SELinux
  • (31) - Linux: Samba
  • (0) - Linux Sys Admin's Day to Day tasks




  • Ph.D. / Golden Gate Ave, San Francisco / Seoul National Univ / Carnegie Mellon / UC Berkeley / DevOps / Deep Learning / Visualization































    Puppet

  • Puppet with Amazon AWS I - Puppet accounts
  • Puppet with Amazon AWS II (ssh & puppetmaster/puppet install)
  • Puppet with Amazon AWS III - Puppet running Hello World
  • Puppet Code Basics - Terminology
  • Puppet with Amazon AWS on CentOS 7 (I) - Master setup on EC2
  • Puppet with Amazon AWS on CentOS 7 (II) - Configuring a Puppet Master Server with Passenger and Apache
  • Puppet master /agent ubuntu 14.04 install on EC2 nodes
  • Puppet master post install tasks - master's names and certificates setup,
  • Puppet agent post install tasks - configure agent, hostnames, and sign request
  • EC2 Puppet master/agent basic tasks - main manifest with a file resource/module and immediate execution on an agent node
  • Setting up puppet master and agent with simple scripts on EC2 / remote install from desktop
  • EC2 Puppet - Install lamp with a manifest ('puppet apply')
  • EC2 Puppet - Install lamp with a module
  • Puppet variable scope
  • Puppet packages, services, and files
  • Puppet packages, services, and files II with nginx
  • Puppet templates
  • Puppet creating and managing user accounts with SSH access
  • Puppet Locking user accounts & deploying sudoers file
  • Puppet exec resource
  • Puppet classes and modules
  • Puppet Forge modules
  • Puppet Express
  • Puppet Express 2
  • Puppet 4 : Changes
  • Puppet --configprint
  • Puppet with Docker
  • Puppet 6.0.2 install on Ubuntu 18.04







  • Ph.D. / Golden Gate Ave, San Francisco / Seoul National Univ / Carnegie Mellon / UC Berkeley / DevOps / Deep Learning / Visualization

    YouTubeMy YouTube channel

    Sponsor Open Source development activities and free contents for everyone.

    Thank you.

    - K Hong





    List of Design Patterns



    Introduction

    Abstract Factory Pattern

    Adapter Pattern

    Bridge Pattern

    Chain of Responsibility

    Command Pattern

    Composite Pattern

    Decorator Pattern

    Delegation

    Dependency Injection(DI) and Inversion of Control(IoC)

    Façade Pattern

    Factory Method

    Model View Controller (MVC) Pattern

    Observer Pattern

    Prototype Pattern

    Proxy Pattern

    Singleton Pattern

    Strategy Pattern

    Template Method Pattern

    Sponsor Open Source development activities and free contents for everyone.

    Thank you.

    - K Hong







    C++ Tutorials

    C++ Home

    Algorithms & Data Structures in C++ ...

    Application (UI) - using Windows Forms (Visual Studio 2013/2012)

    auto_ptr

    Binary Tree Example Code

    Blackjack with Qt

    Boost - shared_ptr, weak_ptr, mpl, lambda, etc.

    Boost.Asio (Socket Programming - Asynchronous TCP/IP)...

    Classes and Structs

    Constructor

    C++11(C++0x): rvalue references, move constructor, and lambda, etc.

    C++ API Testing

    C++ Keywords - const, volatile, etc.

    Debugging Crash & Memory Leak

    Design Patterns in C++ ...

    Dynamic Cast Operator

    Eclipse CDT / JNI (Java Native Interface) / MinGW

    Embedded Systems Programming I - Introduction

    Embedded Systems Programming II - gcc ARM Toolchain and Simple Code on Ubuntu and Fedora

    Embedded Systems Programming III - Eclipse CDT Plugin for gcc ARM Toolchain

    Exceptions

    Friend Functions and Friend Classes

    fstream: input & output

    Function Overloading

    Functors (Function Objects) I - Introduction

    Functors (Function Objects) II - Converting function to functor

    Functors (Function Objects) - General



    Git and GitHub Express...

    GTest (Google Unit Test) with Visual Studio 2012

    Inheritance & Virtual Inheritance (multiple inheritance)

    Libraries - Static, Shared (Dynamic)

    Linked List Basics

    Linked List Examples

    make & CMake

    make (gnu)

    Memory Allocation

    Multi-Threaded Programming - Terminology - Semaphore, Mutex, Priority Inversion etc.

    Multi-Threaded Programming II - Native Thread for Win32 (A)

    Multi-Threaded Programming II - Native Thread for Win32 (B)

    Multi-Threaded Programming II - Native Thread for Win32 (C)

    Multi-Threaded Programming II - C++ Thread for Win32

    Multi-Threaded Programming III - C/C++ Class Thread for Pthreads

    MultiThreading/Parallel Programming - IPC

    Multi-Threaded Programming with C++11 Part A (start, join(), detach(), and ownership)

    Multi-Threaded Programming with C++11 Part B (Sharing Data - mutex, and race conditions, and deadlock)

    Multithread Debugging

    Object Returning

    Object Slicing and Virtual Table

    OpenCV with C++

    Operator Overloading I

    Operator Overloading II - self assignment

    Pass by Value vs. Pass by Reference

    Pointers

    Pointers II - void pointers & arrays

    Pointers III - pointer to function & multi-dimensional arrays

    Preprocessor - Macro

    Private Inheritance

    Python & C++ with SIP

    (Pseudo)-random numbers in C++

    References for Built-in Types

    Socket - Server & Client

    Socket - Server & Client 2

    Socket - Server & Client 3

    Socket - Server & Client with Qt (Asynchronous / Multithreading / ThreadPool etc.)

    Stack Unwinding

    Standard Template Library (STL) I - Vector & List

    Standard Template Library (STL) II - Maps

    Standard Template Library (STL) II - unordered_map

    Standard Template Library (STL) II - Sets

    Standard Template Library (STL) III - Iterators

    Standard Template Library (STL) IV - Algorithms

    Standard Template Library (STL) V - Function Objects

    Static Variables and Static Class Members

    String

    String II - sstream etc.

    Taste of Assembly

    Templates

    Template Specialization

    Template Specialization - Traits

    Template Implementation & Compiler (.h or .cpp?)

    The this Pointer

    Type Cast Operators

    Upcasting and Downcasting

    Virtual Destructor & boost::shared_ptr

    Virtual Functions



    Programming Questions and Solutions ↓

    Strings and Arrays

    Linked List

    Recursion

    Bit Manipulation

    Small Programs (string, memory functions etc.)

    Math & Probability

    Multithreading

    140 Questions by Google



    Qt 5 EXPRESS...

    Win32 DLL ...

    Articles On C++

    What's new in C++11...

    C++11 Threads EXPRESS...

    Go Tutorial

    OpenCV...








    Contact

    BogoToBogo
    contactus@bogotobogo.com

    Follow Bogotobogo

    About Us

    contactus@bogotobogo.com

    YouTubeMy YouTube channel
    Pacific Ave, San Francisco, CA 94115

    Pacific Ave, San Francisco, CA 94115

    Copyright © 2024, bogotobogo
    Design: Web Master