Using TDD and BDD in a Project

Using TDD and BDD in a Project

Top Down Design

  • Write BDD Gherkin files to describe the expected functionality of the product. This will give a help level understanding of what a product should do.
  • Write low level unit tests for a feature/functionality to drive development following TDD approach.

Bottom Up Implementation

  • Develop the feature/functionality using Red-Green-Refactor approach and make all the written tests pass.
  • Once the feature/functionality is implemented, write the implementation for the BDD scenarios and check the expected behavior is met.
  • Iterate the same for all other features.

SSL Certificates

Getting ssl certificates

Easy and free ways to setup ssl certificates on your server

  • https://www.cloudflare.com
  • https://letsencrypt.org/getting-started/

Jira REST API

Jira REST API

Overview

  • The endpoints for jira api have the following format <host>/rest/<api-name>/<api-number>/. The api-name is api and api-number is 2. A sample rest call to fetch a issue using Basic Authentication
    curl -H "Authorization: Basic <Encoded username-password>" -H "Content-Type: application/json" https://<hostname>/rest/api/2/issue/SAAS-324`
    

Authentication

  • A client can authenticate with JIRA REST API using three ways.
    • Basic Authentication
    • OAuth
    • Cookies

Agile Software Development

Agile Notes

How a Project success can be measured?

Mostly if:

  • Done on Schedule.
  • Done on budget.
  • Done meeting specifications.

Other ways to measure success:

  • Developer satisfaction.
  • Number of post release bugs.
  • Product reviews/ratings.
  • Customer Satisfaction.
  • Revenue Generated.
References
  • http://scottambler.com/backup_muse/no-common-definition-of-success.html
  • http://www.ambysoft.com/surveys/success2013.html

  • Agile is directly proportional to success. The reason is, because of its principles which you will learn later. Agile thrives to build better software, happier developers and satisfied clients.

Agile Manifesto

Agile methodologies and principles are based on Agile Manifesto. The Agile Manifesto has four core values and twelve principles.

  • http://agilemanifesto.org/iso/en/manifesto.html

How agile principles/practices can be implemented in a project?

  • A process can be used to apply agile principles in a project. A process divided the work in a project into different phases. The phases are divided into activites and activites are further divided into tasks, where the actual work is done.

  • https://www.codeproject.com/articles/17121/importance-of-processes-and-standards-in-software
  • https://en.wikipedia.org/wiki/Software_development_process
  • http://ieeexplore.ieee.org/document/1665059/?reload=true&arnumber=1665059

Different Software Processes

  • Linear process models
    • https://pragtob.wordpress.com/2012/03/02/why-waterfall-was-a-big-misunderstanding-from-the-beginning-reading-the-original-paper/
  • Iterative Process models
    • http://csse.usc.edu/TECHRPTS/1988/usccse88-500/usccse88-500.pdf
  • Parallel Process models
    • http://www.informit.com/articles/article.aspx?p=24671

Which process models does agile principles fit betterly?

  • The agile principles complement the iterative process model betterly when compared with others.

Agile practices and Methodologies

  • Agile methodology is a group of agile practices. Popular agile methodologies are scrum and XP. XP emphasis on engineering practices and scrum emphasis on software management.

Scrum:

XP:

LEAN:

  • LEAN philiosophy extendes the agile philosophy. Its main goal to eliminate and improve quality of product.
  • LEAN principles

KANBAN:

  • KANBAN is a methodology following the LEAN principles.
  • KANBAN

TEDx talks

GNU Licenses

GNU/Linux

The goal of the GNU project is to promote free software. Richard Stallman started the project. By free software, he means freedom for users. He describes four things

  • A user should be able to freely use the software for whatever purpose he wants.
  • A user should be able to modify the program to suite his/her needs.
  • A user should have the freedom to redistribute the software copies.
  • A user should be able to distribute modified versions of the software.

He felt that the first thing to do to promote free software is to develop a free operating system. The first software package developed as a part of it is GNU Emacs. Some other packages developed were GCC compiler, GNOME and so-on. The kernel used was Linux kernel developed by linus torvalds. So, the operating system is called as GNU/Linux. All the linux distros are based from GNU/Linux. However, only some distros are treated by the GNU project as GNU/Linux distros. Here is the list of GNU/Linux distros. The most popular linux distros are not endorsed by GNU because of mainly two reasons.

  • The distros dont have a policy of only including free software and remove non-free software if it is discovered.
  • The kernel they distribute contains only blobs and no source code.

References:

  • https://www.gnu.org/gnu/thegnuproject.html
  • https://www.gnu.org/distros/common-distros.html