全部 标题 作者
关键词 摘要

OALib Journal期刊
ISSN: 2333-9721
费用:99美元

查看量下载量

相关文章

更多...

A Cost Effective and Preventive Approach to Avoid Integration Faults Caused by Mistakes in Distribution of Software Components

DOI: 10.1155/2014/439462

Full-Text   Cite this paper   Add to My Lib

Abstract:

In distributed software and hardware environments, ensuring proper operation of software is a challenge. The complexity of distributed systems increases the number of integration faults resulting from configuration errors in the distribution of components. Therefore, the main contribution of this work is a change in perspective, where integration faults (in the context of mistakes in distribution of components) are prevented rather than being dealt with through postmortem approaches. To this purpose, this paper proposes a preventive, low cost, minimally intrusive, and reusable approach. The generation of hash tags and a built-in version control for the application are at the core of the solution. Prior to deployment, the tag generator creates a list of components along with their respective tags, which will be a part of the deployment package. During production and execution of the application, on demand, the version control compares the tag list with the components of the user station and shows the discrepancies. The approach was applied to a complex application of a large company and was proven to be successful by avoiding integration faults and reducing the diagnosis time by 65%. 1. Introduction The field of software configuration management (SCM) seeks to control the changes in artifacts at different stages1 during the software life cycle [1]. It is considered to be important for any software product [2] and is critical for dynamic software development environments, in which applications evolve at a high rate. SCM solutions provide tools to control and share artifacts for parallel development and track changes and indicate version conflicts [1, 2]. However, in essence, these solutions support the developmental stages until the delivery of the artifacts in production. In general, they provide powerful tools to manage tasks during the software development process; however, this control is incomplete for artifacts in distributed production environments [3]. In this scenario, distributed applications become more susceptible to faults because once they are promoted to the production stage (commonly, a component repository), the application components still need to be deployed on the server network and the user’s workstations. Errors in the preparation of such component distribution are propagated [4] from one to number of machines (other servers or stations of the network) and so forth. As an aggravating factor, faults in distributed systems are difficult to debug [5] because of the limitations in gathering, organizing, and interpreting the system’s

References

[1]  For example, development (in construction and testing), validation (approval by the user), and production (in the real environment of user).
[2]  In this section, we use a pseudo-formal notation based on set theory to support our definitions.
[3]  Where we consider addition, change, or deletion of operations as well as the changes in the internal behavior of the component.
[4]  That is, it is a reactive process that waits for a failure to occur before applying the technique and diagnosing and correcting the problem.
[5]  Wang and Yu [20] have shown that there may be collisions where the same hash sequence is generated for different input strings. The paper was written in the context of planned attacks and encrypted systems in which 239 operations are necessary for the occurrence of a collision. In our current scenario (tagging), the probability of collisions, although still present, tends to be extremely low [19].
[6]  By definition, a different location to the server or station on which the application is being run.
[7]  To this end, the MD5 [32] algorithm reads the component byte by byte, generating a 32-byte hexadecimal string that represents the entire component.
[8]  Monitoring is performed in the following situations: (i) first run of the day; (ii) each time the station changes user; (iii) during each run, if it is the day of deployment (see Figure 8).
[9]  In the present context, this refers to a unifying application that provides several features communicating with different systems and platforms, making the complexity of the communication process between applications transparent for the user.
[10]  The department responsible for large scale customer service, mostly over the phone. In our context, over a million calls are handled each day.
[11]  Examples: Systems Management Server (SMS), ZenWorks, and LANDesk.
[12]  J. Estublier, “Software configuration management: a road map,” in Proceedings of the 22nd Conference on the Future of Software Engineering, pp. 279–289, ACM, New York, NY, USA, 2000.
[13]  R. Conradi and B. Westfechtel, “Version models for software configuration management,” ACM Computing Surveys, vol. 30, no. 2, pp. 232–282, 1998.
[14]  J. Albrecht, C. Tuttle, R. Braud et al., “Distributed application configuration, management, and visualization with plush,” ACM Transactions on Internet Technology, vol. 11, no. 2, article 6, 2011.
[15]  F. Oliveira, A. Tjang, R. Bianchini, R. P. Martin, and T. D. Nguyen, “Barricade: defending systems against operator mistakes,” in Proceedings of the 5th ACM EuroSys Conference on Computer Systems (EuroSys '10), pp. 83–96, ACM, Paris, France, April 2010.
[16]  M. K. Aguilera, J. C. Mogul, J. L. Wiener, P. Reynolds, and A. Muthitacharoen, “Performance debugging for distributed systems of black boxes,” in Proceedings of the 19th ACM Symposium on Operating Systems Principles (SOSP '03), pp. 74–89, October 2003.
[17]  T. Araújo, C. Wanderley, and A. V. Staa, “Um mecanismo de introspe??o para depurar o comportamento de sistemas distribuídos,” in Proceedings of the 26th Brazilian Symposium on Software Engineering, Natal, Brazil, 2012.
[18]  Z. Yin, X. Ma, J. Zheng, Y. Zhou, L. N. Bairavasundaram, and S. Pasupathy, “An empirical study on configuration errors in commercial and open source systems,” in Proceedings of the 23rd ACM Symposium on Operating Systems Principles (SOSP '11), pp. 159–172, ACM, Cascais, Portugal, October 2011.
[19]  D. Patterson, A. Brown, P. Broadwell et al., “Recovery Oriented Computing (ROC): motivation, definition, techniques, and case studies,” Tech. Rep. UCB//CSD-02-1175, University of California, Berkeley, Calif, USA, 2002.
[20]  S. Zhang and M. D. Ernst, “Automated diagnosis of software configuration errors,” in Proceedings of the 35th International Conference on Software Engineering (ICSE '13), pp. 312–321, IEEE Press, Piscataway, NJ, USA, May 2013.
[21]  D. Yuan, J. Zheng, S. Park, Y. Zhou, and S. Savage, “Improving software diagnosability via log enhancement,” ACM Transactions on Computer Systems, vol. 30, no. 1, article 4, 2012.
[22]  D. Oppenheimer, A. Ganapathi, and D. A. Patterson, “Why do internet services fail, and what can be done about it?” in Proceedings of the 4th USENIX Symposium on Internet Technologies and Systems (USITS '03), March 2003.
[23]  J. Gray, “Why do computers stop and what can be done about it?” in Proceedings of the Symposium on Reliability in Distributed Software and Database Systems, 1986.
[24]  I. Crnkovic, B. Hnich, T. Jonsson, and Z. Kiziltan, “Basic concepts in CBSE,” in Building Reliable Component-Based Software Systems, I. Crnkovic and M. Larsson, Eds., pp. 3–22, Artech House, 2002.
[25]  F. Luders, K. Lau, and S. Ho, “Specification of software componentes,” in Building Reliable Component-Based Software Systems, I. Crnkovic and M. Larsson, Eds., pp. 23–42, Artech House, Norwood, Mass, USA, 2002.
[26]  K. K. Lau, L. Ling, and P. V. Elizondo, “Towards composing software components in both design and deployment phases,” in Component-Based Software Engineering, pp. 274–282, Springer, Berlin, Germany, 2007.
[27]  R. Jain, Art of Computer Systems Performance Analysis Techniques for Experimental Design Measurements Simulation and Modeling, Wiley Computer Publishing, John Wiley & Sons, 1991.
[28]  M. Grottke and K. S. Trivedi, “A classification of software faults,” Journal of Reliability Engineering Association of Japan, vol. 27, no. 7, pp. 425–438, 2005.
[29]  A. Stuckenholz, “Component evolution and versioning state of the art,” ACM SIGSOFT Software Engineering Notes, vol. 30, no. 1, p. 7, 2004.
[30]  E. Toktar, G. Pujolle, E. Jamhour, M. C. Penna, and M. Fonseca, “Método passivo para monitora??o de SLA de aplica??es sensíveis ao atraso baseado em hash,” in Proceedings of the 25th Brazilian Symposium on Computer Networks, 2007.
[31]  X. Wang and H. Yu, “How to break MD5 and other hash functions,” in Advances in Cryptology—EUROCRYPT 2005, vol. 3494 of Lecture Notes in Computer Science, pp. 19–35, Springer, Berlin, Germany, 2005.
[32]  S. Yu, S. Zhou, L. Liu, R. Yang, and J. Luo, “Malware variants identification based on byte frequency,” in Proceedings of the 2nd International Conference on Networks Security, Wireless Communications and Trusted Computing (NSWCTC '10), pp. 32–35, Wuhan, China, April 2010.
[33]  M. Veit and S. Herrmann, “Model-view-controller and object teams: a perfect match of paradigms,” in Proceedings of the 2nd International Conference on Aspect-Oriented Software Development, pp. 140–149, ACM, New York, NY, USA, March 2003.
[34]  M. Y. Chen, E. Kiciman, E. Fratkin, A. Fox, and E. Brewer, “Pinpoint: problem determination in large, dynamic internet services,” in Proceedings of the International Conference on Dependable Systems and Networks (DNS '02), pp. 595–604, June 2002.
[35]  D. Sundmark, A. M?ller, and M. Nolin, “Monitored software components—a novel software engineering approach,” in Proceedings of the 11th Asia-Pacific Software Engineering Conference (APSEC '04), pp. 624–631, IEEE, December 2004.
[36]  K. Lau and V. Ukis, “A Reasoning Framework for Deployment Contracts Analysis,” Preprint 37, Department of Computer Science, University of Manchester, 2006.
[37]  Y.-Y. Su, M. Attariyan, and J. Flinn, “AutoBash: improving configuration management with operating system causality analysis,” in Proceedings of the 21st ACM SIGOPS Symposium on Operating Systems Principles (SOSP '07), pp. 237–250, October 2007.
[38]  A. Rabkin and R. Katz, “Precomputing possible configuration error diagnoses,” in Proceedings of the 26th IEEE/ACM International Conference on Automated Software Engineering (ASE '11), pp. 193–202, Lawrence, Kan, USA, November 2011.
[39]  M. Rakic and N. Medvidovic, “Increasing the confidence in off-the-shelf components: a software connector-based approach,” in Proceedings of the Symposium on Software Reusability (SSR '01), pp. 11–18, May 2001.
[40]  V. Andrikopoulos, S. Benbernou, and M. P. Papazoglou, “On the evolution of services,” IEEE Transactions on Software Engineering, vol. 38, no. 3, pp. 609–628, 2012.
[41]  S. Eisenbach, V. Jurisic, and C. Sadler, “Managing the evolution of .NET programs,” in Formal Methods for Open Object-Based Distributed Systems, vol. 2884 of Lecture Notes in Computer Science, pp. 185–198, Springer, Berlin, Germany, 2003.
[42]  L. Mariani, S. Papagiannakis, and M. Pezzè, “Compatibility and regression testing of COTS-component-based software,” in Proceedings of the 29th International Conference on Software Engineering (ICSE '07), pp. 85–94, Minneapolis, Minn, USA, May 2007.
[43]  L. R. Rivest, “The MD5 message digest algorithm,” Internet RFC 1321, 1992.

Full-Text

comments powered by Disqus

Contact Us

service@oalib.com

QQ:3279437679

WhatsApp +8615387084133

WeChat 1538708413