This is the first in a series of articles on the six sections of Cisco’s DevNet Associate Exam DEVASC 200-901, which leads to the Cisco Certified DevNet Associate certification.
Welcome to the first of the series of six articles where I will break down the blueprint sections for the DEVASC 200-901 exam. There are six major topic areas in this 120 minute exam.
If you are new to software development and design, this section will serve as a level set with key design patterns and tools used to develop and test software. This section isn’t as heavily weighted as some of the other sections at only 15% but every point counts towards passing this exam, so let’s get started.
1.1 Compare data formats (XML, JSON, and YAML)
1.2 Describe parsing of common data format (XML, JSON, and YAML) to Python data structures
1.3 Describe the concepts of test-driven development
1.4 Compare software development methods (agile, lean, and waterfall)
1.5 Explain the benefits of organizing code into methods / functions, classes, and modules
1.6 Identify the advantages of common design patterns (MVC and Observer)
1.7 Explain the advantages of version control
1.8 Utilize common version control operations with Git
In order to be successful on this exam, you must have a cursory knowledge of structured data. Machine readable definition files are encoded with XML, JSON, or YAML. The following example represents the same router interface configuration data serialized in all three formats.
How can I use this structured data representing my router configurations in my Python scripts? There are numerous libraries available on the Internet that can help you deserialize or parse data. When you parse data from data formats, you need to know how the actual conversion is going to happen inside your Python code. In other words, when using Python scripts the encoded data above needs to convert to Python dictionaries and other array structures and vice versa.
Software Design and Best practices
In the previous example, we jumped right into manipulating data in Python. However, we should really take a step back to understand how to design, develop, and test our code. In fact, there is much to learn about software development and a big chunk of it is incorporated into design patterns. Design patterns dive into separate components and ensure that the optimal coding best practices are selected to avoid technical debt. For example, modular coding has a small dependency scope, which in turn is simpler and easier to maintain. To that end, we must explore functions, classes, and modules.
Architectural patterns extend across modules with a focus on large-scale components and structures of a complete system. The Model-View-Controller (MVC) architectural pattern is very popular with most programming languages. Testing should be incorporated into every design as a means to illuminate mistakes. Test Driven Development starts with creating success criteria for a test and working backwards by developing and iterating the code until the code meets the criteria.
Lastly, there’s version control. Let’s all share in the pain, “I mean fun,” and learn to code as a team. Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Lucky for us Git is fairly easy to learn. As for the exam blueprint, we need to become familiar with the basics of downloading “clone,” a repository from a remote repository such as Github.com, managing a local repository with Git CLI, and ultimately pushing the changes back to the remote repository.
These Software Development and Design topics are also covered in the DEVASC Developing Applications and Automating Workflows Using Cisco Core Platforms class. Thank you for reviewing this explanation and breakdown of the Software Development and Design section of the DevNet Associate blueprint. Hopefully it contributes towards your success.