Business alliance identification in a web architecture framework6721713Abstract A system, method and article of manufacture are provided for identifying alliances among a plurality of business entities in components of a network framework. First, alliances are identified among a plurality of business entities in terms of components of a current network framework. Next, a pictorial representation is displayed of the current network framework and the components. The alliances are then conveyed by indicia coding the components of the current network framework in which the alliances exist. Claims What is claimed is: Description FIELD OF THE INVENTION
Product Functionality
Product Name/
Category Product Details
Application A platform for the development, delivery and
Server management of enterprise 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:
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.
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.
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.
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:
PAC SDK - Product1 platform that allows
developers to build customized Platform Adapter
Components (PACs) for external enterprise
systems.
PACs - Business1 provides a PAC for SAP and
PeopleSoft. Business1 partners deliver other
3rd party PACs that can be purchased from
partners directly.
Internet A family of Internet mail server products
Mail that securely handles mail messages in a
Server variety of formats. SIMS also provides a
(SIMS) 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 Targeted for internet service providers,
News the Internet News Server is a full-featured news
Server 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
WebAccess browser for devices that run the PersonalJava
Browser platform. Personal Web Access is designed for
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 browser designed for OEMs and developers who
create web-enabled devices and applications.
Product3 A secure, standard-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 The first commercially available Java service
Web based on the JavaServer API framework for Java
Server 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 A multi-protocol, scalable global directory for
Server 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 small 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 good 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:
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.
Commerce JavaBeans - enables developers to write
components to extend JCC functionality such as
interfacing with payment servers and other
transaction protocols.
Gateway Security Model - allows a secure shield
around protected APIs and components.
Java A card that is embedded with either a micro-
Card processor 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 A server that allows the use of electronic checks
Server 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 A range of security-based hardware and software
Product that offers packet filtering, encryption, security
Suite administration, virtual private network and access
restriction. The Product4 Product Suite includes
the following components:
Product4 Secure Net - a complete set of products
designed to establish perimeter defense, secure
intranets, secure remote access, and secure
extranets including the following:
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 going over untrusted networks.
Product4 SPF-200 - security platform for perimeter
defense and electronic commerce. It provides
stealthing to help protect an organization from
Internet attacks.
Product4 SKIP - provides encryption and key
management capabilities which enables PCs,
workstations, and servers to achieve secure/
authenticated communication.
Business1.net A remote-access strategy and technology that
enables users to securely access all personalized
data, application and information from Java-enabled
browsers. Business1.net uses recently acquired
i-Planet's secure, remote access software.
Calendar Designed to manage large-scale enterprise
Server calendaring systems, Business1's Calendar Server
is integrated with Business1 Internet Mail Server
and provides the following features:
Maintenance of Personal Calendars
Group Scheduling
Calendar Security
Product5 A web server package solution that includes third-
Internet party Internet and security products including the
Server following:
Software Product5 Administration Software - provides server
Bundle setup, configuration, and management capabilities
through a browser. The Product5 Internet Server can
be administered remotely for user access control,
email management, software installation and backup
and recovery.
Checkpoint FireWall-First! - firewall and security
software that protects data and network from
unauthorized access from the public Internet. It also
offers packet-level filtering.
Trend Interscan Virus Wall - virus scanning software
that verifies and filters out viruses in
communications such as files and emails that
interact with the Product5 Interent Server.
Business1 Internet Mail Server - a family of Internet
mail server products that securely handles mail
messages in a variety of formats.
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/
Directory Product Details
Business2 A suite of pre-built applications that run on
Commerce Business2's Application Server. These applications
Product1 include buying, selling, merchandising, and
delivering content over the Internet:
ECProduct1 - Software for the integration of
eCommerce applications with legacy systems. It
provides for the sending, receiving, and encrypted
transmission of documents among the heterogeneous
systems of trading partners over the Internet.
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.)
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.
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.
MerchantProduct1 - An online business-to-consumer
merchandising solution that provides the following
features:
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.
Payment systems, catalog creation and
administration tools, an order management system,
and rapid customization of site's business
processes through modifiable business rules and
presentation templates.
Search capabilities, including hierarchical
menus, parametric searches by attribute, and
simple keyword searches.
BillerProduct1 - An Internet bill presentment
and payment (IBPP) solution, particularly for
the banking and telecommunications industries.
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 A comprehensive set of components that integrates
Product browsing, email, web-based word processing, chat,
and group scheduling to allow users to
communicate, share, and access information.
Business2 Product2 includes:
Product3 - web browser with support for Java,
JavaScript, and SSL
Product4 - an Internet mail client.
Product5 - a web authoring tool.
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.
Calendar - delivers group scheduling based on
a scalable real-time architecture.
Browser Customization
Business2 Business Customization Kit - enables
Internet service providers, Internet content
provides, hardware OEMs, and others to create
customized version of Product2.
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
Enterprise for deploying the largest-scale web sites.
Server 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
Application development and deployment of transactional,
Server business-critical Internet applications. Business2
Application Server operates with other Business2
products and includes the following two development
tools:
Application Builder - provides an integrated and
productive web development environment that enables
developers to rapidly deliver enterprise-class web
applications.
Extension Builder - allows corporations to develop
custom integration with heterogeneous systems
and applications across the enterprise.
Business2 A directory server that acts as the central
Directory repository for customer, supplier and employee
Server 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 A system for caching and filtering web content,
Proxy log analysis, and boosting network performance.
Server
Business2 A calendar server that supports the scheduling
Calend of meetings, appointments, and resources for
Server thousands of users.
Business2 A newsgroup server that provides collaboration
Chat services through discussion groups. Business2
Server Chat Server also supports the moderation of
content and administration of discussion groups.
Business2 An email server that delivers messages with
Messaging embedded sound, graphics, video files, HTML
Server forms, Java applets, and desktop applications.
Other Business2 sells a range of products that provide
Directory a user and security management infrastructure
& Security for large-scale eCommerce, extranet, and intranet
Products applications.
Business2 Certificate Management System - issues
and manages digital certificates for extranet
and e-commerce applications.
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.
Business2 Delegated Administrator - provides
customizable self-service administration for
customers and partners to manage their own
user and account information.
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
Business2 Security Services - enables developers
to incorporate standard Internet security
technologies into applications.
Other Process Manager - Enables enterprises to automate
Business2 and modify business processes such as contract
Products 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:
Business2 Process Manager Builder - a visual
design environment for designing business
processes using intuitive feature such as
drag-and-drop functionality and pick lists.
Processes may be stored in Business2's
Directory Server.
Business2 Process Manager Engine - the server-
based engine that hosts processes designed with
PM Builder.
Business2 Process Manager Express - browser-
based user interface to Process Manager business
processes.
Business2 Process Manager Administrator - browser-
based interface for centrally managing Process
Manager business processes.
Compass Server - A profiling server that offers
search, browse and profiling capabilities to
help administrators gather and organize
enterprise resources scattered across intranets
so that users can find and retrieve information
more efficiently.
Media Server - An audio publishing, broadcasting,
and receiving system that enables the creation
and delivery of media-rich information, both
inside and outside the enterprise.
Media server includes four components:
Media Server - play real-time audio feeds,
provide on-demand access to pre-recorded
audio clips, and synchronize audio with
HTML documents, Java applets, and JavaScript
applications.
Media Proxy Server - a transparent intermediary
between Media Player and Media Servers which
provides safe passage through the firewall for
audio connections and operates as a reverse-
proxy outside a firewall.
Media Converter - compresses and converts
different audio formats.
Media Player - a plug-in needed to access audio
files or a live feed from a Media Server.
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
NetMail to access their Business3 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:
WYSIWYG editing
Simple interfaces of creating forms and image maps
Integrated browsing and editing simultaneously
"Check Links" function to fix broken links
Database interaction
Permission setting
Work archive
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:
Serves HTML pages and other media files
Runs CGI scripts and processes server-side
includes
Platform for dynamic web applications:
Business3server Dynamic Pages (ADPs)
Supports Business3server's C and Tcl scripting
and APIs
Supports database connectivity
Allows users to edit content across the network
with Business3press or other authoring tools
Provides C API plug-in that can be used to serve
and rotate web advertisements, as on Business3's
site.
Supports simultaneous connections through multi-
threading and in-memory caching
Supports site administration tasks including
account management, document management
(automatic version control and archiving),
link management, and access control
Web-based server and page administration
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 A software application that provides online chatting
Instant capabilities, directory services for user profiles,
Product1 and personalized news.
Client3 A browser based upon Microsoft's Internet Explorer
Browser which supports common internet services such
as graphics, sound, meta-tags, plug-ins, security,
FTP, HTTP.
Client3 A software application installed on end-user's
Client machines to obtain access to Business3's private
network. Business3 Business communicates with a
host in Virginia through a proprietary protocol.
Client3 A server software that determines if a web page
Caching object should be cached and when it should be
Server 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 of 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 commecting 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 connection the workstation to a communication network (e.g., a data processing network) and a display adapter 84 for connectin 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 Operatin System (OS), the IBM OS/2 operating system, the MAC OS, or UNIX operating system, Those skilled in the art wil appreciated 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. Bemers-Lee, D. Connoly, "RFC 1866: Hypertext Markup Language--2.0" (November 1995); and R. Fielding, H, Frystyk, T. Bemers-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 Information Management team must also manage the information resources of the other management processes--quality management, environment management, and project management. In order to delineate the responsibilities of the Information Management team, it is useful to state those areas that are out of scope. The following are not included: Performance of daily backups--this is handled by the Environment Management team Database administration--this is part of the Architecture team responsibilities Performance tuning of the information repositories--this is handled by Environment Management Repository Management The Information Management team is ultimately responsible for the contents of the repository. They need to have an intimate understanding of the repository structure and the rules that govern how different objects should be stored in the repository. Although most of the input to the repository are entered by designers, the Repository Management team must manage this population process. Rather than taking a policing role on the project, they should work as facilitators--helping the designers do things correctly the first time, thereby maintaining the integrity of the repository. Without strong repository management, the benefits of using a repository quickly diminish. In many situations the Information Management team must make decisions that affect functional areas. To empower the Information Management team, the Application teams should include the Information Management team in relevant design discussions. This facilitates the validation of design outputs. Folder Management Folders (or directories) can be very useful in gaining control over the overwhelming amount of information produced on a large project. Their utility greatly increases if they are managed appropriately. This management is based on easy-to-follow, easy-to-enforce standards. Object Management The responsibilities involved with object management are very similar to those involved with repository management. However, in order to facilitate and promote reuse, it is recommended to have a librarian whose responsibilities include: Reviewing designs Packaging classes and components for reuse Managing maintenance and upgrades of common components (a strong relationship with Configuration Management team is required) Media Content Management The methods of handling media content are somewhat different from those surrounding more traditional development content such as code or documentation, for this reason, a role should be defined that is responsible for the management of all media content. Quality Management The Quality team is responsible for defining and implementing the Quality Management Approach, which means defining what Quality means for the Program Leadership, and then implementing the procedures, standards, and tools required to ensure the delivery of a quality program. The Quality Management Approach addresses concepts such as expectation management, quality verification, process management, metrics, and continuous improvement. Since quality is the result of the interaction of many teams working on multiple processes, the Quality team is responsible for ensuring effective cooperation between teams and good integration of the development processes. The Quality team must therefore forge strong links with all the other project teams. It is important to note that the Quality team is not only responsible for ensuring the quality of the system building process. The Quality team is also directly involved in ensuring the quality of the other IDEA management processes. Program & Project Management The Program Management team is responsible for delivering business capability. In this respect, it is responsible for the System Building and other management teams. In addition, other management responsibilities that do not have a specific team or role defined within IDEA also belong to the Program Management team. These include: Contingency Management Financial Management Issue Management (decisions to be made regarding the development of the business capability, not to be confused with problem management) Program Performance Reporting Resource Management Risk Management Vendor Management The Project Management team is responsible for producing a deliverable or set of deliverables. As such, it is responsible for: Planning and control of delivery Milestones and schedule Resource consumption Risk and quality (at deliverable level) Configuration Management The Configuration Management team is responsible for defining the approach the program takes to deal with scope, change control, version control, and migration control, and for putting in place the policies, processes, and procedures required to implement this approach. In other words, the team is responsible for maintaining the integrity of software and critical documents as they evolve through the delivery life cycle from analysis through deployment. Release Management Delivering a system on a release-based approach means delivering the system in a series of consecutive releases, increasing or refining functionality progressively. Some of the main drivers to such an approach include: To release business benefits early To mitigate impact on the organization T | ||||||
