Agile Devlopment application idea
I have been working in a group of 8 student developers for my Agile Devlopment in teams course. Since this is a process course, the focus is on practice and not on results (one would hope). For second week of work session I volunteered to be the tracker. The main problem which I observed so far was that the documentation was all haphazard. I am not used to working with papers and a previous experience of mine with time tracking is also a big motivation (I really hate to pinpoint time tracking, but it is useful in some scenarios).
At the beginning of each iteration we have a bunch of user stories. Each user story has atleast a description and a set of acceptance tests. These acceptance tests have description and an expected result. Then each of these user stories have a priority for the current iteration. Each user story can be devided into tasks, but this is some thing best done by the programming team. Each User story has an estimate and so does each task. The estimate is usually in number of man hours but it can be less (and it is certainly in our case) In XP since every thing is done in pairs, therefore each task (and probably all with the same user story) go to a particular pair based on bidding (who so ever bids the least time gets the task).
After completion of a task/user story, some one from the team (probably the customer representitive) has to check each user story against it's acceptance tests.
Each week any two personnel from the teams act as Customer representetive and Tracker for the project. The tracker is suppose to keep track of all the metrics involved in the project. The idea is to make a simple web/desktop based software which can do all of these simple things with no hassle. And since this course is all about agility this software should be up and running over the weekend.
I am thinking of using Ruby on Rails. This would finally be my chance to work with RoR. Perhaps all the facilities are readily provided by other open source software like Trac, but there are many features like time tracking (like in basecamp) which I would like to see in an Agile Devlopment Tracking software. This is just an idea for now , lets see if I am able to cook some thing nice :)
Posted in Technology | no comments |
Injecting DAOs in OpenNMS
In my Summer of code project I have to use already established DAOs (well some times adding a few tid bids) and using them to replace JDBC code. Testing DAOs with Hibernate tools made it alot easy to play with both HQL and criteria, but I was stuck when it came to injection. It seems that OpenNMS uses lots of technologies like JMX which I have never even touched before
attached is a log of a conversation which I had with a devel on #opennms. Based on this conversation I some how was able to bug the devel into writing all of this into a wiki page.
There was one small confusion though, I was working with Poller which was infact Pollerd, there being a naming inconsistency. Following this wiki page I should be now able to easily inject Dao's to my required daeomons and other classes.
Posted in Technology | no comments |
OpenNMS Poller Tests
For past few days I have been working on OpenNMS poller tests. I have to adapt the curretn tests so that they can better utilize the Hibernate upgradation i am taked for do for my SoC project. A quick grep led me to find the following java files in my svn branch.
Under trunk/opennms-services/
src/test/java/org/opennms/netmgt/config/PollerConfigFactoryTest.java
src/test/java/org/opennms/netmgt/config/PollerConfigManagerTest.java
src/test/java/org/opennms/netmgt/mock/MockPollerConfigTest.java
src/test/java/org/opennms/netmgt/poller/PollerTest.java
src/test/java/org/opennms/netmgt/poller/remote/PollerBackEndIntegrationTest.java
src/test/java/org/opennms/netmgt/poller/remote/PollerBackEndTest.java
src/test/java/org/opennms/netmgt/poller/remote/PollerFrontEndIntegrationTest.java
src/test/java/org/opennms/netmgt/poller/remote/PollerFrontEndTest.java
Under trunk/opennms-webapp/
src/test/java/org/opennms/web/services/PollerServiceTest.java
I have skipped remote poller tests for now. I have started with PollerTest as it seems to be the most obvious. As per suggestions of OpenNMS community I am extending this Test class from AbstractTransactionalDaoTestCase. But since AbstractTransactionalDataSourceSpringContextTests comes in its parent hierarchy, which sets setUp and tearDown as final. This means that eiteher a new way of setUp and tearDown have to be figured out, or spring context has to be provided from with in the indivisual tests. I think the second way means much of boilerplate code in different unrelated places and hence duplication.
I am still updating the code, more to come on this blog entry.
Posted in Technology | no comments |
Hibernate Tools and OpenNMS
I was in need of checking my HQL queries from within Eclipse so I could check for their validity. Furthermore since it was for a Spring/Hibernate based project (namely OpenNMS for my Google Summer of code) so there was no hibernate.cfg.xml to begin with (OpenNMS has loads of other configurations in which it stores what it needs to do with hibernate and databases). So the solution was simple, to make a brand new hibernate.cfg.xml for own use (this file wont be committed, but i think a provision of such thing should be there so there is easy way for new comers to startup hibernate tools)
I have been reading up alot for my Summer of Code, I have completely read Harnessing Hibernate and am currently taking reference from Beginning Hibernate and from Java Persistence with Hibernate. These are all excellent books. Harnessing hibernate was helpful in the setup of hibernate tools in Eclipse.
Following are some screenshots of hibernate tools on my system.
Posted in Technology | no comments |
Summer of Code gift from Google
Well its no longer a surprise that Google sends out goodies to its Summer of code students before the start of Summer of Code, but it is still a surprise that which title would they be sending. I recieved (with apologies to those who still want this surprise to be secret) Beutiful Code by Andy Oram & Greg Wilson. I had this book in e-format previously, but i would probably never have read it. I already started reading it's Chapter 20 which is reltaed to a Java based information portal which was devloped for Mars Rover missions. This is an excellent gift for an aspiring Software engineer like me. Thank you Google :)
Posted in Technology | no comments |
Getting Selected for Google Summer of Code '08
I have been selected for Google Summer of code for the second time. My writing skills and my socilazing on irc has paid off well and now it time to concentrate on my software devlopment skills. Like last year I witnessed the irc party on #gsoc @ freenode. There were almost 900 people in attendence and Leslie was trying to calm every one down by frantically typing, 'calm down' , 'chill', 'patience' every other second :). I have so far gotten emails from both Google and OpenNMS. here is an excrept from Google's email
Dear Applicant,
Congratulations! This email is being sent to inform you that your
application was accepted to take part in the Summer of Code. Please
check your student home page in the SoC web application at
http://code.google.com/soc/student_home.html to determine which of
your applications was accepted.
Over the next few days, you will be added to a special members only
......If you cannot take part for some reason, please email us at
gsoc@google.com as soon as possible so that we can allocate your slot
to another student.
Other questions and concerns should be send to gsoc@google.com
Thanks for taking part; we're very excited to see what the Summer will bring!
Congratulations once again,
The Google Summer of Code Progam Administration Team
and here from RangerRick (Ben Reed from OpenNMS)
== Hello ==
So I just wanted to send out a quick note to welcome you to the OpenNMS
community, and to thank you for getting involved in Summer of Code!
This is our first time as a mentoring organization, so we'll be learning
alongside you how to do things. If you have any questions, please don't
hesitate to contact.........the next month, it's "Community Bonding" time. Time for you to get
to know us, for us to get to know you, and for everyone to get familiar
with interacting, checking out/building/working with the OpenNMS
codebase, and all that fun stuff. Get on the mailing lists, join us in
IRC, introduce yourselves, and most importantly, have fun!
- --
Benjamin Reed
The OpenNMS Group
http://www.opennms.org/
I am already a part of the Google Student mailing list and have updated my profile for this year's project. I aslo see that this year there is some one else working on Internet2 Java OWAMP project and hopefully they will succeed this time. As for me I will be start the tasking of my project as of today (ie identifying the small tasks for the migration).
Wish me luck :)
Posted in Technology | no comments |
Setting up WebSVN
I wanted to setup Trac on my server, but haven't found a recepie which only uses nginx for Trac and SVN componenet. So I decided to go for plain Webbased SVN application. I chose WebSVN because it uses PHP and is easy to setup, it's used by KDE project for their SVN view and most of all, its readily available in Ubuntu :). I found a nice tutorial from HowToForge.com for setting up svn and websvn on Ubuntu. My websvn repository can be found here.
Posted in Technology | no comments |
Trying out AppFuse
I was looking inot making my own spring-mvc project through maven and found the archetype:generate command. I was pleasently surprised to find app-fuse stuff within the realms of maven. These projects (maven and appfuse) are different but related projects and some times cause confusion. Appfuse basically allows devlopers to quickly setup an application for a Java EE project with the option of using state of art open source Java EE frameworks (Spring, Struts2, Tapestry). Where as maven is a build tool (like maven) with a flexible project model. It even has its own integration server by the name of continuum (which can tell devs if a build is broken).
I only ran mvn archetype:generate command and rest of the SpringMVC-Hibernate application was setup by the framework it's self. It even made it's own database and put in the required tables. It would be interesting to see how it does all of this with maven.
Posted in Technology | no comments |
Project Summer Hibernation
following is a repost of my SoC proposal for OpenNMS
Synopsis
OpenNMS currently still depends on some PostgreSQL-specific behavior (especially in stored procedures) which keeps it from being database-independent. Although OpenNMS has been slowly transitioning its code to use Hibernate instead of direct JDBC calls, but there is a lot of code still using JDBC. The following is a project proposal for Google Summer of code 2008 to the OpenNMS project. This document gives details of project methodology, time lines, and risks.
in short
- The aim is to complete hibernate transition for the entire OpenNMS project. Author's aim is to complete major tasks by Dev-Jam 2008.
- The deliverable are code, test cases and documentation. OpenNMS installation documentation which deals with OpenNMS install with MySQL and perhaps a few other OSS Databases will be part of deliverable.
- Applicant has been a part of OpenNMS user community for a year now and has genuine interest in Java EE software development(due to his present job and future education and career directions)
- Applicant will be sharing code samples before project selection to show mentors that the applicant has sufficient background in Java EE software development.
Further info and code samples will be available at http://code.hatimonline.com/opennms
Who Am I
My name is Shahzada Hatim (aka geoaxis on #opennms). I am a 25 year old computer system engineer from Pakistan, currently part time certificate course student (http://www.vu.edu.pk) and a prospective Masters student for different IT programs in EU (starting in Aug, Sep 2008).I work for a small Belgian company as open source software developer. I am also a returning summer of code participant. I was selected for a project by Internet2 in 2007. I started work on the project and made some headway with it. Unfortunately timing constraints and a work emergency on my then job took precious weeks off my schedule and I was unable to deliver the project's Midterm goals. I dropped out of the program.
Interestingly one of the things which I was involved during my work emergency was to replace Jff-NMS with OpenNMS and to use it to monitor a SAN setup (previous setup had a server meltdown causing the emergency) at a major telecoms client's site. At that time the job I was doing was part support and part software development. Since last six months I have joined a core development company working on Java EE and specifically Spring/Hibernate. I have gained considerable know how for using these technologies.
Methodology
I am resigning from my full time position in May 2008 as I am already getting pre-admission offers from universities in Germany and Sweden. Since their course work will start in Sep/Oct 2008 I will have considerable time on my hand to work for SoC. Therefore I will have no commitments other than SoC and 3 credit hour distance education Masters level certificate course.
I would divide my tasks into practical and attainable parts along with the help of my mentor. My experience with Spring/Hibernate leads me to believe that this tasking would be trivial but it would ideally be done with deeper discussion with the mentor (before the project starts). Good thing about this project is that it can be done in small incremental steps which are virtually independent of each other and is unlike some other projects where there can be a lot of dependency on past work.
The time before SoC session 1 would be used to do administrative work and revision of technologies. The major coding portion will take place in 3 time slots which would account for 7 weeks. I intend to participate in Dev Jam through telecommute (1 week). Rest of 4 weeks are dedicated as cushion time and for testing.
Committing code in small chunks would be the best practice for this project. Not only would daily commits be helpful for everyone to ascertain the progress of the project, but also when these changes make it to trunk they will have more chance of getting tested and reviewed by OpenNMS community.
I have sufficient knowledge of Java EE to start working on this particular OpenNMS project. My preferred work platform is my 17inch Core 2 Duo, 3GB Ram Acer Laptop running latest Ubuntu Linux and Eclipe Europa with WTP. I have an optimal DSL connection at home for the purpose of daily checkouts and commits. I have my own Virtual Private Server with an irssi screen session running (and joined on #opennms) so I am always available on irc. Of course I would be thrilled to be part of the OpenNMS’s internal jabber list as well. Weekly/Bi-Weekly meetings through text or voice chat could also be helpful.
I will be blogging extensively about my development activities on my blog with tags of ‘opennms' and ‘soc’.
Why I want to do this project
- Brush my Spring/Hibernate skills, Java EE skills.
- Get up to speed with latest (but necessary) Spring/Hibernate techniques and be part of a team to design and code OpenNMs with those techniques.
- Get a chance to contribute to OpenNMS community.
- to get Google SoC T-Shirt.
Project Schedule
April 7 – April 21
Placing samples on-line, revising proposal, reading up texts such as ‘Spring in Action’ and ‘Java Persistence with Hibernate’
April 21 – May 25 (5 weeks)
Week 1 Finalize/Tweak Goals, Review Code to identify tasks for Slots.
Week 2-4 Learn unknowns like Maven, OpenNMS patch how-to, revise Spring/Hibernate (+ other theory like DAO pattern and how it’s used in OpenNMS)
Week 5 Complete all design aspects/discussion with Mentors.
May 26 - July 07 ( 6 weeks)
Week 1-2 Time Slot A
Week 3-4 Time Slot C
Week 5-6 (wrap up, cushion, testing)
July 7 - July 14 ( 1 week)
Midterm evaluation
July 07 - Aug 18 (6 weeks)
Week 1-3 Time Slot C
Week 4 Dev Jam
Week 5-6 (wrap up, cushion, testing, finalize documentation)
Aug 19 - Aug 25 (1 week)
Final Review
Deliverable
- Complete Hibernate Migration with DAO and Service (mock) tests.
- Running OpenNMS on MySQL only (and perhaps some commercial database like Oracle or MSSQL)
- Replace all stored procedures with equivalent constructs (in terms of relative performance)
- Documentation and tests to accompany code (an embedded DB would be used for persistence tests).
Bonus Goals
Since major portion of OpenNMS code will be reviewed, I am also suggesting that code overhaul with respect to spring framework can be a bonus goal. This could include useage to latest Spring 2.5 techniques and annotation based Hibernate mappings.
One tangible bonus goal can be to benchmark the performance of OpenNMS after code changes. I am confident that there won’t be any negative
performance impact but it would be good to have statistics. For this open source Java profilers may be used. This is strictly in the case
where all tasks are done well ahead of schedule.
Risks
Every project has some risks involved. It is wise to identify them first and follow a strategy to avoid them.
One risk could be any prior commitments which cause hindrances in SoC. Since last year I got stuck in a work related issue which made me leave SoC, this year I am choosing to only focus on SoC (and my Summer course). I have absolutely no commitments (at least till end of August) in the coming summer
Another risk can be lack of expertise. Though I don't claim to be an expert in ORM and dependency injection frameworks, but for the past 6 months I have been working on commercial applications which use Spring/Hibernate. I am willing to back my claims with working code which I am currently adapting to use maven and should be available on my site running under jetty—maven plug-in (similar to OpenNMS bundled jetty).
In short I am pretty confident that I am a strong candidate to work on SoC project for OpenNMS. Thank you for considering my application for your project.
Posted in Technology | no comments |
Summer of Code Application extended
Google's Summer of code application deadline for students has been extended for one week. It's now Monday April 7th 2008. This is good as well as bad. It's good because it gives me one more week to make my application even better, and it's bad because I will be spending now more time in the application process than in actual coding
Edit:
Well I didn't spend more time on my application, but I was able to get Jetty running through maven. Apprently User Mode Linux was preventing Jetty from binding to an IP, but after migrating to Xen every thing works smoothly now. It seems that I would also be able to run OpenNMS now :).
I am currently following the following good links for sample application devlopemnt
http://www.lulu.com/content/1087191 (Set of tutorials to start devlopment with Spring and Hibernate using Maven2)
http://today.java.net/pub/a/today/2007/03/01/building-web-applications-with-maven-2.html (Maven 2 Web application devlopment tutorial using Jetty plugin)
I have also found the following book to be useful
Posted in Technology | no comments |
Older posts: 1 2

