Path: senator-bedfellow.mit.edu!dreaderd!not-for-mail Message-ID: Supersedes: Expires: 31 May 2004 11:22:46 GMT X-Last-Updated: 1998/01/11 Organization: none From: vmalik@ipass.net (Vikas Malik) Newsgroups: comp.lang.smalltalk,comp.answers,news.answers Subject: ENVY/Manager FAQ (v.1.0) Followup-To: poster Approved: news-answers-request@MIT.EDU Originator: faqserv@penguin-lust.MIT.EDU Date: 17 Apr 2004 11:27:57 GMT Lines: 393 NNTP-Posting-Host: penguin-lust.mit.edu X-Trace: 1082201277 senator-bedfellow.mit.edu 576 18.181.0.29 Xref: senator-bedfellow.mit.edu comp.lang.smalltalk:144698 comp.answers:56874 news.answers:269926 Archive-name: smalltalk/ENVY-faq Posting-Frequency: monthly Last-modified: Oct 26,1997 Version: 1.0 URL: http://www.ipass.net/~vmalik/envy.html ____________________________________________________________________________ ENVY/Manager Frequently Asked Questions Copyright =A9 1994 Vikas Malik All Rights Reserved This FAQ may be posted to any USENET newsgroup, on-line service, or BBS as long as it is posted in its entirety and includes this copyright= statement. This FAQ may not be distributed for financial gain. This FAQ may not be included in commercial collections or compilations without express permission from the author. ____________________________________________________________________________ Vikas Malik - vmalik@ipass.net Knowledge Systems Corporation ____________________________________________________________________________ Contents * What is ENVY/Manager? * What are the different software components of ENVY? * What are the various stages a software component goes through during its development life cycle in ENVY? * What is the difference between an edition and version of a software component in ENVY? * What do I mean by the release of a software component in ENVY? * What do I mean by the term configuration in ENVY? * What are the different system components of ENVY? * What is an Application? * What is a Subapplication? * What is the difference between an application and a subapplication? * What is a class extension? * What is the difference between a class and a class extension? * What are the different types of relationships between software components? * What is the difference between a parts and a contains relationship? * What are prerequisites? * What are the prerequisite applications for Kernel application? * Can subapplications have prerequisites? * Can I define a class with the same name in two applications? * Can a subapplication be a part of more than one application? * Can I extend or subclass a class that is not visible? * What are visible classes? * What is a private class? * How do I make a class private? * What is a private method? * Does ENVY prevents the illegal use of private methods? * Can I change a version of a software component? * What is a scratch edition? * Can I release a class in a scratch edition of an application? * How do I scratch an application programatically? * What is a Configuration Map? * Is loading a software component in ENVY an atomic operation? * What is the difference between class owner and class developer? * Can I version an application edition that has an open edition of a class? * Can I create a new edition of a class in a versioned application? * Can I release an edition of a subapplication in an application edition? * Can I release an edition of a class in the containing application edition? * Can the class developer release a class to its containing application? * Can the subapplication manager release his subapplication to its enclosing application? * Can the application manager release his application in a configuration= map? * What do I mean by cloning the ENVY library? * What do I mean by purging of a component? * What do I mean by salvaging a component? * What is the #loaded method used for in ENVY? * What is the #removing method used for? * What is the #failedRemove method used for? * What are Application lineups? * What do I mean by ENVY baselining process? Q. What is ENVY/Manager? Ans. ENVY/Manager is a software engineering environment that provides the services=20 like configuration, history and change management required for development and maintenance=20 of large software systems. ENVY is based on "What you saved is what you get" paradigm. Q. What are the different software components of ENVY? Ans. Methods, classes, class extensions, applications, subapplications and configuration maps are various software components of ENVY. Q. What are the various stages a software component goes through during its development=20 life cycle in ENVY? Ans. A software component progresses through stages, from edition to version to release. Q. What is the difference between an edition and version of a software component in ENVY? Ans. An edition is a component that is open for change. An edition represents work-in-progress. Declaring an edition to be a version disables changes. A version is simply immutable edition. Q. What do I mean by the release of a software component in ENVY? Ans. Releasing a version of a component to its containing component makes that version the one that is part of the configuration and at which point those who load the containing=20 component get the new part. Q. What do I mean by the term configuration in ENVY? Ans. The configuration describes, for a given component edition, the versions and editions=20 of the components referred to by that edition. Q. What are the different system components of ENVY? Ans. 1. Library is the multi-user repository which contains the software components developed=20 by the users. 2. Users Q. What is an Application? Ans. An Application is a collection of classes that together serve some useful purpose. Q. What is a Subapplication? Ans. A SubApplication is an application that is a part of another= application.=20 Subapplications are used to isolate platform dependencies and to organize classes within=20 a large application. SubApplications may themselves contain SubApplications. Q. What is the difference between an application and a subapplication? Ans. An Application has prerequisites and whereas a SubApplication is not allowed to specify=20 prerequisites. Q. What is a class extension? Ans. A class can be extended in a separate application or subapplication by adding new methods=20 to a previously defined class. Q. What is the difference between a class and a class extension? Ans. Classes include the class definition and class comment, while the class extensions include=20 only methods. Q. What are the different types of relationships between software= components? Ans. 1. Parts relationship 2. Contains relationship 3. Prerequisite relationship Q. What is the difference between a parts and a contains relationship? Ans. In a parts relationship, the enclosed component can be part of other objects whereas in a=20 contains relationship, the enclosed component cannot exist outside of the enclosing component.=20 For example, an application can be part of several configuration maps whereas a method is said=20 to be contained by a class. Q. What are prerequisites? Ans. Prerequisites must exist in a system before a dependent component can be allowed. An=20 application defines prerequisite applications, indicating that the prerequisite applications=20 are required by the application before it can function. Q. What are the prerequisite applications for Kernel application? Ans. None. Q. Can subapplications have prerequisites? Ans. No, the root application of a subapplication specifies the necessary prerequisites. Q. Can I define a class with the same name in two applications? Ans. Two applications in the same library can define classes with the same name, but those two=20 applications would not be able to coexist in the same image. Each class in an image is defined=20 in one and only one application. Q. Can a subapplication be a part of more than one application? Ans. Yes, a subapplication may be part of several applications but these applications cannot=20 coexist in the same image. Q. Can I extend or subclass a class that is not visible? Ans. No.=20 Q. What are visible classes? Ans. Visible classes are those classes that are defined by an application, one of its=20 subapplications or one of its prerequisites. Q. What is a private class? Ans. A private class cannot be referenced, subclassed or extended from outside of its=20 application. Q. How do I make a class private? Ans. By sending #private message to aClass. aClass private.=20 Q. What is a private method? Ans. Private method should not be called outside of its inheritance= hierarchy. Q. Does ENVY prevents the illegal use of private methods? Ans. No. Q. Can I change a version of a software component? Ans. No, a version is immutable. Modifications can be made to component editions only. Q. What is a scratch edition? Ans. A scratch edition allows the modification of an existing application version in a=20 user's image. However, no changes can be made to the application version's state in the=20 library. Scratch editions prevent the unnecessary creation of an application edition by=20 the application manager.=20 Q. Can I release a class in a scratch edition of an application? Ans. No. Q. How do I scratch an application programatically? Ans. AnApplication asScratch.=20 Q. What is a Configuration Map? Ans. A Configuration Map is a named collection of applications. An application may be part=20 of any number of configuration maps. A configuration map is "one button" way to load a group=20 of applications. Most teams use a configuration map to periodically rebuild their image,=20 bringing in the latest integrated and tested versions of all their= applications. Q. Is loading a software component in ENVY an atomic operation? Ans. Yes, loading a component is atomic. The image is never left in an inconsistent=20 state - loading either succeeds completely or fails completely. Q. What is the difference between class owner and class developer? Ans. Class owner is the only user authorized to release a class version to its containing=20 application & delete it from an application. Class developer can create editions of the class,=20 make changes and version the result. Q. Can I version an application edition that has an open edition of a class? Ans. No, a component that has parts or contains other components can only be versioned if all=20 the subcomponents are themselves versions. Q. Can I create a new edition of a class in a versioned application? Ans. No, if a component has been versioned, none of the components that it contains may be made=20 into editions without first making it an edition. Before making an edition of a class, the=20 application that contains it must be an edition. Q. Can I release an edition of a subapplication in an application edition? Ans. Yes. Q. Can I release an edition of a class in the containing application= edition? Ans. No, classes may only be released to their containing application after being versioned. Q. Can the class developer release a class to its containing application? Ans. No, the class owner is the only user authorized to release the class to its containing=20 application. Q. Can the subapplication manager release his subapplication to its enclosing application? Ans. No, the manager of the enclosing application is the only user authorized to release a=20 subapplication. The subapplication may be either a version or an edition. Q. Can the application manager release his application in a configuration= map? Ans. No, only the manager of the configuration map edition may release applications to it.=20 The application may either an edition or a version. Q. What do I mean by cloning the ENVY library? Ans. Cloning a library exports all the versioned configuration maps and applications to another=20 library. In other words, all versioned configuration maps, their applications, subapplications=20 and classes are copied to new library. Cloning removes purged components from the library and=20 typically shrinks the library size by 50%. Only the library supervisor is allowed to clone the=20 library. Q. What do I mean by purging of a component? Ans. Purging a component instructs ENVY that the component is no longer of interest to the user=20 and should be omitted from the user interface. Purging a component does not free up the disk=20 space occupied by that component. Q. What do I mean by salvaging a component? Ans. Salvaging retrieves a purged component and makes it available in the user interface. Q. What is the #loaded method used for in ENVY? Ans. The #loaded method is implemented by an application to initialize its classes or variables=20 each time it is loaded. The #loaded message is sent to an application after it has been loaded=20 or reloaded. For example: ApplicationPorsche class>>#loaded Porsche911 initialize. PorscheBoxster initialize Q. What is the #removing method used for? Ans. The #removing method is implemented by an application to eliminate specific instances of=20 its classes contained in class, shared or global variables, prior to unloading the application.=20 Q. What is the #failedRemove method used for? Ans. The #failedRemove method is implemented by any application which defines a #removing method=20 to counteract anything done in #removing method. Q. What are Application lineups? Ans. Application lineups specify different configurations of application prerequisites and=20 subapplications for different platforms or conditions. Each platform or condition is specified=20 by a Configuration expression which evaluates to a boolean.=20 For example, application Swapper has the following lineups for its prerequisites and subapplications. Prerequisites System vmType =3D 'WIN' FileSystem R1.0 System vmType =3D 'st80' FileSystem R1.0 SubApplications System vmType =3D 'WIN' SwapperCrossloadingToSTV R3.50 SwapperSTV R3.50 System vmType =3D 'st80' SwapperCrossloadToST80 R3.50 SwapperST80 R3.50 Q. What do I mean by ENVY baselining process? Ans. A baseline provides a snapshot of the methods, classes and applications that are part of=20 the system at a specific point during development. ENVY baselines control versions of software=20 released to external entities and to synchronize Classes, Applications and Configurations=20 between developers so that the most up-to-date versions of these are readily available to the=20 entire development team. ********************************************************************* _________ \ \ \ \ ___ __ \ \ \ \ / | /\ \ \ \/ | O/ \ ***** \____________ \ / | \ / ############## ***+++^^^^^^^\ \ X **################***+++^^^^^^^ \ \ / \ ############## ***+++^^^^^ \___\ / \ \ \o O/ \ \ \ \ \ \ \ \ \_______\ =20 =20 I'D RATHER BE FLYING !!!