J. Scott Hawker


Maturing software development organizations are beginning to identify a distinct role in the software team: Software Process Engineer. A software process engineer designs the software processes used by the organization. The software process includes the process content (identification of the roles, activities, and work products of the processes, along with specific techniques, tools, guidance, examples and other supporting information) and the lifecycle model (the ordering of and dependencies between software engineering activities and work products). A process engineer assembles a process from existing process components, choosing and tailoring components to provide the balance of agility and discipline necessary for their organization and projects. We have developed a graduate software engineering course to educate our students on the basic concepts of software process engineering. We use the OMG Software Process Engineering Metamodel and the IEEE Standard for Developing a Software Project Life Cycle Process as ways to model and compare process design alternatives and to provide mechanisms to assemble reusable process components into enactable processes. We use the Open Unified Process as an example process and we survey a wide range of techniques and methods that can be incorporated into a process. We use the Eclipse Process Framework Composer and associated process component libraries to assemble processes for specific projects. This paper describes the process engineering course and provides an informal assessment of the course effectiveness.

Date of creation, presentation, or exhibit



Paper accepted for the Proceedings of the 2009 American Society for Engineering Education Annual Conference, Austin, TX, June 2009, Paper AC 2009-2001.

Document Type

Conference Proceeding

Department, Program, or Center

Software Engineering (GCCIS)


RIT – Main Campus