Agile Development

Enterprise Java

The area of enterprise Java technologies (Java EE, formerly called J2EE) is one of our main specializations. We have got a know-how and deep knowledge in many Java technologies and frameworks.

Our main focus is a web application development, server components, middleware and SOA solutions. We try to always deliver high quality architecture and the high end technology based preferably (but not only) using open source.

Java EE platform defines APIs specifications of several technologies and way how to coordinate them. Platform allows to create portable and scalable enterprise applications which can be integrated with legacy systems. The runtime enviroment is an application server and the application should be theoretically running on every AS implementing the corresponding specification.

We have developed our experience mainly on the application servers JBoss AS, Weblogic AS and Apache Tomcat web container.

Subversion

The Apache Subversion is an open source version control system. It was developed as a replacement of the CVS and provides more flexibility and easy of use. We use SVN as our primary version management system as it provides a state of the art support for maintaining daily developers' tasks, preparing releases, generating patches etc. Although SVN proved to be a very stable and reliable tool, we are using it parallel to the more feature rich and faster tool called Git.

Link: http://subversion.tigris.org

Git

Git is a distributed revision control system. Main features that we are appreciate are speed, flexibility and fact that system does not depend on network or any central repository. Git is a free software initially designed and developed by Linus Torvalds for Linux kernel development. We are trying to use Git for all new projects.

Link: http://git-scm.com

Scrum

Scrum is our favorite development methodology. Currently it is also the most popular project management framework for agile development. It is based on the agile manifesto
which defines some value shift in against the classical project management methods (like Waterfall or V-Model):

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
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.

Scrum follows the following principles:

  • Transparency
  • Inspection
  • Adaption
    There are just 3 main roles: Product Owner (responsible for the product vision and prioritizing of the user stories based on their business value/ROI), a cross functional Team (its members can and must have different qualities needed for successful software development and delivery) and a Scrum Master with the main responsibility of removing all kinds of impediments and keeping the team safe from external influences. All other roles like customers, end users, managers etc. are strongly involved in the process (e.g. participate in various meetings) but have no direct influence on the delivered software.
    Scrum strongly relies on time boxing and self organization. In Scrum the software is being developed in the so called "Sprints", which are iterations with a fixed time length (usually 2 or 4 weeks).
    One sprint consists of the following milestones:
  • Planning meeting 1 (60 min.): The team chooses how many of the top priority user stories will be implemented (they come into the so called selected backlog)
  • Planning meeting 2 (90 min.): The team makes the major design decisions for the implementation of the user stories. Fine granular tasks are created and put onto the task board.
  • Sprint: it is the time when the tasks are being resolved. The team member basically pull the tasks from the task board and put them on the "in progress" column. If a task is done then it must be put to the done column. There can be also some intermediate states between "in progress" and "done" like "to be reviewed", "being reviewed" etc.
  • Daily standup (15 min. at the same time): It is a daily meeting with all team members and the scrum master (optionally the product owner), where everyone must tell the following 3 status infos: "what did I do yesterday", "What i am going to do today", "What kind of support do I need"
  • Sprint review (60 minutes on the last day): The result of the sprint is presented to the product owner, customer, end user and optionally other stakeholders. Mainly working software is presented and a fast feed back could be obtained by all stakeholders.
  • Sprint retrospective (60-90 min.): The team and the scrum master. Every one has to point some points that went good and such that could be improved. All points are collected and at the end every one has to vote to a limited number of top issues. At the end the team must decide on action items for the top issues (the ones with the most votes)
    In a good functioning Scrum process at the end of every sprint the team delivers a working software that is immediately deployed in production.

Parallel to the sprints the so called estimation meeting take place. Their main purpose is to maintain the product backlog, clarify the requirements and constraints of the user stories, finding not so obvious dependencies and estimating the complexity of the user stories.

Combined with the proper tooling (mainly testing frameworks/utilities and application lifecycle management tools) Scrum represents a great tool for extremely efficient software development by achieving an unmatched quality and customer satisfaction of the delivered products.

Links:
http://www.scrumalliance.com
http://www.scrum.org
http://en.wikipedia.org/wiki/Scrum_(development)

Spring Web Flow

Spring Webflow is an open source framework for managing navigation and conversations in web applications. Initially it started as an add on project of Spring MVC web framework. Currently webflow supports also GWT and JSF as underlying frameworks.
The major strength of spring webflow is when it is used for web applications that have a "heavy" conversational state (e.g. wizards, surveys etc.). It perfectly integrates with the rest of Spring ecosystem including Spring bean and Spring MVC.

Spring MVC is a web framework based on the Model View Controller pattern. It is comparable to Struts in its programming model. It has a perfect integration with the Spring dependency injection framework. Enhanced by JQuery and JQueryUI it could be also used for more interactive applications.

We recommend the 2 frameworks mainly for projects that have extensive conversational states. For modern interactive applications we mostly prefer component based frameworks like GWT/ExtGWT, Wicket, Tapestry etc.

Links: http://www.springsource.org/webflow

Google Web Toolkit (GWT)

Google Web Toolkit is a development toolkit for building and optimizing complex browser-based applications. Its goal is to enable productive development of high-performance web applications without the developer having to be an expert in browser quirks, XMLHttpRequest, and JavaScript. GWT is used by many products at Google, including Google Wave and the new version of AdWords. It's open source, completely free, and used by thousands of developers around the world.

English (United States) Deutsch (Deutschland)

News


18.5.2011   Released a Page version link plugin for  Atlassian Confluence

We have released a plugin for adding the page version link into every confluence page. Read more.

 

6.4.2011   Introduction into the Spring framework

Our colleague, Martin Podolinský, held a presentation of the Spring framework at the Czech JBoss user group session. Slides from the presentation are available here.