2. 上下文和背景
在这一章中,我们为程序设计语言的学习建立了一个实际的背景,并提供了一些背景信息。
2.1. 轻量级开发过程概述
一个成功的开发流程通常包括以下最基本的要素:
-
测试代表对软件应该如何运行的期望
当表示为代码时,它们是
制作起来很有趣(就像其他编码一样)
便于频繁运行
修复被测系统(SUT)(而不是测试本身),直到测试通过
每次都要重新测试
将添加一个要素
代码被重构
-
在不更改其行为的情况下提高代码质量
宏观层面:非功能性需求(质量因素)
微观层面: code smells
这个 process tree 示例说明了使用各种托管服务的持续集成:
Travis CI: 持续集成
Codecov: 测试覆盖范围
Codacy: 自动代码审查
IssueStats 和 IsItMaintained :有关问题和拉取请求的统计信息
这个 click counter 示例包括适用于移动应用程序开发的其他托管持续集成和交付目标。
2.2. 软件要求
在大多数情况下,我们开发软件是为了提供某种形式的价值:
学习语言、库、框架、平台、技术或工具(另请参阅 ThoughtWorks Technology Radar )
解决问题
生成资产
这三个活动之间通常会有一些紧张。
需求的基本类别包括
功能(FR)
作为输入函数的输出: y = f(x)
或对可观察行为的某些其他描述
批次
交互式/基于事件
非功能性(NFR):其他属性 f ,例如
可测试性
最重要的非功能需求
允许测试是否满足功能要求
良好的体系结构通常会产生副作用(APPP,第36-38页),例如将I/O与核心功能分开
性能
可扩展性
例如,大型数据集的性能:复杂度的渐近顺序
(BIG-OH)根据输入大小n
可靠性
可维护性
静电与动态NFR
出现了几个与需求相关的常见问题和问题:
需求与项目开发生命周期有何关系?
BUFD与MVP
测试和重构与需求有何关系?
Kazman的下图涉及单元操作(重构的高级概括)和软件质量因素(非功能性需求)。

2.3. 软件设计原则和模式
软件开发社区已经确定了旨在指导设计和开发过程的各种原则,例如:
社区还发展了一批 design patterns 表示重复出现的问题的可重复使用的解决方案。我们在本课程中将依赖的一些关键设计模式包括
迭代器
战略
命令
复合材料
装饰师
访客
抽象工厂
观察者
我们将根据需要在整个课程中复习这些内容。
备注
特定于语言的设计模式称为 成语 。
2.4. 编程语言的历史和范例
本节中的资源涵盖计算的基本模型、语言范例和语言原则。
overview talk L和特里鲁瓦图卡尔著
附录:编程语言设计原则 作者:麦克伦南
待处理
扩展到适当的部分
2.5. 人气指数与业绩比较
有许多编程语言流行指数和性能比较。在从这些指数中得出任何结论之前,了解它们的 方法论 。