Software Engineering Aspects of Web Development
Cathy Huttenhoff
Software Engineering
University of Wisconsin: Platteville
Abstract
Initially there was no need for web development because there was no such thing as the internet. But as this was created, the need for a new form of development grew. This form of development corresponded to the new form of programming. In order for a program to be written using software engineering, it must follow a software development process. There are several processes to choose from and each is different. The processes used to create web pages and web applications are similar to the ones that were originally used to develop other programs but have crucial differences including software security, load issues and security.
Background
The internet grew to popularity in the 1990’s, well after software engineering was developed. But with this new form of computer use, software engineering had to adapt and adjust to the new demands from programmers and users. Some of the new demands that had to be addressed were concurrency, unpredictable load, security risks, and user demands for multi-modal interfaces. [1] These demands force the developer to change the way they start and design the system.
Concurrency
The first new demand that needed to be addressed was concurrency. Originally a developer only had to plan for one user of a system at a time. This meant that a one or two second lag was hardly noticeable and wasn't that important, except when the system has 1000 people all trying to do the same thing at the same time, that lag can quickly multiply and become extremely noticeable. Because of increase in lag time, the system must be developed so that its tasks complete quickly.
One step taken to decrease lag time is to store some information on the user's computer. With the information stored on the user’s computer, the host doesn’t have to look it up each time it needs it. By not having to look the information up each time, is saves on lag time. The host system also doesn't have to remember as much about each user currently logged in. This saves the memory on the server side and allows the server system to run faster.
Unpredictable load
Another new issue was the unpredictable load. While today only 100 users might visit the website, tomorrow over 100,000 might use it. The demand on the system is unpredictable and can change even more frequently. As the information changes on the site, or as an application becomes more popular the demand can go up, but there is no guarantee that it will go up, or at any sort of reliable rate. Because of this unpredictability, the system must be designed to handle load of all sizes, including large and small.
One example of something that could go wrong with different loads would be the visitor count. Some system s remember the number of visitors or users of their site. This can be a problem if they get too many users. If the number used to remember the number of visitors is a signed 32-bit integer, and the system gets to many visitors the integer could carry over and be interpreted as a negative number. Another system might remember the number of visitors as an unsigned 64-bit integer; in this case the same number of visitors would not overload the integer. This is just one example of a problem with unpredictable loads.
Another real life example was the Twitpocalypse. The website Twitter is a popular site that, “Allows users to post text updates via SMS, instant messaging, email, Twitter’s website and third party applications. Users have their own profile page that displays their latest updates.”[3] Twitter gave each tweet, a user’s update, a unique number. The creators used a signed integer for the limit and when the website began to get heavily used it became apparent that they would reach that limit. When the system reached the limit it would cause it to crash, hence it was name the Twitpocalypse. The developers spent hours organizing and working on this problem for days in order to fix it so that the system wouldn’t crash.[3] They succeeded and their users remained happy.
Security
Security risks became a huge concern with the arrival of the internet. Before the internet, someone had to actually have access to the physical computer in order to get information from the machine or to put new programs or information on the machine.
With the arrival of the internet, hackers and other people with malicious intent had a much easier time accessing machines. They could now develop programs that do what they want and get them downloaded onto users’ machines. A user will download something they think is safe and actually download a malicious program such as spyware, a virus, or a worm. Most programs have some sort of security, and the larger the program, the more security that is necessary.
One example of a large program with a lot of security is Microsoft Windows. Microsoft has many versions of their operating system, and each has a lot of security. As new malicious programs and virus are developed Microsoft releases new patches to beef up their security to help keep their user's information and computers safe. This makes it more difficult for hackers to break through the security.
An example of online security would be used for any type of financial transaction. A user doesn't want their credit card number or other information stolen by a third party. This means that the host of the transaction must make sure that it is secure and safe for the user. One way to keep this information safe is to encrypt it.
A third demand was the multi-modal interface. “Multimodal interfaces process two or more combined user input modes, such asspeech, pen, touch, manual gestures, and gaze, in a coordinated manner with multimedia system output.”[4] This demand has gotten even bigger than it originally was when the internet first came out. As technology grows, it is also becoming easier for more people acquire it. People that obtain new technology want to be able to do everything on it. As people learn that there are touch screens, they want to be able to do everything with a touch screen. But some people might only have a regular monitor, in which case when a developer is designing a website they must accommodate both the touch screen interface and a mouse/keyboard interface.
More and more people are gettingmobile devices such as cell phones and Blackberries, and as such the demand for internet on these devices increases. A web page or application that is meant to be viewed on a large computer monitor and have links clicked on by a mouse doesn't work very well on a tiny screen where the user only has an up and a down button. This means that as a software engineer develops the software for these web pages and applications they must develop the program so that it will easily work with both of these types of interfaces and any other interfaces the user requests.
Software Engineering Process
One example of a software engineering process can be found in figure one below. This method is known as the waterfall process.
This process has similar steps to other software engineering processes, but is unique in the fact that each step has to wait until the preceding step has been completed before it can be started.
During these steps in the development process, the user can change their mind. It takes a lot of time and money to use the waterfall process on large projects where the requirements change because each time a requirement changes, the entire process must start over. That is why on large projects most developers prefer to use a more dynamic software engineering process.
Figure 1: Waterfall Process [2]
One such dynamic software engineering process is the agile process. In this process you continue to work on the preceding step while starting the next step. This means if a problem is discovered during the design step, the developers can just change the relevant requirement and continue with the process. In the waterfall process they would have had to start over. While a problem found during the design phase isn’t that big of a deal, it’s a much bigger deal if the problem is found during the verification stage. With the agile process, the developers can just change the relevant requirements, design and implementation without having to go completely back to the requirements stage. Since the project doesn’t have to start over every time an error is discovered, it saves money and time in the long run.
When working on a web page or application the requirements change often, especially requirements relating to the user interface. Every customer wants their web page or application to be user-friendly and they also want it to look the best so that it will be memorable. The more user-friendly a webpage the more likely a user is to have a positive experience. And the more memorable the page is, the more like a user is to remember it and return to it.
A software engineer that begins to develop a web page or application must start by choosing the right development process for the project. They must also choose the correct web development environment. For a project that is small, the waterfall method might be the one to use, because on a small project there will be fewer requirements and they will be less likely to change. But for a larger project, the agile method would be the correct one, because there will be many requirements and they are likely to change, some of them several times.
For the small project it might be easiest to make a small Java applet that could be put into a web page. An example a small project could be a BMI calculator on a health website. But for a large project, it might be necessary to have several web pages, or a whole website, with a connected database. It is extremely important that the software developers choose the correct process and environment for their project. An example of a large website that is getting larger would be Facebook. It started out with a home page, search page, and a user page that each user could put their personal information on. Now it has several different styles of pages and many features are customizable. There are several different site pages as well as customizable user pages, and applications that users can add. [5]
Database Security
A huge security concern that software and web developers need to be concerned with is their databases. They must plan to restrict access to the database so that only actual users can gain access, and only to the information they have the rights to access. A bank web site doesn't want to allow just anyone to access to anyone's account. They want to make sure that each user only has access to their own account information. The website not only needs to keep track of each user currently accessing the site, but it also needs to keep them separate so they only have access to their information. It needs to do this fast and reliably no matter what size of a load it has.
A huge concern for developers is the interface. Especially on a web page, the majority of the requirements for the project will be in the interface. A few websites that rely heavily on the user interface are Amazon.com and Ebay.com. These sites sell products to users. The site must be easy to use and help the user with whatever they want to do and fast. The search has to be readily accessible because the majority of users will want to search for a product. But you don't want to limit them to only searching, you also want them to browse the site and see all that you have to offer.
Users like a friendly interface that draws them in and is helpful. They want to be able to find what they want fast, and they don't want to click on more things than necessary. A good developer will plan out the site so that it is optimized for the user. One way to find out how friendly a website is perceived is to have it evaluated by normal users. Have them go through the site, and make sure the locations of everything make sense to them.
One way to make a website interface friendly is to be consistent. If two web pages have site navigation tool bars, make sure that the tool bars are the same, and that they are in the same location on both pages. At the Amazon.com website, the search bar is in the same spot on every page. No matter what page you are on at Amazon.com, you will always be able to find the search bar. This helps to make the website seem familiar, and that helps it to keep this friendly atmosphere.
Another way to make a website friendly is to make sure that parts of the website are kept in logical locations. This is also where the developers will do research on similar websites. If the majority of websites that sell things, have a tab labeled account where the user can view past sales, it would be unwise for the developers to put past sales under the new items tab.
By keeping the user comfortable by having a friendly website, the website host will get more business. A user that is comfortable with a friendly website is more likely to return to the website and they are more likely to tell their friends about the site. This will in turn make the website host happy. And a happy website host is more likely to buy software from the same place.
Web Based Software Development Process
The software engineering process used for web development is similar to general software development, but has some unique differences. These differences can be seen in each step of the software development process. The similarities between the two development processes can also be seen in each step.
Requirements
Requirements for a web page or application differ from a generic program. On a web page or application the entire system must be developed from the beginning to handle large loads quickly. A generic program can run on one machine and allow one user to access it at a time. A web page or application can have several hundred to several thousand users at any time and needs to be able to offer each and every user fast service. Because the website host will want a speedy website they will create a lot of requirements for a speedy system.
There will also be more requirements for the user interface since that’s what the website host cares about the most. The user will want the web page to be up to date with what is popular now on the internet. This means that not only will the requirements be extremely specific about what they want, but they will also change frequently. A simple example of this would be, the customer wanting the navigation bar to be horizontal along the top, or vertical down the side. The customer may change their mind several times on this requirement, and the software engineers must be able to adapt themselves and the process that they picked for this project quickly.
Design
When the programmer is designing the system, they must take into consideration the efficiency of what they are designing. While it is a good software engineering principle to use low coupling when designing a system, it is especially important to use low coupling when designing a web based system, such as a web page or application.
It’s better for a website if the different pages don’t have to communicate.The host computer also shouldn’t have to store many session variables. The system will be much more efficient if these variables are stored as cookies on the user’s computer instead. It would be bad procedure to store everything about a user in the session variables. This way it doesn't waste time storing all the information about a user in session variables that take up space, and time. The user will notice the lag when they log in if it takes too much time to store everything in variables on the website host system.
This is why it is essential for the programmer to develop the system to work with low coupling. The place to lay the ground work and make sure the system will have low coupling is in the design phase. When the developer begins to design the system and make their diagrams, they can make sure the different parts of the system are independent and have low coupling.
Implementation
The way a software engineer goes about the implementation stage of the software development process is different for web pages and applications than for generic programs. A developer for a generic program can get the basic outline of their code done by transforming the diagrams from the design phase and adding code to the methods created.