Engineering Quality in Software Development
This course is a series of Web-based training modules that teach you about techniques you can use to improve software quality from requirements discovery to effective design and implementation, as well as unit test and code inspection.
This course includes:
- Overview of Software Development Practices: This module discusses software development and defines essential software development activities. You will also learn about software development methodologies and how each methodology manages activities differently.
- Requirements Discovery and Analysis: This module discusses how to discover and analyze requirements using methodologies that apply to all software developers and process models. This module includes techniques for defining requirements and using document templates that are available within the Rational Unified Process.
- Topics in Design: Design Principles: This module discusses techniques for good software design that can improve the quality of software deliverables and the efficiency of software development processes. This module refers to an iterative development process, the Rational Unified Process, to illustrate concepts and skills. However, the lessons apply to any software development methodology.
- Topics in Design: Design Review Checklist: This module discusses how to strengthen your design skills with the use of a checklist. This checklist provides a series of questions to use when creating and inspecting designs. It can also help in implementation. Reviewing a design is important because doing so can help remove defects sooner rather than later, which drastically reduces overall project cost. You will explore how to review the design from the point-of-view of those who interact with the design, such as the stakeholders, customers, and other programs (external view) and how to review the internal design (internal view). This module should be read in conjunction with module 3 - Topics in Design: Design Principles.
- Essentials for Coding: This module discusses how to achieve good software construction using the basic building block of many software programs and objects: the routine. If good routines are constructed, then the overall program will benefit.
- Creating Secure Software: This module discusses security issues to consider throughout the software development lifecycle. You will learn about common attacks and how to prevent them by focusing on security engineering during the requirements, design, and implementation phases. You will also learn about the standards that can help improve the security of software, including Common Criteria. The programming examples in this module are general enough to apply the paradigms to any environment, regardless of the language in which they are written.
- Inspections in the Software Lifecycle: This module discusses performing inspections on software artifacts including code, technical specifications, test cases, test designs, and test plans. It also covers the purpose and benefits of inspections and how they help improve the quality of a product and reduce the software development schedule. In addition, you'll learn the process for performing inspections and the techniques organizations use to inspect documents and code. This module does not provide moderator training. To become a certified moderator, you should seek a class that specializes in the skill. This module refers to an iterative development process, the Rational Unified Process (RUP), to illustrate concepts and skills. However, the lessons apply to any software development methodology.
- Static Code Analysis: This module teaches the general concepts and benefits of static analysis, including the difference between static and dynamic testing, static analysis myths, how one tool—IBM Rational CodeReview—performs static analysis, and how to successfully bring static analysis into an organization.
- Essentials for Unit Testing: This module introduces unit testing concepts and various unit testing techniques, including executing code paths and branches, triggering all exception-handling cases, and using debug assertions. This module refers to an iterative development process, the Rational Unified Process (RUP), to illustrate concepts and skills. However, the concepts apply to any software development methodology.
- Development Planning and Risk Analysis: This module discusses software development plans and how to manage risk. A step-by-step process guides you through performing risk analysis for software development activities. In this module, examine the key parts of a software development plan for an iterative development project and practice completing sections of a plan.
- Estimating Effort for Development Tasks: This module discusses the purpose and importance of estimation, the various methods used in estimation, estimation best practices, variance and risk in estimation, and using Rational Method Composer for estimation.
- Change Management: This module discusses tools for change management. Change management covers the activities that must occur when a change—such as a defect fix or an enhancement—is made to software. Three types of tools help with this: software configuration management, or versioning tools; tools for building the program’s executable; and defect and change tracking tools. This module covers these types of tools as well as how their integration with each other can strengthen a team’s ability to manage changes to software.
- In-Process Metrics for Software Developers: This module discusses how in-process metrics provide the mechanism for capturing and quantifying all aspects of the development process. Applying these measurements during development determines if a project is executing according to schedule and quantifies the quality of the software at each stage of production. This module teaches you how to implement metrics that indicate quality and project progress during design, coding, and unit testing.





