Which one is better? UCM or base ClearCase?
For paralel development, do we need UCM? Is using manual branching is error prone on base ClearCase?
Is serial de
One is not better than the other, UCM represents a different set of best practices that you can choose to apply on top of base ClearCase.
UCM is great at defining a coherent set of files (the UCM "component") that will be:
Parallel development can benefit from UCM because of the streams you can set-up in advance, in order to define your merge workflow. You don't impose anything, but if you finish a development effort on a sub-stream, the natural merge to do is a "deliver" to the parent stream. (As opposed to base ClearCase, where there is no "hierarchical organization" for branches: once you finish a task in a branch, you can merge your work to any other branch: there is nothing to remind you what could be a natural candidate branch for your merge).
But the other advantage is the definition of a configuration, i.e. the exact list of baselines (labels) you need to get in order to "work" (compile, or develop a new feature, or deploy, or refactor, or...).
Depending on the number of components you have to deal with, you will then adopt:
May I just add...
It really depends on the size and complexity of the development team working on the same project. For example, we have a large dev team consisting of 100s of devs from all over the world, and this team really benefits from all the features that UCM provides (as mentioned by master VonC above).
On the other hand, most of the teams in my organization are around 10 people, and they are all co-located at one location, and these teams really do not want to mess around with the deliveries and merges, so they choose to simply use base CC with basic branching strategy, e.g. one Integration/Release Branch, followed by each dev branch for each release, or personal dev branch. For smaller teams, we usually recommend them to use base CC because it is easier to manage.
Hope this helps.