NALANDA INSTITUTE OF TECHNOLOGY SEMINAR REPORT GUIDELINE Each student is required to write a comprehensive report about the seminar. The report should consist of 20 to 25 pages describing the topic selected. The report should be in the format as described below. ARRANGEMENT OF CONTENTS: The sequence in which the seminar report material should be arranged and bound should be as follows: A. B. C. D. E. F. G. H. I. J. Cover Page & Title 2. Certificate 3. Acknowledgements 4. Abstract 5. Table of Contents 6. List of Tables – if any 7. List of Figures – if any 8. Chapters 9. Appendix- if any(programs, data sheets, derivations, etc) 10. References The table and figures shall be introduced in the appropriate places. PAGE DIMENSION AND BINDING SPECIFICATIONS: The dimension of the seminar report should be in A4 size. PREPARATION FORMAT: Abstract – Abstract should be one page synopsis of the seminar report typed 1.5 line spacing, Font Style Times New Roman and Font Size 12. Table of Contents – A specimen copy of the Table of Contents of the seminar report is given in Appendix List of Tables & List of Figures – The list should use exactly the same captions as they appear above the tables in the text. One and a half spacing should be adopted for typing the matter under this head. Chapters – The chapters may be broadly divided into 4/5 parts 1) Introduction with Open Research Issues 2) Overviews of Selected issues with Literature Reviews 3) Proposed Work (for project work) 4) Tools/Platform/Experimental Setup/Hardware Requirements with Results & Discussions 5) Summary/Conclusions 6) References Each chapter should be given an appropriate title. Tables and figures in a chapter should be placed in the immediate vicinity of the reference where they are cited. List of References –The listing of references should be typed 4 spaces below the heading “REFERENCES” in alphabetical order in single spacing left – justified. The reference material should be listed in the alphabetical order of the first author. The name of the author/authors should be immediately followed by the year and other details. The orders of references in the List of References are either in the order of the of year of publications OR in the order of references cited in the text. References for journals, conferences and books are provided. A typical illustrative list given below relates to the citation example quoted below. Which are different for Journals, Conferences proceedings and Books REFERENCES [1] S. Zhang, C. Zhu, J. K. O. Sin, and P. K. T. Mok, “A Novel Ultrathin Elevated Channel Low-temperature poly-Si TFT,” IEEE Electron Device Lett., vol. 20, pp. 569–571, Nov. 1999. [2] S. P. Bingulac, “On the Compatibility of Adaptive Controllers”, Proc. 4th International National Conf. Circuits and Systems Theory, New York, 1994, pp. 8–16. [3] Rajiv Ramaswami and Kumar N. Sivarajan, “Optical Networks: A Practical Perspective”, Morgan Kaufmann Publishers, 2 nd Edition, 2002. TYPING INSTRUCTIONS: One and a half spacing should be used for typing the general text. The general text shall be typed in the Font style „Times New Roman‟ and Font size 12. Suggested Font Sizes Details Font Type Font size Spacing Times New Roman 16pt bold capitals Centered Chapter headings with chapter number on top Section headings Times New Roman 14pt bold capitals Left adjusted Subsection headings Times New Roman 12pt. sentence case Left adjusted Paragraph headings Times New Roman 12pt.bold sentence case Left adjusted Body of seminar report Times New Roman 12 pt Adjusted on both left and right(Justified) and with 1.5 spacing for text and double spacing for equations Margins Left Margin 1.5 inch To accommodate binding area Right Margin 1.25 inch Top 2.0inch On pages in which chapter begins 1.0 inch Other pages Bottom 1.25 inch CIG: AN APPROACH TO TEST COMPONENT COMOSITION A SEMINAR REPORT Submitted by RAKESH KUMAR SAHOO REGD. NO: 0805297005 in partial fulfillment for the award of the degree of BACHELOR OF TECHNOLOGY in COMPUTER SCIENCE & ENGINEERING LOGO LOGO DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING NALANDA INSTITUTE OF TECHNOLOGY BIJU PATNAIK UNIVERSITY OF TECHNOLOGY MAY 2011 LOGO DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING NALANDA INSTITUTE OF TECHNOLOGY CERTIFICATE This is to certified that the project report “CIG: An approach to test Component Composition” being submitted by “RAKESH KUMAR SAHOO” bearing registration number: 0805297005, in partial fulfillment of requirement for the award of degree of Bachelor in Technology in CSE is a bonafide work carried out under my/our supervision. Sisir Kumar Jena HOD Department of CSE & IT Nalanda Institute of Technology Chandaka, Bhubaneswar Narottam Sahu INTERNAL SUPERVISOR Professor Department of IT LOGO DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING NALANDA INSTITUTE OF TECHNOLOGY CERTIFICATE I hereby declare that the matter embodied in this report is original and has not been submitted for the award of any other degree Rakesh Kumar Sahoo Regd. No. : 0805297005 Department of CSE Acknowledgement I take this opportunity with much pleasure to thank all the people who have helped me through the course of my journey towards producing this thesis. I sincerely thank my thesis guide, Prof. Arup Abhinna Acharya, for his guidance, help and motivation. Apart from the subject of my research, I learnt a lot from him, which I am sure will be useful in different stages of my life. I would like to express my gratitude to M. Tech Coordinator Prof. Hati for his review and many helpful comments. I am especially grateful to my colleagues for their assistance, criticisms and useful insights. I am thankful to all the other M. Tech students of KIIT UNIVERSITY with whom I share tons of fun memories. I would like to acknowledge the support and encouragement of my friends. My sincere gratitude also goes to all those who instructed and taught me through the years. Finally, this thesis would not have been possible without the confidence, endurance and support of my family. My family has always been a source of inspiration and encouragement. I wish to thank my parents, whose love, teachings and support have brought me this far. Name of the Student List of Table Sl. No. Table Name Table Caption Page No. 1 Table 1.1 Software modules versus Reusable components 5 2 Table 1.2 Software modules versus Reusable components 30 3 Table 1.3 Software modules versus Reusable components 48 4 Table 2.1 Software modules versus Reusable components 5 5 Table 2.2 Software modules versus Reusable components 30 6 Table 3.1 Software modules versus Reusable components 48 7 Table 3.2 Software modules versus Reusable components 5 8 Table 4.1 Software modules versus Reusable components 30 9 Table 5.1 Software modules versus Reusable components 48 List of Figures Sl. No. Figure Name Caption Page No. 1 Figure 1.1 Software modules versus Reusable components 5 2 Figure 1.2 Software modules 30 3 Figure 1.3 Software modules versus Reusable components 48 4 Figure 2.1 Software modules components 58 5 Figure 2.2 Software modules versus Reusable components 60 6 Figure 3.1 Software modules 68 7 Figure 3.2 Software modules versus Reusable components 75 8 Figure.1 Software modules 80 9 Figure 5.1 Software modules versus Reusable components 88 Contents Chapter No 1 Title Introduction 1 1.1 Background 1 1.1.1 Research Objective 1 1.1.2 Structure of the Thesis 3 1.2 1.3 2 Page No Introduction to Software Component 3 1.2.1 What is software component? 3 1.2.2 Properties of software component 4 1.2.3 Software modules versus software components in CBSE 5 1.2.4 Component Testing 7 1.2.5 Component Composition 11 Introduction to Model Based Testing with UML 13 1.3.1 What is Model based Testing? 15 1.3.2 Model based testing process 17 1.3.3 Introduction to UML 20 Testing Component Based Software (A Survey) 23 2.1 Integration Testing for Component based software 23 2.1.1 Traditional integration testing methodology 23 2.1.2 UML based integration testing methodology 25 2.2 Regression Testing for Component based software 29 2.3 Built-in Contract Testing 29 2.3.1 BIT Architecture 30 2.3.1 Example of Contract Testing 34 2.4 Testing based Component Composition 36 Chapter – 1 Introduction Today, the concept of software reuse has been widely accepted by the software industry. The reusability concept has been provided on the development of software components. Software components are the parts for constructing software systems. With the increase of software component products in today’s commercial market, many software vendors and workshops have begun to use a new approach, known as component-based software engineering (CBSE), to develop large, complicated software application systems based on available and reusable components. Its major objective is to reduce software development cost and time by reusing available components, including third-party and in-house grown components. This trend drives a strong demand for CBSE methodology, standards, and guidelines to help engineers and managers in software analysis, design, testing, and maintenance of component-based software and its components. 1.1 Background In the component-based software-engineering paradigm, component-based software is developed using a set of in-house and commercial-off-the-shelf components. These components are reused, adapted, and tailored to meet the specifications of a specific project in a given context, including system platform, technology, and running environment. Since system quality depends on component quality, any defective component causes a ripple impact on all systems built on it. Hence, component validation and quality control is critical to both component vendors and users. To validate component quality, component vendors must perform a cost-effective test process and implement a rigorous quality process for all generated software components. Component users must go through well-defined processes to evaluate, validate, and accept third party components before using them in a component-based software system. Generally speaking, software component testing refers to testing activities that uncover software errors and validate the quality of software components at the unit level. In traditional software testing, component testing usually refers to unit testing activities that uncover the defects in software modules. 1.1.1 Research Objective My objective of the research is to provide the answer to the following questions: Why has reuse of third-party software components become popular recently? Building systems based on reusable components is not a new idea. It has been proven to be a very effective cost-reduction approach in the computer hardware industry. Today, that industry is able to build computer systems based on standardized high-quality hardware parts and devices reliably and quickly. Software engineers learned the value of this idea many years ago. They developed reusable software modules as internally shared building blocks for constructing different software systems, and they established repositories of such modules, but in an ad hoc manner. Many years of trial and error proved to many software developers that it was not easy to build software systems based on reusable software components. The major reasons include the lack of a well-defined discipline for component-based software engineering and the absence of a comprehensive collection of standardized high-quality software components within the company or on the market. Recently, the increasing complexity of information technology (IT)-based software application systems and intensive competition in the marketplace forced software vendors and researchers to look for a cost-effective approach to constructing software systems based on third-party components. The major goal is to shorten the software development cycle and thereby reduce cost. Hence, component-based software engineering becomes a popular subdiscipline within software engineering because of its promising potential for cost and cycle-time reductions. Why is testing software components and component-based software important? As mentioned earlier, widespread reuse of a software component with poor quality may wreak havoc. Improper reuse of software components of good quality may also be disastrous. Testing and quality assurance is therefore critical for both software components and component-based software systems. A number of recent books address the overall process of component-based software engineering or specific methods for requirements engineering, design, and evaluation of software components or component-based software. We are not aware of any books focusing on testing, validation, certification, or quality assurance in general for reusable software components and component-based software systems. Now after answering the above questions, we would like to introduce the issues and challenges in component testing approach: Difficult to perform component analysis and testing due to the lack of the access to component source code and internal artifacts. Testing reused components in a new reuse context and environment. Expensive cost of constructing component test bed, including test drivers and stubs. In our work we proposed a model and an algorithm generate testcases for component composition. We take the help of UML statechart diagram and CIG for generating the testcases. CIG stands for Component Interaction graph whose detail will be discussed later. 1.1.2 Structure of the Thesis The structure of the thesis consists of 5 chapters. We briefly describe their contents here. Chapter I: Introduction provides background on software components, component-based software, UML diagrams, model based testing as well as component-based software engineering. Moreover, it explains the importance of testing software components and component-based software. It consists of three sections. Section 1.1 explains the background, research objective and structure of the thesis. Section 1.2 describes about components, CBSE, component testing and component composition. Section 1.3 review the process of model based testing and describe briefly about the UML diagrams. Chapter 2: A survey on testing component based software is presented. In this survey we present some of the literature like integration testing, regression testing and built-in contract testing. This chapter is again sub divided into four subsections and each subsections is explaining about different type of testing technique that can be applied upon component based software. Table 1.1 : Sample database table 1.2 Introduction to Software Component In the early days of programming, programs were constructed by creating a main program to control (or invoke) a number of subroutines. Each subroutine was programmed as a specific part of the program based on the given requirements and function partitions. To reduce programming efforts, programmers in a project team reused subroutines during a project’s implementation. Hence, subroutine reuse is one of the earliest formats in software reuse. Recently, several well-defined component-based development methods have been published to support the development of component-based software systems. 1.2.1 What is Software Components? Let us review some of the important definitions of software components given by the experts. One of the earliest definitions is given by Gready Booch [7]: A reusable software component is a logically cohesive, loosely coupled module that denotes a single abstraction. This definition captures the idea that a reusable component is an encapsulated software module consisting of closely related component elements. Later, Clement Szyperski presented his wellknown definition of a software component at the 1996 European Conference on Object-Oriented Programming [7]: Figure 1.1 : Component based software development 1.2.2 Properties of Software Component Component properties refer to the essential characteristics of software components. A software component in CBSE must have the following basic properties [7]. Identity: Each component must be uniquely identifiable in its development environment and targeted deployment environment. Without this feature, a large scale of component reuse is impossible. References [1] Y. Wu, D. Pan, and M. Chen, “Techniques for testing component-based software,” in Proceedings of the 7th IEEE International Conference on Engineering of Complex Computer Systems, 2001, pp. 222–232. [2] Ye Wu, Mei-Hwa Chen, Jeff Offcutt : UML-Based Integration Testing for Component-Based Software. [3] Jerry Zeyu Gao, H.-S. Jacob Tsao, Ye Wu : Testing and Quality Assurance for Component-Based Software, Artech House, Boston, London [4] Hans-Gerhard Gross : Component-Based Software Testing with UML, Springer Berlin Heidelberg, New York, 2005 [5] C. Atkinson and H.-G. Gross, “Built-in contract testing in modeldriven, component-based development,” in ICSR Work. on Component- Based Develop. Processes, 2002. [6] Colin Atkinson, Joachim Bayer, and Dirk Muthig, “Component-Based Product Line Development: The KobrA Approach”, Software Product Line Conference, 2000