Application Security Testing: An Integral Part of DevOps
Introduction: Visual Studio Architecture and Design Tools
Microsoft Visual Studio offers architecture and modeling tools to design and model your application. These tools are available in the Enterprise edition. By using these tools, architects can make sure the application meets the specified architectural requirements. Modeling tools help you understand existing program code more easily by visualizing the code's structure, behavior, and relationships. Developers can create models at different levels of detail throughout the application lifecycle as part of the development process. Architecture and modeling also help developers understand the dependencies over the modules while coding.
Following are the list of models and their usage present under the Visual Studio architecture menu (see Figure 1).
Figure 1: Visual Studio Architecture Menu
Visual Studio Ultimate Edition provides Unified Modeling Language (UML) models to help developers creating architectural diagrams to represent and design software systems. The UML model explorer has templates for five of the most frequently used UML diagrams, such as activity, class, component, sequence, and use case. You can customize UML to suit your application domain.
UML models are typically used to describe requirements and design. A developer can quickly apply UML during the development of any application.
Layer diagrams let developers define the structure of an application as a set of layers, or blocks, with explicit dependencies. Developers can use a layer diagram to visualize the high-level, logical architecture of the system. It organizes the physical artifacts of a system into logical, abstract groups, called layers. To meet software design requirements, layer diagrams are used to describe the desired dependencies for the software. A developer can validate code with layer diagrams in Visual Studio to make sure that code doesn't conflict with its design. Layer diagrams also could be used for stabilizing the structure of the application through numerous changes over its life.
Domain-Specific Language (DSL)
Domain-Specific Language Tools (DSL Tools) is a notation in Visual Studio that lets a developer design a domain-specific language and create models that are based on a specific language. DSL is typical used to generate or configure parts of the application. For large projects, DSL tools are very useful.
Following is the list of features included in DSL:
- A wizard that uses different solution templates to help you start developing your domain-specific language.
- A graphical designer for creating and editing your domain-specific language definition.
- A validation engine that makes sure that the domain-specific language definition is well-formed, and displays errors and warnings if there are problems.
- A code generator that takes a domain-specific language definition as input and produces source code as output.
Following are the Modeling SDK tools for Visual Studio 2015 and 2010:
- Microsoft Visual Studio 2015 Modeling SDK: The Modeling SDK for Visual Studio 2015 contains Domain-Specific Languages (DSL Tools) and the Architecture Tools SDK for Visual Studio 2015. This SDK provides tools and templates for building Domain-Specific Language designers and extending UML. You can build your own graphical or form-based designers for Visual Studio 2015 and extend existing tools.
- Microsoft Visual Studio 2010 Visualization and Modeling SDK: Domain-Specific Languages (DSL Tools) and Architecture Tools SDK for Microsoft Visual Studio 2010. This SDK provides tools and templates for building Visual Studio Domain-Specific Language designers for Visual Studio 2010 and extending UML and Layer designers. By using this SDK, you can build your own graphical or form-based designers for Visual Studio 2010 and extend existing tools.
In Visual Studio, you can use a dependency diagram to visualize the high-level, logical architecture of your system. Visual Studio architecture explorer lets you browse the solution, select projects and the relationships that you want to visualize, and then create a dependency graph from your selection. A dependency diagram organizes the physical artifacts in your system into logical, abstract groups called layers. These layers describe major tasks that the artifacts perform or the major components of your system.
Code maps help you see the organization and relationships in your code. You can avoid getting lost in large code bases, unfamiliar code, or legacy code. When you're debugging, you might have to look at code across many files and projects. Use code maps to navigate around pieces of code and understand the relationships between them. Code maps also help developers to examine program code so you can better understand its structure and its dependencies.
Architecture and modeling helps developers understand various dependencies. In the major release of Visual Studio 2017, some new features of Architecture, Design, and Modeling have been improved.
Note: The Code Map module, mentioned above, is fully supported in the Visual Studio 2017 Professional/Community editions only. Code Map is a recommended component for the .NET Desktop Development workload, but a developer can install it in any workload if you go to Individual Components and look for it under Code Tools.