JOURNAL OF OBJECT TECHNOLOGY



Similar documents
JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY

Types Of Operating Systems

ORACLE DATABASE 10G ENTERPRISE EDITION

Everything you need to know about flash storage performance

Designing and Embodiment of Software that Creates Middle Ware for Resource Management in Embedded System

A Mind Map Based Framework for Automated Software Log File Analysis

Run-time test configurations for load testing

WHITE PAPER Improving Storage Efficiencies with Data Deduplication and Compression

Reference Guide WindSpring Data Management Technology (DMT) Solving Today s Storage Optimization Challenges

Operating Systems CSE 410, Spring File Management. Stephen Wagner Michigan State University

Archives About ARCHOS TV+

Motivation and Contents Overview

CatDV Pro Workgroup Serve r

Configuration Management

Data Management for Portable Media Players

In Memory Accelerator for MongoDB

Comparing Microsoft SQL Server 2005 Replication and DataXtend Remote Edition for Mobile and Distributed Applications

CASE STUDY: Oracle TimesTen In-Memory Database and Shared Disk HA Implementation at Instance level. -ORACLE TIMESTEN 11gR1

A Framework for End-to-End Proactive Network Management

Architecture Artifacts Vs Application Development Artifacts

2) What is the structure of an organization? Explain how IT support at different organizational levels.

Subject knowledge requirements for entry into computer science teacher training. Expert group s recommendations

ColdFusion 8. Performance Tuning, Multi-Instance Management and Clustering. Sven Ramuschkat MAX 2008 Milan

A Generic Database Web Service

Implementation of Buffer Cache Simulator for Hybrid Main Memory and Flash Memory Storages

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

JOURNAL OF OBJECT TECHNOLOGY

A Metadata Model for Peer-to-Peer Media Distribution

File Management. Chapter 12

Brown County Information Technology Aberdeen, SD. Request for Proposals For Document Management Solution. Proposals Deadline: Submit proposals to:

Bachelor of Games and Virtual Worlds (Programming) Subject and Course Summaries

Rackspace Cloud Databases and Container-based Virtualization

CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014)

Techniques to Avoid the White Screen of Death in Smartphone s

Eleven Steps to Success in Data Warehousing

A Virtual Machine Searching Method in Networks using a Vector Space Model and Routing Table Tree Architecture

PERFORMANCE ANALYSIS OF VIDEO FORMATS ENCODING IN CLOUD ENVIRONMENT

Component Based Software Engineering: A Broad Based Model is Needed

Application Scalability in Proactive Performance & Capacity Management

OKLAHOMA SUBJECT AREA TESTS (OSAT )

Jitterbit Technical Overview : Microsoft Dynamics CRM

Microsoft SQL Database Administrator Certification

Whitepaper Performance Testing and Monitoring of Mobile Applications

MySQL 5.0 vs. Microsoft SQL Server 2005

Considerations when Choosing a Backup System for AFS

Application Design and Development

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY

CRAFT ERP modules. Introduction

Enterprise Service Bus

Summer Student Project Report

zen Platform technical white paper

WHITE PAPER Application Performance Management. A Practical Approach to Balancing Application Performance and J2EE Instrumentation Information

Web Content Management (Web CMS) for Internal or External Sites Request for Proposal (RFP) Template

low-level storage structures e.g. partitions underpinning the warehouse logical table structures

Figure 1 Sample WiseLink screens, showing MP3 music files (left) and photos (right) available as shared files from your networked PC or media server

Machine Architecture and Number Systems. Major Computer Components. Schematic Diagram of a Computer. The CPU. The Bus. Main Memory.

STeP-IN SUMMIT June 2014 at Bangalore, Hyderabad, Pune - INDIA. Mobile Performance Testing

Overview of Next-Generation Green Data Center

In-memory Tables Technology overview and solutions

Web Analytics Understand your web visitors without web logs or page tags and keep all your data inside your firewall.

Service Oriented Architecture and the DBA Kathy Komer Aetna Inc. New England DB2 Users Group. Tuesday June 12 1:00-2:15

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

Antelope Enterprise. Electronic Documents Management System and Workflow Engine

Network Attached Storage. Jinfeng Yang Oct/19/2015

Best Practices for VoIP in the Contact Center Part 1: Planning a Successful Transition BY LORI BOCKLUND AND BRIAN HINTON

Seeking Fast, Durable Data Management: A Database System and Persistent Storage Benchmark

Webcasting vs. Web Conferencing. Webcasting vs. Web Conferencing

Using WebLOAD to Monitor Your Production Environment

Installing, Configuring and Administering Microsoft Windows

System Development and Life-Cycle Management (SDLCM) Methodology. Approval CISSCO Program Director

i. Definition ii. Primary Activities iii. Support Activities iv. Information Systems role in value chain analysis

Physical Data Organization

Software Defined Storage Needs A Platform

Getting started with API testing

A Catalogue of the Steiner Triple Systems of Order 19

Best Practices for Deploying, Replicating, and Managing Real-Time and FPGA Applications. ni.com

Moving from ISO9000 to the Higher Levels of the Capability Maturity Model (CMM)

FIFTH EDITION. Oracle Essentials. Rick Greenwald, Robert Stackowiak, and. Jonathan Stern O'REILLY" Tokyo. Koln Sebastopol. Cambridge Farnham.

Workflow and Service Oriented Architecture (SOA)

OPC COMMUNICATION IN REAL TIME

What is a System on a Chip?

SAP-integrated Travel Scenarios in SharePoint

Communiqué 4. Standardized Global Content Management. Designed for World s Leading Enterprises. Industry Leading Products & Platform

EMC DATA DOMAIN ENCRYPTION A Detailed Review

Structured Content: the Key to Agile. Web Experience Management. Introduction

CHAPTER 2: HARDWARE BASICS: INSIDE THE BOX

Azure Scalability Prescriptive Architecture using the Enzo Multitenant Framework

Tier Architectures. Kathleen Durant CS 3200

White paper. H.264 video compression standard. New possibilities within video surveillance.

Operating Systems Overview As we have learned in working model of a computer we require a software system to control all the equipment that are

Course/Program Credential(s): Credential Certificate Postsecondary Degree University Degree Other:

VALLIAMMAI ENGNIEERING COLLEGE SRM Nagar, Kattankulathur

ORACLE DATABASE 12C IN-MEMORY OPTION

Capacity Plan. Template. Version X.x October 11, 2012

Chapter 13 File and Database Systems

Chapter 13 File and Database Systems

Transcription:

JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2005 Vol. 4, No. 7, September-October 2005 On Issues with Component-Based Software Reuse Won Kim, Samsung Electronics, SuWon, Korea Abstract As the size and complexity of software products, and the compression of software product development cycle seem ready to go out of control, large software development organizations are taking a hard look at the allure of the substantial productivity enhancements envisioned by early proponents of component-based software reuse. In this article, I will summarize practical difficulties in realizing the benefits of componentbased software reuse and discuss key pre-conditions to meet before attempting software reuse on a wide scale in a formalized manner. 1 INTRODUCTION The notion of software reuse has been around for the past thirty years as a way to drastically reduce the cost of developing software. This includes component-based software design and even service-oriented architecture. The need for software reuse has become urgent as the size and complexity of software have started to escalate steeply and as the product development cycle has been compressed. Enterprise software, such as database systems, ERP systems, CRM systems, SCM systems, data warehousing systems, etc. each consist of millions of lines of code, and require expensive technical consulting for proper use. Even software embedded in consumer electronics products such as cell phones and digital television now consist of millions of lines of code. The competitive pressures have forced vendors to reduce product development cycles from 18-24 months perhaps a decade ago to 3-9 months today. The significant worldwide reduction in students choosing to major in computer science during the past several years simply means a shallow pool of software developers with basic training today and into the foreseeable future. Today the number of software engineers that some of the large global corporations in such countries as Japan and Korea anticipate needing in the next several years is far greater than the total number of students anticipated to graduate with degrees in computer science and related areas. This, not necessarily the presumed cost savings, is the primary reason these companies have been outsourcing software development jobs to countries such as India, China, Russia, etc. Cite this column as follows: Won Kim: On Issues with Component-Based Software Reuse, in Journal of Object Technology, vol. 4, no. 7, September-October 2005, pp. 45-50 http://www.jot.fm/issues/issue_2005_09/column5

ON ISSUES WITH COMPONENT-BASED SOFTWARE REUSE Under these circumstances the idea of stockpiling a large number of software components in a software component database and simply selecting some of them and dropping them into new software being developed is enticing indeed. However, this is a rather naïve notion that flies in the face of harsh realities of software development, and as such large software development organizations must exercise extreme caution before pursuing organization-wide efforts to create a large database of software components for reuse. In the rest of this article, I will examine various impediments to component-based software reuse, and also outline areas that require standardization and trained discipline as preconditions to component-based software reuse. 2 DIFFICULTIES WITH COMPONENT-BASED SOFTWARE REUSE Broadly, there are two types of component-based reuse: with no change to an existing component, and with change. Let us examine reuse without change first. Reuse without change means simply selecting a component from a software component database, and dropping it into new software being developed. The cost of developing the component anew is zero! In fact, there are at least three types of component-based reuse in wide use. One is reuse of most of existing software when developing the next version of the software. Typically, some 60-80 percent of the existing software gets to be reused in this situation. However, developers do not go through the formality of registering components in a common software component database in this case. Another is reuse of thirty-party software, such as a sorting package, a database loader, etc. on the market or on the Internet as open source code. Again, such software is not registered in an organization s common software component database. A third type of reuse is common functions available in programming language libraries, such as the math functions in the C Programming Library. There are a large variety of technical reasons that make reusing existing components without change not exactly a picnic in the park. Let us examine them. (I do not believe the following list is exhaustive, but the types and number of reasons should make the point clear.) 1. functional differences This is possibly the most serious reason an existing component cannot be reused without change. It is rarely the case that an existing component and a component to be newly developed match precisely in functions. The new component to be developed may require some changes to corresponding functions in the existing component, or may require additional functions. The existing component may be excessively rich in functions and, for, say, performance reasons, most of the excess functions may need to be eliminated. It is entirely possible, especially in this age of digital convergence where such devices as cell phones and MP3 players are continually taking on additional capabilities, software developed to provide one particular major capability for one product line may be reused 46 JOURNAL OF OBJECT TECHNOLOGY VOL. 4, NO. 7

in its entirety for another product line; for example, software for digital cameras may be reused on cell phones. However, it is unlikely that smaller granule components may be reused without change across product lines (i.e., business units). 2. programming language difference If it has been decided that new software must be developed in, say, Java, an existing component written in, say C, cannot be reused without change, even if it satisfies all other requirements, such as the functionality, operating environment, system architecture, etc. Although cross compilation may sometimes allow reuse of components, in general it does not apply. 3. target environment differences Target environments include platforms (chipset for embedded systems, and operating system), computer system architecture (single CPU, parallel computer, hub and spoke distributed architecture, peer to peer distributed architecture, networking protocol, etc.), computing environment (disk, CD ROM, USB, flash memory, etc.) and operating constraints (main memory size, secondary storage size, power consumption, screen size, paper size for a printer, etc.). Software components developed for one particular target environment often cannot be reused without change for another target environment. 4. operating environment differences Operating environments include the number of simultaneous users, read-only or readwrite, volumes of data to manage, data input and output rate, etc. Software developed for a single user cannot in general be reused to support a multiple simultaneous-user environment. Software designed to only read data cannot in general be reused to support a read-write environment. Software designed for slow input and output of data cannot in general be reused to support an environment where the input and output rate is very high. 5. industry standards differences There are many industry-wide standards on a very wide range of aspects of computing and communications. Examples include Web document standards (HTML, XML, etc.), communications standards (CDMA, GSM, 3G, Bluetooth, WiFi, etc.), cable television standards (OCAP, ACAP), connectivity standards (DLNA, Marlin, OSGi, UPnP, etc.), multimedia data encoding standards (MPEG, JPEG, HDD vs. BluRay, etc.), national language encoding standards (Unicode, etc.), metadata management standards (MOF, XMI, CWM, Dublin Core), external database access standards (ODBC, JDBC), etc. Software components that explicitly reflect one standard cannot be reused in software supporting another standard. VOL. 4, NO. 7 JOURNAL OF OBJECT TECHNOLOGY 47

ON ISSUES WITH COMPONENT-BASED SOFTWARE REUSE 6. data format differences A large volume of data is managed either by a file system or a database management system. Software components that interface with file systems are significantly different from those that interface with database management systems. Different countries use different formats to store such data as date, time, currency, etc., and use different measurement units. Some software encode data in ASCII, while others use EBCDIC. Software components that explicitly deal with such data formats and encoding schemes cannot be reused without change in software that use different formats or encoding scheme. 7. algorithm and data structure differences A wide variety of algorithms implement key functions or capabilities supported in software systems. Examples include sorting, searching, data replication, database locking, database logging for recovery, security and encryption, message routing on a network, etc. For each such function or capability, typically there is more than one algorithm or technique, and accompanying data structures (e.g., linked list, hashing, binary tree, B+tree, R*-tree, heap), to implement it, each with different tradeoff considerations. One technique may be simple and quick to implement, while it may result in low performance or low level of reliability or low level of security. One technique may be good to support the management of a small amount of data, while it may be totally inappropriate for a large volume of data or a very high input data rate. One technique may be good to support the routing of a large number of small messages, while it may be unacceptable for routing a mixture of a small number of large messages and a large number of small messages. Software components that implement algorithms and techniques, and accompanying data structures, under certain tradeoff considerations cannot in general be reused without change under different tradeoff considerations. The difficulty with reuse with change to an existing component is obvious. It is difficult and time-consuming to fully understand an existing component that appears to closely match the requirements of the part of the new software for which the component may be reused with change. Then it takes efforts to determine those parts of the component that require changes, and to actually make those changes. Of course, once the changes are made, the modified component must be thoroughly tested and documented, and the entire software that includes the modified component must in turn be thoroughly tested. Faced with these practical difficulties, often software developers conclude that it would take them less time and manpower to develop the necessary parts of the new software from scratch than to select some seemingly closely matching components, analyze and modify them. 48 JOURNAL OF OBJECT TECHNOLOGY VOL. 4, NO. 7

3 PRE-CONDITIONS TO COMPONENT-BASED REUSE Formal reuse of components, with or without change, is not cost-free. First of all, developers must register the components in a software component database. There must first be a standard format for registering software components. Simply storing a directory of source code files is not enough. The source code must be properly documented, with block comments and inline comments. Requirements specification and design specification concerning the component to be reused should also be included. Before a component may be selected for reuse, it must be confirmed that the component closely matches the requirements of the part of the new software into which it is to be used. Even if the component comes with proper documentation, this task is difficult and timeconsuming. Proper documentation is essential to make the task more accurate and less time-consuming. Further, the test suite for testing the code should be included. It must be made easy for other developers to confirm that the component selected will work properly in the possibly new environment of the new software being developed. Then the developers (or QA/test engineers) must develop test cases to confirm that the component in the context of the new software that now includes it behaves as expected. Beyond these, programming guidelines, software development best practices, and documentation standards should be established organization-wide, and developers must follow them. Documentation standards include templates and samples for requirements specification, design specification, source code block comments, and software release notes. Developers and QA/testers must also be properly trained on all key architectural factors in the development of software (including software in embedded systems context), including performance, scalability, reliability, extensibility, security, and configurability. 4 CONCLUDING REMARKS Component-based reuse should really be taken as one of several ways in which to enhance software development productivity. It is certainly not the only way to enhance productivity, and not necessarily even the best way. Other, more direct and immediate ways to enhance productivity is the use of a variety of software tools, including tools for analyzing and testing software, tools for automatically generating unit test cases, and simulators for automating the testing of embedded systems. There are various pre-conditions that must be met before component-based software reuse should be attempted organization-wide and in a formal manner. Pre-conditions include proper training of all software developers and QA/testers on all facets of software development, including documentation, thorough testing, programming guidelines and programming and testing best practices, software design based on full consideration of all key architectural factors in the development of software. Of course, all developers and VOL. 4, NO. 7 JOURNAL OF OBJECT TECHNOLOGY 49

ON ISSUES WITH COMPONENT-BASED SOFTWARE REUSE QA/testers must follow all guidelines established and all best practices they are trained on. About the Author Won Kim is Senior Advisor at Samsung Electronics, Korea. He is Editor-in-Chief of ACM Transactions on Internet Technology (www.acm.org/toit). He is Global General Chair of the Human.Society@Internet International Conference. He is the recipient of the ACM 2001 Distinguished Services Award, and is an ACM Fellow. 50 JOURNAL OF OBJECT TECHNOLOGY VOL. 4, NO. 7