Software engineering concepts
The SEI education program: the challenge of teaching future software engineers
Communications of the ACM
Object-oriented modeling and design
Object-oriented modeling and design
On the study of software reuse using reusable C++ components
Journal of Systems and Software - Special issue on object-orientation
Object-oriented analysis and design with applications (2nd ed.)
Object-oriented analysis and design with applications (2nd ed.)
The essential distributed objects survival guide
The essential distributed objects survival guide
Frameworks = (components + patterns)
Communications of the ACM
Component software: beyond object-oriented programming
Component software: beyond object-oriented programming
Viewpoints: principles, problems and a practical approach to requirements engineering
Annals of Software Engineering
Reconciling requirements: a method for managing interference, inconsistency and conflict
Annals of Software Engineering
IEEE Software
Structured Analysis and System Specification
Structured Analysis and System Specification
Hi-index | 0.00 |
The emergence of software component standards and tools for creating software components is leading to an increasing number of software component developers. Traditional software engineering education, however, emphasizes methods for developing large software packages. It is not clear whether such methods are appropriate for developing components. New techniques may be needed to teach the skills necessary for component development. We identify two skills software developers need to successfully develop components, which are not emphasized in traditional software engineering education: (a) uncovering multiple‐customer domain semantics; and (b) making explicit multiple‐customer framework semantics. Both skills are multiple constraint satisfaction problems. We further argue that training students to produce and market components in a simulated software components marketplace – rather than the more conventional “classroom teaching” + “component homework assignments/projects” – is an effective way of teaching such skills. We then describe an environment we created called SofTrade that simulates a components market and allows students to acquire the necessary skills. We provide a detailed case study of how a student component‐producer team used market feedback to determine domain and framework semantics. We end by discussing the importance of market‐driven approaches for teaching software components engineering and how such approaches fit into existing software engineering curricula.