第十章:软件工程(软件设计师备考)


第一节:软件开发模型

1. 瀑布模型

瀑布模型是结构化模型中的一种。

image-20211016192932238

瀑布模型的缺点:

瀑布模型的缺点在于需求分析阶段。软件的需求往往都是不明确的,尤其在项目的初期,这就导致在需求不明晰的情况下就开始做软件,做到最后,很容易被用户推翻成果。被推翻后就要回溯到需求分析阶段做修改,这样一来会浪费大量时间,极易导致项目失败。

瀑布模型适用场合:

适用于需求明确或二次开发的项目中。或者用其他的方法建立明确的需求分析,再通过瀑布模型制作软件。

2. 原型、演化模型、增量模型

image-20211016193709179

原型和瀑布模型是互补关系,原型是为了解决用户需求分析难以把控即需求不明确而提出的。

原型:先做出初步的系统(界面),然后让用户使用,以便于用户进一步明确自己的需求,是一种抛弃式的模型,因为需求一旦明确就会被抛弃。

演化模型:即是一种渐进式的原型,即它采取原型的设计模式,但不会将其抛弃,而是在此基础上进一步进行设计。

增量模型:是一种递增式设计,将产品一步一步进行设计,每完成一步就交由客户审视,这样也可以使得下一步的设计更为明确。好处是核心模块可以较早的与用户接触。

3. 螺旋模型

image-20211016200851030

螺旋模型融合了多个模型(瀑布模型和演化模型)的特点,还增加了风险分析。螺旋模型包含四个方面的活动:制定计划、风险分析(是螺旋模型最为显著的特征)、实施工程、客户评估。

4. V模型

image-20211016201638446

特点:

  1. 细化了测试阶段
  2. 测试始终贯穿流程的始终,如:需求分析完成后就进行验收测试和系统测试,概要设计完成后就进行集成测试,详细设计后进行单元测试。

5. 喷泉模型

喷泉模型是面向对象的模型。

喷泉模型的特点:

  1. 迭代
  2. 无间隙

6. RAD(快速开发模型)

RAD结合瀑布模型和构建化开发两种模型的特点,形成了自己的风格。

RAD能够快速的构建应用系统。

image-20211017134535370

7. 构建组装模型(CBSD)

CBSD得到了越来越广泛地认可和应用,基本思路是将软件开发中的各个模块,都做成标准的构件,然后再将构件组装,最后构成软件。

这种模型极大地提高了软件的复用性,减小了软件开发的总时长,降低了软件开发成本,提高了软件的可靠性(许多构件在一款软件做成后会加入构件库,当下一软件需要使用时,直接从构件库取出构件即可,而该构件经过实践,已经变得非常可靠)。

步骤:

image-20211017135229405

8. 统一过程(up、rup)

统一过程的模型往往应用于大型项目。

模型特点:

  1. 以用例驱动
  2. 以架构为中心
  3. 迭代与增量

模型的阶段:

  1. 初始部分
  2. 细化阶段
  3. 构建阶段
  4. 交付阶段
image-20211017135613870

9. 敏捷开发方法

重量级的开发模型会使开发人员的负担加重,为了给开发人员减负,减去不必要的流程和文档,于是出现了敏捷开发方法的基本思想。

敏捷开发方法不是一个模型而是一组模型,例如自适应开发、水晶方法等都属于敏捷开发方法,而这些模型拥有共同的价值观,共同的处事原则。

敏捷开发方法适用于小型项目。

image-20211017140201887

第二节:信息系统开发方法

image-20211017141002752

第三节:需求开发

image-20211017141550669

第四节:结构化设计

1. 基本原则

image-20211017142153830

2. 内聚与耦合

image-20211017142411983

3. 系统结构/模块结构

image-20211017142524152

第五节:软件测试

1. 测试原则

image-20211017181221775

2. 测试的分类

image-20211017181647364

3. 测试用例设计

image-20211017181846616

黑盒测试:

  1. 等价类划分:即将所有数据类划分为许多个层次,每个数据层次挑选出一个最具代表性的数据进行测试即可。
  2. 边界值分析:即需要对等价类之间的边界值进行测试(一般是端点、略小于端点的值、略大于端点的值)。
  3. 错误推测:即自己推测错误的原因,该方法强调经验。
  4. 因果图:由结果反推原因。

白盒测试:

  1. 语句覆盖:即程序中的每一条语句都要进行测试(语句覆盖是所有覆盖中覆盖度最低的测试)。
  2. 判定覆盖:即所有判断的真假分支都要测试一遍。
  3. 条件覆盖:即在判定时对判定的条件的真假性进行测试。
  4. 路径覆盖:所有可达到的路径全部覆盖。

4. 测试阶段

image-20211017183610345

第六节:McCabe

计算方法:

image-20211017184151966

第七节:系统运行与维护

软件维护即需要提供软件支持的全部活动,这些活动包括在交付前完成的活动,以及在交付后完成的活动,交付前完成的活动包括交付后运行的计划和维护计划等;交付后的活动包括软件修改、培训、帮助资料等。

可维护性包括:

  • 易分析性:代码容易看懂
  • 易改变性:修改代码的难易程度,模块之间低耦合比较易改变
  • 稳定性
  • 易测试性:最回归测试的难易程度

维护类型:

  • 改正性维护:修正用户发现的bug
  • 适应性维护:维护不同操作系统环境下,软件运行产生的问题
  • 完善性维护:扩充功能,提高性能
  • 预防性维护:维护将来可能出现的问题

第八节:软件过程改进(CMMI)

CMMI是能力成熟度模型的集成,主要用来衡量软件开发的承包商的改善软件的能力。

CMMI分为阶段式和连续式。

image-20211017190555285

第九节:项目管理

项目管理包括:范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理、整体管理。

时间管理:

进度安排的常用图形描述方法有Gantt图和PERT图。

Gantt图,其最为直观的特点是简洁明了,可以很清楚的看到计划的开展,缺点是不能看出计划间的逻辑关系,无法看出哪个任务先做,哪个任务后做。

image-20211017190857213

PERT图可以给出哪些任务完成后才能开始另一些任务。

PERT例题:

image-20211017191409955

解题思路:

事件1到事件2最早需要时间加2,事件2到事件5则再需要加2(此时最早时间等于4),而事件1到事件6需要的最早执行时间为3,事件4到事件6的最早时间为4,因此取时间长的为事件6的执行时间(原因是事件六的执行需要事件3和4共同作用),以此类推,事件9所需最早时间为15,再由事件9逆推回来15-4-1=10即为事件6的最晚开始时间。

答案:10

风险管理:

image-20211017192427064

参考视频:https://www.bilibili.com/video/BV1yU4y1371J?p=135

猜你喜欢

转载自blog.csdn.net/weixin_45605541/article/details/120814794
今日推荐