by Andres Baravalle
In Web development, as in any other software development, projects can be divided into different phases - typically identified as:
During the planning phase the project requirements are collected (or extracted) from the relevant sources and formalised.
Interviews, focus groups and questionnaires can all be used to extract the software requirements.
In the designing phase, developers work at defining the structure of the system and the relations between the different sub-elements.
This includes formalising the requirements and modeling the application (Case Diagrams, User Stories etc).
Please note that designing (in this context) is about "application design" not "interface design".
Once the design is sufficiently clear, the team can proceed to the coding phase.
In this phase, we are going from the high-level description of the design phase, to actually doing the ‘manual’ work. In web applications development, it may require one or more of the following tasks: (X)HTML coding, client-side scripting, Web design or server-side programming.
The testing phase is used to analyse the result of the implementation in terms of correctness, completeness, security, and quality and to compare it to the initial requirements.
If a Web application is correct, complete, secure and of good quality but doesn’t fulfill the initial requirements, you may have a number of issues to discuss, either with your customer or with your project manager.
The maintenance phase is the final phase in a project, and follows the actual delivery of the project. The maintenance phase deals with issues that have been raised after the delivery: enhancing the software, optimising it and remedying its defects.
We have not yet said anything about how these phases are linked. Different approaches are possible, but the more common ones are known as the waterfall approach and the iterative (or agile) approach.
At first, the structure of the system is definitively at a high level, and then components are iteratively developed and refined. Iterations are typically short, with 1 to 4 weeks for a complete cycle.
This has the advantage of allowing testing at an early stage but may also imply that the structure of the system will be defined only in later stages.
In the following slides we will review two common agile software development methodologies: Extreme Programming and Scrum.
Extreme Programming (XP) is an agile software engineering methodology. Extreme Programming was developed in the early 1990s, by Kent Beck, Ward Cunningham and Ron Jeffries, as a way to escape from the disadvantages of the waterfall model.
XP advocates:
Rule |
Description |
---|---|
Pair Programming |
Developers should work in couples, a driver (who types) and a navigator (who thinks). This typically leads to a better code, because there are two sets of eyes watching the code, while improving team cohesion and moral. The two developers should switch roles, at the very least once per day. |
Planning Game |
Includes release planning (initial and rough plan) and iteration planning (what to do next). There is no detailed, long-term plan in XP, and the planning game requires the involvement of the customer. |
Test Driven Development |
Define the tests before you start the implementation. |
Whole team |
Everyone responsible for the project should sit together regularly, including a representative for the customer. |
Rule |
Implementation in a Web project |
---|---|
Pair Programming |
You need two persons working at the same computer at the same time. You shouldn't pair a Web designer with a Web developer, for example, unless they can work in both roles. |
Planning Game |
You can try a lighter version of the planning game by asking your customer to prioritise the stories that you develop. |
Test Driven Development |
Web application testing can be quite different from other types of testing. In most cases, the developers will have to define testing procedures (e.g. passing the W3C validation and passing a usability test). |
Whole team |
Involve the customer in all the phases, to make sure that he or she is comfortable with your choices. Instead of showing seven different designs to the customer, define it together. |
Rule |
Description |
---|---|
Continuous Integration |
The developed components need to be continuously integrated. |
Design Improvement |
Improve step-by-step. You can improve the design after every iteration, when new components are integrated and built. |
Small Releases |
Release early, release often. |
Rule |
Implementation in a Web project |
---|---|
Continuous Integration |
Your web application should always be ready for demo. You shouldn’t have any non-included graphics, or orphaned pages waiting to be linked. |
Design Improvement |
The website is continuously refined when new components are available and integrated. |
Small Releases |
The website needs to be in a navigable form at the end of every iteration. |
Rule |
Description |
---|---|
Coding Standards |
Ensures that everyone can understand immediately the different parts of the project, and can immediately integrate new code. |
Collective Code Ownership |
Everybody is allowed to change everything in the project. |
Simple Design |
The design should be as simple as possible. |
System Metaphor |
Use an organising metaphor, a ‘shared story’ of how the system works. |
Rule |
Implementation in a Web project |
---|---|
Coding Standards |
Use a consistent style for coding and design. If you write your JavaScript, HTML or PHP without spaces and tabulations (or inconsistent spaces and tabulations), it will be harder to modify for others. |
Collective Code Ownership |
Independently of the role in the project, everyone (Web developer, Web designer, project manager, etc.) can change anything in the implementation. |
Simple Design |
Don’t write unnecessarily complex code. Complexity is not given by length: allow more lines of code when it increases its understandability. |
System Metaphor |
Use a metaphor to describe your Web application. If it’s an e-commerce website, compare it to a shop. If it’s an online magazine, compare it to a newspaper. Find some metaphor for every project. |
Rule |
Description |
---|---|
Sustainable Pace |
Programmers should not be over-stressed. |
This applies to every component of the development team. How do you do it?
User stories are one or more short sentences in the everyday or business language of the end user of a system that capture what a user does or needs to do as part of his or her job function" (Wikipedia, 2013). User stories are used in agyle software development "as the basis for defining the functions a business system must provide, and to facilitate requirements management".
They are normally written using the formula:
As an X I would like to do Y so that I can Z.
Example:
“As a student, I would like to find my timetable so that I can attend my lessons”
Scrum is another agile software development methodology, focusing on continuous and incremental innovation.
As XP, it relies on self-organizing, cross-functional team with no leader.
In the next slides we are going to cover its main aspects and peculiarities: core roles, sprints, meetings and artifacts.
Scrum teams are based on three core roles:
A sprint is an iteration with a fixed duration. Each sprint is preceded by a planning meeting and is the basic unit of development in Scrum.
Complement this week's lecture with further research and readings on the topics covered.
These are some pointers to start:
Pham, A.,
Pham, Phuong-Van (2012). Scrum in Action:
Agile Software
Project
Management and Development.
Wallace, D., Ragget, I. and Aufgang, J. (2002) Extreme Programming for the Web.
Wells, D. (2009). Extreme Programming:
A gentle introduction. Available from http://www.extremeprogramming.org/
Wikipedia (2013). Extreme Programming. Available from http://en.wikipedia.org/wiki/Extreme_programming
Wikipedia (2013). User story. Available from http://en.wikipedia.org/wiki/User_story
Wikipedia (2013). Scrum. Available from http://en.wikipedia.org/wiki/Scrum_(software_development)
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License