If reuse should only be allowed from a particular collection of objects, it is
easy to add constraints or generator-based checks to ensure that this is so.
When multiple users are simultaneously logged in, the repository and tool also take
care of locking issues, preventing one user??™s changes being overwritten by another
user who has not seen them. As we saw in Section 14.3.5, the level of granularity of
such locks should be as ?¬?ne as possible to allow the maximum permeability and
freedom of use. Changing an element should not prevent others from seeing the most
recent committed version of that element: developers are used to working with the
latest published version of interfaces or components.
Multiuser repositories are found in MetaEdit+ and GME, and at least MetaEdit+
ful?¬?lls these requirements (lack of experience with large-scale use of GME prevents
us from talking about it in more detail). Both tools also have a single-user version, and
both make the difference between the versions largely invisible to users. This indeed is
a useful goal: it should be possible for a user to work on his area of a shared project
mostly as if he were the only user. Making this possible requires sensible decisions in
the meta-metamodel, the metamodel, and the models.
Software development has found modularization to be a powerful tool, and models
too should be separated along lines based not only on functionality but also on
developer responsibility.
Pages:
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778