Identification of redundancies and omissions among components of a web based architecture6536037Abstract A system, method and article of manufacture are provided for conveying redundancies and omissions among components of a network framework such as a web architecture framework. First, an area of an existing network framework is determined in which redundancies and omissions exist. Next, a pictorial representation of the existing network framework is presented along with a plurality of its components. The foregoing redundancies and the omissions are then highlighted by indicia coding the components of the existing network that reside in the area. As such, a diagnostic analysis of redundant efforts and gaps in a current implementation of the existing network framework is effectively conveyed. Claims What is claimed is: Description FIELD OF THE INVENTION
Product Name/
Category Product Details
Application A platform for the development, delivery and management
of enterprise
Server network applications. Based on CORBA and Java, Product1
uses an open and
secure architecture to develop business applications.
The Product1 product
family consists of the following components:
.cndot. Product1 Studio -- a visual integrated
development environment tool for
developing Java-based applications in Product1
and Java. It
incorporates wizards and editors for creating
web-based applications,
including construction of user interface, data
access and PACs. It also
integrates with source code control, testing and
deployment tools.
.cndot. Product1 Application Server -- a Java- and
CORBA-based server that
provides state and session management, built-in
load balancing,
processing of application logic and integration
with external databases
and enterprise systems.
.cndot. Product1 Java Object Framework -- a
framework of reusable Java and
JavaBeans objects. A host of Product1 Java
classes and methods are
available out-of-the-box for custom development.
.cndot. Product1 Command Center -- a Java-based
application that provides
local and remote management and monitoring of
the platform in real-
time. This management console provides control
of the application
server, with the ability to configure a range of
properties for each server
component and the processes within them. It can
also distribute
components across multiple systems and manage
multiple
configurations.
The Product1 product family may be extended through
these components:
.cndot. PAC SDK -- Product1 platform that allows
developers to build
customized Platform Adapter Components (PACs)
for external
enterprise systems.
.cndot. PACs -- Business1 provides a PAC for SAP and
PeopleSoft. Business1
partners deliver other 3rd party PACs that can
be purchased from
partners directly.
Internet Mail A family of Internet mail server products that securely
handles mail messages
Server (SIMS) in a variety of formats. SIMS also provides a secure
Java Administration
Console for centralized and remote administration,
backup and restore features.
SIMS is a replacement for the UNIX sendmail program
which has been the
target of frequent system break-ins.
Internet News Targeted for internet service providers, the Internet
News Server is a full-
Server featured news server which offers user-focused
interfaces, streamed
feeder/reader design, web-based installation and
administration and remote
access.
The Internet News Server is a component of the Product2
ISP Server suite.
Forum Workgroup collaboration tools that allow users to
communicate in a
heterogeneous environment of Business1 workstations, PCs
and Macintosh
computers. Forum allows users to share a whiteboard and
applications with
others and seamlessly transfer files and "chat" with
co-workers.
Personal Personal WebAccess -- a customizable, compact web
browser for devices that
WebAccess run the PersonalJava platform. Personal Web Access is
designed for
Browser manufacturers who want to provide consumers with an easy
way to access the
Web and retrieve information from a variety of consumer
devices, including
screen phones, set-top boxes, and wireless hand-held
devices. The browser
supports common internet services such as
authentication, FTP, applets, audio
and media files.
HotJava HotJava Browser -- a lightweight, customizable browser
designed for OEMs
Browser and developers who create web-enabled devices and
applications.
Product3 A secure, standards-based web server for accessing,
managing, and distributing
information over the Internet, extranets, or intranets.
Product3 supports Java
servlet development and network caching of web pages.
Product3 simplifies management of website environments
through delegation
of administrative privileges such as access rights to
administer meta-data
components or load-balancing.
Java Web Server The first commercially available Java service based on
the JavaServer API
framework for Java servlets. It uses servlet technology
to enable server-side
Java applications and provides access control and
security features.
Java Web Server provides session tracking that provides
a mechanism to track
how people use and navigate websites. It also provides
remote administration
and logging features.
Directory Services A multi-protocol, scalable global directory for storing
information such as user
definitions, user profiles, network resource
definitions, and configuration
parameters. It employs naming, directory, and
authentication protocols on top
of a shared, distributed, object repository. Users and
applications can use the
directory to locate and access information from anywhere
in the network.
JavaWallet Java Electronic Commerce Framework (JECF) is Business1's
new initiative to
create a standard, secure framework within which to
conduct business
transactions using any combination of currencies and
payment instruments
such as credit and debit cards, electronic cash and
checks, and smart cards.
The initial component of the JECF is the JavaWallet, a
client-side application
that will be distributed as a core component of the Java
environment.
JavaWallet will allow users of any Java-enabled web
browser or operating
system to purchase goods and services from
JECF-compliant merchant
websites.
JavaWallet provides a single user interface for
electronic transactions, secure
from tampering. When a consumer uses a Java-enabled
browser to navigate an
online mall, selects goods and services for purchase, he
can access the
JavaWallet for home banking and portfolio management.
The consumer owns
the JavaWallet that will be used to complete purchases
and banking
transactions. The user may set spending limits and can
monitor spending
through an auditable transaction log. Privacy of all
data is protected through
the use of encryption and digital signatures.
Merchants offer goods and services for sale on the
Internet using applets which
adhere to the JavaWallet architecture. These applets may
include interfaces to
payment processing, security services, customer profile
services and database
services.
The Java Wallet family consists of the following
components:
.cndot. Java Commerce Business (JCC) -- a client
side solution for
eCommerce transactions. JCC provides users with
a wallet-like user
interface, a database, and a platform that
enables a variety of payment
instruments and protocols.
.cndot. Commerce JavaBeans -- enables developers to
write components to
extend JCC functionality such as interfacing
with payment servers and
other transaction protocols.
.cndot. Gateway Security Model -- allows a secure
shield around protected
APIs and components.
Java Card A card that is embedded with either a microprocessor and
a memory chip or
only a memory chip with non-programmable logic. The
microprocessor card
can add, delete, and otherwise manipulate information on
the card, while a
memory-chip card can only undertake a pre-defined
operation.
echeck Server A server that allows the use of electronic checks for
transactions. Business1
echeck server verifies digital signatures, processes
checks according to the
business rules of the bank (e.g. a check over $25,000
requires two signatures),
returns invalid checks, and settles all valid checks.
Product4 Product A range of security-based hardware and software that
offers packet filtering,
Suite encryption, security administration, virtual private
network and access
restriction. The Product4 Product Suite includes the
following components:
.cndot. Product4 Secure Net -- a complete set of
products designed to
establish perimeter defense, secure intranets,
secure remote access,
and secure extranets including the following:
.cndot. Product4 EFS -- firewall and security server
software that screens
network traffic as defined by the organization's
security policy. It
also acts as a high-speed encryption server to
protect information
1.2 Business2 Business2 Communications offer a variety of server products that support the development and deployment of Internet applications. Business2 also provides applications with out-of-the-box functionality such as electronic commerce.
Product Name/
Category Product Details
Business2 A suite of pre-built applications that run on
Business2's Application Server.
Commerce These applications include buying, selling,
merchandising, and delivering
Product1 content over the Internet:
.cndot. ECProduct1 -- Software for the integration
of eCommerce applications
with legacy systems. It provides for the
sending, receiving, and
encrypted transmission of documents among
heterogeneous systems of
trading partners over the Internet.
.cndot. SellerProduct1 -- An application designed to
support advanced business-
to-business selling over the Internet.
SellerProduct1 allows for the
enforcement of trading partner agreements and
business rules.
SellerProduct1 provides the capability to create
company-specific
catalogs which can be set up to present
different products to different
users based upon purchase eligibility.
SellerProduct1 includes search
features, management tools, and order management
(including tax,
shipping, and payment services.)
.cndot. BuyerProduct1 -- An Internet-based corporate
procurement application
that automates order and delivery, supports
complex trading
relationships, and allows for the exchange of
information via EDI or the
Internet.
.cndot. PublishingProduct1 -- An application that
utilizes both passive and
active customer profiling capabilities to create
targeted advertising, and
to deliver personalized information for superior
customer service.
Content management tools are combined with
application development
tools to allow to host and deploy multiple
sites.
.cndot. MerchantProduct1 -- An online
business-to-consumer merchandising
solution that provides the following features:
.cndot. A single shopping cart for each
customer, forms filled with
predefined account information, tax
calculation and discounts,
product availability, and up-to-date order
status information.
.cndot. Payment systems, catalog creation and
administration tools, an
order management system, and rapid
customization of a site's
business processes through modifiable
business rules and
presentation templates.
.cndot. Search capabilities, including
hierarchical menus, parametric
searches by attribute, and simple keyword
searches.
.cndot. BillerProduct1 -- An Internet bill
presentment and payment (IBPP)
solution, particularly for the banking and
telecommunications
industries.
.cndot. TradingProduct1 -- A commerce exchange
application that enables
trading partners of varying size and technical
sophistication to transact
business over the Internet through in-context
document turnaround
capabilities, and customizable prepackaged
forms.
Business2 Produc A comprehensive set of components that integrates
browsing, email, web-based
word processing, chat, and group scheduling to allow
users to communicate,
share, and access information.
Business2 Product2 includes:
.cndot. Product3 -- web browser with support for
Java, JavaScript, and SSL
.cndot. Product4 -- an Internet mail client.
.cndot. Product5 -- a web authoring tool.
.cndot. Instant Product4 -- enables people to
communicate easily and privately
in real time over an intranet or the Internet,
either one-on-one or in a
group.
.cndot. Calendar -- delivers group scheduling based
on a scalable real-time
architecture.
Browser Customization
.cndot. Business2 Business Customization Kit --
enables Internet service
providers, Internet content providers, hardware
OEMs, and others to
create customized versions of Product2.
.cndot. Business2 Mission Control Desktop --
cross-platform administration
tools to configure, deploy, centrally manage,
and update Business2
Product2.
Business2 A high-performance, scalable web server software for
deploying the largest-
Enterprise Server scale web sites. Business2 Enterprise Server includes a
built-in search engine
and supports standard security and authentication. The
integrated LiveWire
Pro software also adds content management, data access,
and session
management capabilities.
Business2 also offers FastTrack Server -- an entry-level
enterprise server with
limited functionality.
Business2 A middleware infrastructure that supports the
development and deployment of
Application transactional, business-critical Internet applications.
Business2 Application
Server Server operates with other Business2 products and
includes the following two
development tools:
.cndot. Application Builder -- provides an
integrated and productive web
development environment that enables developers
to rapidly deliver
enterprise-class web applications.
.cndot. Extension Builder -- allows corporations to
develop custom integration
with heterogeneous systems and applications
across the enterprise.
Business2 Directo A directory server that acts as the central repository
for customer, supplier and
Server employee information. Business2 Directory Server enables
the integration,
storage and management of directory information from
disparate data sources.
It also provides security, authentication and
replication features.
A Directory Software Developer's Kit provides
application programming
interfaces that enable developers to directory-enable
their applications.
Business2 Proxy A system for caching and filtering web content, log
analysis, and boosting
Server network performance.
Bussiness2 Calend A calendar server that supports the scheduling of
meetings, appointments, and
Server resources for thousands of users.
Bussiness2 Chat A newsgroup server that provides collaboration services
through discussion
Server groups. Business2 Chat Server also supports the
moderation of content and
administration of discussion groups.
Bussiness2 An email server that delivers messages with embedded
sound, graphics, video
Messaging Server files, HTML forms, Java applets, and desktop
applications.
Other Directory Business2 sells a range of products that provide a user
and security
& Security management infrastructure for large-scale eCommerce,
extranet, and intranet
Products applications.
.cndot. Business2 Certificate Management System --
issues and manages digital
certificates for extranet and e-commerce
applications.
.cndot. Business2 Directory for Secure E-Commerce --
expands the capabilities
of Business2 Directory Server to provide
additional flexibility of user
and security administration for large-scale
commerce and extranet
applications.
.cndot. Business2 Delegated Administrator --
provides customizable self-
service administration for customers and
partners to manage their own
user and account information.
.cndot. Business2 Meta-Directory -- enables
Business2 Directory Server to be
automatically synchronized with relational
databases as well as network
operating system, messaging, and enterprise
resource planning system
directories
.cndot. Business2 Security Services -- enables
developers to incorporate
standard Internet security technologies into
applications.
Other Bussiness2 .cndot. Process Manager -- Enables enterprises to
automate and modify business
Products processes such as contract negotiation, bidding and
contractor management.
Business2 Process Manager supports the development
and deployment of
processes across extranets and intranets, and
manages them for overall
efficiency and precision.
Process Manager has four components:
.cndot. Business2 Process Manager Builder -- a
visual design environment
for designing business processes using
intuitive features such as
drag-and-drop functionality and pick lists.
Processes may be stored
in Business2's Directory Server.
.cndot. Business2 Process Manager Engine -- the
server-based engine that
hosts processes designed with PM Builder.
.cndot. Business2 Process Manager Express --
1.3 Business3 Business3 primarily provides Internet services for web users. It offers a variety of services including internet access, portal sites, links to online shopping, and chatting. Business3 offers a very limited set of Internet products as it focuses on providing Internet services.
Product Name/
Category Product Details
Business3 A software application that allows Business3 users to
access their Business3
NetMail mail through a standard web browser without any
Business3 software.
Business3press A web publishing tool which may be published to any web
server.
Business3press offers the following capabilities:
.cndot. WYSIWYG editing
.cndot. Simple interfaces for creating forms and
image maps
.cndot. Integrated browsing and editing
simultaneously
.cndot. "Check Links" function to fix broken links
.cndot. Database interaction
.cndot. Permissions setting
.cndot. Work archive
.cndot. MiniWeb -- site management tool that
provides graphical overview
of website structure. It provides a mechanism to
save or move
multiple pages while maintaining appropriate
links.
Business3server A multi-threaded web and publishing server that provides
the following
capabilities:
.cndot. Serves HTML pages and other media files
.cndot. Runs CGI scripts and processes server-side
includes
.cndot. Platform for dynamic web applications:
Business3server Dynamic
Pages (ADPs)
.cndot. Supports Business3server's C and Tcl
scripting and APIs
.cndot. Supports database connectivity
.cndot. Allows users to edit content across the
network with Business3press
or other authoring tools
.cndot. Provides C API plug-in that can be used to
serve and rotate web
advertisements, as on Business3's site.
.cndot. Supports simultaneous connections through
multi-threading and in-
memory caching
.cndot. Supports site administration tasks including
account management,
document management (automatic version control
and archiving),
link management, and access control
.cndot. Web-based server and page administration
.cndot. Provides support for Art Technology Group's
Dynamo server
Business3server is used extensively on Business3's sites
and a number of other
Internet sites including the following: primehost.com,
Business3.com,
digitalcity.com, tile.net, am.net, worldpages.com.
Client3 Instant A software application that provides online chatting
capabilities, directory
Product1 services for user profiles, and personalized news.
Client3 Browser A browser based upon Microsoft's Internet Explorer which
supports common
internet services such as graphics, sound, meta-tags,
plug-ins, security, FTP,
HTTP.
Client3 Client A software application installed on end-user's machines
to obtain access to
Business3's private network. Business3 Business
communicates with a host in
Virginia through a proprietary protocol.
Client3 Caching A server software that determines if a web page object
should be cached and
Server when it should be check for a new version. This
procedure, instituted in the
Business3 proxy subsystem improves the performance of a
website. Business3
Caching Server detects images and automatically
compresses them for quick
storage and access.
Now that the details regarding the presentation aspects have been set forth, information will be provided relating to the specific web architecture framework of the present invention. An overview of the hardware and software involved in implementation of the present invention will first be described after which the web architecture will be described in detail. A preferred embodiment of a system in accordance with the present invention is preferably practiced in the context of a personal computer such as an IBM compatible personal computer, Apple Macintosh computer or UNIX based workstation. A representative hardware environment is depicted in FIG. 51, which illustrates a typical hardware configuration of a workstation in accordance with a preferred embodiment having a central processing unit 70, such as a microprocessor, and a number of other units interconnected via a system bus 71. The workstation shown in FIG. 51 includes a Random Access Memory (RAM) 73, Read Only Memory (ROM) 74, an I/O adapter 75 for connecting peripheral devices such as disk storage units 76 to the bus 71, a user interface adapter 78 for connecting a keyboard 79, a mouse 80, a speaker 81, a microphone 82, and/or other user interface devices such as a touch screen (not shown) to the bus 71, communication adapter 83 for connecting the workstation to a communication network (e.g., a data processing network) and a display adapter 84 for connecting the bus 71 to a display device 85. The workstation typically has resident thereon an operating system such as the Microsoft Windows NT or Windows/95 Operating System (OS), the IBM OS/2 operating system, the MAC OS, or UNIX operating system. Those skilled in the art will appreciate that the present invention may also be implemented on platforms and operating systems other than those mentioned. A preferred embodiment is written using JAVA, C, and the C++ language and utilizes object oriented programming methodology. Object oriented programming (OOP) has become increasingly used to develop complex applications. As OOP moves toward the mainstream of software design and development, various software solutions require adaptation to make use of the benefits of OOP. A need exists for these principles of OOP to be applied to a messaging interface of an electronic messaging system such that a set of OOP classes and objects for the messaging interface can be provided. OOP is a process of developing computer software using objects, including the steps of analyzing the problem, designing the system, and constructing the program. An object is a software package that contains both data and a collection of related structures and procedures. Since it contains both data and a collection of structures and procedures, it can be visualized as a self-sufficient component that does not require other additional structures, procedures or data to perform its specific task. OOP, therefore, views a computer program as a collection of largely autonomous components, called objects, each of which is responsible for a specific task. This concept of packaging data, structures, and procedures together in one component or module is called encapsulation. In general, OOP components are reusable software modules which present an interface that conforms to an object model and which are accessed at run-time through a component integration architecture. A component integration architecture is a set of architecture mechanisms which allow software modules in different process spaces to utilize each others capabilities or functions. This is generally done by assuming a common component object model on which to build the architecture. It is worthwhile to differentiate between an object and a class of objects at this point. An object is a single instance of the class of objects, which is often just called a class. A class of objects can be viewed as a blueprint, from which many objects can be formed. OOP allows the programmer to create an object that is a part of another object. For example, the object representing a piston engine is said to have a composition-relationship with the object representing a piston. In reality, a piston engine comprises a piston, valves and many other components; the fact that a piston is an element of a piston engine can be logically and semantically represented in OOP by two objects. OOP also allows creation of an object that "depends from" another object. If there are two objects, one representing a piston engine and the other representing a piston engine wherein the piston is made of ceramic, then the relationship between the two objects is not that of composition. A ceramic piston engine does not make up a piston engine. Rather it is merely one kind of piston engine that has one more limitation than the piston engine; its piston is made of ceramic. In this case, the object representing the ceramic piston engine is called a derived object, and it inherits all of the aspects of the object representing the piston engine and adds further limitation or detail to it. The object representing the ceramic piston engine "depends from" the object representing the piston engine. The relationship between these objects is called inheritance. When the object or class representing the ceramic piston engine inherits all of the aspects of the objects representing the piston engine, it inherits the thermal characteristics of a standard piston defined in the piston engine class. However, the ceramic piston engine object overrides these ceramic specific thermal characteristics, which are typically different from those associated with a metal piston. It skips over the original and uses new functions related to ceramic pistons. Different kinds of piston engines have different characteristics, but may have the same underlying functions associated with it (e.g., how many pistons in the engine, ignition sequences, lubrication, etc.). To access each of these functions in any piston engine object, a programmer would call the same functions with the same names, but each type of piston engine may have different/overriding implementations of functions behind the same name. This ability to hide different implementations of a function behind the same name is called polymorphism and it greatly simplifies communication among objects. With the concepts of composition-relationship, encapsulation, inheritance and polymorphism, an object can represent just about anything in the real world. In fact, our logical perception of the reality is the only limit on determining the kinds of things that can become objects in object-oriented software. Some typical categories are as follows: Objects can represent physical objects, such as automobiles in a traffic-flow simulation, electrical components in a circuit-design program, countries in an economics model, or aircraft in an air-traffic-control system. Objects can represent elements of the computer-user environment such as windows, menus or graphics objects. An object can represent an inventory, such as a personnel file or a table of the latitudes and longitudes of cities. An object can represent user-defined data types such as time, angles, and complex numbers, or points on the plane. With this enormous capability of an object to represent just about any logically separable matters, OOP allows the software developer to design and implement a computer program that is a model of some aspects of reality, whether that reality is a physical entity, a process, a system, or a composition of matter. Since the object can represent anything, the software developer can create an object which can be used as a component in a larger software project in the future. If 90% of a new OOP software program consists of proven, existing components made from preexisting reusable objects, then only the remaining 10% of the new software project has to be written and tested from scratch. Since 90% already came from an inventory of extensively tested reusable objects, the potential domain from which an error could originate is 10% of the program. As a result, OOP enables software developers to build objects out of other, previously built objects. This process closely resembles complex machinery being built out of assemblies and sub-assemblies. OOP technology, therefore, makes software engineering more like hardware engineering in that software is built from existing components, which are available to the developer as objects. All this adds up to an improved quality of the software as well as an increased speed of its development. Programming languages are beginning to fully support the OOP principles, such as encapsulation, inheritance, polymorphism, and composition-relationship. With the advent of the C++ language, many commercial software developers have embraced OOP. C++ is an OOP language that offers a fast, machine-executable code. Furthermore, C++ is suitable for both commercial-application and systems-programming projects. For now, C++ appears to be the most popular choice among many OOP programmers, but there is a host of other OOP languages, such as Smalltalk, Common Lisp Object System (CLOS), and Eiffel. Additionally, OOP capabilities are being added to more traditional popular computer programming languages such as Pascal. The benefits of object classes can be summarized, as follows: Objects and their corresponding classes break down complex programming problems into many smaller, simpler problems. Encapsulation enforces data abstraction through the organization of data into small, independent objects that can communicate with each other. Encapsulation protects the data in an object from accidental damage, but allows other objects to interact with that data by calling the object's member functions and structures. Subclassing and inheritance make it possible to extend and modify objects through deriving new kinds of objects from the standard classes available in the system. Thus, new capabilities are created without having to start from scratch. Polymorphism and multiple inheritance make it possible for different programmers to mix and match characteristics of many different classes and create specialized objects that can still work with related objects in predictable ways. Class hierarchies and containment hierarchies provide a flexible mechanism for modeling real-world objects and the relationships among them. Libraries of reusable classes are useful in many situations, but they also have some limitations. For example: Complexity. In a complex system, the class hierarchies for related classes can become extremely confusing, with many dozens or even hundreds of classes. Flow of control. A program written with the aid of class libraries is still responsible for the flow of control (i.e., it must control the interactions among all the objects created from a particular library). The programmer has to decide which functions to call at what times for which kinds of objects. Duplication of effort. Although class libraries allow programmers to use and reuse many small pieces of code, each programmer puts those pieces together in a different way. Two different programmers can use the same set of class libraries to write two programs that do exactly the same thing but whose internal structure (i.e., design) may be quite different, depending on hundreds of small decisions each programmer makes along the way. Inevitably, similar pieces of code end up doing similar things in slightly different ways and do not work as well together as they should. Class libraries are very flexible. As programs grow more complex, more programmers are forced to reinvent basic solutions to basic problems over and over again. A relatively new extension of the class library concept is to have a framework of class libraries. This framework is more complex and consists of significant collections of collaborating classes that capture both the small scale patterns and major mechanisms that implement the common requirements and design in a specific application domain. They were first developed to free application programmers from the chores involved in displaying menus, windows, dialog boxes, and other standard user interface elements for personal computers. Frameworks also represent a change in the way programmers think about the interaction between the code they write and code written by others. In the early days of procedural programming, the programmer called libraries provided by the operating system to perform certain tasks, but basically the program executed down the page from start to finish, and the programmer was solely responsible for the flow of control. This was appropriate for printing out paychecks, calculating a mathematical table, or solving other problems with a program that executed in just one way. The development of graphical user interfaces began to turn this procedural programming arrangement inside out. These interfaces allow the user, rather than program logic, to drive the program and decide when certain actions should be performed. Today, most personal computer software accomplishes this by means of an event loop which monitors the mouse, keyboard, and other sources of external events and calls the appropriate parts of the programmer's code according to actions that the user performs. The programmer no longer determines the order in which events occur. Instead, a program is divided into separate pieces that are called at unpredictable times and in an unpredictable order. By relinquishing control in this way to users, the developer creates a program that is much easier to use. Nevertheless, individual pieces of the program written by the developer still call libraries provided by the operating system to accomplish certain tasks, and the programmer must still determine the flow of control within each piece after it's called by the event loop. Application code still "sits on top of" the system. Even event loop programs require programmers to write a lot of code that should not need to be written separately for every application. The concept of an application framework carries the event loop concept further. Instead of dealing with all the nuts and bolts of constructing basic menus, windows, and dialog boxes and then making these things all work together, programmers using application frameworks start with working application code and basic user interface elements in place. Subsequently, they build from there by replacing some of the generic capabilities of the framework with the specific capabilities of the intended application. Application frameworks reduce the total amount of code that a programmer has to write from scratch. However, because the framework is really a generic application that displays windows, supports copy and paste, and so on, the programmer can also relinquish control to a greater degree than event loop programs permit. The framework code takes care of almost all event handling and flow of control, and the programmer's code is called only when the framework needs it (e.g., to create or manipulate a proprietary data structure). A programmer writing a framework program not only relinquishes control to the user (as is also true for event loop programs), but also relinquishes the detailed flow of control within the program to the framework. This approach allows the creation of more complex systems that work together in interesting ways, as opposed to isolated programs, having custom code, being created over and over again for similar problems. Thus, as is explained above, a framework basically is a collection of cooperating classes that make up a reusable design solution for a given problem domain. It typically includes objects that provide default behavior (e.g., for menus and windows), and programmers use it by inheriting some of that default behavior and overriding other behavior so that the framework calls application code at the appropriate times. There are three main differences between frameworks and class libraries: Behavior versus protocol. Class libraries are essentially collections of behaviors that you can call when you want those individual behaviors in your program. A framework, on the other hand, provides not only behavior but also the protocol or set of rules that govern the ways in which behaviors can be combined, including rules for what a programmer is supposed to provide versus what the framework provides. Call versus override. With a class library, the code the programmer instantiates objects and calls their member functions. It's possible to instantiate and call objects in the same way with a framework (i.e., to treat the framework as a class library), but to take full advantage of a framework's reusable design, a programmer typically writes code that overrides and is called by the framework. The framework manages the flow of control among its objects. Writing a program involves dividing responsibilities among the various pieces of software that are called by the framework rather than specifying how the different pieces should work together. Implementation versus design. With class libraries, programmers reuse only implementations, whereas with frameworks, they reuse design. A framework embodies the way a family of related programs or pieces of software work. It represents a generic design solution that can be adapted to a variety of specific problems in a given domain. For example, a single framework can embody the way a user interface works, even though two different user interfaces created with the same framework might solve quite different interface problems. Thus, through the development of frameworks for solutions to various problems and programming tasks, significant reductions in the design and development effort for software can be achieved. A preferred embodiment of the invention utilizes HyperText Markup Language (HTML) to implement documents on the Internet together with a general-purpose secure communication protocol for a transport medium between the client and the Newco. HTTP or other protocols could be readily substituted for HTML without undue experimentation. Information on these products is available in T. Berners-Lee, D. Connoly, "RFC 1866: Hypertext Markup Language--2.0" (November 1995); and R. Fielding, H, Frystyk, T. Berners-Lee, J. Gettys and J. C. Mogul, "Hypertext Transfer Protocol--HTTP/1.1: HTTP Working Group Internet Draft" (May 2, 1996). HTML is a simple data format used to create hypertext documents that are portable from one platform to another. HTML documents are SGML documents with generic semantics that are appropriate for representing information from a wide range of domains. HTML has been in use by the World-Wide Web global information initiative since 1990. HTML is an application of ISO Standard 8879; 1986 Information Processing Text and Office Systems; Standard Generalized Markup Language (SGML). To date, Web development tools have been limited in their ability to create dynamic Web applications which span from client to server and interoperate with existing computing resources. Until recently, HTML has been the dominant technology used in development of Web-based solutions. However, HTML has proven to be inadequate in the following areas: Poor performance; Restricted user interface capabilities; Can only produce static Web pages; Lack of interoperability with existing applications and data; and Inability to scale. Sun Microsystem's Java language solves many of the client-side problems by: Improving performance on the client side; Enabling the creation of dynamic, real-time Web applications; and Providing the ability to create a wide variety of user interface components. With Java, developers can create robust User Interface (UI) components. Custom "widgets" (e.g., real-time stock tickers, animated icons, etc.) can be created, and client-side performance is improved. Unlike HTML, Java supports the notion of client-side validation, offloading appropriate processing onto the client for improved performance. Dynamic, real-time Web pages can be created. Using the above-mentioned custom UI components, dynamic Web pages can also be created. Sun's Java language has emerged as an industry-recognized language for "programming the Internet." Sun defines Java as: "a simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, high-performance, multithreaded, dynamic, buzzword-compliant, general-purpose programming language. Java supports programming for the Internet in the form of platform-independent Java applets." Java applets are small, specialized applications that comply with Sun's Java Application Programming Interface (API) allowing developers to add "interactive content" to Web documents (e.g., simple animations, page adornments, basic games, etc.). Applets execute within a Java-compatible browser (e.g., Netscape Navigator) by copying code from the server to client. From a language standpoint, Java's core feature set is based on C++. Sun's Java literature states that Java is basically, "C++ with extensions from Objective C for more dynamic method resolution." Another technology that provides similar function to JAVA is provided by Microsoft and ActiveX Technologies, to give developers and Web designers wherewithal to build dynamic content for the Internet and personal computers. ActiveX includes tools for developing animation, 3-D virtual reality, video and other multimedia content. The tools use Internet standards, work on multiple platforms, and are being supported by over 100 companies. The group's building blocks are called ActiveX Controls, small, fast components that enable developers to embed parts of software in hypertext markup language (HTML) pages. ActiveX Controls work with a variety of programming languages including Microsoft Visual C++, Borland Delphi, Microsoft Visual Basic programming system and, in the future, Microsoft's development tool for Java, code named "Jakarta." ActiveX Technologies also includes ActiveX Server Framework, allowing developers to create server applications. One of ordinary skill in the art readily recognizes that ActiveX could be substituted for JAVA without undue experimentation to practice the invention. Development Framework (IDEA) FIG. 52 is an illustration of the Integrated Development Environment Architecture (IDEA). The Integrated Development Environment Architecture provides a development environment framework and associated guidelines that reduce the effort and costs involved with designing, implementing, and maintaining an integrated development environment. IDEA takes a holistic approach to the development environment by addressing all three Business Integration components: organization, processes, and tools. The development environment is a production environment for one or several systems development projects as well as for maintenance efforts. It requires the same attention as a similarly sized end-user execution environment. The purpose of the development environment is to support the tasks involved in the analysis, design, construction, and maintenance of business systems, as well as the associated management processes. The environment should adequately support all the development tasks, not just the code/compile/test/debug cycle. Given this, a comprehensive framework for understanding the requirements of the development environment is be used. Another reason for the comprehensive framework is that it is important to get the development environment right the first time. Changing the development environment when construction is fully staffed entails serious disruptions and expensive loss of productivity. Experience has shown that within the same medium- to large-size project, with the same people, moving from a poor to a good development environment, productivity is improved by a factor of ten for many tasks. The improvements come in two categories: The elimination of redundant and non value-added tasks The streamlining of useful tasks While it seems intuitive that most tasks can be streamlined, the following list gives a few examples of redundant tasks that must be eliminated: Analysis to determine how to merge the uncoordinated changes applied by two programmers to the same module Re-entry of the source code and retesting of a module, which was accidentally deleted Recurring discussions about "what a design packet should contain" or "what constitutes good programming style in a particular context" Repeated design, coding, testing, and maintenance of very similar logic (for example, error handling, date conversion and manipulation, main structure of a module) Searching for the manuals of a particular productivity tool to find information Remigration to system test of a cycle, because the impact analysis for a change request was incomplete Requesting support from another team (for example, environment support, information management) and waiting unnecessarily for a response On a smaller project, these problems can be solved using a brute force approach. This becomes very expensive as the project grows, and finally impossible. A well-designed development environment becomes important as the project team reaches 20-30 people and is absolutely critical with a project size of more than 50 people. The investment required to design, set up, and tune a comprehensive, good development and maintenance environment is typically several hundred development days. Numbers between 400 and 800 days are commonly seen, depending on the platforms, target environment complexity, amount of reuse, and size of the system being developed and maintained. Development Organization Framework FIG. 53 is an illustration showing a Development Organization Framework in accordance with one embodiment of the present invention. When designing a business application, it is crucial to keep in mind the organization that will use the system. The same is true of the development environment. The development organization's size, structure, experience, and maturity should strongly influence the choice of tools and the way the tools are integrated. If this link is not understood, the benefit of tool support will be minimal in many areas, and may significantly reduce productivity. In the same way, when a new business capability is introduced, it is crucial to keep in mind the needs for training and organizational change that which may accompany the technical change. This is also true of the development environment. When a new development environment is put in place, the developers need to learn not only how each individual tool works (for example, how to use the compiler), but also how the tools work together to support the organization as it performs well defined processes. The Business Integration Methodology (BIM) provides valuable information on organizational issues. Relying on the Business Integration Methodology and its project organization guidelines (0940--Organize Project Resource Task Package), the following should be prepared: A list of responsibilities covering both responsibilities for end products and those for on-going processes A Responsibility, Accountability, and Authority profiles deliverable (RAA) for each role in the Development team, making sure that all the responsibilities listed earlier are covered The RAA profiles deliverable consists of statements about the responsibilities, accountability, and authority of each of the positions in the development organization. These statements define the role of each position in terms of: Responsibility--What objectives the position is expected to accomplish Accountability--How and by whom the performance will be measured Authority--The position's decision-making capabilities and limits In accordance with the IDEA Model, the following management teams with responsibilities for the key management functions are defined as: The Information Management team 202 The Quality team 204 The Environment Management team 206 The Release Management team 208 The Configuration Management team 210 The Problem Management team 212 The Program and Project Management teams 214 The Security Management team 216 Together, these teams support the efforts of the System Building team, which is charged with the analysis, design, build, and test of the system to be developed. These teams represent real roles, and on a given program the same people may play different roles. Security Management The evolution of new technologies and expanded access to a virtual world has increased the security risk of conducting business. It is therefore essential to recognize the need for a new unit in the organization, specifically dedicated to ensuring that security is handled appropriately. At the Program level, the Security Management unit needs to: Ensure all security issues are effectively addressed throughout the program (all business and IT processes). Act as facilitator and approving body for all new and existing initiatives that contain security components. Own responsibility for the organization and facilitation of working groups that would address security issues. Be responsible for development and maintenance of the Security Plan. FIG. 54 is an illustration showing a security organization according to one embodiment of the present invention. A Security Management Team may have a security management 300, under which are an administration team 302, a projects & planning team 304, and a business process security team 306. The size of the Security Management team, and the way in which it is integrated into the development organization depends on the degree to which security is a factor for each specific environment. For example, the security risks associated with an Internet-based online banking system are far greater than those of a fully isolated client/server system, and therefore warrant a larger team with broader responsibilities and greater influence. More details about the Security Management team, and other security aspects can be found in the Security in eComerce Executive Planning and Implementation Guides to be published by Global TIS Security. Information Management The Information Management team is responsible for ensuring that the project's knowledge capital and information resources are managed effectively. This includes: Ensuring integrity Ensuring accessibility Ensuring quality and consistency Information Management encompasses Repository management, but generally has a broader scope than merely the repository contents, because most repositories are not capable of holding all the information resources of a project. It is, for example, common to have key project information reside in a combination of repositories, teamware databases, flat files, and paper documents. It is the Information Management team's responsibility to ensure consistency across all these formats. The responsibilities of the Information Management team therefore cover: Repository Management Folder Management Object Management Media Content Management Information and data reuse coordination In addition to managing the information for the System Building team, the Inform | ||||||
