软工复习整理

软工复习整理,期末速成,过过过!!!

一些碎碎念~

⛳ 你好哇,我是小瑾,在校大学生一位哦~
⛵目前博文包含课程设计、csp刷题、算法介绍、当下科技热点分享、网站软件推荐等等哦,还会更新学习到的深度学习、视觉等方面的知识~
⛄一个希望与大家携手共进的小博主
✍关注我,让你的代码之旅不再孤独!

一、软件工程概述

软件=程序+文档+数据

软件:复杂性、不可见性、服从性(软件服从硬件、行业需求等)、易变性

软件危机:

表现:规模大、复杂度增加、供需差增大、价格昂贵、开发速度慢、质量难以保证

两个方面的问题:如何开发软件以满足对软件日益增长的用户需求;如何维护不断膨胀的现有软件

解决途径:重视需求分析,与客户沟通;重视设计和实现过程的资料;充分的测试;维护和管理;规范的方法论和指导

软件工程:运用现代科学技术知识来设计并构造计算机程序以及开发、运行和维护这些程序所必需的相关文件资料;是开发、运行、维护、修复软件的系统方法论

软件工程三要素:方法、过程、工具

结构化开发方法学:自顶向下,逐级细化,过程式,适用于需求较为稳定

面向对象开发方法学:封装了数据及操作,可扩展,易维护

二、软件过程及其模型

软件生存周期:

划分为:开发、定义、运行三个时期

包括:可行性分析、项目计划、需求分析、软件设计、编码与测试、运行与维护

软件过程是软件生存周期中的一系列相关过程所涉及的活动

软件过程模型:软件过程的抽象表示,一种结构框架

瀑布模型:

每个阶段都会有循环反馈,顺序进行,文档驱动

顺序性和依赖性

末期才能看到开发成果,风险大,不能很好适应需求变化

适用于产品定义稳定,需求明确

线性模型

在这里插入图片描述

原型模型:

尽可能快的构造一个简化模型

快速实现系统初步模型

适用于不能预先确切定义需求的软件项目

在这里插入图片描述

增量模型:

增量构造模型:

某些阶段按照瀑布模型,某些按照增量方式

可以尽早看到部分软件功能,发现问题

采用增量方式开发系统

在这里插入图片描述

演化提交模型:

在瀑布模型基础上,所有阶段进行增量开发

在这里插入图片描述

螺旋模型:

风险分析

适用于大而复杂

每个周期都有需求定义、风险分析、工程实现和评审

风险驱动

结合瀑布模型和快速原型

在这里插入图片描述

构件集成模型:

基于构件

开发过程是迭代的

在这里插入图片描述

统一过程模型:

各个阶段整合在一个框架

二维的软件开发模型

用例驱动

以架构为中心,迭代和增量

三、敏捷软件开发方法

敏捷方法两大主要特征:对适应性和人的关注

scrum开发过程:迭代式增量软件开发过程,适用于敏捷软件开发

实施scrum过程:

确定产品订单

分解产品订单成一系列冲刺订单

召开冲刺计划会议

进入冲刺开发周期,每天需要召开立会

整个冲刺周期结束,召开冲刺评审会,得到一个增量发布

召开冲刺反思会,计划增量的新功能和改进

燃尽图:

以任务数或时间为度量

实际剩余时间、预估剩余时间、实际花费时间

极限编程:适合于规模小、进度紧、需求不稳定、开发小项目

四、软件需求分析

软件需求分类:业务需求(组织者或客户)、用户需求(使用者)、功能需求(产品本身)、非功能需求

功能需求:完整性、一致性、准确性

非功能需求:性能、外部接口、质量属性

五、结构化分析

建模方法:数据流图(DFD) —功能域、实体关系图(E-R图)—信息域、状态转换图(STD)—行为域

面向数据流建模:

数据流图、数据字典(DD);自顶向下、逐层分解

数据流图:

在这里插入图片描述

数据字典:数据流条目、数据存储条目、数据项条目、加工条目

面向状态建模:

行为模型

适用于描述实时系统

模块的作用域:受该模块内一个判定影响的所有模块的集合

模块的控制域:模块本身以及其所有的下属模块的集合

六、软件设计

模块独立性:开发具有独立功能而和其它模块没有过多关联的模块

高内聚低耦合

内聚性:

在这里插入图片描述

功能性内聚:模块各个成分结合在一起,完成一个特定功能

顺序性内聚:模块内的各个任务是顺序执行,通常上一个任务的输出是下一个任务的输入

通信性内聚:模块内各个任务依靠公用数据,如使用同一个输入数据或者产生同一个输出数据

过程性内聚:各个任务必须按照一定的次序执行

过程性内聚与顺序性内聚的区别:顺序性内聚是输入流从一个处理单元到另一个处理单元;过程内聚是控制流从一个动作流向另一个动作

时间性内聚:模块内各个任务由相同的执行时间联系在一起

逻辑性内聚:模块通常由若干个逻辑功能相似的任务组成,通过模块外的一个开关量选择其一执行

偶然性内聚:纯属偶然

耦合性:

非直接耦合:没有信息传递,即没有耦合

数据耦合:交换的是简单变量,传递参数、基本数据类型,不是数据结构

特征耦合:交换数据结构

控制耦合:传递的不是一般数据,而是控制信息的开关或者标志量;逻辑性内聚的模块调用就是控制耦合

外部耦合:允许一组模块访问同一个全局变量

公共耦合:允许一组模块访问同一个全局性的数据结构

内容耦合:一个模块可以访问另一个模块中的内部数据;或者一个模块直接转到另一个模块内部

七、软件测试

静态测试:不运行被测程序,仅通过分析或者检查源程序;人工检测和计算机辅助静态分析

动态测试:黑盒测试、白盒测试

黑盒测试:等价类划分法、边界值划分法、错误推测法、因果图法

白盒测试:逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)、基本路径覆盖法、循环路径测试

程序图的环形复杂性:

V(G)=G的区域数

V(G)=E-N+2

V(G)=P+1 (P是G中判定的节点数)(多个汇聚到1个—>一个节点)

软件测试步骤:

包含:单元测试、集成测试、确认测试、系统测试

单元测试:为测试模块开发驱动模块、桩模块

集成测试:自顶向下、自底向上

自顶向下:深度或广度优先;每次代替一个桩模块;每集成一个模块立即测试一遍;可以尽早发现错误;在测试高层时低层处理采用桩模块,不能反映真实情况

自底向上:最低层开始集成测试;不需要桩模块;最后一个模块加入时才有整体形象

确认测试:一般运用黑盒测试

系统测试:把已经确认的软件系统移植到实际运行环境中;包括功能测试和性能测试

八、面向对象分析

面向对象分析与设计是用例驱动的

逻辑模型:对象模型、类模型、包模型

三层架构:界面层、业务逻辑层、数据访问层;区分层次是为了“高内聚低耦合”思想

MVC模式的Web体系结构:业务逻辑、数据、界面显示分离;包括视图、控制器、模型;耦合性低、重用性高、有利于开发,提高生产效率、可维护性高

包图:同类的类、对象、模型放在一起;高内聚低耦合

精化类图:依赖、关联、泛化、实现

九、软件维护

软件维护:软件生存周期的最后阶段,时间最长

类型:纠错性维护、完善性维护(占比最大)、适应性维护、预防性维护

十、软件项目管理

项目的五个阶段:启动、计划、实施、控制、首尾阶段

代码行数(LOC)、功能点(FP)

估算功能点:估算变量的期望值(EV)=(Sopt+4xSm+Spess)/6

计算技术复杂性因子(TCF)=0.65+0.01XDI

FP=UFPxTCF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小瑾比个耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值