- Level Professional
- المدة 18 ساعات hours
- الطبع بواسطة University of Minnesota
-
Offered by
عن
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.الوحدات
What is Quality?
1
Videos
- What is Quality Software?
1
Readings
- Welcome to the course
"Good Design"
1
Discussions
- What is Software?
1
Videos
- What is good design?
2
Readings
- Quality Attributes according to Microsoft
- CMU SEI Technical Report on Quality Attributes
Quality Metrics
1
Discussions
- Are these useful?
3
Videos
- Measuring Coupling
- Measuring Cohesion
- Additional Measures of Quality
4
Readings
- Coupling Factor
- Lack of Cohesion of Methods
- Lack of Documentation (as a metric)
- Metric Definitions - SonarQube
Software Design Patterns
3
Videos
- Introduction to Patterns and the Observer Pattern
- Strategy Pattern
- Adapter Pattern
5
Readings
- Further Reading on Observer Pattern
- Further Readings on Strategy Pattern #1
- Further Readings on Strategy Pattern #2
- Further Readings on Adapter #1
- Further Readings on Adapter #2
Quiz: Quality in Design
1
Assignment
- Quality in Design
Introduction to Software Architecture Quality
1
Peer Review
- Assessing Quality through Scenarios
4
Videos
- What is Software Architecture?
- Architectural Styles
- View, Viewpoint, and Perspective
- Writing Scenarios
1
Readings
- ISO/IEC/IEEE Systems and software engineering — Architecture description
Security as an Architectural Concern
3
Videos
- Security Perspective
- Attack Trees
- Security Tactics
Coding Style
1
Peer Review
- Code Style
1
Discussions
- What is good style?
2
Videos
- Code Style
- Code Style Examples
2
Readings
- Tabs vs. Spaces
- Bad Coding Standards
Debugging and Static Analysis
1
Peer Review
- Static Analysis
2
Videos
- Debugging
- Static Analysis
1
Readings
- Static Analysis Tools
Comments and Self-Documentation
1
Peer Review
- Commenting
1
Discussions
- Commenting vs. Self-documentation
1
Videos
- Commenting
Version Control and Build Process
2
Videos
- Version Control Systems
- Build Process
5
Readings
- Git and GitHub
- Intro to Make
- A closer look at Apache Ant
- Gradle
- Comparison: Ant, Maven, and Gradle
Quiz: Quality in Implementation
1
Assignment
- Quality in Implementation
Testing
3
Videos
- Test Selection
- Test Adequacy
- Test-Driven Development
3
Readings
- More Details of Code Coverage
- MC/DC Example
- Minimum Acceptable Code Coverage
Deployment
2
Videos
- Continuous Integration
- Continuous Delivery / Continuous Deployment
12
Readings
- Jenkins - Getting Started
- Jenkins Pipelines
- SonarQube
- SQALE Indices and Indicators
- SonarQube Open Source Project Hosting
- ovirt-root on SonarCloud
- Netflix's Spinnaker
- Spinnaker
- Textbook in the field
- Deployment Best Practices
- More Deployment Info
- Beyond "Continuous"
Quiz: Quality in Testing and Deployment
1
Assignment
- Quality in Testing and Deployment
Auto Summary
"Engineering Practices for Building Quality Software" is an in-depth, intermediate-level course designed for individuals with a solid background in software development. The program delves into essential engineering practices and processes that both agile and traditional teams utilize to adapt to change efficiently, ensuring that software quality remains uncompromised. Guided by an expert instructor from Coursera, you'll explore a range of practices, techniques, and processes aimed at constructing high-quality software. Key topics include calculating quantitative metrics related to software quality and learning how to integrate these practices into your development workflow. With a total duration of 1080 minutes, this course is perfect for professionals looking to enhance their understanding of software quality beyond mere program correctness. Ideal candidates should have experience with modern programming languages such as Java, C#, Python, or JavaScript, and be familiar with software development lifecycle models and UML diagrams. Upon completion, you'll be equipped to effectively engage in methods that promote secure, high-quality software development. Subscription options include Starter and Professional plans, offering flexibility to suit your learning needs. Join this course to elevate your engineering rigor and embrace change smoothly in your software projects.

Kevin Wendt