Wednesday, July 25, 2012

Agile Software Development Training

I recently attended a 2 days training on Agile methodologies for software development. Following are some of the salient points that i took a note of (may not be in order):

  • Agile software development emphasizes on more frequent releases (at least once per month). At the end of every sprint the product should be in releasable quality.
  • In order to keep the software in a release-ready state we need to build automated test suites and run the tests upon every check-in (continuous integration).
  • Plan only for short term (at max 2 sprint worth of duration) so that we can always re-prioritize the requirements (grooming the backlog) to accommodate any changes to the requirements.
  • We need to focus on driving down the fixed cost of development (like the cost to run the regression tests by running the regression tests through automated test suites) as much as possible.
  • Break down the dependencies on the hardware device by employing simulation tools or mock testing whenever cost to do so is acceptable.
  • To start with test automation, build a safety net of unit/acceptance tests around the legacy code.
  • TDD - Test driven development - emphasizes more rigorous unit testing (tests written prior to coding) - which makes it easy to catch regression issues from occurring going forward
  • Separate GUI event handler logic from the actionPerformed() method into a separate wrapper method which can be tested without invoking GUI.
  • Validations should be done on both client and server side preferably in common code being invoked from both client and server
  • SCRUM - is an agile project management process as represented with the screenshot below:

    • Product Owner (not shown) - same as product management team
    • Product backlog - requirements gathered from customers or partners. It is comprised of Epics (a big story) or stories. A story is a requirement adding value by itself. 
    • A story can be split into one or more stories during the "User Story Workshop" meetings (similar to functional specification review meetings where development team, product management and testers meet to understand the requirements more clearly and the outcome of this meeting is: more new stories which can fed back to product backlog, acceptance tests document which is written to test all possible use cases and shared understanding between participants)
    • The length of a story should typically be small (roughly 2 days worth or so)
    • Multiple stories are then taken up in a sprint (roughly about a month long) phase in which those stories are implemented 
    • The progress of sprint is measured using a burndown chart (which is a chart of the work remaining to be done against time)
    • Size of team = 1 to 14 people
    • The team can be comprised of some developers who will write code and automated unit tests, testers who will create the acceptance test document and automate those acceptance tests and also do some exploratory testing towards the end of the sprint
    • A nice video of Ken Schwaber on SCRUM @ Google.
  • Tools:
    • Continuous integration : Hudson/ Cruise Control
    • Unit test: TestNG
    • Acceptance test: Squish/ QFTest
The above notes is mostly what i could glean from the training i attended though it may not still summarize the details well enough or may have captured some details inaccurately.

Friday, July 20, 2012

Meeting with James Gosling (father of Java)


(Myself with James Gosling)

(Having a beer at the event)

(James presenting his talk)

Yesterday (07/19/2012) i went to attend the “Bay area all JUG event at Oracle with James Gosling” where all the JUGs (Java User Groups) in the bay area had gathered for an evening of socializing and to hear to James Gosling speak at the Oracle campus in Santa Clara.


The evening started with a casual social gathering in the 4030 George Sellon Cir, Santa Clara, CA campus of Oracle (erstwhile Sun campus) where dinner was served and Java developers from all over bay area (around 200+) interacted with each other, talked about Java in general, heard James talking about his work in Liquid Robotics or posed for a Java Music Video which was in the making on site. The camper chairs with Java logo on them were souvenirs which people were asked to take with them if they wanted to – so almost everyone promptly got up from their chairs and folded them and put them in their cars :) – this was funny but i too picked mine – it was souvenir after all.


Then we went into the hall where the presentations were held. There were 2 presentations:



This presentation was on running Java SE embedded on Raspberry Pi (a small form factor computer, which can run Linux off of a SD card, has 126MB/256MB RAM, ARM7 processor and HDMI, USB, RJ45 slots). A demo was show of a small Java web server running on the RPi device which was serving the system information.

  • "Robots and Oceans and Whales, Oh My!" by James Gosling

This presentation by James Gosling was about the Wave Glider robot of Liquid Robotics company which is an unmanned maritime vehicle (UMV) that uses the up and down wave motion in the ocean to move forward. It is designed to support variety of sensors on-board. It can either be stationed at one place for say weather measurement or be mobile. It transmits data to shore stations via Iridium satellite communications. The satellite communication is very expensive ($1/1Kb of data) so the focus of James’ work is in optimizing the data communication between these nodes in the ocean and the shore stations. James showed the work he was doing using the NASA World Wind Java SDK to plot the path of these robotic nodes on the world globe (NASA world wind is a nice example of an advanced Java Swing application for displaying geographic data). He has built a JMS-ish style publish-subscribe asynchronous communication channel between the nodes which is also authenticated (using Open AM and Open DS directory service) so that only interested nodes which have subscribed for say data from the weather sensor and have successfully authenticated to the robot will be provided access to the data. The business model is less about selling the robots themselves and more about selling the data from the robots to the various interested parties (Commercial ships, Oil Rig etc).


In short, both the presentations were quite interesting to me and i ended up buying the Raspberry Pi kit to get my feet wet in Java SE embedded programming.

Popular micro services patterns

Here are some popular Microservice design patterns that a programmer should know: Service Registry  pattern provides a  central location  fo...