Está en la página 1de 12

CONTENTS

1. Introduction 1
2. Description 2
3. Benefits 4
4. Sample Applications 7
5. Conclusion 10
6. References 11
Efficient Management of Object-Oriented Software Development
1

1. INTRODUCTION

Running computer applications on a bare machine is not a new concept. That is how
computing started decades ago, where a program is loaded manually with toggle switches,
and run by pushing a run button. We are not talking about that in this paper! However, our
computer systems are complex and they have grown out-of proportion creating a large
semantic-gap between applications and hardware. For example, latest Microsoft XP operating
system (OS) has 40 million lines of code. It is time now to revisit the computing evolution
and seek solutions using new paradigms. The OS and environments have been changing
rapidly since last 30 years thus making things obsolete before they can be even productive in
their life span. For example, Microsoft released more than 20 primary releases of OS in last
25 years. Each language and environment goes through a new release every six months.
When an OS, or its environment changes, it has ripple effect resulting in legacy applications.
How could we stop such proliferation of products and technologies and make applications
stable? Without providing any validation, one possible approach is to avoid operating system
and its environments. This is being done slowly in some areas of computing without being
noticed. For example, Exokernel [2] approach indicates that current operating systems are
inefficient and some applications such as server operating systems [4] run faster when kernel
code is moved into applications. Microkernel [3], nano-kernel [14], OSKit [11], and other
similar approaches were also motivated by improving performance by making the OS lean.
However, none of these techniques volunteer to remove OS completely! In addition to the
pioneering research of Exokernel architecture [2], there are many efforts in research to
develop efficient operating environment for running applications. Most recently, sandboxing
mechanisms [10] are proposed that allow applications to configure and deploy services at
user level. Individual efforts [1] provided free operating system resources and code to de-
emphasize the role of commercial OS, but they were not successful in eliminating the
centralized OS architecture. The OS-Kit [11] approach advocates running applications on a
bare PC, but still requires a minimal kernel to assist the applications and they do not provide
C++ API for the user. The Choices [12] project indicates that, it is possible to develop an
object-oriented operating system that runs on a bare machine across many hardware
platforms including: Intel and Sun. In Choices, the object-oriented OS provides the resource
sharing and multiplexing of applications. Similar ideas have been around with Embedded
ADA programming language [13], where the language provides OS constructs such as
process, timer, and memory management functions. This approach reduces the dependency of
centralized OS, thus providing programming capabilities to the user at the language level.
The SWILL [8] project developed a lightweight programming library that adds a simple
embedded web server capability to C and C++ programs, but still requires OS. This
programming library provides efficient API to build server applications. When an OS is
completely removed, now a computer application can directly communicate with the
hardware. There are many applications that need such computing paradigm where they have a

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
2

total control of their program. Some of the common applications such as email, Web server,
text processing, spreadsheets, VoIP Phone, gateways, routers, and so on can be run on bare
machine. We have presented an application object (AO) architecture [5] to build computer
applications that run on a bare machine. Our research was partially funded by NSF to explore
possibility to develop the application-oriented object architecture (AOA) [5, 6]. The original
concept of this idea was presented in [7]. In this paper, we focus our discussion on how to run
C++ applications on a bare PC. The rest of the paper is organized as follows. The Section 2
will provide a full description of our approach, Section 3 describes the benefits of running
bare PC applications, Section 4 illustrates some sample applications, Section 5 narrates our
current and future research, Section 6 mentions acknowledgements, and Section 7 provides
conclusions of this paper.

2. OBJECT-ORIENTED SOFTWARE DEVELOPMENT

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
3

There are many programming languages that support object-oriented features and are
being used for object-oriented software development. C++ is used in this research for
demonstrating the object-oriented concepts because it is the most widely used programming
language for industrial and commercial applications. Thus the need for a class library system
is strong. An object-oriented application has been used to demonstrate the working principle
of the class library system. The system currently under development is depicted here in figure
1. Instead of displaying the entire class hierarchy (as it is too large and complicated to be
displayed here), we have chosen to focus on one particular section of the library to highlight
the techniques f our approach. Nonetheless, this small cross-section is sufficient enough to
provide the reader with an insight into the collection classes we are developing. Our library
framework is organized in a directed graph via inheritance (single and multiple) and as it is
basically a library of utilities, it is not difficult for one to imagine the rate at which this library
would grow in magnitude.

Figure 1: A Class Hierarchy

In object-oriented software development, central to C++ is the class, which encapsulates a


user-defined type in a single module. The class contains a specification of the data needed to
represent an object of this type and a set of operators for manipulating such objects. This
constitutes the abstraction of the user-defined type .It also provides different levels of

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
4

information hiding through its use of keywords like private, protected and public, as shown in
the 'set' class example. The private part holds information that can only be used by its
implementers, while the protected part contains information where there is a limited right of
usage and the public part represents an interface with the users of the type. Inheritance (both
single and multiple) is also supported as shown in the vector-set'. It allows for behavioural
modification as well as type inheritance. The member functions can be made polymorphic by
appending the virtual keyword to it. Although there are a lot more features in C++, they
include features found in C. These are not regarded as essential concepts in object orientation.

3. REPRESENT OBJECT ORIENTED CONCEPTS USING


A RELATIONAL DATA DICTIONARY

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
5

The data dictionary is a technique widely used in software engineering for the description
of information about an entity in the real world. In this paper, data dictionaries are used to
specify the basic entities (i.e. attributes, functions, classes, etc.) and their relationships in 00
developments of collection classes in C++. They are then implemented in the relational
database management system of INGRES).

Class is the basic unit in 00 programming using C++. A class has a name and a general
description containing information such as versions, software and hardware support
environment. It may also fall into several categories by specifying different keywords. There
are private members, protected members and public members in a class; each of them has
special attributes such as typed constants, variables and typed functions. Multiple-inheritance
is supported in 00 development using C++, where a class, may inherit attributes from many
super classes, while a class may also have many subclasses.

If we use CLASS, CATEGORY, INHRLT, PRIMNBR, PRIATBT, PRTMNBR,


PUBMNBR, PRTATBT, PUBATBT to represent basic entities of class, classification of a
class by keyword, inheritance relationship, primary member, primary attribute., protected
member, protected attribute, public member and public attribute respectively, their
relationship can be represented in an extended entity-relationship (EER) diagram as shown in
Figure.

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
6

Figure 2: A Conceptual Schema using EER

Each class should have a description, and this description is functionally dependent on
the class name. A class is classified by its keywords; however, one single keyword may
include many classes. All private attributes, protected attributes and public attributes have the
common features of member name, member type and general member specification, where
the general member specification is functionally dependent on member type and member
name. If we use Mname, Mtype, Mspec. Fname to represent member name, member type,
member specification and function name, the functional dependencies among attributes of
entities can be derived and the final relational schema are shown in Figure 3.

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
7

CLASSDSCRPT(Cname, Description)
CLASS(Cname, Ckwd)
INHRLT(Scname, Cname)
PRIMEMB(Mname, Mtype, Cname, Mspec)
PRIATTR(Mname, Mtype, Cname, Fname)
PRIATTR(Mname, Mtype, Cname, Fname)
PRTMEMB(Mname, Mtype, Cname, Mspec)
PRIATTR(Mname, Mtype, Cname, Fname)
PUBMEMB(Mname. Mtype, Cname, Mspec)
PUBATTR(Mname, Mtype, Cname, Fname)

Figure 3: Relational schema for 00 development

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
8

4. MANIPULATION OPERATIONS IN A CLASS LIBRARY

The collection library project has been developed in the UNIX environment, and the
INGRES system has been used for the class library. The INGRES system contains a
development environment of MENU, FORM, JOINDEF, 4GL and ISQL, within which it is
easy to create database tables for the corresponding relational schema in Figure 2.3.
Information describing the collection class library project is entered through these tables.

There are three kinds of users involved in 00 software development: the software
developer, who writes codes for classes and should have the right to access all the
information about a class; the class library administrator, who manages the library and thus
can access the public and restricted parts of a class; and the end-user, who uses the existing
classes in the library and has the right to access the public and restricted parts of a class.
Management of this security problem is through the use of the grant command as shown
below:-

grant all privileges on table CLASS, CATEGORY,


INHRLT, PUBATBT, PUBMNBR to peter1
/* peter1 is the login-name of the library administrator
grant select on table PUBATBT, PUBMNBR to johnl.
/* johnl is the login-name of the end-user
grant all privileges on table CLASS, CATEGORY, INHRLT,
PRTATBT. PRTMNBR. PRIATBT, PRIMNBR,
PUBATBT. PUBMNBR to s90000.
/ * s90000 is the login-name of a developer

In a class library, retrieval is the most important and widely used command. Based on
the relational database tables, it is possible to formulate a set of typical queries that constitute
a class library system. The queries are designed to aid a software developer in finding
components. Typical queries are designed and implemented as follows:-

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
9

For an end-user, given certain keywords, search for all the classes that can be
utilised.EXAMPLE 1: To search for all classes with keywords 'ordered' and 'set'.
The SQL commands is designed as:
select classname=first.Cname from class first, class second where first.Ckwd='ordered'
and second.Ckwd='set' and first.Cname=second.Cname
which returns the following result:

classname
sequence

For both the end-user and software developer. given a class name, search for all features
belonging to that class.

EXAMPLE 2: To search for detailed description of class "vector-set". The SQL commands
are:
select distinct Membername=Mname, Membertype=Mtype, Specification=Mspec f rom
pubmemb pub where pub.Cname in (select distinct f.Scname from inhrlt f, inhrlt s
where (f.Cname = 'vector-set') or (f.Cname = s.Scname and s.Cname = 'vector-set')) or
pub.Cname = 'vector-set'

Membername Membertype Specification


array T test the array member

insert void adds values to a set

remove void delete value in a set

For software developers, given a function name, search for all classes that define the
function.
EXAMPLE 3: To search for all the class names that define the public function "insert" with
type 'void'.)
select classname=Cname from pubmemb where Mname='insert' and Mtype='void'

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
10

Thus, the results are:

classname
Set vector_set

For all users, given a class name, search for all its superclasses.
EXAMPLE 4: Select all superclasses of the class "vec tor-set".
select distinct superclass=f.Scname from inhrlt f, inhrlt s where f.Cname=s.Scname and
s.Cname='sequence' or f.Cname = 'sequence'

It returns the following result:

superclass
object set

SJEC Department Of Computer Applications 2011


Efficient Management of Object-Oriented Software Development
11

5. CONCLUSION

In 00 software development, object classes are provided by software vendors as well


as developed by application programmers. As the number of classes increases in a multi-user
distributed environment, a class library system is urgently needed for the central management
of these classes. In this paper, we illustrate a relational data dictionary approach to the
management of a complicated class library to 00 development using C++. Here the data
dictionaries are used to describe the information about basic concepts and a relational
database management system is used for the implementation of a class library.
The proposed approach is convenient and efficient for the management of class
libraries as it allows users to retrieve the classes using non-procedural query languages. It is
superior to the "browser" approach as it makes use of the good data management facilities
currently available. There is little overhead required since most existing development
environments already provide a database management system, which makes the
implementation fairly easy.

SJEC Department Of Computer Applications 2011

También podría gustarte