June 14, 2009
June 14, 2009
June 17, 2009
Software Engineering Constituent Committee
14.107.1 - 14.107.11
A Software Process Engineering Course
As software product organizations evolve, the roles within the organizations evolve. From the role there evolves distinct roles for the separate but related specializations and practices of requirements development, solution design, implementation, test, etc. Even if these distinct roles are carried out by the same person in a given product development team, the activities, techniques, and artifacts for the roles are separately identified and addressed. As the organization matures, additional roles and specializations are separated out and addressed, such as project management, architecture design, and quality assurance.
We are now seeing an additional, distinct role in maturing software development organizations: Software Process Engineer. In some organizations, the task of defining the software process (process engineering) and tracking its execution is the responsibility of the project manager. In other organizations, a quality assurance organization defines a process for a project, and the project manager tracks its execution. Regardless of the organization or person assigned the role, though, it has become useful to separate the activities of process engineering from the other activities of project managers and quality assurance. For example, project managers are responsible for defining and tracking project milestones, schedules, budgets, risks, etc. Quality assurance is responsible for product verification and validation. The responsibilities of defining, assessing, and improving the software engineering process activities performed by all roles (managers, assurance, developers, etc.) is distinct enough from other project management and quality assurance tasks that is should be separately and clearly identified as a specific set of activities and deliverables. Even if a given individual performs all or part of multiple roles that include both product and process engineering, they should have concepts, methods, and guidance for how to perform the process engineering activities effectively.
As software engineering educators, we need to provide opportunities for our students to learn and practice this software process engineering role and to understand its relationship to other project roles. This paper describes the development of a course on software process engineering as part of a graduate software engineering curriculum, plus our initial experiences teaching the course. We just completed teaching the course the second time, and have identified some successes and opportunities for improvement. This paper describes the course and possible improvements.
In the following sections, we first define the software process engineering role and describe how we model software engineering processes. We then describe the course objectives and the overall approach for meeting those objectives. We then outline the course structure and content and provide observations on the issues and opportunities of various elements of the course. We conclude with an overall assessment and suggestions for on-going improvement.
The Software Process Engineering Role: A Process Designer
A software process engineer defines, for one or more software development projects,
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2009 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015