Professional Education Courses offered by Dr. Mark Paulk
Dr. Paulk offers consulting services related to software engineering, software process improvement, agile methods, software project management, high maturity, and statistical thinking. The items listed on this page are related to training. For more specific information regarding the consulting and training options available, contact Dr. Paulk directly.
The standard courses described below are occasionally offered publicly. In such cases they are listed under “Recent and Upcoming Events”. More frequently they are taught by request at a customer site, and customized versions of these courses (and courses on similar software engineering topics) can be developed.
Professional Education Courses and Seminars
Building Mature Software Processes
Adopting Agile Methods
Classes and Courses Offered via Carnegie Mellon University
This seminar provides an overview of the issues surrounding software process definition, deployment, and improvement. The seminar uses the Capability Maturity Model for Software (CMM), CMMI, ISO 15504 (Process assessment) and other software process frameworks to structure the discussion. Inspired by the process management work of quality gurus such as Deming, Juran, and Crosby, software organizations can assess and improve the way they build software. The seminar discusses the principles underlying process and quality management, performing assessments to improve the software process, managing technological change, and using best-practice frameworks effectively.
This seminar provides an overview of the current world-wide trends in the arena of software process and quality improvement. It begins with a discussion of Total Quality Management, performance excellence, and Six Sigma to set a context. The Capability Maturity Model for Software and the shift to CMM Integration (CMMI) are discussed, along with other approaches to software process improvement, including the ISO 9000 family of quality management system standards, the ISO 12207 standard for software life cycle processes, and the ISO 15504 standard for process assessment.
Extreme Programming (XP) is the best known and most widely used of the agile methods that are at the forefront of software methodology discussions today. The practices that comprise XP have been clearly stated for some years, and a variety of case studies have been published discussing the implementation and tailoring of those practices. The XP practices have been practiced in some form for decades – the “extreme” modifier is Beck’s indication that XP is a set of good practices carried to an extreme implementation. One objective of this seminar is to discuss the antecedents of the XP variants and the alternatives that have been developed in other contexts. Pair programming, for example, can be considered an extreme implementation of peer reviews. Walkthroughs and inspections are variant forms of peer review. When implementing XP, most organizations tailor the XP practices. In some cases, alternatives have been adopted; in some cases, an XP practice has been abandoned. The seminar will discuss both possible tailorings and reasons an XP practice might be either poorly implemented or not implemented at all.
Scrum is a well known and widely adopted agile method that focuses on managing the project and the customer relationship via Sprints to incrementally deliver the software and and daily Scrum meetings to monitor progress. Like other agile methods, Scrum is used to steer software projects to iteratively provide deliverables that meet the highest priority customer needs within budget and schedule constraints. Unlike some agile methods, Scrum focuses on project management. One result is that it is easily adaptable to a variety of environments and can be easily integrated with other agile methods, such as Extreme Programming. This seminar discusses each of the core set of Scrum practices, along with their pros and cons and some of the variant practices. It is targeted towards Scrum teams rather than individuals interested in Scrum.
Scrum is a well known and widely adopted agile method that focuses on managing the project and the customer relationship via Sprints to incrementally deliver the software and and daily Scrum meetings to monitor progress. The role of the customer, as represented by the Product Owner, differs from that of more traditional software engineering methods. Scrum assumes that the Product Owner will actively engage with the development team on a day-by-day (or at least regular) basis. There is a division of concerns in planning, with the Product Owner primarily responsible for identifying and prioritizing (ordering) product requirements. Empowerment and participation change the traditional relationship between customer and developer in the agile context. This seminar discusses the core set of Scrum practices and how the Product Owner fits into the Scrum culture.
"Our greatest asset is our people." This platitude is frequently followed by announcements of layoffs, downsizing, and similar Dilbertesque decisions. If people are the most important single factor in success, how do we incorporate that fact into our process improvement programs? This seminar provides an overview of "people issues" for software engineering, management, and process improvement from an individual, team, and organizational perspective. People issues for the individual include order-of-magnitude differences in individual performance and temperament differences such as those indicated by the Meyers Briggs Type Indicator. Team issues include those associated with establishing effective and high-performance teams. Organizational issues include decision making styles, organizational culture differences, and varying national cultures. For human-centric, creative work such as software organizations perform, the foundation for performance excellence is the competence of the people doing the work as enabled – or hindered – by the environment they work in.
As organizations improve their processes and use quantitative and
statistical techniques to control and improve the way software is built,
there is a growing need for software engineers to have a basic understanding of
statistics. This seminar provides an overview of software measurement,
statistical concepts and terminology, statistical thinking,
basic statistical tools, regression analysis, test of hypotheses, and
control charts. It provides an awareness of statistical issues,
including a discussion of assumptions that are made, pitfalls to be wary of,
and myths and misconceptions to dismiss. This awareness should help the
software professional understand the use and limitations of methods and tools
that use statistics, such as cost models, reliability models, and
statistical process control.
This information provides a basis for achieving Level 4 of the Software CMM® and CMMI®.
Building Mature Software Processes
(four-course program or week-long course)
The following four-course sequence was developed for, and is available from, iCarnegie. They are available individually or as a set. A week-long version of this set is also available. This program is aimed at practical organizational transformation based on the improvement roadmap originally defined in the Capability Maturity Model for Software and now embodied in the staged representation of CMM Integration. The four seminars that comprise this program focus on software project management that meets customer requirements and expectations, on organizational learning that embodies best practices for engineering and management processes, on statistical thinking that enables management by fact and evidence-based management, and the set of high maturity practices that revolve around a world-class quality culture. While standards and models are referenced throughout the program as needed, the emphasis is consistently on meeting business objectives and improving performance.
This seminar addresses the challenges, strategies, and tools for managing software projects. The seminar is structured according to the knowledge areas of the Project Management Body of Knowledge. Customer relationship management, decision making, earned value, critical path, critical chain, and agile methodologies are discussed. Effective project management is a prerequisite for meeting commitments, yet all too many software projects fail to meet customer expectations for budget, schedule, functionality, and quality. Many customers now require their suppliers to demonstrate their commitment to process improvement and quality management by using, or being certified against, various models and standards. Project management is a fundamental requirement to achieve Level 2 against the Capability Maturity Model for Software (or CMMI) or to be certified against ISO 9001. Effective project management requires more than implementing a set of basic functions, however. It implies selecting qualified people who can work together effectively, structuring decision making processes both internally and externally, managing customer expectations, monitoring progress, managing risks, and taking corrective action as appropriate. None of these are easy, although there are a number of tools that can help. This seminar is therefore a broad survey of a variety of project management styles and techniques, as used in diverse environments. The perspective of the discussion is that of “mature” processes, i.e., processes that are well-defined, measured, controlled, and continually improving.
This seminar describes lessons learned in analyzing, defining, and deploying organizational software processes. Models such as the Capability Maturity Model for Software and the staged representation of CMMI are intended at Level 3 to transform organizations by instilling a capacity for organizational learning in coming to understand what processes work well in your business environment, capturing those lessons in the form of defined processes, and deploying tailored processes that incorporate those lessons across projects, while catering to the unique needs of the projects. Among the challenges that must be addressed are:
"High maturity" as used in the Capability Maturity Model for Software or CMM Integration implies a superior process capability, with the expectation of continual, measured improvement. High maturity is intrinsic to the definitions of Maturity Levels 4 and 5 in these models, and a growing number of organizations have been assessed at these Levels, but the reliability of high maturity assessments has been a concern for many years. The Software Engineering Institute has taken a number of actions to address this concern, but the lack of wide-spread experience with high maturity practices remains a challenge for both assessors and process engineers. The purpose of this presentation is to discuss the fundamental principles of process management at the higher maturity levels, some of the effective engineering and management practices empirically found in workshops and surveys of high maturity organizations, and some of the common mistakes that are made.
Process management frameworks such as CMMI and ISO 9001 require software organizations
to consider their use of quantitative techniques, particularly statistical techniques,
for controlling and improving the software process.
In statistical process control, this means
eliminating assignable causes of variation and understanding the common cause system.
Because the software process is not a
repetitive manufacturing or service process, the application of
statistical process control, specifically control charts, has been challenged by many
in the software community. This course focuses on the issues involved in
applying SPC – and specifically control charts – to software processes,
applying statistical thinking to the software process,
prerequisites for applying statistical thinking effectively, and
the specific techniques that should be considered.
Examples from real-world software projects illustrate the challenges
in stabilizing the software process and applying different statistical techniques.
Statistical thinking is the basis for achieving Levels 4 and 5
in the Software CMM and CMMI.
Adopting Agile Methods
The following four-course sequence was developed for, and is available from, iCarnegie. They are available individually or as a set. This program is aimed at organizations considering agile methods. It begins with a discussion of how agile methods should be implemented in a disciplined way, and improvement frameworks, such as CMMI, can be complementary with agile methods. It continues with introductions to two of the most popular agile methods, Extreme Programming and Scrum, and concludes with a discussion of the issues associated with tailoring various agile practices to the needs of the organization, customer, and project.
Agile methods have been touted as the programming methodologies of choice for the high-speed, volatile world of Internet and Web software development. They have also been criticized as just another disguise for undisciplined hacking. The reality depends on the fidelity to the agile philosophy with which these methodologies are implemented and the appropriateness of the implementation for the application environment. Extreme Programming, Scrum, and similar agile methods are disciplined processes that incorporate good engineering and management practices, albeit with extreme implementations tailored to a specific kind of environment. Many of the challenges to agile methods arise from considering how they would fit in different environments; the degree to which agile methods can be adapted without losing their emergent properties is passionately debated. The compatibility of agile methodologies with the Capability Maturity Model for Software and CMMI is summarized and critiqued, with the conclusion that appropriately implemented agile methods can be useful additions to an organization's set of standard processes.
Extreme Programming is the best known and most widely used of the agile methods. The practices that comprise XP have been clearly stated for some years, and a variety of case studies have been published discussing the implementation of those practices. Although the core set of XP “practices” is well known, they have evolved over time, and many new practices have been suggested as additions. The XP practices have been practiced in some form for decades – the “extreme” modifier is Beck’s indication that XP is a set of good practices carried to an extreme implementation. This seminar discusses each of the original core set of XP practices, their antecedents, and the additional practices proposed. Both pros and cons are discussed, along with the interdependencies between various XP practices. Reasons an XP practice might be either poorly implemented or not implemented at all will be explored.
Scrum is a well known and widely adopted agile method. It focuses on managing the project and the customer relationship via a backlog of work to be performed, 30 day sprints to incrementally deliver the software, and scrums – daily status meetings. Like other agile methods, Scrum is used to steer software projects to iteratively provide deliverables that meet the highest priority customer needs within budget and schedule constraints. Unlike some agile methods, Scrum does not emphasize the engineering tasks of software development. One result is that it is easily adaptable to a variety of environments. Another consequence is that it is easily integrated with other methods, such as Extreme Programming. This seminar discusses each of the core set of Scrum practices, along with their pros and cons and some of the variant practices. Reasons that Scrum might be poorly implemented will be explored.
Scrum, Extreme Programming, and agile methods have become well known and widely used in the software engineering community. The practices that comprise the agile methods have been stated for some years, and a variety of case studies have been published discussing the implementation of the more popular methods. Although the core set of agile “practices” is well known, particularly for Scrum and XP, they have evolved over time, and many new practices have been suggested as additions. The XP practices have been practiced in some form for decades – the “extreme” modifier is Beck’s indication that XP is a set of good practices carried to an extreme implementation. One objective of this seminar is to discuss the antecedents of the various agile practices and the alternatives that have been developed in other contexts. When implementing an agile method, most organizations tailor the practices to the needs of their business environment and customers. In some cases, tailorings are reasonable and aligned with the vision of what agility is all about; in some, the tailoring violates fundamental principles underlying the agile method. This seminar will discuss possible tailorings, improper tailorings, and reasons an agile method might be either poorly implemented or not implemented at all.
In addition to the professional development courses described above, Mark gives talks on a variety of topics for conferences and professional societies. Presentations can be tailored from any of the courses described above, and the following abstracts describe other popular 1-2 hour presentations. Presentations on Mark's work on best practices for sourcing and service providers should be requested through ITSqc rather than this consulting Web site.
This presentation discusses some of the empirical evidence on the value obtained from investing in software process improvement. Business drivers for process improvement and some challenges in organization change are described, along with data on the impact on cost, schedule, and quality of achieving the five maturity levels in CMMI. From an executive perspective, the crucial point is that continual improvement depends on systematically addressing the problems facing the organization -- regardless of the improvement framework selected. This "constancy of purpose" depends on management sponsorship, support, and investment.
Many professionals have qualms about process management standards, such as CMM(I). They fear rigidity and bureaucracy will hinder their ability to do their work… and there is some justice to their concerns. Natural tendencies in defining and evolving detailed processes frequently seem to go counter to what has been shown to be most effective in defining usable processes. Further, different communities within an organization may have different needs in terms of process guidance. Reconciling the conflicts between these communities, and avoiding process definitions that strive for control at the expense of usability, are ongoing challenges for the process engineer. This presentation discusses the mistakes frequently made in defining processes, the research that illuminates the issues, and recommends some useful heuristics for defining “good” processes.
Understanding the factors that influence software quality is crucial to the continuing maturation of the software industry. An improved understanding of software quality drivers will help software engineers and managers make more informed decisions in controlling and improving the software process. Data from the Personal Software Process (PSP) provides insight into interpersonal differences between competent professionals as increasingly disciplined processes are adopted. Program size, (empirically measured) programmer ability, and disciplined processes significantly affect software quality. Factors frequently used as surrogates for programmer ability, e.g., years of experience, and technology, e.g., programming language, do not significantly impact software quality, although they may affect other important software attributes, such as productivity. An understanding of these factors may help managers implement practices that support high-quality software.
One of the “magic words” in software process improvement is institutionalization. Anyone doing improvement based on the Capability Maturity Model for Software (CMM) has to both implement and institutionalize their processes to fully satisfy a key process area. The definition in the CMM is that institutionalization is “the building of infrastructure and culture that support methods, practices, and procedures so that they are the ongoing way of doing business, even after those who originally defined them are gone.” This definition captures the concept but is not operationally satisfactory. So what does institutionalization really mean? It means setting expectations for the process while, as Collins and Porras put it in Built to Last, applying the genius of the AND rather than falling prey to the tyranny of the OR in maintaining process stability AND supporting continual improvement. It means establishing a culture of following a disciplined process (with different attributes as one moves up the maturity levels) even though that process (or set of processes) will be systematically changed in a controlled fashion over time.
In addition to professional development courses and presentations, Mark teaches "Seminar in Software Process", "Agile Methods", and "Capability Improvement for Service Organizations" for the Institute for Software Research at Carnegie Mellon University. He teaches "Database Design" for the Industrial Engineering Department at the University of Pittsburgh. He teaches sourcing-related courses for the IT Services Qualification Center, such as "The eSourcing Capability Model for Service Providers Course".
Capability Maturity Model, CMM, and CMMI are registered with the U.S. Patent and Trademark Office by Carnegie Mellon University.
Last revised July 5, 2012.Mark Paulk / Mark.Paulk@ieee.org