Software Reusability: Approaches and Challenges

Total Page:16

File Type:pdf, Size:1020Kb

Software Reusability: Approaches and Challenges International Journal of Research and Innovation in Applied Science (IJRIAS) |Volume VI, Issue V, May 2021|ISSN 2454-6194 Software Reusability: Approaches and Challenges Moko Anasuodei1, Ojekudo, Nathaniel Akpofure2 1Department of Computer Science and Informatics, Faculty of Science, Federal University Otuoke, Nigeria 2Department of Computer Science, Faculty of Natural and Applied Sciences, Ignatius Ajuru University of Education, Nigeria Abstract: Software reuse is used to aid the software phases. Software engineering has been more centered on development process which in recent times can improve the original development which gives an optimal software at a resulting quality and productivity of software development, by faster and less costly price, a design process based on assisting software engineers throughout various software systemic reusable is now recognized. engineering phases to enhance the quality of software, provide quick turnaround time for software development using few Software reuse reduces efforts and cost, because software people, tools, and methods, which creates a good software development costs can be extremely high, but they are quality by enhancing integration of the software system to shared, such that the cost of reuse can be extremely low. provide a competitive advantage. This paper examines the One major advantage of software reuse suggested by concept of software reuse, the approaches to be considered for keswani et al (2014) explains that there is a significant need software reuse, which is broadly shared into three categories: component-based software reuse, domain engineering and for the number of bugs to be reduced during software software product lines, architecture-based software reuse and development process, such that instead of developing an challenges that affect the software reuse development process. entirely new product, legacy software proven reuse is recommended. Software reuse has as its objective to be Keywords: software, reuse, engineering, challenges, domain recycling of the software product's design, code, and other engineering, component-based components, thus cutting costs, time and improving product I. INTRODUCTION quality. This study’s major motivation is at investigating the need for software reuse and why it should be adopted. The oftware reusability is seen as the use of existing Research Questions are: Why the need for software S software systems to develop new software systems reusability? What are the various technologies used? What which means re-use of software. This is an evolving field of developmental frameworks are in place for software reuse software technology, which helps in reducing the time and and finally the challenges faced. effort needed to create software systems from the ground up. Horizontal Software reuse rules possess three simple principles: Firstly, Reuse the object must be reusable, then the object must be of value for the reusable object and then the user should know precisely how to use it. Two procedures are included in Software these three rules: development for reuse and development Reuse with reuse. if these problems are being fixed then software reuse can occur. The reuse of software is not only reuse of software, but also a reuse of any software development accomplishment like project proposal, reporting feasibility, Vertical request analysis, abstract design, detailed design, demo Reuse coding tests, documentation, user manual. Yang (2010) Figure 1. Types of Software Reuse All through the software engineering process, the software is available in different forms and are in different formats Figure 1 above shows the 2 types of software reuse: such as requirements specifications, the architectural design, Horizontal reuse which applies to software components that and the source code. Software engineering is the systemic are used in a lot of areas, it also entails the reuse within a use of tools and knowledge, to achieve the stated technical, larger system of a commercial off-the-shelf application economic, and human goals of a comprehensive software (COTS) or a third-party application such as an e-mail or a system. Software results from performing a set of software word processing program. While Vertical reuse relates to engineering activities, including requirement gathering, functional system areas or domains that are used by a family design, implementation, testing, and maintenance and of similarly functioning systems. This vertical reuse gave various tools have been developed and used to support these rise to an additional discipline, namely domain engineering. activities automatically. The aim has been to improve the Domain engineering is a thorough, iterative approach life software's resulting quality and productivity by assisting the cycle used by a company to achieve strategic business engineer throughout the engineering processes and various objectives. Jalender et al (2010). www.rsisinternational.org Page 142 International Journal of Research and Innovation in Applied Science (IJRIAS) |Volume VI, Issue V, May 2021|ISSN 2454-6194 Mäkitalo et al (2020) adopting Kruegers classic software reuse success or failure. Xin and Yang (2017) discussing on reuse research paper implies that software reuse must fulfil the engineering management software reuse framework, the subsequent four "truisms": demonstrates how to select types of reuse and what to do in the management of processes. The study discussed four 1. To be efficient, the software reuse technique must types of software reuse and how reuse feasibility should be decrease the cognitive spacing between the initial analyzed. Different types of re-use processes and key points system concept and the final implementable were linked, and a case study was illustrated, which shows system. that in each type of software reuse engineering 2. The reuse of objects by a software reuse technique management, there will be significant benefits from the re- should be simpler than the development of the use factors and approaches together which will provide software from start to finish. reasonable processes. Furthermore, key point management 3. You need to know what it does to select an object plays a key role in the reuse of software. Mateen et al for reuse. (2017) proposed a reuse approach that showed how 4. You must be able to "find it" rapidly than you can software reuse improves software quality. The Verification "build it" to reuse software object effectively. and Validation (V&V) method used for this purpose is an aspect of the quality control process for software, II. REVIEW OF RELATED WORKS which controls quality and accuracy during the software life Kaur and Sohal (2013) evaluated how a QR code library can cycle. A QUESTIONAIRE survey to identify the impact on be built using new technologies such as Android and quality attributes, specifications and design specifications software reuse. In the QR code library, how to reuse for the reuse approach was conducted and the study checked software works. During the development of a software on the existing software industries on quality improvements reuse system, certain approaches such as design patterns, techniques such as ad hoc, CBSE, MBSE, product line, aspect-oriented integration, reuse generator, object-oriented COTS reuse. The analysed results with the help of the programming structures and software reuse libraries, MATLAB tool, provided and efficient data management, framework integration etc. are considered. This approach better output organization to monitor the reusability and increases production, saves time, and reduces software quality improvement technology. development costs and reduces overruns of the schedule. III. SOFTWARE REUSE APPROACH Thapar et al (2014) paper present a quality model, based on reusability, which can be used for software component Software reuse technology is a software engineering method assessing. Three essential factors are relevant in software that aims at reusing and amplifying existing software, its selection and software development. Only quality properties reuse is of different forms such as System reuse, preferred by stakeholders and necessary to improve the Application reuse, Component reuse, object and function reuse of software components are integrated into the reuse: proposed model. Ahmer et al (2014) examine the literature a. System Reuse: This approach includes full on the software reusability concept (SR). A systematic selection, which consists of several applications review of the literature was studied to understand the that can be reused in a system. A system of concepts, approaches, benefits, levels of reusability, factors, systems is used to freely monitor and control two and software reusability adaptations. The study on the or more component systems. Conceptual design, content of software reusability was systematically reviewed, architectural designs, system selections, interface and many databases were scanned for literature. Studies of development and integration and development are 1977-2013 published were considered and identified if they part of the development process and work parallel defined an evaluation of the software reusability to governance and management policies. intervention in information and communication technology. b. Application Reuse: This form of reuse involves the Further highlights were explained on the re-usability adaption of a software system to address the need concept of software, stating that it comprises of eleven of different customers, such that
Recommended publications
  • New Inheritance Models That Facilitate Source Code Reuse in Object-Oriented Programming
    NEW INHERITANCE MODELS THAT FACILITATE SOURCE CODE REUSE IN OBJECT- ORIENTED PROGRAMMING By HISHAM M. AL-HADDAD Bachelor of Science Yarmouk University lrbid, Jordan 1986 Master of Science Northrop University Los Angeles, California 1988 Submitted to the Faculty of the Graduate College of the Oklahoma State University in partial fulfillment of the requirements for the degree of DOCTOR OF PHILOSOPHY July, 1992 Oklahoma Statt.' Ur1iv. Library NEW INHERITANCE MODELS THAT FACILITATE SOURCE CODE REUSE IN OBJECT- ORIENTED PROGRAMMING C/ wU::r-~ B I A~c;p .... _.-~ Dean of the Graduate CoUege ii PREFACE Code reusability is a primary objective in the development of software systems. The object-oriented programming methodology is one of the areas that facilitate the development of software systems by allowing and promoting code reuse and modular designs. Object-oriented programming languages (OOPLs) provide different facilities to attain efficient reuse and reliable extension of existing software components. Inheritance is an important language feature that is conducive to reusability and extensibility. Various OOPLs provide different inheritance models based on different interpretations of the inheritance notion. Therefore, OOPLs have different characteristics derived from their respective inheritance models. This dissertation is concerned with solutions for three major problems that limit the utilization of inheritance for code reusability. The range of object-oriented applications and thus the usage of object-oriented programming in general is also discussed. The three major problems are: 1) the relationship between inheritance and other related issues such as encapsulation, access techniques, visibility of inheritance, and subtyping; 2) the hierarchical structure imposed by inheritance among classes; and 3) the accessibility of previous versions of the modified methods defmed in classes located at higher levels of the inheritance structure than the parent classes.
    [Show full text]
  • Easychair Preprint Machine Learning Algorithm for Assessing Reusability
    EasyChair Preprint № 4142 Machine Learning Algorithm for Assessing Reusability in Component Based Software Development Pooja Negi and Umesh Kumar Tiwari EasyChair preprints are intended for rapid dissemination of research results and are integrated with the rest of EasyChair. September 7, 2020 MACHINE LEARNING ALGORITHM FOR ASSESING REUSABILITY IN COMPONENT BASED SOFTWARE DEVELOPMENT 1Pooja Negi, 2Umesh Kumar Tiwari 1,2 Department of Computer Science and Engineering, Graphic Era Deemed to be University, Dehradun [email protected], 2 [email protected] Abstract- Software reusability has been present for several decades. Software reusability is defined as making new software from existing one. Objects that can be reused: design, code, software framework. We reviewed several approaches in this dissertation, i.e. object-oriented metrics, coupling factor, etc., by which the software's reusability increases. Therefore this thesis analysis on how to classify and reuse the program using those metrics and apply the algorithm of machine learning. In this thesis we test open source software and generate a ck metric of that source code then a machine learning algorithm will process the data using weka tool to give the result. We test coefficient of correlation, mean absolute error, root mean square error, relative absolute error and root relative square error less the program would be better from this we get 98.64 accuracy on online examination system software. Keywords- Reusability, Machine Learning Algorithm, Random Forest, ck-metric. 1. Introduction In today’s world every sector of service or industry is dependent on computer based application. Industry which develops and outsources the software service is major and growing rapidly in the world.
    [Show full text]
  • Quality-Based Software Reuse
    Quality-Based Software Reuse Julio Cesar Sampaio do Prado Leite1, Yijun Yu2, Lin Liu3, Eric S. K. Yu2, John Mylopoulos2 1Departmento de Informatica, Pontif´ıcia Universidade Catolica´ do Rio de Janeiro, RJ 22453-900, Brasil 2Department of Computer Science, University of Toronto, M5S 3E4 Canada 3School of Software, Tsinghua University, Beijing, 100084, China Abstract. Work in software reuse focuses on reusing artifacts. In this context, finding a reusable artifact is driven by a desired functionality. This paper proposes a change to this common view. We argue that it is possible and necessary to also look at reuse from a non-functional (quality) perspective. Combining ideas from reuse, from goal-oriented requirements, from aspect-oriented programming and quality management, we obtain a goal-driven process to enable the quality-based reusability. 1 Introduction Software reuse has been a lofty goal for Software Engineering (SE) research and prac- tice, as a means to reduced development costs1 and improved quality. The past decade has seen considerable progress in fulfilling this goal, both with respect to research ideas and industrial practices (e.g., [1–3]). Current reuse techniques focus on the reuse of software artifacts on the basis of de- sired functionality. However, non-functional properties (qualities) of a software system are also crucial. Systems fail because of inadequate performance, security, reliability, usability, or precision, to name a few. Quality concerns, therefore, should also be front and centre in methods for software reuse. For example, in designing for the NASA Mars Spirit spacecraft, one would not adopt a “cosine” function from an arbitrary mathemat- ical library.
    [Show full text]
  • Generic Programming
    Generic Programming July 21, 1998 A Dagstuhl Seminar on the topic of Generic Programming was held April 27– May 1, 1998, with forty seven participants from ten countries. During the meeting there were thirty seven lectures, a panel session, and several problem sessions. The outcomes of the meeting include • A collection of abstracts of the lectures, made publicly available via this booklet and a web site at http://www-ca.informatik.uni-tuebingen.de/dagstuhl/gpdag.html. • Plans for a proceedings volume of papers submitted after the seminar that present (possibly extended) discussions of the topics covered in the lectures, problem sessions, and the panel session. • A list of generic programming projects and open problems, which will be maintained publicly on the World Wide Web at http://www-ca.informatik.uni-tuebingen.de/people/musser/gp/pop/index.html http://www.cs.rpi.edu/˜musser/gp/pop/index.html. 1 Contents 1 Motivation 3 2 Standards Panel 4 3 Lectures 4 3.1 Foundations and Methodology Comparisons ........ 4 Fundamentals of Generic Programming.................. 4 Jim Dehnert and Alex Stepanov Automatic Program Specialization by Partial Evaluation........ 4 Robert Gl¨uck Evaluating Generic Programming in Practice............... 6 Mehdi Jazayeri Polytypic Programming........................... 6 Johan Jeuring Recasting Algorithms As Objects: AnAlternativetoIterators . 7 Murali Sitaraman Using Genericity to Improve OO Designs................. 8 Karsten Weihe Inheritance, Genericity, and Class Hierarchies.............. 8 Wolf Zimmermann 3.2 Programming Methodology ................... 9 Hierarchical Iterators and Algorithms................... 9 Matt Austern Generic Programming in C++: Matrix Case Study........... 9 Krzysztof Czarnecki Generative Programming: Beyond Generic Programming........ 10 Ulrich Eisenecker Generic Programming Using Adaptive and Aspect-Oriented Programming .
    [Show full text]
  • Code Reuse and Refactoring: Going Agile on Complex Products
    Code Reuse and Refactoring: Going Agile on Complex Products Using enterprise Software Version Management to coordinate complex products, seamlessly support Git developers, and solve refactoring problems. Table of Contents Component-Based Development __________________________________________________ 1 CBD Product Model ______________________________________________________________ 1 The Repository Model ____________________________________________________________ 2 Managing CBD in Git _____________________________________________________________ 2 Setting Up the CBD Model _____________________________________________________ 2 Incorporating Non-Software Components ____________________________________ 3 Updating Component Baselines ________________________________________________ 3 Submitting Patches to Components _____________________________________________ 4 Developer View _______________________________________________________________ 4 Refactoring: In Practice ________________________________________________________ 4 Refactoring: Developer Impact _________________________________________________ 4 Managing CBD in Perforce Software Version Management and Perforce Git Fusion ______ 5 Setting Up the CBD Model _____________________________________________________ 5 Incorporating Non-Software Components ____________________________________ 5 Updating Component Baselines ________________________________________________ 5 Submitting Patches to Components _____________________________________________ 5 Developer View _______________________________________________________________
    [Show full text]
  • A Model of Inheritance for Declarative Visual Programming Languages
    An Abstract Of The Dissertation Of Rebecca Djang for the degree of Doctor of Philosophy in Computer Science presented on December 17, 1998. Title: Similarity Inheritance: A Model of Inheritance for Declarative Visual Programming Languages. Abstract approved: Margaret M. Burnett Declarative visual programming languages (VPLs), including spreadsheets, make up a large portion of both research and commercial VPLs. Spreadsheets in particular enjoy a wide audience, including end users. Unfortunately, spreadsheets and most other declarative VPLs still suffer from some of the problems that have been solved in other languages, such as ad-hoc (cut-and-paste) reuse of code which has been remedied in object-oriented languages, for example, through the code-reuse mechanism of inheritance. We believe spreadsheets and other declarative VPLs can benefit from the addition of an inheritance-like mechanism for fine-grained code reuse. This dissertation first examines the opportunities for supporting reuse inherent in declarative VPLs, and then introduces similarity inheritance and describes a prototype of this model in the research spreadsheet language Forms/3. Similarity inheritance is very flexible, allowing multiple granularities of code sharing and even mutual inheritance; it includes explicit representations of inherited code and all sharing relationships, and it subsumes the current spreadsheet mechanisms for formula propagation, providing a gradual migration from simple formula reuse to more sophisticated uses of inheritance among objects. Since the inheritance model separates inheritance from types, we investigate what notion of types is appropriate to support reuse of functions on different types (operation polymorphism). Because it is important to us that immediate feedback, which is characteristic of many VPLs, be preserved, including feedback with respect to type errors, we introduce a model of types suitable for static type inference in the presence of operation polymorphism with similarity inheritance.
    [Show full text]
  • Beginning SOLID Principles and Design Patterns for ASP.NET Developers — Bipin Joshi Beginning SOLID Principles and Design Patterns for ASP.NET Developers
    THE EXPERT’S VOICE® IN .NET DEVELOPMENT Beginning SOLID Principles and Design Patterns for ASP.NET Developers — Bipin Joshi Beginning SOLID Principles and Design Patterns for ASP.NET Developers Bipin Joshi Beginning SOLID Principles and Design Patterns for ASP.NET Developers Bipin Joshi 301 Pitruchhaya Thane, India ISBN-13 (pbk): 978-1-4842-1847-1 ISBN-13 (electronic): 978-1-4842-1848-8 DOI 10.1007/978-1-4842-1848-8 Library of Congress Control Number: 2016937316 Copyright © 2016 by Bipin Joshi This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Exempted from this legal reservation are brief excerpts in connection with reviews or scholarly analysis or material supplied specifically for the purpose of being entered and executed on a computer system, for exclusive use by the purchaser of the work. Duplication of this publication or parts thereof is permitted only under the provisions of the Copyright Law of the Publisher's location, in its current version, and permission for use must always be obtained from Springer. Permissions for use may be obtained through RightsLink at the Copyright Clearance Center. Violations are liable to prosecution under the respective Copyright Law. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.
    [Show full text]
  • Adaptability Evaluation at Software Architecture Level Pentti Tarvainen*
    The Open Software Engineering Journal, 2008, 2, 1-30 1 Open Access Adaptability Evaluation at Software Architecture Level Pentti Tarvainen* VTT Technical Research Centre of Finland, Kaitoväylä 1, P.O. Box 1100, FIN-90571 Oulu, Finland Abstract: Quality of software is one of the major issues in software intensive systems and it is important to analyze it as early as possible. An increasingly important quality attribute of complex software systems is adaptability. Software archi- tecture for adaptive software systems should be flexible enough to allow components to change their behaviors depending upon the environmental and stakeholders' changes and goals of the system. Evaluating adaptability at software architec- ture level to identify the weaknesses of the architecture and further to improve adaptability of the architecture are very important tasks for software architects today. Our contribution is an Adaptability Evaluation Method (AEM) that defines, before system implementation, how adaptability requirements can be negotiated and mapped to the architecture, how they can be represented in architectural models, and how the architecture can be evaluated and analyzed in order to validate whether or not the requirements are met. AEM fills the gap from requirements engineering to evaluation and provides an approach for adaptability evaluation at the software architecture level. In this paper AEM is described and validated with a real-world wireless environment control system. Furthermore, adaptability aspects, role of quality attributes, and diversity of adaptability definitions at software architecture level are discussed. Keywords: Adaptability, adaptation, adaptive software architecture, software quality, software quality attribute. INTRODUCTION understand the system [6]. Examples of design decisions are the decisions such as “we shall separate user interface from Today, quality of a software system plays an increasingly the rest of the application to make both user interface and important role in the domain of software engineering.
    [Show full text]
  • Turning FAIR Data Into Reality
    Final Report and Action Plan from the European Commission Expert Group on FAIR Data TURNING FAIR INTO REALITY Research and Innovation 2018 Turning FAIR into reality European Commission Directorate General for Research and Innovation Directorate B – Open Innovation and Open Science Unit B2 – Open Science Contact Athanasios Karalopoulos E-mail [email protected] [email protected] European Commission B-1049 Brussels Manuscript completed in November 2018. This document has been prepared for the European Commission however it reflects the views only of the authors, and the Commission cannot be held responsible for any use which may be made of the information contained therein. More information on the European Union is available on the internet (http://europa.eu). Luxembourg: Publications Office of the European Union, 2018 Print ISBN 978-92-79-96547-0 doi:10.2777/54599 KI-06-18-206-EN-C PDF ISBN 978-92-79-96546-3 doi: 10.2777/1524 KI-06-18-206-EN-N © European Union, 2018. Reuse is authorised provided the source is acknowledged. The reuse policy of European Commission documents is regulated by Decision 2011/833/EU (OJ L 330, 14.12.2011, p. 39). For any use or reproduction of photos or other material that is not under the EU copyright, permission must be sought directly from the copyright holders. The Expert Group operates in full autonomy and transparency. The views and recommendations in this report are those of the Expert Group members acting in their personal capacities and do not necessarily represent the opinions of the European Commission or any other body; nor do they commit the Commission to implement them.
    [Show full text]
  • Software Maintainability and Reusability Using Cohesion Metrics
    International Journal of Computer Trends and Technology (IJCTT) – Volume 54 Issue 2-December2017 Software Maintainability and Reusability using Cohesion Metrics Adekola, O.D#1, Idowu, S.A*2, Okolie, S.O#3, Joshua, J.V#4, Akinsanya, A.O*5, Eze, M.O#6, EbiesuwaSeun#7 #1Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria *2Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria #3Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria #4Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria *5Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria #6Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria #7Faculty, Computer Science Department, Babcock University,Ilishan-Remo, Ogun State, Nigeria Abstract - Among others, remarkable external software’s lifetime. Ahn et al., (2003) estimated that quality attributes of interest to software practitioners/ maintenance takes up to 80% of the total costof engineers include testability, maintainability and producing software applications. Expectation of reusability.Software engineers still combat achieving more reliable, quicker time-to-market and softwarecrisis and even chronic software affliction maintainable systems. A lot of research has gone into not because there is no standardized software the areas of software reuse and maintenance due to development process but because enough attention is the fact that these among other issues concern not given to seemingly insignificant but crucial intimately system developers/architects/engineers details of internal design attributes such as cohesion rather than end-users. Therehas been enormous and coupling especially in object-oriented systems. growth in software reuse research from the days of Consequently, the aftermath is increased structured programming concepts to object-oriented maintenance cost, effort and time which negatively methods and beyond (e.g.
    [Show full text]
  • Is It Transferrable? Information's Reusability, Adaptability, And
    Is it Transferrable? Information’s Reusability, Adaptability, and Transportability through SCORM Macarena Aspillaga, Ph.D. VSD Corporation Lane, Suite 200 Virginia Beach, VA 23462 Abstract The need for the sharable content object reference model (SCORM) to decrease the size of its shareable content object (SCO) is evident, especially since the introduction of Web 2.0 environments and new delivery systems. If SCORM is to be part of these emerging technologies, it needs to decrease its SCO size to the activity level to allow greater reusability, repurpose, adaptability, and portability of its learning objects. This will keep courses current at a lower cost, as well as enhance the transfer of knowledge; it will also help teach competencies, which will boost productivity. Greater reusability will help increase mental models. Emerging technologies will require that SCORM incorporate new standards for navigation, as new mobile learning environments communicate in shorter segments, requiring smaller SCOs and a different data model. Background Advanced Distributed Learning (ADL) developed a collection of specifications and standards known as the sharable content object reference model, or SCORM, as a way to standardize e-learning within the defense industry. The need arose because each government contractor had its own system and guidelines, resulting in many inconsistencies. As a result, ADL is now in charge of publishing, governing, and updating SCORM specifications and standards. There have been several versions since SCORM’s inception in 1997. The latest version, SCORM 1.3, launched in 2004, and includes the ability to specify sequencing of activities that use content objects, and resolve ambiguities. This latest version also allows using and sharing information, regarding success status for multiple learning objectives or competencies across content objects and across courses for the same learner within the same learning management system (LMS).
    [Show full text]
  • Using Recursive Java Generics to Support Code Reuse in the CS2 Course
    Using Recursive Java Generics to Support Code Reuse in the CS2 Course J. Andrew Holey and Lynn R. Ziegler Department of Computer Science Saint John’s University and the College of Saint Benedict Collegeville, Minnesota 56321 [email protected] and [email protected] Abstract Showing students examples of code reuse in early Java programming courses is highly desirable, but one significant class of examples, linked data structures, is difficult to reuse and leads to frequent casting. We show a technique for using recursive generic parameters that significantly simplifies the inheritance of linked data structures, and we discuss the use of this technique in the CS2 course. 1 Introduction Java is well-established as the most frequently-used language in the first two programming courses at colleges and universities (CS1 and CS2). While there is serious and well-founded debate about whether other languages may be more appropriate for an introductory programming sequence at the college level, many computer science faculty members have become comfortable with using Java in these courses and are able to teach programming and problem-solving very effectively using this language. One of the advantages of using object-oriented languages like Java for teaching introductory programming is their support for the construction of abstract data types (ADTs). This support was enhanced in Java 5.0 with the introduction of generics. Libraries like the Java Collection Framework have reduced the emphasis on construction of ADTs in many CS2 courses, but most textbooks and instructors still choose to spend considerable time on the implementation of ADTs. It is now possible to guide students to produce simple and elegant implementations of the standards ADTs, including stacks, queues, various types of lists and trees, maps and even graphs.
    [Show full text]