Topics in Software Engineering (290G)

Architecture and Design of Internet Information Systems

 

The goals of this course are:

·         Develop a deep understanding of the key software architecture and software design principles for developing Internet Information Systems.

·         Survey a broad class of existing and emerging Internet Information Systems in both the research and commercial spheres.

·         Provide an understanding of important abstractions that afford remote collaborative work of linked information spaces.

The unique perspective of this course is its Software Engineering view of the creation of Internet Information Systems, an approach that focuses attention on principles that apply across a broad range of systems, rather than focusing on specific classes of systems. For example, instead of focusing on “the Web” as a system, this course will individually examine the Web’s data model, architectural principles, and namespaces, each within the context of an investigation of a specific topic. The effect is to de-center The System and The Protocol by emphasizing both Software Engineering principles and design spaces that span multiple Internet Information Systems.

 

Week 1 – Data representation:

On-the-wire data representation: binary vs. text, XML, ASN.1, MIME, i18n issues (character set vs. character set encoding)

 

Week 2 – Data modeling

Server-side data models

Data models for interchange (XML schemas, iCalendar, vCard, LDAP entries, DAV data model)

Semantic data modeling

Semantic Web

 

Week 3-4 – Software Architectural Issues:

Partitioning of functionality between system elements (client/server, peers, caches)

Relationship of system elements (peer-to-peer, client/server, etc).

Patterns of information flow (request/response, asynchronous events, push/pull)

Replication of data, caching

Handling large loads

Centralization vs. decentralization

Representational State Transfer

Protocol layering (protocol virtual machines)

 

Week 5 – Design Principles

Separation of concerns

Coupling and cohesion

Data modeling

Control choices

Extensibility

 

Week 6 – Internet-Scale Identifier and Name Spaces

Identifier and name spaces. Examination of URN (Uniform Resource Names), URI (Uniform Resource Identifiers), Xanadu tumblers, GUIDs (globally unique identifiers)

Name space systems: Handle system, Real Names, PURL (Persistent URL)

 

Week 7 – Design Spaces for Navigation in Large Information Spaces

Visions for hypertext information systems: Xanadu & NLS/Augment

The Web: HTTP

Metadata & searching

 

Week 8-9 – Design Spaces for Remove Collaborative Authoring of Information Spaces

Design spaces for:

·         Concurrency control techniques (locks, leases, branches, etc.)

·         Revision control

·         Workspaces

·         Configurations

·         Logical change tracking

·         Hypertext versioning

·         Containment modeling of content management systems

 

Week 10 – Design Spaces for Peer-to-Peer Systems

Architectures of peer-to-peer systems, and the tension between centralization & decentralization.

Data replication strategies.

Searching peer-connected information spaces.

Anonymity.