{"title":"基于ide的面向对象软件模式演化解决方案","authors":"M. Piccioni, M. Oriol, B. Meyer, T. Schneider","doi":"10.3929/ETHZ-A-006733700","DOIUrl":null,"url":null,"abstract":"Most large software systems rely on extensive amounts of persistent data — objects. Most large software systems last a long time, over which they need to change program elements — classes. Inevitably, these two characteristics clash: how do we retrieve previously “persisted” objects when the classes that describe them have changed? Naive solutions, such as initializing new fields to default values, are dangerous, since they risk invalidating the consistency of objects. For example it would be wrong for a bank account class to initialize a newly added “balance” field, in every retrieved object, to zero. Practical considerations also apply: we cannot force the code for each class to retain all its previous versions. The ESCHER framework addresses these theoretical and practical issues through an IDE-based approach, guiding the developers interactively in the process of defining object adaptation on a class-by-class basis, respecting consistency requirements expressed by class invariants. Based on the conversions specified in this process, an algorithm will transform objects as needed, enforcing class invariants to prevent the creation of any corrupt objects. The presentation describes the principles behind invariant-safe schema evolution, the design and implementation of the ESCHER system, and the experience so far.","PeriodicalId":10841,"journal":{"name":"CTIT technical reports series","volume":"13 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2009-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"An IDE-based Solution for Schema Evolution of Object-Oriented Software\",\"authors\":\"M. Piccioni, M. Oriol, B. Meyer, T. Schneider\",\"doi\":\"10.3929/ETHZ-A-006733700\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Most large software systems rely on extensive amounts of persistent data — objects. Most large software systems last a long time, over which they need to change program elements — classes. Inevitably, these two characteristics clash: how do we retrieve previously “persisted” objects when the classes that describe them have changed? Naive solutions, such as initializing new fields to default values, are dangerous, since they risk invalidating the consistency of objects. For example it would be wrong for a bank account class to initialize a newly added “balance” field, in every retrieved object, to zero. Practical considerations also apply: we cannot force the code for each class to retain all its previous versions. The ESCHER framework addresses these theoretical and practical issues through an IDE-based approach, guiding the developers interactively in the process of defining object adaptation on a class-by-class basis, respecting consistency requirements expressed by class invariants. Based on the conversions specified in this process, an algorithm will transform objects as needed, enforcing class invariants to prevent the creation of any corrupt objects. The presentation describes the principles behind invariant-safe schema evolution, the design and implementation of the ESCHER system, and the experience so far.\",\"PeriodicalId\":10841,\"journal\":{\"name\":\"CTIT technical reports series\",\"volume\":\"13 1\",\"pages\":\"\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2009-01-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"CTIT technical reports series\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.3929/ETHZ-A-006733700\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"CTIT technical reports series","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.3929/ETHZ-A-006733700","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
An IDE-based Solution for Schema Evolution of Object-Oriented Software
Most large software systems rely on extensive amounts of persistent data — objects. Most large software systems last a long time, over which they need to change program elements — classes. Inevitably, these two characteristics clash: how do we retrieve previously “persisted” objects when the classes that describe them have changed? Naive solutions, such as initializing new fields to default values, are dangerous, since they risk invalidating the consistency of objects. For example it would be wrong for a bank account class to initialize a newly added “balance” field, in every retrieved object, to zero. Practical considerations also apply: we cannot force the code for each class to retain all its previous versions. The ESCHER framework addresses these theoretical and practical issues through an IDE-based approach, guiding the developers interactively in the process of defining object adaptation on a class-by-class basis, respecting consistency requirements expressed by class invariants. Based on the conversions specified in this process, an algorithm will transform objects as needed, enforcing class invariants to prevent the creation of any corrupt objects. The presentation describes the principles behind invariant-safe schema evolution, the design and implementation of the ESCHER system, and the experience so far.