软件构造课程总结(一、二)

《软件构造的多维度视图和质量目标》
  1. 软件系统的构成维度

    • 阶段视图(Build-time vs. Run-time):在构建阶段和运行阶段的不同视图。
    • 动态视图(Moment vs. Period):在特定时刻与阶段性变化的视图。
    • 层次视图(Code vs. Component):代码层次和组件层次的视图。
  2. 软件构造中的转换

    • 软件构造是不同视图之间的转换,如从代码到组件,从构建时到运行时等。
  3. 质量属性

    • 外部质量因素:如性能、可靠性。
    • 内部质量因素:如可维护性、可理解性。
    • 质量属性之间的权衡。
  4. 五个关键质量目标

    • 易理解性:优雅和美观的代码。
    • 可维护性和适应性:易于修改和扩展。
    • 开发成本:设计可重用性。
    • 鲁棒性:减少缺陷和错误。
    • 性能:高效运行。
  5. 软件的构成要素

    • 软件不仅仅是程序代码,还包括数据、文档、模块、控制流等。
  6. 多维度软件视图的具体细节

    • 构建时视图:源码的逻辑和物理组织。
    • 运行时视图:程序在内存中的状态和在物理环境中的部署情况。
    • 代码变化(Code Churn):随时间变化的代码增删改情况。
    • 组件层次的演变:文件、包、库的变化和版本控制。

 

从《Views and Quality Objectives of Software Construction》中总结的知识点包括以下几个方面:

  1. 软件构建视角

    • 工程视角:关注成本、时间和资源的优化,确保软件按时按预算交付。
    • 设计视角:强调软件系统的结构和设计模式,确保系统可扩展、易维护。
    • 用户视角:关注用户体验和用户需求的满足,确保软件易用且功能满足用户需求。
    • 流程视角:强调软件开发流程和实践的标准化和系统化,确保开发过程有序可控。
  2. 软件质量目标

    • 正确性:确保软件功能实现符合需求规格说明书的描述。
    • 可靠性:保证软件在特定条件下能够稳定运行,减少故障发生。
    • 效率:软件应在资源使用和响应时间方面表现良好。
    • 可维护性:代码应易于理解、修改和扩展,以适应未来需求的变化。
    • 可移植性:软件应能在不同环境下运行,适应多种操作系统和硬件平台。

 

《测试与测试优先编程》
  1. 测试的基本概念

    • 测试是软件开发的重要环节,旨在发现并修复软件中的缺陷。
    • 测试的分类:单元测试、集成测试、系统测试和验收测试。
  2. 测试优先编程(Test-First Programming, TFP)

    • 测试驱动开发(Test-Driven Development, TDD):在编写功能代码之前先编写测试代码。
    • **红-绿-重构(Red-Green-Refactor)**循环:
      1. :编写失败的测试。
      2. 绿:编写实现代码使测试通过。
      3. 重构:优化代码,确保测试仍然通过。
  3. TFP的优点

    • 提高代码质量和可维护性。
    • 提前发现缺陷,降低修复成本。
    • 确保代码的可测试性和可理解性。
  4. 测试优先的具体实践

    • 明确需求:理解并明确功能需求。
    • 编写测试用例:根据需求编写具体的测试用例。
    • 实现功能:编写最简单的代码使测试通过。
    • 重构代码:优化代码结构和质量。
  5. 常见的测试技术和工具

    • 单元测试框架:如JUnit, TestNG。
    • 自动化测试工具:如Selenium, Appium。
    • 代码覆盖率工具:如JaCoCo。
  6. 测试优先编程中的挑战

    • 需要开发者具备测试和编码的双重技能。
    • 初期编写测试用例可能增加开发时间,但长期看有助于降低维护成本。

 

从《Testing and Test-First Programming》中总结的知识点包括以下几个方面:

  1. 自动化测试

    • 自动化的重要性:自动化测试比手工测试更高效,更可靠。自动化测试包括自动调用被测函数、自动判断测试结果和自动计算覆盖率​​。
    • 回归测试:修改代码后应重新运行所有测试,以防止引入新的错误​​。
  2. 测试策略

    • 单元测试策略:单元测试应尽量隔离模块,确保测试结果的准确性​​。
    • 测试用例选择:测试用例应覆盖代码的不同分区和边界情况,确保测试的充分性和有效性​​。
  3. 测试优先编程

    • 测试优先的动机:测试应尽早进行,以便及早发现和修正缺陷。编写测试用例有助于更好地理解需求和规约​​。
    • 过程:先编写函数的规格说明,再编写测试用例,最后编写实现代码​​。
  4. 测试用例

    • 定义和特征:测试用例包括输入、执行条件和预期结果。好的测试用例应能最有效地发现错误,不重复、不冗余、既不简单也不复杂​​。
    • 价值:测试用例是项目中的重要资产,应保存和重复使用​​。

 通过以上第一、二章的内容,可以看出,软件构建和测试在软件开发过程中都是至关重要的环节。合理的视角和质量目标指导着软件的设计和开发,而测试和测试优先编程确保了软件的质量和稳定性。这两者结合,才能保证软件产品的成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值