{"title":"开放世界软件的挑战","authors":"C. Ghezzi","doi":"10.1145/1216993.1216995","DOIUrl":null,"url":null,"abstract":"Software has been evolving from pre-defined, monolithic, centralized architectures to decentralized, distributed, dynamically composed federations of components whose goal is to provide useful services. Software processes have been evolving along similar lines, from pre-specified sequential work- flows to decentralized and multi-organization endeavors. The organizations to which software solutions are targeted have also been evolving from highly structured to agile and networked enterprises. All this is affecting the way software is engineered (i.e., conceived, architected, and produced).Software applications increasingly live in an open world: They are embedded in dynamically evolvable environments and must adapt to continuous and even unpredictable change. Accordingly, software architectures need to evolve dynamically and must support reconfiguration and self-organizing features to respond to change requirements. Programming languages and their underlying support infrastructure, in turn, must provide specific features to support this level of dynamism. The traditional approaches followed to ensure software quality, which focus exclusively on pre-runtime validation, are inadequate in this new context. Continuous validation becomes necessary: validation must extend to after the system is deployed and running.The talk surveys the main architectural styles that support dynamic software compositions, the language and infrastructure requirements, and provides a view of the validation process for dynamically evolvable software systems.","PeriodicalId":235512,"journal":{"name":"Workshop on Software and Performance","volume":"73 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2007-02-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"6","resultStr":"{\"title\":\"The challenges of open-world software\",\"authors\":\"C. Ghezzi\",\"doi\":\"10.1145/1216993.1216995\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Software has been evolving from pre-defined, monolithic, centralized architectures to decentralized, distributed, dynamically composed federations of components whose goal is to provide useful services. Software processes have been evolving along similar lines, from pre-specified sequential work- flows to decentralized and multi-organization endeavors. The organizations to which software solutions are targeted have also been evolving from highly structured to agile and networked enterprises. All this is affecting the way software is engineered (i.e., conceived, architected, and produced).Software applications increasingly live in an open world: They are embedded in dynamically evolvable environments and must adapt to continuous and even unpredictable change. Accordingly, software architectures need to evolve dynamically and must support reconfiguration and self-organizing features to respond to change requirements. Programming languages and their underlying support infrastructure, in turn, must provide specific features to support this level of dynamism. The traditional approaches followed to ensure software quality, which focus exclusively on pre-runtime validation, are inadequate in this new context. Continuous validation becomes necessary: validation must extend to after the system is deployed and running.The talk surveys the main architectural styles that support dynamic software compositions, the language and infrastructure requirements, and provides a view of the validation process for dynamically evolvable software systems.\",\"PeriodicalId\":235512,\"journal\":{\"name\":\"Workshop on Software and Performance\",\"volume\":\"73 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2007-02-05\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"6\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Workshop on Software and Performance\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/1216993.1216995\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Workshop on Software and Performance","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1216993.1216995","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Software has been evolving from pre-defined, monolithic, centralized architectures to decentralized, distributed, dynamically composed federations of components whose goal is to provide useful services. Software processes have been evolving along similar lines, from pre-specified sequential work- flows to decentralized and multi-organization endeavors. The organizations to which software solutions are targeted have also been evolving from highly structured to agile and networked enterprises. All this is affecting the way software is engineered (i.e., conceived, architected, and produced).Software applications increasingly live in an open world: They are embedded in dynamically evolvable environments and must adapt to continuous and even unpredictable change. Accordingly, software architectures need to evolve dynamically and must support reconfiguration and self-organizing features to respond to change requirements. Programming languages and their underlying support infrastructure, in turn, must provide specific features to support this level of dynamism. The traditional approaches followed to ensure software quality, which focus exclusively on pre-runtime validation, are inadequate in this new context. Continuous validation becomes necessary: validation must extend to after the system is deployed and running.The talk surveys the main architectural styles that support dynamic software compositions, the language and infrastructure requirements, and provides a view of the validation process for dynamically evolvable software systems.