Moving an application to ICs requires additional discipline by the developers responsible for packaging the ICs and by the quality assurance teams testing changes prior to their delivery into the field. First, developers that create ICs need to maintain a resource known as a snapshot file. A snapshot file contains information about what objects were packaged into an IC. When packaging an IC, the snapshot file is output into the same directory as the IC file. The name of the snapshot file will be the same as the IC file, but with a suffix of .snp. As a result, teams need to be disciplined about management of .snp files and sharing of these files among teams.The snapshot file is required when packaging dependent ICs and during subsequent packaging operations to re-create the initial IC. From a development perspective, the .ic file, the .snp file, and the packager instruction class used to produce the IC should be managed as a unit. Snapshot files need not be deployed to users, because they are used only for packaging. Snapshot files contain information about the state of the image at the time of packaging. There are no restrictions on the state of the development image used to package an IC. The Applications within the image might consist of open editions with unreleased classes, or even scratch editions. Although not desirable for managing and maintaining production Smalltalk code, VA Smalltalk packager gives you the freedom to manage the state of your image prior to packaging. However, to allow the resulting IC to be used as a prerequisite and to determine the compatibility of changes for subsequent packaging of the original IC, the snapshot file records the state of the image in terms of the Applications, SubApplications and Classes within it. It records what was loaded in the image at package time for future reference. A snapshot file contains only the information pertaining to the IC that was created, not the whole image.Snapshots cannot be loaded into an image like Applications or configuration maps. For this reason, even though snapshots are somewhat like automatic versions they should not be used in this manner. ICs and snapshot files that are produced by a development team should be based on stable code that has been properly versioned in VA Smalltalk, so that the configuration used to package the IC can be easily retrieved.If a VA Smalltalk application is the product of the effort of two or more teams, where different teams are responsible for different ICs within the final deployment, a procedure should be established for delivery of the .ic files, .snp files, and packager instruction classes from the team creating them to the teams that will use them. The process becomes more complex if several teams are dependent on each other's development efforts. In these situations, it is best to set up an internal IC clearing house within the organization. The most natural candidate for such a group is the team that is responsible for maintaining highly reused components and frameworks. In other words, the discipline required for multiple team development of ICs is the same as the process used to manage reusable components within the organization. Some other points to consider are:Packaged ICs contain information for the development environment such as method categories, class time stamps and library file pointers. To avoid loading this information into memory when loading an IC, specify the -r runtime option on abt.exe. This can make a difference for ICs that contain many CompiledMethods, as each CompiledMethod would otherwise use 4 bytes of memory for holding the library file pointers.
|