Hands-On Software Engineering with Python
Move beyond basic programming and construct reliable and efficient software with complex code
Brian Allbee
- 736 pages
- English
- ePUB (mobile friendly)
- Available on iOS & Android
Hands-On Software Engineering with Python
Move beyond basic programming and construct reliable and efficient software with complex code
Brian Allbee
About This Book
Explore various verticals in software engineering through high-end systems using Python
Key Features
- Master the tools and techniques used in software engineering
- Evaluates available database options and selects one for the final Central Office system-components
- Experience the iterations software go through and craft enterprise-grade systems
Book Description
Software Engineering is about more than just writing codeâit includes a host of soft skills that apply to almost any development effort, no matter what the language, development methodology, or scope of the project. Being a senior developer all but requires awareness of how those skills, along with their expected technical counterparts, mesh together through a project's life cycle. This book walks you through that discovery by going over the entire life cycle of a multi-tier system and its related software projects. You'll see what happens before any development takes place, and what impact the decisions and designs made at each step have on the development process. The development of the entire project, over the course of several iterations based on real-world Agile iterations, will be executed, sometimes starting from nothing, in one of the fastest growing languages in the worldâPython. Application of practices in Python will be laid out, along with a number of Python-specific capabilities that are often overlooked. Finally, the book will implement a high-performance computing solution, from first principles through complete foundation.
What you will learn
- Understand what happens over the course of a system's life (SDLC)
- Establish what to expect from the pre-development life cycle steps
- Find out how the development-specific phases of the SDLC affect development
- Uncover what a real-world development process might be like, in an Agile way
- Find out how to do more than just write the code
- Identify the existence of project-independent best practices and how to use them
- Find out how to design and implement a high-performance computing process
Who this book is for
Hands-On Software Engineering with Python is for you if you are a developer having basic understanding of programming and its paradigms and want to skill up as a senior programmer. It is assumed that you have basic Python knowledge.
Frequently asked questions
Information
Development Tools and Best Practices
- Integrated Development Environment options
- Source Control Management options
- Code and development process standards, including organization of Python code into packages
- Setting up and using of Python virtual environments
Development tools
Integrated Development Environment (IDE) options
- Large-project support: A large project, for the purposes of discussion, involves the development of two or more distinct, installable Python packages that have different environmental requirements. An example might include a business_objects class library that's used by two separate packages such as an online_store and back_office that provide different functionality for different users. The best-case scenario for this would include the following :
- Support for different Python interpreters (possibly as individual virtual environments) in different package projects
- The ability to have and manage interproject references (in this example, the online_store and back_office packages would be able to have useful references to the business_objects library)
- Less important, but still highly useful, would be the ability to have multiple projects open and editable at the same time, so that as changes in one package project require corresponding changes in another, there's little or no context change needed by the developer making those changes
- Refactoring support: Given a long enough period of time, it's inevitable that changes to a system's code without changing how it behaves from an external perspective is going to be necessary. That's a textbook definition of refactoring. Refactoring efforts tend to require, at a minimum, the ability to find and replace entity names in the code across multiple files, possibly across multiple libraries. At the more complex end of the range, refactoring can include the creation of new classes or members of classes to move functionality into a different location in the code, while maintaining the interface of the code.
- Language exploration: The ability to examine code that's used by, but not a part of, a project is helpful, at least occasionally. This is more useful than it might sound, unless you are lucky enough to possess an eidetic memory, and thus never have to look up function signatures, module members and so on.
- Code execution: The ability to actually run the code being worked on is immensely helpful during development. Having to drop out of an editor into a terminal in order to run code, to test changes to it, is a context change, and those are tedious at the least, and can actually be disruptive to the process under the right circumstances.
- Superb
- Great
- Good
- Fair
- Mediocre
- Poor
- Terrible
- The ability to navigate to where a code entity is defined from someplace where it's being used
- Code completion and autosuggestion, which allows the developer to quickly and easily select from a list of entities based on the first few characters of an entity name that they've started typing
- Code coloration and presentation, which provides an easy-to-understand visual indication of what a given block of code is â comments, class, function and variable names, that sort of thing
IDLE
- Large-project support: Poor
- Refactoring support: Poor
- Language exploration: Good
- Code execution: Good
- Bells and whistles: Fair