
Functionality is part of the design of a website, it's describes what the website does, rather than how it appears. It is not the technology that makes it work, it is the result of applying that technology to enhance the user experience.
During the design process, functionality is often implied by showing buttons, menus, video players, link, etc. on a visual design (a screenshot or a print-out). However, it's not until the Prototyping stage that you can tell if it works in conjunction with the visual design.
Prototyping a website allows you to take the visual design and create a functional model to show how the key features of the website work.
This brings the visual design to life and allows you to make changes to the design before the coding starts. This is an important stage because it allows you to make changes at a time when they are easy to change.
Once we have a Prototype that we think is really good, we ask some users to complete tasks that real users would undertake and see how they get on. This always uncovers flaws in the design which, happily are easy to address because no real code has been written yet.
Nearly all Website Development projects start with the creation of a visual design, once this has been approved the developers go straight into coding the site without prototyping or usability testing.
The problem with this approach is that it's incredibly inflexible, it's difficult to make changes to the functionality once the code has been written. Changes to the functionality take about 10 times as long to make and the resulting code is likely to be problematic as corners are cut and compromises are made in an attempt to keep within the timeframes and budgets.