Skip to content

Latest commit

 

History

History
134 lines (78 loc) · 10.1 KB

File metadata and controls

134 lines (78 loc) · 10.1 KB

零、前言

最终,本书的目的是说明实用的软件工程原理,以及如何将其应用于 Python 开发。为此,这本书的大部分致力于探索和实施我认为是一个现实范围,但可能不现实的项目:一个分布式的产品管理和订单履行系统。在许多情况下,功能是从头开始开发的,并且从第一原理出发,建立在系统的基础上的基本概念和假设。在真实场景中,很可能会有现成的解决方案来处理许多实现细节,但我认为,揭示底层理论和需求对于理解事物为何以这种方式工作至关重要。我相信,这是编程和软件工程区别的一个重要部分,无论使用何种语言。

Python 在许多方面都是一种罕见的野兽,它是一种动态语言,但它是强类型的。它也是一种面向对象的语言。这些,加在一起,形成了一个令人惊讶的灵活,有时令人惊讶的强大的语言。尽管我的观点是这样的,但我坚信您很难找到另一种语言,它通常与 Python 一样强大,并且同样易于编写和维护代码。Python 在官方网站(上列出了各种各样的成功故事,这一点我一点也不感到惊讶 https://www.python.org/about/success/ )。Python 是至少两家知名公共云提供商 Amazon 和 Google 支持的核心语言之一,这也并不让我感到惊讶。即便如此,它仍然经常被认为只是一种脚本语言,我真诚地希望这本书也能证明这种观点是错误的。

这本书是给谁的

这本书的目标是具有一些 Python 经验的开发人员,他们希望将他们的技能从“仅仅编写代码”扩展到更关注“软件工程”。假定了解 Python 基础函数、模块和包,以及它们与项目结构中的文件的关系,以及如何从其他包导入功能

这本书涵盖的内容

第 1 章编程与软件工程讨论了编程(仅仅编写代码)与软件工程之间的区别,以及它们的学科、思维方式和分支。

第 2 章软件开发生命周期审查了详细的软件开发生命周期,特别关注与软件工程相关的输入、需求和结果。

第 3 章系统建模探讨了系统及其组件的功能、数据流和进程间通信方面的建模和图解的不同方法,以及这些方法提供的与软件工程相关的信息。

第 4 章方法、范例和实践在回顾面向对象编程OOP之前,深入研究了当前的流程方法,包括一些敏捷流程变体,分析了每种方法的优缺点和函数式编程范例。

第 5 章**hms_ 系统项目介绍了通过本书使用的示例项目背后的概念,以练习软件工程设计和开发思维。

*第 6 章开发工具和最佳实践研究了一些更常见(或至少是现成的)开发工具,用于编写代码和以减少持续开发工作和风险的方式管理代码。

第 7 章建立项目和流程介绍了一个可用于任何 Python 项目或系统的示例结构,以及建立一个与源代码管理、自动测试兼容的公共起点背后的思想过程,以及可重复的构建和部署过程。

第 8 章创建业务对象开始hms_sys项目的第一次迭代,定义核心库业务对象数据结构和功能。

第 9 章测试业务对象在设计、定义并执行迭代期间定义的业务对象代码的可重复自动测试后,结束hms_sys项目的第一次迭代。

第 10 章思考业务对象数据持久性,研究了应用程序中数据持久性的常见需求、一些更常见的机制,以及为各种实现需求选择“最佳匹配”数据存储解决方案的标准。

第 11 章数据持久化和 BaseDataObject开始了hms_sys项目的第二次迭代,设计并实现了一种通用的抽象数据访问策略,可在项目的任何组件中重复使用。

第 12 章将对象数据持久化为文件继续第二次迭代的工作,具体实现了将业务对象数据持久化为本地文件的抽象数据访问层DAL)。

第 13 章将数据持久化到数据库,实现了一个具体的 DAL,该 DAL 从常用的 NoSQL 数据库 MongoDB 存储和检索数据,并将该方法与等效的基于 SQL 的 DAL 的要求进行了比较。

第 14 章测试数据持久性通过对迭代期间构建的两种 DAL 策略的不同实现进行自动化测试,结束了hms_sys项目的第二次迭代。

第 15 章对服务的剖析,分析了独立服务的常见功能需求,并通过构建抽象服务/守护程序类进行工作,这些抽象服务/守护程序类可重用,用于创建各种具体的服务实现。

第 16 章Artisan 网关服务开始了hms_sys项目的第三次迭代,分析了系统组件的通信需求、实现这些通信的几个选项、保护它们的安全,并最终将其融入到项目核心服务的具体实施中。

第 17 章处理服务事务考虑了hms_sys组件之间所有必要的业务对象通信,提取了所有组件的一些通用功能,并完成了实现这些组件所需的流程。

第 18 章测试和部署服务在书中总结了hms_sys的开发,并调查和解决了服务/守护程序应用程序的一些常见自动测试问题。

第 19 章Python 中的多进程和 HPC介绍了编写 Python 代码所涉及的理论和基本实践,这些代码可以扩展到一台机器上的多个处理器,也可以扩展到集群计算环境中的多台机器,并提供在常见高性能计算系统上执行 Python 代码的起点代码结构变体。

充分利用这本书

具体而言,您应该了解以下内容:

  • 如何下载和安装 Python(在编写本书时使用了 3.6.x,但这里的代码预期在 3.7.x 中工作,几乎没有修改)
  • 如何编写 Python 函数
  • 如何编写基本 Python 类
  • 如何使用 pip 安装 Python 模块,以及如何将模块导入代码

下载示例代码文件

您可以从您的账户www.packt.com下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packt.com/support并注册,将文件通过电子邮件直接发送给您。

您可以通过以下步骤下载代码文件:

  1. 登录或注册www.packt.com
  2. 选择“支持”选项卡
  3. 点击代码下载和勘误表
  4. 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作

下载文件后,请确保使用以下最新版本解压或解压缩文件夹:

  • WinRAR/7-Zip for Windows
  • 适用于 Mac 的 Zipeg/iZip/UnRarX
  • 适用于 Linux 的 7-Zip/PeaZip

该书的代码包也托管在 GitHub 上的**https://github.com/PacktPublishing/** 使用 Python进行软件工程实践。我们的丰富书籍和视频目录中还有其他代码包,请访问https://github.com/PacktPublishing/ 。看看他们!

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载:https://www.packtpub.com/sites/default/files/downloads/9781788622011_ColorImages.pdf

使用的惯例

本书中使用了许多文本约定。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。下面是一个示例:src目录中是项目的包树

代码块设置如下:

def SetNodeResource(x, y, z, r, v):
    n = get_node(x,y)
    n.z = z
    n.resources.add(r, v)

当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:

 def __private_method(self, arg, *args, **kwargs):
        print('%s.__private_method called:' % self.__class__.__name__)
        print('+- arg ...... %s' % arg)
        print('+- args ..... %s' % str(args))
        print('+- kwargs ... %s' % kwargs)

任何命令行输入或输出的编写方式如下:

$python setup.py test

粗体:表示一个新术语、一个重要单词或您在屏幕上看到的单词,例如在菜单或对话框中,也会出现在文本中,如下所示。例如:“从管理面板中选择系统信息。”

Warnings or important notes appear like this. Tips and tricks appear like this.

联系

我们欢迎读者的反馈。

一般反馈:发送电子邮件customercare@packtpub.com并在邮件主题中提及书名。如果您对本书的任何方面有疑问,请发送电子邮件至customercare@packtpub.com

勘误表:尽管我们已尽一切努力确保内容的准确性,但还是会出现错误。如果您在本书中发现错误,如果您能向我们报告,我们将不胜感激。请访问www.packt.com/submit-errata,选择您的书籍,点击 errata 提交表单链接,并输入详细信息。

盗版:如果您在互联网上发现我们作品的任何形式的非法复制品,请您提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packt.com与我们联系,并提供该材料的链接。

如果您有兴趣成为一名作家:如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请访问authors.packtpub.com

评论

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在读者可以看到并使用您的无偏见意见做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们书籍的反馈。非常感谢。

有关 Packt 的更多信息,请访问packtpub.com。*