Dissertation submitted for the degree of BSc. (Hons) Computer Systems at Department of Computer Science, School of Mathematical and Computer Sciences, Heriot Watt University.