Skip to main content
Log in

A market-driven approach to teaching software components engineering

  • Published:
Annals of Software Engineering

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  • Barnes, B.H. and T.B. Bollinger (1991), “Making Reuse Cost-Effective,” IEEE Software 1, 13–24.

    Google Scholar 

  • Booch, G. (1994), Object Oriented Analysis and Design, Benjamin Cummings Publishing, Redwood City, CA.

    Google Scholar 

  • 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.

    Google Scholar 

  • Cohen, J. (1960), “A Coefficient of Agreement for Nominal Scales,” Educational and Psychological Measurement 20, 37–46.

    Google Scholar 

  • Coulter, N.S. and J.E. Dammann (1994), “Current Practices, Culture Changes, and Software Engineering Education,” Computer Science Education 5, 211–227.

    Google Scholar 

  • DeMarco, T. (1979), Structure Analysis and System Specification, Yourdon Press, Englewood Cliffs, NJ.

    Google Scholar 

  • Fairley, R.E. (1985), Software Engineering Concepts, McGraw-Hill, New York, NY.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Johnson, R. (1997), “Frameworks = Components + Patterns,” Communications of the ACM 40, 39–42.

    Google Scholar 

  • Orfali, R., D. Harkey and J. Edwards (1996), The Essential Distributed Objects Survival Guide, Wiley, New York, NY.

    Google Scholar 

  • Repenning, A. and T. Sumner (1997), “Agentsheets: A Medium for Creating Domain-Oriented Visual Languages,” IEEE Computer 28, 3, 17–25.

    Google Scholar 

  • Rumbaugh, J., M. Blaha, W. Premerlani, F. Eddy and W. Lorensen (1991), Object-Oriented Modeling and Design, Prentice-Hall, Englewood Cliffs, NJ.

    Google Scholar 

  • Sommerville, I. and P. Sawyer (1997), “Viewpoints: Principles, Problems, and a Practical Approach to Requirements Engineering,” Annals of Software Engineering 3, 101–130.

    Google Scholar 

  • Spanoudakis, G. and A. Finkelstein (1997), “Reconciling Requirements: A Method for Managing Interference, Inconsistency, and Conflict,” Annals of Software Engineering 3, 433–457.

    Google Scholar 

  • Szyperski, C. (1997), Component Software, ACM Press, New York, NY.

    Google Scholar 

  • 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.

    Google Scholar 

  • Woodfield, S., D. Embley and D. Scott (1987), “Can Programmers Reuse Software?” IEEE Software 7, 52–59.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints 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

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1018913600088

Keywords

Navigation