What is REST API?
REST stands for Representational State Transfer. It relies on a stateless, client-server, cacheable communications. In most cases it is used with the HTTP protocol.
RESTful applications use HTTP requests to POST (create), PUT (create and/or update), GET (e.g., make queries), and DELETE data. REST uses HTTP for all four CRUD (Create/Read/Update/Delete) operations.
InfoQ: Behaviour-Driven Development: Value through Collaboration
Agile Record (Issue 17): Behaviour-Driven Development: Value through Collaboration
Specification by Example at Barcelona Software Craftsmanship (4th of February 2014)
BDD Workshop at Barcelona Software Craftsmanship (4th of March 2014)
Specification by Example at Universitat Politecnica de Barcelona (UPC) (28th of April 2014)
Continuous Integration, Deployment and Delivery at Barcelona Software Craftmenship (2nd of June 2014)
Behavior-Driven Development (BDD): Value Through Collaboration at Agile 2014: Orlando
Google is one of the biggest, the coolest and the most profitable companies in the world. Probably the main reason for being at the top is their ability to innovate continually. According to Gopi Kallayil there are 9 core rules that drive Google’s innovative culture:
- Innovation comes from anywhere
- Focus on the user
- Aim to be ten times better
- Bet on technical insights
- Ship and iterate
- Give employees 20 percent time
- Default to open processes
- Fail well
- Have a mission that matters
Behavior-Driven Development (BDD) is a process or it can be a tool. In many cases, BDD is both. However, it should not be a goal in itself. The goal of software development is to deliver quality as fast and as cheap as possible. The only real measure of quality is whether it fulfills user needs in a reliable manner. The best way we can take to accomplish that goal is through continuous integration, deployment and delivery. For the sake of this article I will ignore the differences between those three and refer to all of them as continuous integration or CI.
There’s a lot of discussion related to server vs client side application rendering. While there is no “one choice fits all” solution, I’ll try to argue in favor of client side (specifically AngularJS) from different points of view. First of them is architecture.
Well done architecture has clearly defined separation of concerns (SoS). In most cases minimal high level configuration is:
In the beginning there was Make as the only build tool available. Later on it was improved with GNU Make. However, since then our needs increased and, as a result, build tools evolved.
JVM ecosystem is dominated with three build tools:
In the previous article we explored static analysis as one of the first steps in Continuous Delivery. Our journey will continue with unit tests.
Unit tests are probably the most important part of Continuous Delivery. While unit tests cannot substitute integration and functional tests, they are very easy to write and should be very fast to execute. As any other type of tests, each unit test should be independent of each other. What differentiates unit from other types of tests (integration, functional) is the scope. Each unit test should verify only a single unit of code (method, class, etc). Main benefit of unit tests are that they can find problems early due to their speed of execution. When ease of writing is combined with very short execution time it is no wonder that unit test often represent biggest part of automated tests.