Hands-On Software Engineering with Python
Brian Allbee更新时间:2021-06-24 18:21:24
最新章节:Leave a review - let other readers know what you thinkcoverpage
Title Page
Humble Bundle
Packt Upsell
Why subscribe?
Packt.com
Contributors
About the author
About the reviewers
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Conventions used
Get in touch
Reviews
Programming versus Software Engineering
The bigger picture
Asking questions
Summary
The Software Development Life Cycle
Pre-development phases of the SDLC
Initial concept/vision
Concept development
Project management planning
Development – specific phases of the SDLC
Requirements analysis and definition
System architecture and design
Development and quality assurance
System integration testing and acceptance
Post-development phases of the SDLC
Summary
System Modeling
Architecture both logical and physical
Logical architecture
Physical architecture
Use cases (business processes and rules)
Data structure and flow
Interprocess communication
System scope and scale
Summary
Methodologies Paradigms and Practices
Process methodologies
Waterfall
Agile (in general)
Scrum
Scrum and the phases of the SDLC model
Kanban
Kanban and the phases of the SDLC model
Other Agile methodologies
Extreme programming
Feature-driven development
Test-driven design
Development paradigms
Object-oriented programming
Functional programming
Development practices
Continuous integration
Continuous delivery or deployment
Summary
The hms_sys System Project
Goals for the system
What's known/designed before development starts
What the iteration chapters will look like
Iteration goals and stories
Writing and testing the code
Post-development considerations and impact
Summary
Development Tools and Best Practices
Development tools
Integrated Development Environment (IDE) options
IDLE
Geany
Eclipse variations + PyDev
Others
Source Code Management
Typical SCM activities
Git
Subversion
Basic workflows for Git and SVN compared
Other SCM options
Best practices
Standards for code
PEP-8
Internal standards
Code organization in modules
Structure and standards for classes
Function and method annotation (hinting)
Process standards
Unit testing
Repeatable build processes
Integrating unit tests and build processes
Defining package structures for Python code
Packages in a project's context
Using Python virtual environments
Summary
Setting Up Projects and Processes
Iteration goals
Assembly of stories and tasks
Setting Up SCM
Stubbing out component projects
Component project analysis
Component project setup
Packaging and build process
Python virtual environments
Basic unit testing
Identifying missing test case classes
Identifying missing test methods
Creating reusable module code coverage tests
The property and method testing decorators
Creating unit test template files
Integrating tests with the build process
Summary
Creating Business Objects
Iteration goals
Assembly of stories and tasks
A quick review of classes
Implementing the basic business objects in hms_sys
Address
BaseArtisan
OO principles – composition over inheritance
Implementing BaseArtisan's properties
Implementing BaseArtisan's methods
BaseCustomer
BaseOrder
BaseProduct
Dealing with duplicated code – HasProducts
Summary
Testing Business Objects
Starting the unit testing process
Unit testing the Address class
Unit testing HasProducts
Unit testing BaseProduct
Unit testing BaseOrder
Unit-testing BaseCustomer
Unit testing BaseArtisan
Unit testing patterns established so far
Distribution and installation considerations
Quality assurance and acceptance
Operation/use maintenance and decommissioning considerations
Summary
Thinking About Business Object Data Persistence
Iterations are (somewhat) flexible
Data storage options
Relational databases
Advantages and drawbacks
MySQL/MariaDB
MS-SQL
PostgresQL
NoSQL databases
Advantages and drawbacks
MongoDB
Other NoSQL options
Other data storage options
Selecting a data storage option
Polymorphism (and programming to an interface)
Data access design strategies
Data access decisions
Why start from scratch?
Summary
Data Persistence and BaseDataObject
The BaseDataObject ABC
Unit testing BaseDataObject
Summary
Persisting Object Data to Files
Setting up the hms_artisan project
Creating a local file system data store
Implementing JSONFileDataObject
The concrete business objects of hms_artisan
Dealing with is_dirty and properties
hms_artisan.Artisan
hms_artisan.Product
hms_artisan.Order
Summary
Persisting Data to a Database
The Artisan Gateway and Central Office application objects
Picking out a backend datastore engine
The data access strategy for the Central Office projects
Supporting objects for data persistence
RDBMS implementations
The concrete business objects of the Central Office projects
hms_core.co_objects.Artisan
hms_core.co_objects.Product
Other hms_core.co_objects classes
Accounting for the other CRUD operations
Summary
Testing Data Persistence
Writing the unit tests
Testing hms_artisan.data_storage
Testing hms_artisan.artisan_objects
Testing the new hms_core Classes
Unit testing hms_core.data_storage.py
Unit testing hms_core.co_objects.py
Unit tests and trust
Building/distribution demonstration and acceptance
Operations/use maintenance and decommissioning considerations
Summary
Anatomy of a Service
What is a service?
Service structure
Configuration
Windows-style .ini files
JSON files
YAML files
Logging service activities
Handling requests and generating responses
Filesystem – based
HTTP- or web-based
Message- queue-based
Other request types
Request and response formats
A generic service design
The BaseDaemon ABC
The BaseRequestHandler and BaseResponseFormatter ABCs
Integrating a service with the OS
Running a service using systemctl (Linux)
Running a service using NSSM (Windows)
macOS launchd and launchctl
Managing services on other systems
Summary
The Artisan Gateway Service
Overview and goal
Iteration stories
Messages
Deciding on a message-transmission mechanism
Message-queue implementation with RabbitMQ
Handling messages
Queues and related Artisan properties
Requirements for a web-service-based daemon
Traffic to and from the service
Impacts on testing and deployment
Summary
Handling Service Transactions
Remaining stories
A bit of reorganization
Preparation for object transactions
Product object transactions
Artisan – creating a product
Central Office – approving/listing a product
Central Office – altering product data
Artisan – updating product data
Artisan – deleting a product
Artisan object transactions
Central Office – creating an artisan
Central Office – updating artisan data
Central Office – deleting an artisan
Artisan – updating Artisan data
Order object transactions
Customer – relaying order items to artisans
Customer – canceling an order
Artisan – fulfilling an item in an order
When do messages get sent?
Summary
Testing and Deploying Services
The challenges of testing services
The overall testing strategy
Unit testing variations of note
Testing Artisan transactions
Demonstrating the service
Packaging and deploying the service
Common considerations across all operating systems
Linux (systemd) execution
Windows (NSSM) execution
Where hms_sys development could go from here
Code review refactoring and cleanup
Developing a UI
Order fulfilment and shipping APIs
Summary
Multiprocessing and HPC in Python
Common factors to consider
A simple but expensive algorithm
Some testing setup
Local parallel processing
Threads
Parallelizing across multiple machines
Common functionality
The Worker nodes
The Orchestrator
The Dispatcher
Integrating Python with large-scale cluster computing frameworks
Python Hadoop and Spark
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
更新时间:2021-06-24 18:21:24