This article is intended as a reference for intermediate- and professional-level web application developers.
Formality
How formal the project is affects virtually every activity throughout the life of the project. More formality means more overhead. But larger projects require more planning and attention to detail. (McConnell 2004:657)
A personal home page might require less formality than, for example, a stock trading web site. At the formal end of the spectrum security, software bugs, documentation, etc. are major issues.
Planning and Management
Planning and management also depend on the formality of the project. On informal projects, organizations can plan the project incrementally. On more formal projects, organizations might need to do at least basic, up-front project planning. On informal projects, testing can be planned as-needed, but formal projects should do at least some of this planning up front. QA planning can be done as-needed in either case. And while change control can be informal on informal projects, it should be formal on formal projects.
Upstream Activities
The results of shortchanging upstream activities are predictable. Organizations that skimp on them will have to eventually do them anyway, at 10 to 100 times the original cost. (McConnell 1996:45).
Problem Definition
You first must understand what problem your web application will solve. Know who your users and stakeholders are. Then you must understand what their needs and challenges are. Understand the root cause of the problem, as well as any constraints imposed on the solution. Once you understand who your users are and what their needs are, you can come up with a list of features that satisfy those needs.
Requirements Definition
- requirement
- A software capability needed by the user to solve a problem to achieve an objective
- A software capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documentation
(Leffingwell & Widrig 2005:15)
Depending on the formality of the project, requirements specifications can be either informal or semi-formal. On more formal projects, requirements should also be reviewed as-needed.
Architectural Description
- Architectural description
- An architectural description (AD) is a set of products that documents an architecture in a way its stakeholders can understand and demonstrates that the architecture has met their concerns. (Rozanski & Woods 2005:175)
On more formal projects with more up-front planning, an architectural description can be beneficial. Also, this might be the place to specify if you'll reuse any pre-built components, or build any components for future reuse.
Technologies
Lifecycle Model
The more mission critical a project is the more formal the lifecycle should be. Some lifecycle models are:
- Agile (Extreme Programming, Scrum, Timebox development, etc.)
- Evolutionary prototyping
- Staged delivery
- Evolutionary delivery
- Spiral development
Design
On informal projects, design and coding can be combined. But on more formal projects, a separate architectural description, informal detailed designs and as-needed design reviews can be beneficial.
Construction
Programmers can program individually, or in pairs (as in Extreme Programming). And depending on criticality, the project might need an informal code check-in procedure and as-needed code reviews. (McConnell 1996:48)
Testing
Typically, developers test their own code. This is especially true in the case of Test-driven development. While informal projects might or might not require very little testing by a separate testing group, formal projects should be thoroughly tested. Some of the types of tests for testing the application, aside from developer testing, include:
- Security
- Performance, Load, and Stress
Also, since web application clients can be a variety of browsers, operating systems, displays and even different devices in the case of mobile phones and handhelds, and that users will vary greatly in preferences and accessibility needs, many tests for the presentation of the application exist. Here are some:
- Compatibility tests:
- Browser
- Operating system
- Different display resolutions
- Browsing impediments (e.g. CSS failure, no images, no JavaScript, etc.)
- HTML/CSS validation
- Accessibility
- Usability
- Performance (download speed)
Unit and GUI test automation
Many types of tests are automatable. At the unit level, one of the xUnit packages can be a helpful tool. Or an organization can create its own unit testing framework. At the GUI level, Watir is useful.
Deployment
Deployment describes what software runs on which hardware. The act of deployment involves installing the necessary software on the hardware. Again, depending on the formality of the project, the deployment procedure can be either formal or informal.
Tools
In the case of ASP.NET, a developer can use Microsoft Visual Studio to write code. But, as with most other programming languages, he can also use a text editor. Notepad++ is an example.
Other tools include various browsers, FTP clients, etc.
Frameworks and Reuse
Practicing code reuse can greatly improve both productivity and time to market (McConnell 1996:537). Reusing externally developed components can allow an organization to reap the above benefits, while potentially saving money.
However, there are many reasons not to. For smaller components, it might be just as easy to develop your own components as it would be to learn new APIs. Also, if a component is essential to the business, an organization might want to control its development.
Some common frameworks are:
Building Reusable Components
Evidence suggests that smaller, more specific components are better targets for reuse than larger, more generalized ones. (McConnell 1996:533) And it pays to question whether or not reuse will be worthwhile in the end. For example, if you only plan to build one photo sharing web site, the resources put into making your components reusable might not pay off. But if you plan to build several photo sharing web sites, reuse is almost necessary. (McConnell 1996:492)
Search Engine Optimization
In the case of a public web site, as opposed to an Intranet or otherwise private site, it is usually very beneficial to have high search engine rankings.
References
McConnell, Steve (June 2004). Code Complete, Second Edition. Microsoft Press. p. 960. ISBN 0735619670.
McConnell, Steve (July 2, 1996). Rapid Development. Microsoft Press. p. 680. ISBN 1556159005.
Rozanski, Nick (April 20, 2005). Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley Professional. p. 576. ISBN 0321112296. {{cite book}}
: Unknown parameter |coauthors=
ignored (|author=
suggested) (help)
Leffingwell, Dean (May 16, 2003). Managing Software Requirements: A Use Case Approach, Second Edition. Addison-Wesley Professional. p. 544. ISBN 032112247X. {{cite book}}
: Unknown parameter |coauthors=
ignored (|author=
suggested) (help)