舉報

會員
Hands-On Software Engineering with Python
SoftwareEngineeringisaboutmorethanjustwritingcode—itincludesahostofsoftskillsthatapplytoalmostanydevelopmenteffort,nomatterwhatthelanguage,developmentmethodology,orscopeoftheproject.Beingaseniordeveloperallbutrequiresawarenessofhowthoseskills,alongwiththeirexpectedtechnicalcounterparts,meshtogetherthroughaproject'slifecycle.Thisbookwalksyouthroughthatdiscoverybygoingovertheentirelifecycleofamulti-tiersystemanditsrelatedsoftwareprojects.You'llseewhathappensbeforeanydevelopmenttakesplace,andwhatimpactthedecisionsanddesignsmadeateachstephaveonthedevelopmentprocess.Thedevelopmentoftheentireproject,overthecourseofseveraliterationsbasedonreal-worldAgileiterations,willbeexecuted,sometimesstartingfromnothing,inoneofthefastestgrowinglanguagesintheworld—Python.ApplicationofpracticesinPythonwillbelaidout,alongwithanumberofPython-specificcapabilitiesthatareoftenoverlooked.Finally,thebookwillimplementahigh-performancecomputingsolution,fromfirstprinciplesthroughcompletefoundation.
目錄(287章)
倒序
- coverpage
- 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
推薦閱讀
- PostgreSQL 11 Server Side Programming Quick Start Guide
- 機器人創新實訓教程
- 完全掌握AutoCAD 2008中文版:綜合篇
- 大型數據庫管理系統技術、應用與實例分析:SQL Server 2005
- 網絡組建與互聯
- 系統安裝與重裝
- 具比例時滯遞歸神經網絡的穩定性及其仿真與應用
- 計算機網絡安全
- Deep Reinforcement Learning Hands-On
- LAMP網站開發黃金組合Linux+Apache+MySQL+PHP
- Microsoft System Center Confi guration Manager
- INSTANT Heat Maps in R:How-to
- Mastering Geospatial Analysis with Python
- 從機器學習到無人駕駛
- 單片機原理、應用與仿真
- 數字媒體交互設計原理與方法
- Bazaar Version Control
- 工業機器人技術基礎
- Learning AWK Programming
- 企業網搭建及應用寶典
- SAS for Finance
- 軸向磁場無刷同步電機理論與設計
- C語言程序設計任務驅動式教程(第2版)(微課版)
- 零基礎學三菱PLC編程:入門、提高、應用、實例
- Visual Basic.NET+SQL Server全程指南
- Word 2003中文字處理考前12小時
- Windows Server 2008系統管理與網絡管理
- 單片機原理及接口技術
- 數據庫應用基礎:Access 2007
- 智能制造裝備及系統