If you are using branches, you are not doing Continuous Integration/Deployment/Delivery!
You might have great Code Coverage with unit tests, you might be doing TDD, you might have functional and integrations tests written in BDD format and you might run all of them on every commit to the repository. However, if you are having branches, integration is delayed until they are merged and that means that there is no continuous integration.
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: