Monday, February 23, 2009

The SCM Tools Requirements statement

I am ready to begin creating my N3/triples table for my CM tools requirements spec so doing some research on where to begin. I have a spreadsheet with many columns to detail responses to each requirement which are laid out in each row. The columns will serve to display the following:

Impact Area - the task area or part of the tool does the requirement affect (such as admin, build and deploy, defect tracking, source control, etc.)
Role - the functional area is affected (admin, build, engineering, QA, BA, support, etc.)
Item - the requirement description
Detail - a detailed description of the requirement that needs to be met, or specific data requirements
Benefit Value - a statement of justification to why this requirement is important or needed
Value to Us - a ranking scale of 1-5 where 1 is Ok and 5 is Mandatory
Vendor response and rankings - comments from the vendor if needed (i.e. if a requirement is not met why, and can it be expected in the next release), and how they are rated against the requirement.

So, as an abstract on my Project Page in our wiki group I have stated: "Semantic web technologies provide a way to add meaning to data and to use software tools to help navigate that data in new and interesting ways. This paper explores the use of semantic web technologies in the area of Software Configuration Management (SCM) tools and how to select the correct one for your project or organization. Specifically, this paper reports on the how variables in selecting a tool have been used to help solve the problem of what requirements are met by analyzing the functionality of each tool and determining how each requirement has or has not been met. The results of this effort will show that we were able to select the best SCM tool for the job."

Thursday, February 5, 2009

What Tool to use for Software Configuration Management

On my current project we are currently experiencing much difficulty in managing a very large software code repository with dozens of software branches, most in support that have become ‘customer specific’ branches due to specific changes or enhancements that the customer has requested. Add to that the multiple development branches all in parallel, and more customer specific branches that include the latest release that they all want to test in their production databases to see if they can upgrade from at least several major versions back of the product. Oh, and don’t forget we also have more changes being submitted (defects or enhancements) and worked on every day that must be merged to other branches if they are considered a ‘core’ fix. So you have code changes across many branches that need to be synchronized with defect or change management along with builds and releases that need to be propagated to their correct environments like QA, client test, production test, etc.

You get the picture. In order to manage all of this you need to have tools that fit the projects needs. An ALM (Application Lifecycle Management) tool is best because it has added benefits of requirements, design, and test management which can integrate well with your SCM (Software Configuration Management) tools.

There are many tools available in the market today that do some or all of the ALM processes required for good implementation and tracking of project activities. Some of the keys to good tools are integration, traceability and automation. These simplify the entering, tracking, and reporting of data while also providing a detailed result of what is being delivered.

My current project has been using the same tools for many years, all of which are not integrated and have minimal automation. Many of the processes used are manual and take many hours to complete. Communication can be affected my not having the right information at the right time, or not being able to generate the information in a complete and quick fashion.

So my task is to help select a new tool (or set of tools) that meet the majority of our needs and that can migrate as much of our existing data as possible so that we can maintain the history of our product. The challenge though will be to select the best tool for the job for the best cost. This doesn’t mean choosing the tool that costs the less, but choosing the tool that gives the best long term ROI (return on investment).

This will be the subject of my paper for this class. I will use a requirements specification written specifically for our project detailing requirements for SCM tools. This requirements specification will also contain items specific to our project in terms of third party tool integration (SCCI – Source Code Control Interface), distributed or remote use and performance, and that will satisfy all key stakeholders in the project organization such as engineering, quality assurance, project management, implementation teams, support teams, etc.

To summarize, the problem I am going investigate is how to pick the best SCM tool for the project with the best ROI. After all this is a must in today’s environment to get senior management to approve these kinds of expenditures which can easily grow to well over $100,000.

Monday, February 2, 2009

some paper writing tips

I have been doing some research on criteria for acceptance of a paper for a conference or journal publication (OOPSLA site). Following are some things you want to do to explain the contribution of your paper and convince the program committee that your work is correct.

Have your paper reviewed by colleagues. This is important to get expert advice on the topic or problem you are writing about. Opinions of others in the community and profession will always make you think about the details of you research such as 'did I cover everything?'.

Tips on getting a theoretical paper accepted:
- Motivate and analyze the significance of the topic being theorized
- Give paper a clear focus, a single idea that is thoroughly discussed
- State thesis carefully, be sure to support it and make it easy for the reader to find quickly
- Theory must prove or disprove something of interest to the community
- Answer the question of ‘what does x provide that was lacking in a previous analyses?’ explain how things can be done differently

Tips on getting an experience paper approved:
- Tells an informative story on some aspect of development, delivery, design, or architecture on an application
- Present a single topic or case study and then reflect on broader issues
- Present ideas clearly and succinctly
- Don’t discuss areas of future research
- Include relevant facts, sum up key points and cite related ideas when appropriate
- Provide enough details to relate the experience to the readers
- Present lessons learned to compare with other’s experiences
- Don’t include too detailed of coding examples
- Summarize highlights and amplify a few keys points

Here is a good check list, advice to follow by Kent Beck:
“The rejection rate for OOPSLA papers in near 90%. Most papers are rejected not because of a lack of good ideas, but because they are poorly structured.”

So by following some simple steps in writing a paper, it will dramatically increase your chances of acceptance.

Start the paper quickly and get o the point in the first page as you want to grab the interest of the reader right away. There are many steps to get a paper approved and many readers
Ensure your paper has a ‘spark’ to keep an expert reading it until the end. Think of one startling sentence to get attention and then make your case

Convince the reader of the truth of your amazing statement. Formalize your argument into 4
sections in terms of problem, solution, defense, related work.
- Problem – describe why it is a problem and what the problem is
- Detail how your solution solves the problem
- Defend the solution and convince the reader that the problem is actually solved. Show that you have thought of all reasonable counter arguments
- Describe what other people have done in the area to convince the reader that what you have done is novel
Abstract – begin with a four sentence summary of the conclusions of your paper. This is important to get your paper into the ‘A’ pile which will be passed on to the next phase of approval

Well this is the end of today’s research on how to write a good paper.