July 9, 2013

Best practices for Maximo projects

Today I have received the following questions from one of our customers.
  • Are there any best practices or recommendations on how to develop and maintain different versions of a Maximo based solution?
  • How can we do source control?
  • Are there any compare tool/utility to find differences in various version of application (available in different environments)?
Expanding a little, in this article I will present my own recipes to cook successful Maximo projects.


Development Methodology

I am a strong fan of Agile philosophy and less enthusiastic adopter of Agile software development methodologies like Scrum, XP or Crystal.
I really believe that the right way to seek success and perfection in software development project is to strive to align your processes, organization and culture to the four value statements of the Agile manifesto whatever methodology you are using.

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

There is no silver bullet here. Every project is different. Every customer is different. You have to experiment and improve keeping in mind those principles.
My own motto is: Start Small, Grow Fast. I always use this as a very simple guiding principle.





Workspace structure

I suggest to keep all the files and documents in a single place. There is no need to create boundaries between development, test or project management people. Everybody is on the same ship and a great collaboration is fundamental for an efficient and productive team. If possible, give access to the customer to entire set of files and documents. Foster mutual trust and establish a partnership.
This is a common set of directories in a project folder.
  • Mbo: Home of an Eclipse project for Mbo Java code (aka businessobjects).
  • Web: Home of an Eclipse project for UI Java code (aka maximouiweb).
  • Applications: Applications definitions exported in XML files. Any time a change is made, the app definition must be exported and stored here.
  • Scripts: TPAE 7.5 scripts.
  • Database: Custom database triggers and SQL scripts.
  • Docs: Requirements, plans and procedures as well as architectural and design documents. All the team members should use this folder to collaborate for a lean workgroup.
I know that some of these files are stored in a safe place in the Maximo database. However, I think it is better to keep together all the custom code in a common repository where you can also search for previous versions of a specific file.


Collaboration, Backup, Versioning

The workspace described above must be shared across all the team members including specialists, architects, developers, project managers and stakeholders.
Avoid using email to exchange documents. This could quickly become a nightmare. Break old habits. Share a list of tasks on Google Docs and ask everyone to keep it updated. Create a design document and edit it in real time during a review session. Many times we don't need strict rules and processes.

Regarding the technology for storage and versioning of the workspace it really depends on the size of the team. As a general rule:
  • 1-3 members: A shared folder with a weekly backup is enough. Cloud services like Google Drive, SkyDrive, DropBox, etc. are great and free. Google platform enable a powerful collaboration platform with chat, email, real time document collaboration and sharing.
  • 4-6 members : Here you will need some versioning system like CVS, SVN or Git. You may decide to setup your own server or to go cloud.
  • 7 or more: You need some requirement/bug management system. Those systems are typically called ALM (Application Lifecycle Management). IBM Rational Team Concert is a great and powerful tool but can be a little complex to administer. There are tons of ALM services on the cloud


Tools

First of all, share a common set of productivity tools. Look at Maximo specialist Swiss Army Knife for my selection of tools.
If you have to develop Java customization you have to set some coding standards.
In real world scenarios you will always face some challenges to keep in sync development, test and production environments. Unfortunately, there is no tool to compare two different Maximo environments. That's why I have develop my own method.
An effective technique is to periodically clone the production environment to the test and development environments with a procedure like this.
On the other side it is important to use Migration Manager to move packages to be released from dev to test to production.

8 comments:

  1. Bruno the post is very interesting !!!
    but without an image it's impossible promote it on Pinterest, Linkedin, Facebook Page, etc. etc. !

    If someone tries to promote your post the only image that can use is that of your profile :-)

    ReplyDelete
  2. About workspace structure, we prefer single projects for artifacts with different nature (java, db-scripts, etc.) or targets (UI war or businesobjects.jar). In a specific project we also put the migration-manager packages.

    ReplyDelete
    Replies
    1. Yes, in the same folder you will have some subfolders.
      Some of them are Eclipse projects like 'Mbo' or 'Web' some others are just directories with documents.

      Delete
  3. Bruno, what a great post!
    I suggest to setup a versioning system even in case of a one-member team, at least for the code. Capabilities like searching, switching between different revisions, reverting changes, or just having the history of changes beside their aims, are a time-saver for developers.

    ReplyDelete
    Replies
    1. Giuseppe,
      I agree with your point. Geeks like you can :-) take advantage of versioning systems even if playing in a one-man-band.
      Keep in mind that Eclipse is also automatically keeping track of file changes and allows to go back to previous versions of the source files. All you have to do is right-click and select Replace with > Local History...

      Delete
  4. Hi Bruno,
    I was looking for some best practices to maintain and manage Maximo application related customization and Configurations. For example if a customer is having single instance of Maximo and multiple departments are using the same environment for their business needs. Lets say tomorrow a new business unit in being brought into Maximo and they have their own set of requirements. How do we manage this. Are there any best practices which tells to clone or add additional fields based on some standard criteria.

    ReplyDelete
  5. How we can use some vcs for MM packages which contains some XML linked with manifest? Any ideas?

    ReplyDelete