Software Architecture with Python
0.0 (0 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
3 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Software Architecture with Python to your Wishlist.

Add to Wishlist

Software Architecture with Python

Design applications in Python
0.0 (0 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
3 students enrolled
Created by Packt Publishing
Last updated 9/2017
English [Auto-generated]
Current price: $12 Original price: $125 Discount: 90% off
3 days left at this price!
30-Day Money-Back Guarantee
  • 2.5 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion

Training 5 or more people?

Get your team access to Udemy's top 2,000 courses anytime, anywhere.

Try Udemy for Business
What Will I Learn?
  • Characteristics and importance of software architecture
  • Learn Architectural quality attributes
  • Understand readability
  • Explore strategies for modifiability
  • Look at white box testing principles
  • See TDD with palindromes in detail
  • Measure performance
  • Look at profiling
View Curriculum
  • The video is filled with examples to understand principles of software architecture.

This video starts off by explaining how Python fits into an application architecture. As you move along, you will understand the architecturally significant demands and how to determine them. Later, you’ll get a complete understanding of the different architectural quality requirements that help an architect to build a product that satisfies business needs, such as maintainability or reusability, testability, scalability, performance, usability, and security.

This video will help you understand the ins and outs of Python so that you can make those critical design decisions that not just live up to but also surpass the expectations of your clients.

About The Author

Anand Balachandran Pillai is an Engineering and Technology professional with over 18 years of experience in the software industry in Product Engineering, Software Design & Architecture and Research.

He has worked at companies such as Yahoo!, McAfee, and Infosys in the roles of Lead Engineer and Architect in product development teams, to build new products.

He is the founder of the Bangalore Python Users Group and a Fellow of the Python Software Foundation (PSF).

Anand is currently working as Senior Architect of Yegii Inc.

Who is the target audience?
  • This book is for experienced Python developers who are aspiring to become the architects of enterprise-grade applications or software architects who would like to leverage Python to create effective blueprints of applications.
Compare to Other Python Courses
Curriculum For This Course
18 Lectures
Principles of Software Architecture
4 Lectures 31:07

This video gives an overview of the entire course.

Preview 03:11

Architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution.

Defining Software Architecture

An architecture of a system is best represented as structural details of the system and here we will see some of the characteristics of software architecture.

Characteristics of Software Architecture

The term quality attribute has been used to loosely define some of these aspects that an architecture makes trade-offs for.

Architectural Quality Attributes
Modifiable and Readable Code
5 Lectures 31:34

The readability of a software system is closely tied to its modifiability. Well-written, well-documented code, keeping up with standard or adopted practices for the programming language, tends to produce simple, concise code that is easy to read and modify.

Preview 08:10

Cohesion and coupling are the main fundamentals of modifiability.

Fundamentals of Modifiability

Now that we have seen some examples of good and bad coupling and also cohesion, let us get to the strategies and approaches that a software architect can adopt to improve the modifiability of the software system.

Exploring Strategies for Modifiability

Static code analysis tools can provide a rich summary of information on the static properties of your code, which can provide insights into aspects like complexity and modifiability/readability of the code.

Metrics - Tools for Static Analysis

Now that we have seen how static checkers can be used to report a wide range of errors and issues in our Python code, let us do a simple exercise of refactoring our code. We will take our poorly defined metric test module as the use case (the first version of it), and perform a few refactoring steps.

Refactoring Codes
Defining Testable Code
4 Lectures 36:16

A software system with a high level of testability provides a high degree of exposure of its faults through testing, thereby giving the developers higher accessibility to the system's issues, and allowing them to find and fix bugs faster.

Preview 08:05

From a software architecture perspective, one of the most important steps of testing is at the time the software is developed. The behavior or functionality of a software, which is apparent only to its end users, is an artifact of the implementation details of the software.

Hence, it follows that a system which is tested early and tested often has a higher likelihood to produce a testable and robust system, which provides the required functionality to the end user in a satisfactory manner.

White-Box Testing

Code coverage is measured as the degree to which the source code under test is covered by a specific test suite. Ideally, test suites should aim for higher code coverage, as this would expose a larger percentage of the source code to tests, and help to uncover bugs.

Code Coverage

TDD is an agile practice of software development, which uses a very short development cycle, where code is defined to satisfy an incremental test case.

TDD with Palindromes
Performance Improvisation
5 Lectures 57:03

The degree to which the system is able to meet its throughput and/or latency requirements in terms of the number of transactions per second or time taken for a single transaction.

Preview 07:34

Now that we've had an overview of what performance complexity is and also of performance testing and measurement tools, let us take an actual look at the various ways of measuring performance complexity with Python.

Measuring Performance

Modules in the Python standard library, which provides support for deterministic profiling. The third-party libraries provide support for profiling such as line_profiler and memory_profiler.


Extend tools that will aid the programmer in debugging memory leaks and also enable him to visualize his objects and their relations.

Other Tools

We saw a couple of examples of program optimization to improve the time performance of the code.

Here, we will take a look at common Python data structures and see what their best and worst performance scenarios are and also discuss some situations of where they are an ideal fit and where they may not be the best choice.

Programming for Performance - Data Structures
About the Instructor
Packt Publishing
3.9 Average rating
8,274 Reviews
59,267 Students
687 Courses
Tech Knowledge in Motion

Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.

With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.

From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.

Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.