Sunday, November 23, 2014

An Introduction to Java Project Management

At this point, our project has the following, in order of importance:

Programming Language: Java

There are many other programming languages such as JavaScript, C, C++, C#, Perl, Python. After you write a computer program, you will need a compiler (or interpreter) to run that program. In order to compile C/C++ code, for example, you might use gcc.exe/g++.exe, respectively.

Build Manager: Maven

Another common build manager is Ant. In order to facilitate creating a single executable program that people can actually install and use, you will need a build manager. Build managers also help to import libraries and manage other resources (files, images, etc). In order to build C/C++ code, for example, you might use cmake (Makefile).

Integrated Development Environment (IDE): Eclipse

Common IDEs include Netbeans and IntelliJ. A good IDE will help you to build programs quickly and have lots of shortcuts to perform common tasks like starting with a template for new classes or importing other classes. In order to develop C/C++ code, for example, you might use Visual Studio C++.

Automated Testing: JUnit

For Java, JUnit really is the standard for automated testing. Agile methodologies such as SCRUM and Extreme Programming took down 6 month development cycles to 1 month. This meant getting your services out to customers quicker.

Version Control: Git

Other version control programs include WinCVS, SubVersion and Perforce. After you have been developing for a while, you will want to release different versions of your program. It can be helpful to explore a source code repository to compare, for instance, your source code from version 1.0 to your source code from version 2.0. And here are some additional things to incorporate into your project:

Bug and Feature Tracking: JIRA

There are also tools like BugZilla. A good rule of thumb is to have a few Wow! features and then deliver 20 percent of the desired features. Tools like JIRA allow you to prioritize all the great things you want to deliver while allowing the capability to deliver a solid product by really focusing on what you need to deliver.

Collaboration Tool: Wiki

JIRA also comes with Confluence. A Wiki page gives people a voice! Wiki pages, like blogs are very easy to use to share ideas and keep the communication and creative juices flowing. They can document resources and tutorials. Any new programmer should be able to join a new team and be up and running in a day. This includes being able to configure their personal development environment and then download and verify code.

Continuous Integration Tool: Bamboo

There is also Jenkins. A Continuous integration tool allows multiple developers to work in parallel. Typically, when a new developer commits code to the code base, you want a new build to be created, deployed and tested. Then, you want immediate feedback to know if the new commit broke previously working features. A continuous integration tool helps you to do this and provides the capability to send e-mails in the case things aren't working correctly, all automated, of course.

Database: MySQL

Once you have a lot of data that you need to store, you will want to add Database support. This allows you to hold customer names, addresses, etc or any other data your program uses.

Application Server: Geronimo

Apache has a Web Server for web pages and also has Tomcat. If your program has a lot of services that are needed by a lot of clients, you will want to look into using an application server.

This post was reposted from http://scottizu.wordpress.com/2013/08/18/an-introduction-to-java-project-management/, originally written on August 18th, 2013.

No comments:

Post a Comment