Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599874
Y. Gidron, Lev Kozakov, U. Shani
The remote procedure call (RPC) is a commonly used mechanism for client/server applications. RPC implements a tightly synchronized client/server interaction that is analogous to the well-understood procedure call in regular non-distributed applications. The underlying principle common to all RPC-based tools and standards is that both the client and the server share a common IDL (Interface Definition Language) file. Automatic tools process the IDL file and generate source files that, when compiled with the application, ensure client/server run-time compliancy. We introduce an RPC methodology for C++ client/server applications that follows a different pattern-the sharing of C++ base classes-in place of an IDL file. This releases the developer from the dependence on, and need to learn complex RPC tools and standards. C++ programmers should find this approach sufficient for most of their distributed-application development needs.
{"title":"An RPC-based methodology for client/server application development in C++","authors":"Y. Gidron, Lev Kozakov, U. Shani","doi":"10.1109/ICCSSE.1997.599874","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599874","url":null,"abstract":"The remote procedure call (RPC) is a commonly used mechanism for client/server applications. RPC implements a tightly synchronized client/server interaction that is analogous to the well-understood procedure call in regular non-distributed applications. The underlying principle common to all RPC-based tools and standards is that both the client and the server share a common IDL (Interface Definition Language) file. Automatic tools process the IDL file and generate source files that, when compiled with the application, ensure client/server run-time compliancy. We introduce an RPC methodology for C++ client/server applications that follows a different pattern-the sharing of C++ base classes-in place of an IDL file. This releases the developer from the dependence on, and need to learn complex RPC tools and standards. C++ programmers should find this approach sufficient for most of their distributed-application development needs.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"58 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129492757","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599878
Y. Birk, N. Bloch
In distributed redundant-resource systems such as communication networks with multiple paths between nodes, there is a choice in allocating resources to tasks; this can be used for fault-tolerance, but also in order to improve performance. The allocation, however is complicated by the fact that the system state is not known and changes dynamically. Exploiting redundancy by partitioning a message into several submessages and sending them along with several "redundant" submessages along different paths, as is done by dispersal schemes, increases the load, reduces capacity and even increases delay at permissible heavy loads. We present and analyze novel "prioritized dispersal" schemes, whereby "redundant" submessages receive lower priority than the "original" submessages, and show their performance to substantially exceed that of non-prioritized schemes. This extends the beneficial applicability of selective exploitation of redundancy, whose benefits for centralized systems have been established, to distributed systems.
{"title":"Prioritized dispersal: a scheme for selective exploitation of redundancy in distributed systems","authors":"Y. Birk, N. Bloch","doi":"10.1109/ICCSSE.1997.599878","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599878","url":null,"abstract":"In distributed redundant-resource systems such as communication networks with multiple paths between nodes, there is a choice in allocating resources to tasks; this can be used for fault-tolerance, but also in order to improve performance. The allocation, however is complicated by the fact that the system state is not known and changes dynamically. Exploiting redundancy by partitioning a message into several submessages and sending them along with several \"redundant\" submessages along different paths, as is done by dispersal schemes, increases the load, reduces capacity and even increases delay at permissible heavy loads. We present and analyze novel \"prioritized dispersal\" schemes, whereby \"redundant\" submessages receive lower priority than the \"original\" submessages, and show their performance to substantially exceed that of non-prioritized schemes. This extends the beneficial applicability of selective exploitation of redundancy, whose benefits for centralized systems have been established, to distributed systems.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"72 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124881764","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599872
M. Naaman, A. Zaks
A command-and-control application developed at IET has recently undergone a major architectural change to use a blackboard framework. As opposed to many blackboard-based applications, in which the blackboard model is used to model only the top level of the application, we developed a blackboard framework that is fractal-like: the blackboard paradigm serves as the abstraction for all levels, recursively. We have also achieved maximal separation among the different blackboard-based elements at the various levels. This implies having small disconnected components which are flexible and reusable, and which together form the application. In this paper, we present our fractal blackboard framework and discuss interesting issues related to its design and usage.
{"title":"Fractal blackboard framework","authors":"M. Naaman, A. Zaks","doi":"10.1109/ICCSSE.1997.599872","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599872","url":null,"abstract":"A command-and-control application developed at IET has recently undergone a major architectural change to use a blackboard framework. As opposed to many blackboard-based applications, in which the blackboard model is used to model only the top level of the application, we developed a blackboard framework that is fractal-like: the blackboard paradigm serves as the abstraction for all levels, recursively. We have also achieved maximal separation among the different blackboard-based elements at the various levels. This implies having small disconnected components which are flexible and reusable, and which together form the application. In this paper, we present our fractal blackboard framework and discuss interesting issues related to its design and usage.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128655444","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599883
D. Soroker, M. Karasick, J. Barton, D. Streeter
Montana is a new C++ programming environment being developed at IBM. Montana aims to improve the software development experience by providing rapid incremental builds, rapid complete builds, and a tightly integrated user interface driven from a single source of information. Montana uses a program representation (CodeStore) to achieve these aims, with compilation proceeding directly from the database. APIs for accessing information about programs from the CodeStore are also made available for tool builders. In this paper we focus on the extension mechanism in Montana, which enables integration of existing tools and creation of new sophisticated, tightly integrated tools.
{"title":"Extension mechanisms in Montana","authors":"D. Soroker, M. Karasick, J. Barton, D. Streeter","doi":"10.1109/ICCSSE.1997.599883","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599883","url":null,"abstract":"Montana is a new C++ programming environment being developed at IBM. Montana aims to improve the software development experience by providing rapid incremental builds, rapid complete builds, and a tightly integrated user interface driven from a single source of information. Montana uses a program representation (CodeStore) to achieve these aims, with compilation proceeding directly from the database. APIs for accessing information about programs from the CodeStore are also made available for tool builders. In this paper we focus on the extension mechanism in Montana, which enables integration of existing tools and creation of new sophisticated, tightly integrated tools.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128743185","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599882
R. Horspool, H. C. Ho
Partial redundancy elimination has become a major compiler optimization that subsumes various ad hoc code motion optimizations. However, partial redundancy elimination is extremely conservative, failing to take advantage of many opportunities for optimization. We describe a new formulation of partial redundancy elimination based on a cost-benefit analysis of the flowgraph. Costs and benefits are measured by the number of evaluations of an expression. For that reason, our technique requires estimates for the execution frequency of every edge in the flowgraph. The new technique is much more aggressive, performing more code motion and thereby reducing the number of expression evaluations as compared to the standard optimization.
{"title":"Partial redundancy elimination driven by a cost-benefit analysis","authors":"R. Horspool, H. C. Ho","doi":"10.1109/ICCSSE.1997.599882","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599882","url":null,"abstract":"Partial redundancy elimination has become a major compiler optimization that subsumes various ad hoc code motion optimizations. However, partial redundancy elimination is extremely conservative, failing to take advantage of many opportunities for optimization. We describe a new formulation of partial redundancy elimination based on a cost-benefit analysis of the flowgraph. Costs and benefits are measured by the number of evaluations of an expression. For that reason, our technique requires estimates for the execution frequency of every edge in the flowgraph. The new technique is much more aggressive, performing more code motion and thereby reducing the number of expression evaluations as compared to the standard optimization.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121582254","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599873
A. Ran, Jianli Xu
One of the main concerns of software architects is managing the complexity that is inherent in the development and evolution of large software by minimising and isolating dependencies between different parts into concise descriptions of their interfaces. Possible grouping, ordering or other relations and constraints between the interface elements themselves or with the intended user appear as informal comments or are left unspecified. We have developed a model for structuring and describing interfaces that is suitable for complex software components. In each interaction domain, we use interface objects for hierarchical groupings of interface elements related to the specific function or role played by the component in its interactions with other components. When components are aggregated into composite components, their interface objects may be aggregated in a similar way into composite interface objects. The state of an interface object allows one to specify the conditional availability of its interface elements. Nonuniform visibility of interface elements to different collaborators may be achieved by alternative groupings of interface elements and by selective visibility of interface objects. Interface objects isolate and open a part of the component implementation that is relevant for understanding the interactions of the component, and they thus serve as precise descriptions of its interfaces. An important principle of our approach was to address these problems without introducing new tools or languages, in order to make the approach immediately useful for software engineers working on product development.
{"title":"Architecting software with interface objects","authors":"A. Ran, Jianli Xu","doi":"10.1109/ICCSSE.1997.599873","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599873","url":null,"abstract":"One of the main concerns of software architects is managing the complexity that is inherent in the development and evolution of large software by minimising and isolating dependencies between different parts into concise descriptions of their interfaces. Possible grouping, ordering or other relations and constraints between the interface elements themselves or with the intended user appear as informal comments or are left unspecified. We have developed a model for structuring and describing interfaces that is suitable for complex software components. In each interaction domain, we use interface objects for hierarchical groupings of interface elements related to the specific function or role played by the component in its interactions with other components. When components are aggregated into composite components, their interface objects may be aggregated in a similar way into composite interface objects. The state of an interface object allows one to specify the conditional availability of its interface elements. Nonuniform visibility of interface elements to different collaborators may be achieved by alternative groupings of interface elements and by selective visibility of interface objects. Interface objects isolate and open a part of the component implementation that is relevant for understanding the interactions of the component, and they thus serve as precise descriptions of its interfaces. An important principle of our approach was to address these problems without introducing new tools or languages, in order to make the approach immediately useful for software engineers working on product development.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116974222","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599870
M. Pighin
Presents a methodology to assess software quality, based on the structural parameters of the software, and to validate it by factorial and regression analysis. This methodology is able to predict every file risk level, or, in other words, how likely it is that a file contains faults. The influence of structural parameters on the conditions which characterise a system can vary enormously. Once the environment has been identified and a reasonable amount of data accumulated, it is possible to construct a model which identifies potentially dangerous programs; moreover, this model is dynamic and can be continually recalibrated to suit the environment in question. The conclusions we have reached allow us to assert that both the results obtained by the proposed methodology and the basic assumption upon which the theoretical framework depends have been substantially proven.
{"title":"A quality methodology based on statistical analysis of software structure","authors":"M. Pighin","doi":"10.1109/ICCSSE.1997.599870","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599870","url":null,"abstract":"Presents a methodology to assess software quality, based on the structural parameters of the software, and to validate it by factorial and regression analysis. This methodology is able to predict every file risk level, or, in other words, how likely it is that a file contains faults. The influence of structural parameters on the conditions which characterise a system can vary enormously. Once the environment has been identified and a reasonable amount of data accumulated, it is possible to construct a model which identifies potentially dangerous programs; moreover, this model is dynamic and can be continually recalibrated to suit the environment in question. The conclusions we have reached allow us to assert that both the results obtained by the proposed methodology and the basic assumption upon which the theoretical framework depends have been substantially proven.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"85 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134177688","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599880
M. Auguston
Iterative control constructs in data flow programming languages have always been a challenging part of language design. We suggest a solution for iterative processing in data flow diagrams based on the notion of a conditional data flow switch, and specialized iterative constructs based on pattern matching for vectors, matrices, and multisets. All of these constructs can be seamlessly incorporated into a dataflow visual programming language. We demonstrate how these constructs may be used to reveal the spatial/temporal dualism of data streams.
{"title":"Visual data flow language based on iterative constructs","authors":"M. Auguston","doi":"10.1109/ICCSSE.1997.599880","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599880","url":null,"abstract":"Iterative control constructs in data flow programming languages have always been a challenging part of language design. We suggest a solution for iterative processing in data flow diagrams based on the notion of a conditional data flow switch, and specialized iterative constructs based on pattern matching for vectors, matrices, and multisets. All of these constructs can be seamlessly incorporated into a dataflow visual programming language. We demonstrate how these constructs may be used to reveal the spatial/temporal dualism of data streams.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"72 12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130413380","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599881
V. Gouranton, D. Le Métayer
We propose an approach for the formal development of static analysers which is based on transformations of inference systems. The specification of an analyser is made of two components: an operational semantics of the programming language and the definition of a property by recurrence on the proof trees of the operational semantics. The derivation is a succession of specialisations of inference systems with respect to properties on their proof trees. In this paper we illustrate the methodology with the derivation of analysers for a non-strict functional language.
{"title":"Formal development of static program analysers","authors":"V. Gouranton, D. Le Métayer","doi":"10.1109/ICCSSE.1997.599881","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599881","url":null,"abstract":"We propose an approach for the formal development of static analysers which is based on transformations of inference systems. The specification of an analyser is made of two components: an operational semantics of the programming language and the definition of a property by recurrence on the proof trees of the operational semantics. The derivation is a succession of specialisations of inference systems with respect to properties on their proof trees. In this paper we illustrate the methodology with the derivation of analysers for a non-strict functional language.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127785909","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1997-06-18DOI: 10.1109/ICCSSE.1997.599875
O. Shtrichman, R. Goldring
The LA system combines the testing, debugging, monitoring and control of real-time systems. It is capable of improving a system's reliability and development productivity. This is achieved by enabling the developer to describe parts of the specification with logic and temporal logic assertions. The assertions are automatically compared to the actual behavior of the system under development (SUD), and its environment information about the SUD's behavior is represented by informative events and states. This information is transferred to LA from different resources by using special directives inserted inside the code (an approach we call 'informative box'). When an assertion is violated, an informative message is given so that bugs can be detected and focused on. In addition to the message, a user function can be called. This can be used for real-time control and monitoring, either while testing the system or after it has already been launched. The informative box method enables one to perform smart, pin-pointed tests and temporal tests, neither of which can be performed by using standard black-box techniques. This is why LA can assist in the testing and integration of real-time embedded systems, reactive systems, and particularly in the testing of multiprocessor systems running cooperative processes. Considerable time and effort can be saved by using LA throughout the development process. Moreover, it has the capability to detect erroneous situations that otherwise would be more difficult to notice, as was proven when it was used to handle several communication protocol simulations.
{"title":"The 'Logic Assurance (LA)' system-a tool for testing and controlling real-time systems","authors":"O. Shtrichman, R. Goldring","doi":"10.1109/ICCSSE.1997.599875","DOIUrl":"https://doi.org/10.1109/ICCSSE.1997.599875","url":null,"abstract":"The LA system combines the testing, debugging, monitoring and control of real-time systems. It is capable of improving a system's reliability and development productivity. This is achieved by enabling the developer to describe parts of the specification with logic and temporal logic assertions. The assertions are automatically compared to the actual behavior of the system under development (SUD), and its environment information about the SUD's behavior is represented by informative events and states. This information is transferred to LA from different resources by using special directives inserted inside the code (an approach we call 'informative box'). When an assertion is violated, an informative message is given so that bugs can be detected and focused on. In addition to the message, a user function can be called. This can be used for real-time control and monitoring, either while testing the system or after it has already been launched. The informative box method enables one to perform smart, pin-pointed tests and temporal tests, neither of which can be performed by using standard black-box techniques. This is why LA can assist in the testing and integration of real-time embedded systems, reactive systems, and particularly in the testing of multiprocessor systems running cooperative processes. Considerable time and effort can be saved by using LA throughout the development process. Moreover, it has the capability to detect erroneous situations that otherwise would be more difficult to notice, as was proven when it was used to handle several communication protocol simulations.","PeriodicalId":430125,"journal":{"name":"Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering","volume":"46 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1997-06-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117030702","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}