软件工程
四川大学软件工程导论课程重点总结2024
概要
开发一个软件的整个流程
基本概念
软件工程
软件
软件过程:敏捷开发,极限编程
通用过程框架
瀑布模型:沟通,策划,建模,构件,部署
原型模型
敏捷开发:aglie
软件表达方法:可视化为UML*13种
用例图
活动图
类图
顺序图
通信图
状态图
界面调研:黄金准则
黄金准则:减少记忆负担,用户掌控,界面一致
软件分析,设计,重构:用例分析,GRASP,设计概念,设计原则OCP等
1.抽象:抽象是人类解决复杂问题的一种手段,更是一种思想。包含了过程抽象和数据抽象。过程抽象指的具有明确和有限的指令序列;数据抽象是描述数据对象的冠名数据集合。
2.求精:求精实际上是一个细化的过程:该过程从高抽象级上定义的功能陈述或信息描述开始。然后在原始陈述上进行细化,随着在每个细化的持续进行,将提供越来越多的细节
3.体系结构:软件的整体结构和这种结构为系统提供概念完整性的方式,构建表示主要的系统元素及其交互。
4.关注点分离:关注点分离是将复杂问题分解为可以以独立解决或优化的若干块,使得该复杂问题能够更容易地被处理的设计概念。
5.模块化:模块化是一种软件设计技术,强调将程序的功能分解为独立的、可互换的模块,每个模块都包含执行所需功能的所有必要元素。在架构领域中,模块化就是表示从逻辑上给相互关联的代码分组的过程。模块化的度量可以使用三个度量指标:内聚,耦合和共生。
6.信息隐藏:在计算机科学中,信息隐藏是将计算机程序中最有可能发生变化的设计决策与程序的其他部分隔离开来的原则。信息隐藏的目标是通过提供稳定的接口来保护程序的其他部分免受实现(其细节可能会发生变化)的影响。
7.功能独立:功能独立在软件工程中意味着当一个模块专注于单一任务时,它应该能够以很少与其他模块的交互来完成它。如果一个模块在功能上独立于其他模块,那么它意味着它具有高内聚和低耦合。
8.方面:通过允许分离横切关注点来增加模块性。这允许那些不是业务逻辑的核心(如日志记录)的行为被添加到程序中,而不会使核心函数的代码变得混乱。
体系结构
测试:圈复杂度,测试用例
圈复杂度:V(G)
覆盖所有的可能情况最少使用的测试用例数
测试用例设计方法
边界值测试
方法1测试用例为9个:(min,min+,max,max+)*2,nom,引入健壮性为13个:(min-,max+)*2
方法2测试用例为25个:5^n
等价类测试
路径分析测试