A Rough Guide to the Software Design Process

The process of building a website involves a few steps that may vary from project to project, but generally it is the same for most projects.

The first step is to establish the customer needs, on which you design a database. These needs are later transcribed in a spoken agreement or preferably in a document. This document should contain a description of the desired functionality of the software as well as the definition of the database tables with explanations for every column. Once the customer agrees on this document and maybe makes a few changes, you can start the actual process of building the website.

If you are your own customer this is not the case, otherwise it is my strong opinion that you should do this. For one of my first projects, I skipped the document part and it led to a total fiasco. The customer wanted more and more and did not want to pay more for it, but if the document had existed he would have had no choice.

The next step is to create and show a few layouts to the customer. This is the designer’s job. He or she will work with the customer and come up with a design that the customer likes. After the customer finalizes a design, the actual building of the website begins. When the project is finished, the customer has a testing period in which a few modifications are made or some bugs cleared, and it’s done.

This is beautiful in theory, but in real life, programmers speak languages like PHP and SQL and designers speak in HTML and CSS, and they often tend to have a few differences.

Working in Teams: Layers and Separation of Concerns

When human interactions might fail, it’s preferable to separate the work as much as possible. Multi-tier software architecture should do the job. The most commonly used architecture is one with three tiers or layers. These are:

  • Presentation Logic Layer
  • Business Logic Layer
  • Data Access Layer

Separating these layers in project development cycles allows you to achieve rapid application development with project maintainability in mind.

In the three-tier architecture, the interaction between layers is shown in the following diagram:

Working in Teams: Layers and Separation of Concerns

Starting from the bottom, at the Data Access Layer we find both the data and the ways to extract the data that we want to show to the user. The Data Access Layer may contain:

  • A database (MySQL, PostgreSQL, MSSQL, and so on) and the SQL language used to extract data from the database
  • Files that store data and PHP functions (or other languages) that parse the files
  • Data acquisition software (for example, a thermometer on the parallel port)

Now that we’ve extracted the data, we need to manipulate it in order to get the results we need to display. Data manipulation and validation is done at the Business Logic Layer, which may contain:

  • Data validation based on the business plan (for example, list only in-stock items)
  • Data manipulation according to the business plan (for example, discounts, stock liquidations, and so on)
  • Functions and formulas to calculate things like shipping expenses, and so on.

The Presentation Logic Layer is where the web page layout—how data from the Business Logic Layer is arranged in the web page—is defined. This is done using:

  • Web page templates
  • Text/CSS styles
  • Images, banners, and menu styles

Without a templating engine at the Presentation Logic Layer, we find HTML and PHP creating the layout with pure HTML and generating HTML code from PHP. In this case, we cannot divide the Presentation Logic and Business Logic layers into two separate layers, making the work of designers and programmers very difficult for complex software projects. That’s where Smarty comes in.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.15.10.137