The task of the micro-architecture group was to focus on the details of both the structure and the behavior of software component interfaces and on the implementations of individual components, sets of components, and how they compose and "interoperate" with each other. The group was asked to consider issues such as certification, plug-compatibility, programming language features, and performance.
The mental models group was interested in how software engineers form internal mental models of the things they interact with in order to understand those interactions. Specifically, they were concerned with the problem of "behavioral rigidity". That is, they were concerned with avoiding avoiding software development approaches that solve particular problems at hand, since such approaches hinder their ability to "see" analogous problem solutions. Conventional programming languages do little to help these programmers develop good mental models of their systems. This is turn is an impediment to helping these same programmers overcome the behavioral rigidness of their designs.
The mental modelers were asked to explore (1) the methods by which humans develop good mental models of generic software subsystems, and (2) how existing programming languages support/hinder these efforts.
2. Discuss some existing practical experiences related to micro-architecture issues.
2. To develop examples of how such mental models are developed and how they contribute to reusability.
3. To factor both formal methods and human factors into the development of mental models - "Formal methods help to represent subsystems precisely, but it is humans that develop mental models to understand these same subsystems."
2. To agree to disagree, which we did a great deal of the time (both disagreeing and agreeing to disagree that is).