As the development and use of open source software (OSS) becomes prominent, the issue of its outreach in an educational context arises. The practices fundamental to software engineering, including those related to management, process, and workflow deliverables, are examined in light of OSS. Based on a pragmatic framework, the prospects of integrating OSS in a traditional software engineering curriculum are outlined, and concerns in realizing them are given. In doing so, the cases of the adoption of an OSS process model, the use of OSS as a computer-aided software engineering (CASE) tool, OSS as a standalone subsystem, and open source code reuse are considered. The role of openly accessible content in general is discussed briefly.
Key Terms in this Chapter
Agile Development: A philosophy that embraces uncertainty, encourages team communication, values customer satisfaction, vies for early delivery, and promotes sustainable development.
Coding Standard: A documented agreement that addresses the use of a formal (such as markup or programming) language.
Software Pattern: A reusable entity representing knowledge and experience aggregated by an expert in solving a recurring problem in a domain.
Software Engineering: A discipline that advocates a systematic approach of developing high-quality software on a large scale while taking into account the factors of sustainability and longevity as well as organizational constraints of time and resources.
Pair Programming: A practice that involves two people such that one person (the primary person or the pilot) works on the artifact while the other (the secondary person or the copilot) provides support in decision-making and provides input and critical feedback on all aspects of the artifact as it evolves.
Domain Model: A simplified abstraction from a certain viewpoint of an area of software interest.
Formal Specification: A software representation with well-defined syntax and semantics that is usually used to express software requirements or detailed software design.
Quality: The totality of features and characteristics of a product or a service that bear on its ability to satisfy stated or implied needs.