Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Learning Path: Python: Design and Architect Python Apps
Rating: 3.5 out of 5(36 ratings)
470 students

Learning Path: Python: Design and Architect Python Apps

Get equipped with software architectural principles and build high-performance applications with Python
Last updated 10/2017
English

What you'll learn

  • Understand the characteristics and importance of software architecture
  • Learn architectural quality attributes
  • Learn to identify design issues and make the necessary adjustments to achieve improved performance
  • Get familiar with white box testing principles
  • Explore concurrency and multithreading
  • Learn different categories of design patterns
  • Explore the prototype pattern

Course content

2 sections35 lectures4h 56m total length
  • The Course Overview3:11

           This video gives an overview of the entire course.

  • Defining Software Architecture3:36

    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.

  • Characteristics of Software Architecture11:13

    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.

  • Architectural Quality Attributes13:07

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

  • Understanding Readability8:10

    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.

  • Fundamentals of Modifiability3:59

     Cohesion and coupling are the main fundamentals of modifiability. 

  • Exploring Strategies for Modifiability5:21

    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.

  • Metrics - Tools for Static Analysis9:42

    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.

  • Refactoring Codes4:22

    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.

  • Understanding Testability8:05

    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.

     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 Testing12:34

    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.

  • Code Coverage9:09

    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.

  • TDD with Palindromes6:28

    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.

  • Performance7:34

    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.

  • Measuring Performance13:44

    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.

  • Profiling14:44

    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.

  • Other Tools4:39

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

  • Programming for Performance – Data Structures16:22

    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.

  • Test Your Knowledge

Requirements

  • Prior working knowledge on Python is needed.

Description

Software Architecture is the process of taking operational and technical requirements and designing a solution that optimizes things deemed important to the system like quality, performance, security, and maintainability. If you're a Python developer aspiring to become the architects of enterprise-grade applications or software architects who would like to leverage Python to create effective blueprints of applications, then go for this Learning Path.

Packt’s Video Learning Path is a series of individual video products put together in a logical and stepwise manner such that each video builds on the skills learned in the video before it.

The highlights of this Learning Path are:

●             Understand the characteristics and importance of software architecture

            Solve security issues with web applications

            Explore different design patterns in Python

Let's take a quick look at your learning journey. This Learning Path starts off by explaining how Python fits into an application architecture. You’ll get a complete understanding of the different architectural quality requirements such as maintainability, reusability, testability, scalability, performance, usability, and security to build a product that satisfies business needs. Next, you’ll learn what is scalability and concurrency and the relationship between the two that affects the performance attributes. Further, you’ll learn security aspects of Python. Finally, you’ll learn the creational, structural, and behavioral patterns in Python.

By the end of this Learning Path, you’ll have all the knowledge to become a successful software architect.

Meet Your Expert: 

We have the best works of the following esteemed author to ensure that your learning journey is smooth: 

Anand Balachandran Pillai is an engineering and technology professional with over 18 years of experience in the software industry in product engineering, software design, and architecture and research. He has worked with 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 member of the Python Software Foundation (PSF). Anand is currently working as senior architect in Yegii Inc.

Who this course is for:

  • This Learning Path is for experienced Python developers who are aspiring to become the architects of enterprise-grade applications. This Learning Path is also for software architects who would like to leverage Python to develop Python applications.