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 Webs 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.
On-the-wire data representation: binary vs. text, XML, ASN.1, MIME, i18n issues (character set vs. character set encoding)
Server-side data models
Data models for interchange (XML schemas, iCalendar, vCard, LDAP entries, DAV data model)
Semantic data modeling
Semantic Web
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)
Separation of concerns
Coupling and cohesion
Data modeling
Control choices
Extensibility
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)
Visions for hypertext information systems: Xanadu & NLS/Augment
The Web: HTTP
Metadata & searching
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
Architectures of peer-to-peer systems, and the tension between centralization & decentralization.
Data replication strategies.
Searching peer-connected information spaces.
Anonymity.