Engineering Practices for Building Quality Software
University of Minnesota via Coursera
-
318
-
- Write review
Overview
Save Big on Coursera Plus. 7,000+ courses at $160 off. Limited Time Only!
Agile embraces change which means that team should be able to effectively make changes to the system as team learns about users and market. To be good at effectively making changes to the system, teams need to have engineering rigor and excellence else embracing change becomes very painful and expensive.
In this course, you will learn about engineering practices and processes that agile and traditional teams use to make sure the team is prepared for change. In additional, you will also learn about practices, techniques and processes that can help team build high quality software. You will also learn how to calculate a variety of quantitative metrics related to software quality.
This is an intermediate course, intended for learners with a background in software development. To succeed in the course, you should have experience developing in modern programming languages (e.g., Java, C#, Python, JavaScript), an understanding of software development lifecycle models, familiarity with UML diagrams (class and sequence diagrams), and a desire to better understand quality aspects of software development beyond program correctness.
At the end of this course, you will be able to comfortably and effectively participate in various techniques and processes for building secure and high quality software.
Syllabus
- Introduction to Quality Software
- In this module, you will be introduced to the concept of quality as it relates to software.
- Quality in Design
- In this module, you will learn about a variety of quality metrics including how to calculate them. A discussion of design patterns follows, allowing you to gain a deeper understanding of the quality they provide and exposure to several important patterns.
- Quality in Architecture
- In this module, you will create Scenarios in order to document and verify quality attributes relevant to software architecture, including usability, performance, and more. Then, you will examine one specific quality attribute and its implications: security.
- Quality in Implementation
- In this module, you will explore a variety of quality aspects of the implementation stage of the lifecycle. You will also evaluate coding style guides and static analysis tools. Finally, you will analyze self-documentation in open-source code and identify the capabilities of version control and automated build tools.
- Quality in Testing and Deployment
- In this module, learners will discover quality in the final lifecycle stages: testing and deployment. Learners will first be instructed on the importance of test planning, understand what it means to evaluate tests and identify the benefits of test-first process. Then, a variety of resources will give learners understanding into continuous pipeline tools, allowing the learner to evaluate their potential benefits (and drawbacks) for their own projects.
Taught by
Praveen Mittal and Kevin Wendt