Book Image

Hands-On Software Architecture with C# 8 and .NET Core 3

By : Francesco Abbruzzese, Gabriel Baptista
Book Image

Hands-On Software Architecture with C# 8 and .NET Core 3

By: Francesco Abbruzzese, Gabriel Baptista

Overview of this book

<p>Software architecture is the practice of implementing structures and systems that streamline the software development process and improve the quality of an app. With this software architecture book, you’ll follow a hands-on approach to learning various architectural methods that will help you develop and deliver high-quality products. </p><p>You’ll begin by understanding how to transform user requirements into architectural needs and exploring the differences between functional and non-functional requirements. Next, you’ll explore how to carefully choose a cloud solution for your infrastructure, along with covering dos and don’ts that will help you manage your app in a cloud-based environment. Later chapters will cover techniques and processes such as DevOps, microservices, and continuous integration, along with providing insights into implementing them using Microsoft technologies such as ASP.NET Core, the Entity Framework, Cosmos DB, and Azure DevOps. You will also learn about testing frameworks and automation tools that will help you through the development process. Finally, you’ll discover design patterns and various software approaches that will allow you to solve common problems faced during development. </p><p>By the end of this book, you’ll be able to develop and deliver highly scalable enterprise-ready apps that meet customers’ business needs.</p>
Table of Contents (28 chapters)
Free Chapter
1
Section 1: Transforming Customer Needs in Real-World Applications
5
Section 2: Architecting Software Solutions in a Cloud-Based Environment
11
Section 3: Applying Design Principles for Software Delivered in the 21st Century
17
Section 4: Programming Solutions for an Unavoidable Future Evolution
21
Section 5: Delivering Software Continuously and at a High Quality Level

Understanding the purpose of functional tests

Functional/acceptance tests use techniques similar to unit and integration tests but differ from them in that they are run only at the end of each sprint. They have the fundamental role of verifying that the current version of the whole software complies with its specifications. This verification is turned into a formal process for the following purposes:

  • Functional tests represent the most important part of the contract between stakeholders and the development team, the other part being the verification of non-functional specifications. The way this contract is formalized depends on the very nature of the relationship between the development team and stakeholders. In the case of a supplier-customer relationship, they become part of the supplier-customer business contract for each sprint, and they are written by a team that works...