Hi 5: Part 1 - The First Phase
(Page 2 of 3 )
Planning a Model
The first phase in this iterative process is planning the model. Documentation is important, but most of the documentation should be based on functionality, maintainability and structure.
A functional website should place most of its workload off the client (i.e. the browser). If using a scripting language (i.e. PHP, ASP), functions should be thought out such that the server/s are not tied up unnecessarily.
A maintainable website is one that can be easily updated in a way that it does not require drastic changes to the current model. For example, if we decided to change the database that drives the website, or change a banner advertisement for example.
As you know there are two major types of website structure. These two types are two-tier and three-tier structures. For those who are unsure what these structures are, the ideas are simple.
Functionality
Functionality is without a doubt the most overlooked section on most websites using a database today. Some websites provide a cute looking user interface to impress the user, but in the backend it is like being in the middle of a forest not being able to sense a direction. Successful websites are often database-centric (i.e. the heart of a website is the database). For this reason the use of modeling your database first would be appropriate.
Database Design
When developing a database for your site, you must consider a few things first. You must consider the security of data, accessing data and the structure of your database.
Security of Data
There are three levels of security to consider. There is system level security, database level security and client/server level security.
Firstly let us consider system level security. This is the level of authentication that allows users to have access to the system. The team of developers must sit down and discuss the roles of users and which permissions the role of user has on the system. This level is focused at the front-end of the system.
Secondly, the database security level is much the same as system level in the way that a user is given a role and that the role may or may restrict them access. This level is focused on the back-end of the system, such that in the database each table has permissions that allow difference access conditions depending on the user’s role.
Thirdly, the consideration of client/server security level is important for secure communication. The remedy is encryption. SSL/TLS is used to make it harder to eavesdrop on the traffic between the client and server. Oracle’s Secure Network Services provides end-to-end data encryption.
New technologies are being developed as we speak so continually research into the products that are out there to protect your website.
Accessing data
The issue of accessing data is critical for your website performance. A user will not like to wait 30 seconds for a query to be transmitted. So SQL statements must be produced in such a way that they do not overwhelm the DBMS. Query may be tested on a front-end SQL software package such as SQL*Plus to test whether the SQL statements are efficient. This will be studied more in the algorithmics phase.
Database Structure
The team must sit down and workout the more efficient database structure. They must look at what data needs to be stored, and how it is to be stored to eliminate data redundancy and provide swift data manipulation. For best results graphically design a database and discuss each member’s model. Once decided, the model can be easily created. Each strategy is different like every problem is different. Take your time with the database design and make should that it can be easily altered if the website specifications change.
System Design
The answer to developing functional websites is developing a flowchart to see the overall system functionality. Not only will you see how the website works but you may find parts of the site that will require extra attention.
Maintainability
The point of considering maintainability is that if you wish to make a minor adjustment to it should be done quite easily. At this stage the team should be discussing the future of the website before the website is built.
“Far out!” you may yell out, but the fact of the matter is that you will need to make sure that the website can be altered if the website specifications change. Use technology that has flexibility and scalability.
The website must be structured well. This means that sections of the website should be divided and place in their own directory. The website’s hierarchy should be like a tree diagram, where the shared elements (i.e. an picture used for action like email that may be used on many pages) of the website are in a common directory a the top of the tree and the private elements (i.e. a picture of yours truly that will only be on the about me page) in a private directory.
The site structure is up to you, but the way it is organized may be beneficial for the easy maintenance of the website. Be sure to document your structure for later iterations.
Structuring
When structuring a website the team must discuss how the web site is to be structured. Whether a two tier or three tier (or even n-tier) model deem more appropriate.
Two tier vs. Three Tier
Two Tier
The two-tier website structure is based on a client/server relationship. The client (i.e. the front-end) provides a user interface, data manipulation and query formulation. On the other side the server contains a DBMS (i.e. Database management system), manages transactions, optimizes queries and controls concurrency.
Notice that there is a lot of work on the client side, but not as much as the one tier model. What you should generally want is the client to do as little as possible. The client should gather data input from the user and display information to the user. The benefits of the two tier model are that the client does not have to be as powerful (i.e. the term for this powerful client is known as a fat client), traffic over the network is cut down, the data integrity (i.e. the validity of data) because processes are perform centrally on a database server and that the use of stored procedures implies that business rules are done on the server. This model is great for small websites but it will not be able to handle a “heavy traffic” website. So as the internet becomes more and more popular, the more tiers are needed to handle requests.
Three Tier
To overcome this needless client side scripting, apart from using XML, which has is security issues, we need to develop a system that will allow a server to handle the processes and the database management system. One way of doing this is using a “middle man” approach. This is formally known as middleware. Middleware is software that provides an API (i.e. Application Programming Interface) on both ends of the system, which allow communication between the client and server.
This middleware has now taken the workload off both the client and server side. The application processes are now handled in the middle tier. This middleware is used amongst this three tier model to act as a diuretic for the client, even more so then the two tier model. Added modularity makes it easier to modify or replace one tier without affecting the other tiers. This philosophy is similar to that of the object orientation model in programming.
The importance of the three tier model is that it’s the workload is balanced and hence no server is overwhelmed. A word of advice is that some technologies are incompatible with other technologies, so the team must research this before implementing the strategy.
Two issues that one must consider in this stage is “cost/benefit” and “website traffic”. You really need to combine these two terms together when considering an appropriate model. If you are low in finance, the “cost/benefit” issues is greatest in concern.
The three tier model has a low long term cost, but a very high short terms cost. The cost may be shorten somewhat by using a open source web server as the application server (i.e. the third tier) such as the apache web server and using MySQL as your DBMS on the database server(i.e. the second tier). The problem is scalability and flexibility so the question arise “What are you willing the pay?”
The two tier model is fine for a “low trafficked” website. The short term cost is low and if your site becomes successful you should definitely consider the three tier model then. This therefore creates a long term cost, so the team must discuss whether or not to jump straight into using the three tier model. This choice is an extremely important one, but you may decide to change the system in the next iteration.
Next: Conclusion >>
More Development Cycles Articles
More By Ben Shepherd