Abstract
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.
Similar content being viewed by others
References
Barnes, B.H. and T.B. Bollinger (1991), “Making Reuse Cost-Effective,” IEEE Software 1, 13–24.
Booch, G. (1994), Object Oriented Analysis and Design, Benjamin Cummings Publishing, Redwood City, CA.
Chen, D.J. and P.J. Lee (1993), “On the Study of Software Reuse Using Reusable C++ Components,” Journal of Systems Software 20, 19–36.
Cohen, J. (1960), “A Coefficient of Agreement for Nominal Scales,” Educational and Psychological Measurement 20, 37–46.
Coulter, N.S. and J.E. Dammann (1994), “Current Practices, Culture Changes, and Software Engineering Education,” Computer Science Education 5, 211–227.
DeMarco, T. (1979), Structure Analysis and System Specification, Yourdon Press, Englewood Cliffs, NJ.
Fairley, R.E. (1985), Software Engineering Concepts, McGraw-Hill, New York, NY.
Ford, G.A. and N.E. Gibbs (1989), “A Master of Software Engineering Curriculum,” IEEE Computer, 59–71.
Ford, G.A. and N.E. Gibbs (1996), “A Mature Profession of Software Engineering,” Technical Report CMU/SEI-96-TR-004, Software Engineering Institute, Carnegie Mellon, Pittsburgh, PA.
Gibbs, N.E. (1989), “The SEI Education Program: The Challenge of Teaching Future Software Engineers,” Communications of the ACM 32, 594–605.
Gibbs, N.E. (1991), “Software Engineering and Computer Science: The Impending Split,” Education and Computing 7, 111–117.
Gode, D.K. and S. Sunder (1993a), “Allocative Efficiency of Markets with Zero-Intelligence Traders: Market as a Partial Substitute for Individual Rationality,” Journal of Political Economy 101, 119–137.
Gode, D.K. and S. Sunder (1993b), “Lower Bounds for Efficiency of Surplus Extraction in Double Auctions,” In The Double Auction Market, D. Friedman and J. Rust, Eds., Addison-Wesley, Reading, MA, pp. 199–219.
Hong, S., F.L. Lerch and N. Flor (1998), “A Laboratory Study of Consumers' Preferences and Purchasing Behavior of Software Components,” Working Paper, GSIA, Carnegie Mellon, Pittsburgh, PA.
Johnson, R. (1997), “Frameworks = Components + Patterns,” Communications of the ACM 40, 39–42.
Orfali, R., D. Harkey and J. Edwards (1996), The Essential Distributed Objects Survival Guide, Wiley, New York, NY.
Repenning, A. and T. Sumner (1997), “Agentsheets: A Medium for Creating Domain-Oriented Visual Languages,” IEEE Computer 28, 3, 17–25.
Rumbaugh, J., M. Blaha, W. Premerlani, F. Eddy and W. Lorensen (1991), Object-Oriented Modeling and Design, Prentice-Hall, Englewood Cliffs, NJ.
Sommerville, I. and P. Sawyer (1997), “Viewpoints: Principles, Problems, and a Practical Approach to Requirements Engineering,” Annals of Software Engineering 3, 101–130.
Spanoudakis, G. and A. Finkelstein (1997), “Reconciling Requirements: A Method for Managing Interference, Inconsistency, and Conflict,” Annals of Software Engineering 3, 433–457.
Szyperski, C. (1997), Component Software, ACM Press, New York, NY.
Szyperski, C. and C. Pfister (1997), “Workshop on Component-Oriented Programming, Summary,” In Special Issues in Object-Oriented Programming – ECOOP96 Workshop Reader, M. Mulhhauser, Ed., Springer-Verlag, Berlin, Germany.
Woodfield, S., D. Embley and D. Scott (1987), “Can Programmers Reuse Software?” IEEE Software 7, 52–59.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Flor, N.V., Lerch, F.J. & Hong, SJ. A market-driven approach to teaching software components engineering. Annals of Software Engineering 6, 223–251 (1998). https://doi.org/10.1023/A:1018913600088
Issue Date:
DOI: https://doi.org/10.1023/A:1018913600088