Application Development

Chapter 3 . Defining the Project Requirements

Before building the application, the architect in your development team needs to consider the project requirements. With Panther, you can build two-tier or three-tier applications and deploy those applications in a variety of environments. You need to choose the best environment and structure for each application.

Following are questions you should consider.

What Is the Application Architecture—Two-tier or Three-tier?

Two-tier applications are useful for smaller-scale applications. Client workstations contain the presentation and much of the business logic of the application; they have a direct connection to a database server to provide them with data.

The disadvantages of two-tier applications are:

Three-tier applications address these problems by having three levels: presentation, application logic, and data. Client workstations contain the presentation logic and focus on user interaction. They send service requests to the application server. The application server maintains the connection to the database server and is able to process service requests from multiple clients.

Another advantage of three-tier applications is that the server components can be replicated to run on multiple machines simultaneously. This distributes the client load across multiple machines.

For more discussion of application architecture, refer to Chapter 4, "Defining Application Architecture."

For Three-tier Applications, Which Middleware Meets Your Requirements?

JetNet and Oracle Tuxedo are TP monitor systems using messages and buffers to pass information to and from clients and application servers. You create client screens and service components in the editor, write the services in C or JPL, and install the services in the JIF. The application server's bulletin board advertises which services are available. JetNet and Oracle Tuxedo are available on UNIX and Windows systems.

MTS is a component-based middleware using components that conform to Microsoft's COM (Component Object Model) specifications. A COM component can support multiple interfaces; each interface is a collection of methods. When you create a COM component in Panther, you define its methods, the parameters expected by those methods, and its properties. In addition, Panther assigns the component a CLSID, a globally unique identifier, and creates a Panther service component which is then installed on the application server. MTS is available on Windows systems.

Panther for IBM WebSphere can be used to build Enterprise JavaBeans which can be deployed on WebSphere Application Server. Enterprise JavaBeans are server-side components written in Java that perform the business logic of an application. Like COM components, Enterprise JavaBeans have a defined public interface of methods and properties that application clients can use to interact with the components. Being written in Java, they are platform independent.

Will the Application Be Deployed on the Web?

Since the web was originally a text-based delivery system, HTML only dealt with a few widget types and did not contain mechanisms for positioning those widgets. Screens designed in a GUI environment, such as Windows, will appear slightly different on the web.

The application processing also needs to be handled differently since web applications, by default, are stateless. For its web applications, Panther provides mechanisms for saving application state information for each user of a web application.

What Is the Best Database Schema for this Application?

Database diagrams illustrate the structure of the database tables, the primary key columns for each table, and the relationships and foreign key relationships between database tables. By examining the diagram, you can see if the database is normalized—whether the data is only entered once—in the database tables.

The following diagram illustrates a portion of the vbizplus database that was used as a basis for some sample reports.

Is a Database Based on that Schema Currently Available?

The development steps outlined in this manual suggest having a database available when you start development. This database is used to populate the repository with repository entries corresponding to the database tables and widgets on each entry corresponding to the database columns.

How Will the Repository Be Used During Application Development?

If a database is used to populate the repository, the database tables and columns are represented in the repository. In addition, you can store screen templates and widget templates in the repository and use those templates throughout the application.

Objects copied from the repository, manually or by using the wizards, inherit the properties of the parent object in the repository. If you change the properties of the parent object, the properties of the child objects can get updated automatically.

How Will the Database Be Accessed?

Panther contains the following software components for database access:

You can write your own SQL statements, call stored procedures in your database, or have the transaction manager generate SQL statements. In two-tier applications, the client workstation has a direct connection to the database. In three-tier and web applications, the application server maintains the database connections.

Although database access via the transaction manager is usually easiest, you can use any combination in your application. For example, you might allow the transaction manager to handle some access itself, but supply specific SQL statements (for example, stored procedure or RPC calls) for some operations.

If you are upgrading a two-tier application to be a three-tier or a web application, you need to be aware of how database transactions differ in those environments. Since clients running the application do not have a direct database connection, database transactions must be rolled back or committed as part of the service request in three-tier applications or as part of the screen submission processing in web applications.

How Will Service Components Be Used in Your Application?

You can use components:

One way to organize components in your application is to have one group of components that correspond to database tables and another group of components that implement the business logic. A component in the business logic group could access several database components as it completes a task.

What Are the Hardware Platforms for the Application Clients?

If the client screens run on only one hardware platform, you know that the screen will look the same during development and deployment (provided you use that platform during development).

If the application's screens are to run on multiple platforms, consider which platform is the hardest to please. Usually, it is character mode, followed by Windows, then followed by Motif.

How Computer Literate Is the Application Audience?

If the target audience is the general population, the user interface must be as simple as possible. If the target audience is more knowledgeable, you can design a more powerful and intricate system.

In What Language Will the Programming Code Be Written?

Within the Panther framework, you can code your application in a variety of languages. Panther has its own scripting language, JPL, which can be used for runtime processing. You can also include your own C, C++, or Java code or, for web applications, JavaScript and VBScript functions. You can use any of these languages as you see fit.

What Method Will Be Used for Handling Errors?

Errors that occur remotely may have no meaning to a user, but in most cases, you want to determine which errors should be posted or broadcast from server to client, and what information should be displayed that will be most useful to a user of your application.

During the development process, you will also need a process for logging and updating application problems.

What Type of Network Access Is Available?

The size and speed of the network available when the application is deployed affects how you divide the work in the different tiers.

It is recommended that you devise a prototype going across all tiers of the application to test the network setup and estimate network traffic.

How Will the Work Be Distributed Among the Development Team?

The following development tasks can be assigned to people on the development team: