We may earn an affiliate commission when you visit our partners.
Course image
Kevin Wendt

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.

Read more

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.

Enroll now

What's inside

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.
Read more
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.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Provides a solid understanding of quality software development practices
Covers various quality metrics and their calculation, enabling learners to measure and improve software quality
Examines quality aspects in different stages of the software development lifecycle, from design to testing and deployment
Taught by Kevin Wendt, an experienced instructor in software development

Save this course

Save Engineering Practices for Building Quality Software to your list so you can find it easily later:
Save

Reviews summary

Quality software engineering practices course

According to students, this course is a solid choice for gaining valuable knowledge about quality software engineering practices. Learners say it offers engaging assignments, such as video presentations and peer reviews, that enhance their understanding of key concepts. The course's focus on industry standards and current trends is particularly well received, and many students appreciate the inclusion of practical examples. However, some students note that the course could benefit from more visual support and a reduction in the number of readings.
Course materials align with current industry practices.
"An amazing course that helps to learn the current standard industries in software development"
"I believe I've gained a lot of information from this course and I did enjoy the learning process"
"Once you already practical experience this course is enhancement proving and validating your skills."
Course offers challenges that lead to significant learning.
"It was a great journey, I'd like really to thank you"
"Well written and challenging. I learned a lot throughout!"
"Very challenging course but I have to say that I have learned a lot. "
Course emphasizes quality in software development.
"The course gives a new insight on the software development life cycle in terms terms of quality."
"The course covers a wide range of topics, without explaining any of them in detail."
"I learned a lot about evaluating different kinds of complexities etc."
Course materials may have technical issues, such as sound problems or hard-to-read slides.
"I was really looking forward to this particular course, but found the technical issues with many of the lessons to be distracting."
"There were sound problems on a couple of the videos and I found some of the course materials hard to follow."
"In all or nearly all of the videos the Instructor took up half of the screen (I don''t mind looking at the instructor, but in many cases the materials were hard to read on my screen because they were not the focus of the lesson)."
Course materials vary in quality and engagement.
"This course is having much to many readings - they do are interesting sometimes, but this is not the form I'd be expecting from an online course."
"The videos are relatively boring, with few slides that are vastly discussed, but without major substance."
"Overall the course will point you to many external readings, with even some of the links being broken."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Engineering Practices for Building Quality Software with these activities:
Review object-oriented programming concepts
Review the fundamental principles of object-oriented programming to enhance your understanding and preparation for the course.
Show steps
  • Revisit the concept of classes and objects
  • Review inheritance and polymorphism
  • Refresh your knowledge on design patterns
Read 'Clean Code' by Robert C. Martin
Gain insights into best practices for writing clean, well-structured, and maintainable code, which is essential for building high-quality software.
View CLEAN CODE on Amazon
Show steps
  • Read the chapters on naming conventions and code organization
  • Follow the guidelines for writing readable and maintainable code
Create a diagram illustrating software architecture
Enhance your understanding of software architecture by creating a visual representation of a system's components, their relationships, and their interactions.
Browse courses on Software Architecture
Show steps
  • Identify the key components of the system
  • Determine the relationships between the components
  • Create a diagram using UML or a similar notation
Four other activities
Expand to see all activities and additional details
Show all seven activities
Practice writing unit tests for different scenarios
Strengthen your ability to write effective unit tests, ensuring the reliability and robustness of your code.
Browse courses on Unit Testing
Show steps
  • Write unit tests for positive and negative scenarios
  • Test for edge cases and boundary conditions
Attend a workshop on code versioning
Gain practical experience with version control tools, enabling effective collaboration and tracking of code changes.
Browse courses on Version Control
Show steps
  • Learn how to use a version control system like Git
  • Practice branching and merging
Participate in a coding competition
Test your problem-solving abilities and coding skills by participating in a coding competition, fostering innovation and excellence in software development.
Browse courses on Competitive Programming
Show steps
  • Choose a coding competition and register
  • Practice solving coding challenges
  • Participate in the competition and submit your solutions
Create a documentation for a software project
Develop your skills in technical writing and documentation by creating a comprehensive document for a software project, ensuring clear communication and understanding of its design, implementation, and usage.
Browse courses on Software Documentation
Show steps
  • Gather information about the software project
  • Organize the documentation into logical sections
  • Write clear and concise instructions and explanations

Career center

Learners who complete Engineering Practices for Building Quality Software will develop knowledge and skills that may be useful to these careers:
Software Test Engineer
A Software Test Engineer tests and evaluates software to ensure it meets quality standards. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Software Quality Assurance Engineer
A Software Quality Assurance Engineer tests and evaluates software to ensure it meets quality standards. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
DevOps Engineer
A DevOps Engineer collaborates with software developers and operations teams to ensure the smooth and efficient delivery of software applications. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Software Development Manager
A Software Development Manager leads and manages software development teams. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Software Engineer
A Software Engineer designs, develops, and maintains software applications. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Quality Assurance Analyst
A Quality Assurance Analyst tests software applications to ensure they meet quality standards. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Computer Systems Analyst
A Computer Systems Analyst analyzes, designs, and implements computer systems. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Technical Project Manager
A Technical Project Manager leads and manages technical projects. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Software Architect
A Software Architect leads technical initiatives and translates business requirements into software solutions. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Information Technology Consultant
An Information Technology Consultant provides consulting services to businesses on the use of information technology. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Cybersecurity Analyst
A Cybersecurity Analyst protects computer systems and networks from cyberattacks. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Systems Analyst
A Systems Analyst analyzes and designs business systems. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Business Analyst
A Business Analyst analyzes business needs and requirements. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Network Administrator
A Network Administrator manages and maintains computer networks. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.
Database Administrator
A Database Administrator manages and maintains databases. This course may be useful for those in this role, as it provides a foundation in engineering practices and processes used to build high quality software. The syllabus includes modules on software quality, design, architecture, implementation, and testing.

Reading list

We've selected 13 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Engineering Practices for Building Quality Software.
Provides a set of principles and best practices for writing clean and maintainable code. It valuable resource for software engineers of all levels.
Classic work on design patterns. It provides a catalog of proven design solutions to common software development problems.
Provides a comprehensive guide to software architecture. It covers topics such as modularity, dependency injection, and testing.
Provides a comprehensive overview of agile software development. It covers topics such as Scrum, Kanban, and Test-Driven Development.
Comprehensive textbook on software engineering. It covers all aspects of the software development lifecycle, from requirements gathering to deployment.
Provides a practical introduction to test-driven development. It great resource for software engineers who want to learn how to write better tests.
Provides a comprehensive guide to domain-driven design. It valuable resource for software engineers who want to design complex systems.
Provides a comprehensive guide to software security. It covers topics such as secure coding, threat modeling, and vulnerability management.
Provides a comprehensive guide to software testing. It covers topics such as test planning, test design, and test execution.
Provides a comprehensive guide to software quality assurance. It covers topics such as quality planning, quality control, and quality improvement.
Provides a practical guide to agile testing. It covers topics such as test planning, test design, and test execution in an agile environment.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Engineering Practices for Building Quality Software.
Operations Management and Strategy Toolkit for Managers
Continuous Inspection and Configuration Management -...
Continuous Integration
ICAgile (ICP-PRG): Building and Integrating
End-to-end Software Development with Team Foundation...
Agile Software Development
Product Design, Prototyping, and Testing
Exploring Lean Principles
Practical Team Management for Software Engineers
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser