A Reference Architecture for Web Browsers Alan Grosskurth and - - PowerPoint PPT Presentation

a reference architecture for web browsers
SMART_READER_LITE
LIVE PREVIEW

A Reference Architecture for Web Browsers Alan Grosskurth and - - PowerPoint PPT Presentation

A Reference Architecture for Web Browsers Alan Grosskurth and Michael W. Godfrey Software Architecture Group (SWAG) School of Computer Science University of Waterloo, Waterloo, Canada { agrossku,migod } @uwaterloo.ca 2005.09.29 1 Overview


slide-1
SLIDE 1

A Reference Architecture for Web Browsers

Alan Grosskurth and Michael W. Godfrey Software Architecture Group (SWAG) School of Computer Science University of Waterloo, Waterloo, Canada {agrossku,migod}@uwaterloo.ca 2005.09.29

1

slide-2
SLIDE 2

Overview

  • Introduction
  • The web browser domain
  • Deriving a reference architecture
  • Validating the reference architecture
  • Conclusions and future work

2

slide-3
SLIDE 3

Introduction

  • A reference architecture captures the fundamental

subsystems common to systems in a domain as well as the relationships between them

  • Benefits:

– Improve understanding of existing systems – Help analyzing trade-offs between different design decisions – Serve as a template for design and reengineering

  • Currently no reference architecture proposed for web

browsers

3

slide-4
SLIDE 4

Web browser evolution

Lynx

1.0 2.0 2.4 2.85 1998−03−31 4.0 3.0 2.0 1.0 4.5 6.0 8.0 1.7 1.0 3.0 2.0 1.0 2.0 3.0 4.0 5.0 5.5 6.0 M18

Galeon Netscape

1.0 0.5

Firefox

1.0 3.0 2.0 1.0

Safari

0.8 1.0 1.2 7.0 2.1 3.0 5.0 6.0 4.0 Hybrid Closed−source Open−source

Legend 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 Internet Explorer Mosaic

1.0 1.2

Mozilla Konqueror Opera

7.0 W3C founded

4

slide-5
SLIDE 5

Deriving a reference architecture

  • 1. For each system:
  • Propose a conceptual architecture for each browser

based on domain knowledge and documentation

  • Refine it using the extracted concrete architecture
  • 2. Propose a reference architecture based on the common

structure between the conceptual architectures

5

slide-6
SLIDE 6

Refining a conceptual architecture

rawlink addcontain

Program facts Object code program Linked

liftfile

Source code facts landscape

Architecture Concrete

Adjustments

lsedit

program schema landscape

Conceptual Architecture

Predefined decomposition Hierarchichal subsystem Software Facts with File level decomp− facts

  • sition

addschema bfx

Tool jgrok Data flow Human interaction script

Legend Build

6

slide-7
SLIDE 7

Approximate web browser statistics

Project Version Languages Files kLOC Created Mozilla 1.7.3 C++, C 10,500 2,400 1998 Konqueror 3.3.1 C++ ≈950 ≈240 1996 Safari 1.2 C++, Obj C >750 >140 2003 Lynx 2.8.5 C 200 122 1992

7

slide-8
SLIDE 8

A reference architecture for web browsers

Browser Engine Rendering Engine Networking

JavaScript Interpreter

XML Parser Data Persistence Display Backend User Interface

8

slide-9
SLIDE 9

Conceptual architecture of Mozilla

Necko Security

(NSS/PSM)

Spider− Monkey Expat GTK+ Adapter Browser Persist. Gecko UI Toolkit (XPFE) User Interface User, Secure, GTK+ / X11 Libraries 9

slide-10
SLIDE 10

Mapping the ref. arch. onto Mozilla

Necko Security

(NSS/PSM)

Spider− Monkey Expat GTK+ Adapter JavaScript Interpreter XML Parser Browser Persist. Networking Display Backend Rendering Engine Browser Engine Gecko UI Toolkit (XPFE) User Interface User, Secure, User Interface GTK+ / X11 Libraries Data Persistence

10

slide-11
SLIDE 11

Conceptual architecture of Lynx

Browser Core Security (libgnutls) Curses wwwlib 11

slide-12
SLIDE 12

Mapping the ref. arch. onto Lynx

Rendering Engine Browser Engine Browser Core User Interface Security (libgnutls) JavaScript Interpreter XML Parser Curses Display Backend Networking wwwlib Data Persistence 12

slide-13
SLIDE 13

Conclusions

  • 1. Emergent domain boundaries
  • 2. Convergent evolution
  • 3. Tension between open and closed source development

approaches

Future work

  • More browsers: Mosaic, Galeon, GTK-Webcore

13