–线性过程 Linear Process:以传统过程的瀑布模型,V 模型作为典型 –迭代过程 Iterative Process :以敏捷开发的 Scrum 作为典型
术语”软件构造” 是指通过编码、验证、单元测试、集成测试和调试的组合,详细地创建可工作的、有意义的软件。 软件构造通过编码、验证、单元测试、集成测试和调试的组合来详细创建可工作的有意义的软件 它与所有其他软件工程学科都有联系,最强烈的是与软件设计和软件测试有关。
线性过程如瀑布模型,V模型,软件构造主要是指实现(implementation )。 迭代过程如 Scrum,软件构造与其他步骤同时发生或重叠,将构造当成这些活动的集合体。
外部质量因素影响用户 内部质量因素影响软件本身和它的开发者 外部质量取决于内部质量
按照预先定义的“规约”执行 正确性是最重要的质量指标 测试和调试:发现不正确、消除不正确 防御式编程:在写程序的时候就确保正确性
健壮性:针对异常情况的处理 健壮性是对正确性的补充 正确性:软件的行为要严格的符合规约中定义的行为 健壮性:出现规约定义之外情况的时候,软件要做出恰当的反应 健壮性:出现异常时不要“崩溃”
Chapter 11 (Exception handling)
对软件的规约进行修改是否足够容易 可扩展性问题是同规模相关的。规模越大,扩展起来越不容易 为什么要扩展:应对变化
Chapter 5,6 (ADT and OOP) Chapter 8,9 (Modularity and adaptability)
一次开发,多次使用 发现共性 > Chapter 8,9,10 (Design for/with reuse)
不同的软件系统之间容易的相互集成 难点:不同软件有不同的设定/规定 兼容性的关键在于设计的一致性,以及对于程序间通信的标准化约定。
效率是软件系统对硬件资源尽可能少的需求的能力,例如处理器时间,内部和外部存储器中占用的空间,通信设备中使用的带宽等。 性能毫无意义,除非有足够的正确性
软件可方便的在不同的技术环境之间移植 要保证软件可移植性,就是少用或不用系统特有的东西
易用性是各种背景和资质的人们可以轻松学会使用软件产品并将其应用于解决问题。 •易见:单单凭观察,用户就应知道设备的状态,该设备供选择可以采取的行动。 •易学:不通过帮助文件或通过简单的帮助文件,用户就能对一个陌生的产品有清晰的认识。 •易用:用户不翻阅手册就能使用软件。
–Correctness (正确性) and robustness(健壮性): reliability •Systematic approaches to software construction 系统的软件构造方法 •Formal specification 正式的软件规约 •Automatic checking during development process 在开发过程中自动检查 •Better language mechanism 更好的语言机制 –Extendibility(可扩展性) and reusability(复用性): modularity
•软件系统的外部因素还包括: Functionality(功能性), Timeliness(及时性 )、 Verifiability (可验证性)、 Integrity (完整性)、 Repairability (可修复性)、 Economy (经济性),等
•Source code related factors such as Lines of Code (LOC), Cyclomatic Complexity 循环复杂度(用户衡量一个模块判定结构的复杂程度), etc. •Architecture-related factors such as coupling, cohesion, etc. •Readability 可读 •Understandability 可理解 •Clearness 干净 •Size 规模
内部质量因素通常用作外部质量因素的部分度量。