Is there a correlation between versions and milestones?

A lot of OS projects that I know (I'm a PHP developer) use versions as steps, but is this the best way? Should milestones mean something during the iteration of the project (meaningful names)? Are there any rules? Or maybe it's completely subjective?

+1


source to share


5 answers


In our development process, versions and milestones are something different. One of our standard steps is release. This is, of course, the version. But for me, a milestone is something in the future that I have to plan for. The version is related to the release, so this is what it was in the past.

Our standard reference framework is based on the company's standard project management standard. We have

  • S-Gate: Specified
  • A-Gate: Available
  • V-Gate: tested
  • R-gate: released


For iterative development, we basically repeat this cycle. From gates A to V is the alpha phase, from V to R the beta phase. For larger projects, we add feature-specific milestones that are completed.

The reason we use it is mainly because all projects communicate according to this schema, and it is always good practice to present information to management as they are familiar; -)

+3


source


As the old adage goes, "the great thing about standards is that there are so many to choose from." I can't tell you how to do this for a PHP project, but I can tell you which approach we are using for our store is .NET store.

We use a fairly traditional four-part version control system, with each part of the version representing something different. For example:

Major.Minor.Revision.Build

Obviously, each of them will be a number. These four parts, for us, are predetermined by Microsoft. Let me walk you through the stack as we justify each one:



  • Build - automatically increases in our store. This indicator is similar to a unique identifier for an assembly as it is provided by the compiler.
  • Revision - reserved for a release that doesn't break compatibility. The public interfaces have been retained, and third-party implementations are expected to work unchanged.
  • A minor is a release that usually introduces new features, changes existing functionality, and increases the risk of a compatibility break.
  • Major - large-scale changes that involve large rewrites, large new feature sets and are fundamentally different from the previous codebase.

Where are the milestones to play? These are the goals of the project for us. Milestones are set before the start of the project and represent the points at which the expected level of progress is to be achieved. It is mainly used to present pre-release functionality to business users and to monitor the overall release delivery schedule. We additionally apply a label in our version control for each milestone to help easily identify the milestone if it needs to be manually created for any reason.

In our store, the content of the milestone is more important than what it is called. What for? Difficult milestones cannot easily be named in a way that conveys meaning when there are multiple reasons why it is a milestone. We put milestones on the calendar and wiki describing what is expected to be achieved in it.

As I mentioned earlier, I'm sure you will get other "standards" as well. The goal is to find a process that works for you and your team and stick to it.

+4


source


Well, yes, that means you have completed enough work in the iterations to release something useful. A milestone usually means that you have gained more than just the end of the iteration. I would use meaningful names yes.

+1


source


You are talking about at least two unrelated things. There is control of the source code and the main stages of the project. They are related, but they are not the same thing. In addition, the software development itself is also working there, which is related to the source code and project milestones, but it is also different.

Here's a Scrum based approach. It has three unrelated things that can be numbered or named.

First, software development works there.

  • We have sprints to build things. They can be numbered, but they usually have names. Names such as "Bulk Loading Part 1" or "Refactor Working Document Library" or "Add Sales Demo Data" or something like that.

  • We have releases to release. They can be numbered (based on SVN revision or based on our internal "compatibility version", but they usually have names. "First version for client X" or "Bug fix for this" or "Upgrade to this" or something still meaningful.

Second, there is source code control. For this we have internal version / version tracking, which has little to do with sprints and releases.

  • SVN has repository version numbers. This increases with every check. Within a few weeks a check goes through there. Several weeks, there are only a few "big" checks.

  • We have a major.minor version number that we manually update to show compatibility. Some applications are moving from 1.1 to 1.2 because something hasn't changed much, but the database and API are the same. Other applications are moving from 2.3 to 3.1 because either the database or the API (or both) have changed in some incompatible way, and we need to migrate the schema and possibly notify the client about the changes in the REST client interface.

Third, project planning.

Our milestone project planning includes our release schedules. However, the milestones of a project involve other things that have little to do with software. Milestones include things like "Signing a new hosting agreement" such as "Get test data from customer X". These are not versions or releases or sprints or whatever.

"Are there any rules?" Yes. Read up on Scrum for a good set of rules.

This is not one thing. These are two (or three) things.

+1


source


Version numbers are handy because you can take any two versions at once and see which one is newer. This will always be subjective to some degree, because who is to say which feature (s) or error correction constitutes a milestone?

The schema I like is xyz, where x is the major release number, y is the minor release number, and z is the build number. A major release will mean either a rewrite, a major overhaul, or new new functionality. A minor release would mean a significant bug, or a number of minor feature enhancements or bug fixes. The build number will be exactly this: the number of buildings.

0


source







All Articles