1. 软件生命周期有哪些阶段组成?(1.3)p

    问题定义:

    可行性研究:

    需求分析:

  2. 可行性研究过程(2.2)p36

    1. 复查系统规模和目标
    2. 研究目前正在使用的系统
    3. 导出新系统的高层逻辑模型
    4. 进一步定义问题
    5. 导出和评价供选择的解法
    6. 推荐行动方针
    7. 草拟开发计划
    8. 书写文档提交审查
  3. ⭐**数据字典(2.5)**p47

    数据流图、数据字典的画法_数据字典怎么画-CSDN博客

    常见符号

    符号 含义 举例
    + a+b
    = 赋值 c=a+b
    [] 可选 [a|b]:选a或b
    {} m{……}n 重复
    取括号内长度为m-n的内容
    1{数字}3:取1到3位数字
    3{数字}3:取3位数字
    () 可选

    例:某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0。校外电话又分为本市电话和外地电话两类。拨校外电话需要先拨0,若是本市电话则接着拨8位数字(第一位不是0) ,若是外地电话则拨区码(3-5位)后再拨8位电话号码(第一位不是0) 。

    电话号码 = [ 校内电话 | 校外电话 ]
    校内电话 = 非零数字 + 三位数字
    非零数字 = [ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]
    三位数字 = 3{数字}3
    数字 = [ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]
    校外电话 = [ 本市电话 | 外地电话 ]
    本市电话 = 0 + 八位非零开头数字
    八位非零开头数字 = 非零数字 + 七位数字
    七位数字 = 7{数字}7
    外地电话 = 0 + 三位区码 + 八位非零开头数字
    区码 = 3{数字}5

  4. 进行成本/效益分析时,如何计算货币的时间价值、投资回收期、纯收入与投资回收率?(2.6.2)p51

    1)货币的时间价值

    假设年利率为i,如果现在存入P元钱,则n年后可得到的钱数为

    image-20251202195518388

    反之,如果n年后收入F元,那么这些钱现在价值是

    image-20251202195550783

    例:有一个库存管理系统,开发该系统共需50000元;使用该系统后,能及时订货,避免了商品短缺,估算每年可节约25000元,共使用5年。假定年利率为5%。
    针对此案例,进行成本/效益分析。

    每年节约25000,可理解为每年挣了25000(将来值)

    image-20251202202147278

    2)投资回收期

    多久可以回收成本(50000元)

    前两年回收46485.26元,还需50000-46485.26=3514.74元

    3514.74/21595.94=0.16年 投资回收期为2.16年

    3)纯收入

    累计现在值-成本

    108236.91-50000=58236.91元

    4)投资回收率

    投资回收率 =(投资收益 - 投资成本)/投资成本*100%

    例:现在用100w成本投资一个项目,最终收益150w,该项目投资回收率为(150-100)/100*100%=50%

  5. 需求分析的任务?(3.1)p56

    1. 功能需求
    2. 性能需求
    3. 可靠性和可用性需求
    4. 出错处理需求
    5. 接口需求
    6. 约束
    7. 逆向需求
    8. 将来可能提出的要求
  6. 从哪些方面验证软件需求的正确性?(3.8.1)p70

    四方面

    1. 一致性 ==> 所有需求必须一致
    2. 完整性 ==> 需求必去完整
    3. 现实性 ==> 需求应该是用现有的硬件和软件技术基本上可实现的
    4. 有效性 ==> 必须证明需求是正确有效的
  7. 需求分析阶段的图形工具有哪些?并对每种图形工具作简单说明(或给出例子)(3.4,3.6&3.7) p63、65、67

    实体-联系图

    image-20251129194118392

    状态转换图

    image-20251129194147206

    层次方框图

    image-20251129194248245

    Warnier图

    image-20251129194309373

    IPO图

    image-20251129194327528

  8. 总体设计过程的步骤(5.1)p91

    1. 设想供选择方案
    2. 选取合理方案
    3. 推荐最佳方案
    4. 功能分解
    5. 设计软件结构
    6. 设计数据库
    7. 制定测试计划
    8. 书写文档
    9. 审查和复查
  9. 软件设计过程中应遵循的基本原理(5.2)p94

    模块化:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,集成起来构成一整个整体

    抽象:在现实生活中一定事务、状态或过程之间存在相似方面(共性),把他们集中概况起来暂时忽略之间差异,这就是抽象

    逐步求精:是人类解决复杂问题时采用的基本方法,也是许多软件工程技术的基础

    信息隐藏和局部化:局部化是指把一些关系紧密的软件元素物理地放的彼此靠近。

    模块独立:模块化、抽象、信息隐藏和局部化概念的直接结果

  10. 软件设计中的启发规则(5.3)p99

    1. 改进软件结构提高模块独立性
    2. 模块规模应该适中
    3. 深度、宽度、扇出、扇入都应适当
    4. 模块作用域应该在控制域之内
    5. 力争降低模块接口复杂程度
    6. 设计单入口单出口模块
    7. 模块功能应该可预测
  11. 面向数据流的设计方法中变换分析的步骤(5.5.2)p105

    1. 复查基本系统模型
    2. 复查并精化数据流图
    3. 确定数据流图具有变换特性还是事务特性
    4. 确定输入流输出流的边界,从而孤立出变换中心
    5. 完成“第一级分解”
    6. 完成“第二级分解”
    7. 使用设计度量
  12. 过程设计的工具有哪些?能够对每种工具作简单说明(或给出例子);能够使用判定表、判定树表示算法(或问题)(6.3)p124

    程序流程图:

    盒图:

    PAD图:

    ⭐判定表:

    ⭐判定树:

    ⭐过程设计语言:

  13. Jackson方法的步骤(6.4.3)p132

    可以看看这个面向数据结构的设计jackson方法_哔哩哔哩_bilibili

    image-20251202212214598

    image-20251202212326507

    • Jackson程序设计方法由五个步骤组成
    1. 用Jackson图描绘I/O的数据结构

    image-20251202213503858

    1. 在两个图中指出有直接因果关系,可以同时处理的单元(对于重复出现的单元,重复次序和次数必须均一致)

    image-20251202213638427

    1. 把有对应关系的单元合为一个处理框,画在相应层次中

    image-20251202213745405

    1. 在程序结构图中,将操作、条件添加到适当位置

    image-20251202213834408

    image-20251202213929967

    1. 用伪码表示程序

    image-20251202214320310

  14. ⭐量度量程序复杂程度的McCabe方法(6.5.1)p137

    掌握程度:
    1)依据伪码或程序画出程序流程图;
    2)将程序流程图转换成流图;
    3)依据流图计算环形复杂度。

    复杂度:V(G)=E-N+2=P+1(E为流图边数,N为结点数,P为判断节点数目

  15. 软件测试准则(7.2.2)p150

    1. 所有测试都能追溯到用户需求
    2. 应该远在测试开始前就指定出测试计划
    3. 把Pareto原理应用到软件测试中
    4. 从“小规模”测试开始,并逐步进行“大规模”测试
    5. 穷举测试是不可能的
    6. 为达到最佳测试结果,测试过程不可能执行每个可能的路径
  16. 大型软件系统的测试步骤(7.2.4)p151

    1. 模块测试
    2. 子系统测试
    3. 系统测试
    4. 验收测试
    5. 平行运行
  17. ⭐**使用白盒测试技术中的逻辑覆盖设计测试用例(7.6.1)**p162

  18. ⭐**使用黑盒测试技术中的等价划分设计测试用例(7.7.1)**p172

  19. ⭐**估算平均无故障时间的方法(7.9.2)**p180

  20. 软件维护的类型(8.1)p189

    改正性维护、适应性维护、完善性维护、预防性维护

  21. 软件再工程过程的6类活动(8.6)p198

    1. 库存目录分析
    2. 文档重构
    3. 逆向工程
    4. 代码重构
    5. 数据重构
    6. 正向工程
  22. 面向对象方法学的优点(9.1.2)p205

    1. 与人类习概的思维方式一致
    2. 稳定性好
    3. 可重用性好
    4. 较易开发大型软件产品
    5. 可维护性好
  23. 面向对象建模的3个子模型5个层次(10.1.2)p232

    三个子模型:静态结构(对象模型)、交互次序(动态模型)、数据变换(功能模型)

    五个层次:主题层、类与对象层、结构层、属性层、服务层

  24. 建立对象模型时,如何确定类与对象?(10.3.1) p236

    1. 找出候选的类与对象
    2. 筛选正确的类和对象
  25. 使用面向对象方法学开发软件的启发规则(11.2) p261

    1. 设计结果清晰易懂
    2. 一般-特殊结构深度应适当
    3. 设计简单类
    4. 使用简单协议
    5. 使用简单服务
    6. 设计变动减至最小
  26. 补充

    • 数据流图

    基本概念

    image-20251129202452748

    例子

    image-20251129202638530

    image-20251129203753805

    image-20251129205432804

    • 程序流程图

    image-20251201182044662

    椭圆:开始 平行四边形:输入输出 棱形:if判断 长方形:执行语句

image-20251128190121537