软件工程知识点总结——第零部分

考试题型:选择题(20),名词解释(12),简答题(30),综合题(38)
注:以下资料来自各种渠道进行筛选整理的!!!

福州大学软件工程2022年考后回忆

名词解释(喵的,我们这次要写英文全称,所以建议看看)

  1. RMMM
  2. 统一过程
  3. 依赖倒置
  4. 重构

简答题

  1. 说说你对顺序图和状态图的使用的看法?
  2. 面向对象测试,就是两个类继承自一个类,基类已经经过充分的测试,问两个子类要怎么测试?
  3. 主观材料题,第一问是从社会、法律、环境、安全等等方面分析项目的可行性,第二问是问你要做这个软件你打算采用什么团队结构,比如随机式组织、开放式组织、封闭式组织。
  4. 公司发现用户的需求不明确,所以在开始时故意报低价,在后面需求变更时再报高价,你觉得道德吗?

综合题

  1. 给一个商品表,问你要实现上面的话,类图要怎么设计。第二问,现在打算做618促销活动,要怎么修改上一题的类图,使它以后添加其他促销活动(比如双十二促销活动)时比较合理,然后新设计的类图满足哪些面向对象的原则。
  2. 挣值分析
  3. 给一段程序,画程序流图(注意不是程序结构图),写出独立路径,再写测试用例
  4. 给一段描述,画出用例图,画类图,再写第0层数据流图和第1层数据流图

第零部分 概述

第1章 软件的本质

1.1 软件的本质

软件的双重作用(双重角色)

  1. 作为产品,软件扮演着信息转换的角色,产生、管理、查询、修改、显示、传递信息。
  2. 作为产品生产的载体,软件提供了计算机控制、信息通信以及应用程序开发和控制的基础平台。

软件的本质
  一个庞大的软件产业已经成为了工业经济中的主导因素。早期的独立程序员也已经被专业的软件开发团队所代替,团队中的不同专业技术人员可分别关注复杂的应用系统中某一个技术部分。然而同过去独立程序员一样,开发现代计算机系统时,软件开发人员依然面临同样的问题:

  1. 为什么软件需要如此长的开发时间
  2. 为什么开发成本居高不下
  3. 为什么在将软件交付顾客使用之前,我们无法找到所有的错误
  4. 为什么维护已有的程序要花费高昂的时间和人力代价
  5. 为什么软件开发和维护的过程仍旧难以度量
1.1.1 定义软件

什么是软件?

  • 软件是一组要素的集合:程序+文档+数据
  • 程序的正常运行离不开必要的文档和数据:
    • 文档是开发、使用和维护程序所需要的图文资料;
    • 数据是使程序能够适当地处理信息的数据结构(包括数据库、一些配置文件等)。

软件和硬件具有完全不同的特性:

  1. 软件是设计开发的,而不是传统意义上生产制造的
      硬件和软件可通过优秀的设计获得高品质产品,然而硬件在制造阶段可能会引入质量问题,这在软件中并不存在(或者易于纠正);
      软件产品成本主要在于开发设计,硬件的成本在批量生产时仍然很高。
  2. 软件不会“磨损”
      磨损的硬件部件可以用备用部件替换,而软件却不存在备用部件。
      每个软件的缺陷都暗示了设计的缺陷或者在从设计转化到机器可执行代码(实现)的过程中产生的错误
      软件维护要应对变更请求,比硬件维护更为复杂。
      不断的变更是软件退化的根本原因
  3. 基于构件的构造模式
      工程学科的发展将产生一系列标准的设计器件。可复用构件的使用可以使得工程师专心于设计中真正创新的部分。
      在硬件设计中,构件复用是工程进程中通用的方法 (例如,标准螺丝钉、可订购的集成电路)。
      现代可复用软件构件封装了数据和对数据的处理。例如,图形窗口、下拉菜单和各种交互机制。

失效曲线
在这里插入图片描述
硬件的失效率是时间的函数。这个被称为“浴缸曲线”的关系图显示:

  • 硬件在早期具有相对较高的失效率(这种失效通常来自设计或生产缺陷);
  • 缺陷被逐个纠正之后,失效率随之降低并在一段时间内保持平稳(理想情况下很低);
  • 随着时间推移,因为灰尘、震动、不当使用、温度超限以及其他环境问题所造成的硬件组件损耗累积的效果,使得失效率再次提高。简而言之,硬件开始“磨损”了。

在这里插入图片描述
  在完整的生存周期里,软件的每次变更一方面可能解决了一些问题,但同时可能引入新的错误,变更还会导致软件可维护性的下降,所以失效率在使用一定时间后,会上升。

★ 软件工程方法的目的即在于使实际曲线能与理想曲线接近

1.1.2 软件应用领域

计算机软件的七大类

  1. 系统软件——一整套服务于其他程序的程序
      某些系统软件(例如:编译器、编辑器、文件管理软件)处理复杂但确定的信息结构
      另一些系统应用程序(例如:操作系统构件、驱动程序、网络软件、远程通信处理器)主要处理的是不确定的数据
      系统软件多具有以下特点:
        1. 和计算机硬件大量交互;
        2. 多用户大量使用;
        3. 需要调度、资源共享和复杂进程管理的同步操作;
        4. 复杂的数据结构以及多种外部接口。

  2. 应用软件——解决特定业务需要的独立应用程序
      除了传统数据处理的应用程序,应用软件也被用于业务功能的实时控制,例如:
        1. 销售点的交易处理
        2. 实时制造过程控制

  3. 工程/科学软件——通常带着“数值计算”算法的特征
      工程 / 科学软件涵盖了广泛的应用领域,从天文学到火山学,从自动应力分析到航天飞机轨道动力学,从分子生物学到自动制造业。

  4. 嵌入式软件——嵌入式软件存在于某个产品或者系统中
      嵌入式软件可以执行有限但难于实现的功能,例如:微波炉的按键控制。
      提供重要的功能和控制能力,例如:汽车中的燃油控制、仪表板显示、刹车系统等汽车电子功能

  5. 产品线软件——为多个不同用户的使用提供特定功能
      产品线软件关注有限的特定的专业市场,例如:库存控制产品。
      大众消费品市场,例如:文字处理、电子制表软件、电脑绘图、多媒体、娱乐、数据库管理、个人及公司财务应用。

  6. Web应用软件——是一类以网络为中心的软件,其概念涵盖了宽泛的应用程序产品
      最简单可以是一组超文本链接文件,仅仅用文本和有限的图形表达信息。
      随着Web 2.0的出现,网络应用正在发展为复杂的计算环境,比如,网游、网络社区应用

  7. 人工智能软件——利用非数值算法解决计算和直接分析无法解决的复杂问题
       这个领域的应用程序包括:机器人、专家系统、模式识别(图像和语音)、人工神经网络、定理证明和博弈等。

开放计算:无线网络的快速发展会促成普适计算、分布式计算、以及云计算的发展。软件工程师面临的挑战是开发系统和应用软件,使得移动设备、个人电脑和企业应用可以通过网络设施进行通信。
开源软件:代码开放将成为一种趋势。

1.1.3 遗留软件

遗留软件的特点

  • 开发年代久远
  • 一直在使用
  • 在使用过程中被不断地修改以满足商业需要和计算平台的变化
  • 可能仍然支持着核心业务
  • 质量差
    • 设计难以扩展
    • 代码令人费解
    • 文档混乱,可能缺失
    • 变更管理混乱
    • 测试记录未归档
  • 由于遗留软件常常支撑着核心业务,对其变更必须非常谨慎。如果它能够满足用户的需求并可靠运行,则不要修改它

遗留软件为什么要演化?

  1. 进行适应性变化,以满足新的计算环境或者技术的需要
  2. 根据新的业务需求进行升级
  3. 扩展使之具有与更多现代系统或数据库的协作能力
  4. 改建以适应多样化的网络环境

1.2 软件的变更本质

四类新的软件

  1. WebApp
      WebApp 这个术语包含了很多事物,从一个简单的帮助消费者计算汽车租借费用的网页,到为商务旅行和度假提供全套旅游服务的大型复杂的Web 站点。

  2. 移动App
      iOS,Android等,移动WebApp与移动App之间有微妙差异。WebApp允许移动设备通过针对移动平台的优点和弱点专门设计的浏览器获取基于Web内容的访问。移动App可以直接访问设备的硬件特性(例如加速器或者GPS定位),然后提供前面所述的本地处理和存储能力。

  3. 云计算
      包括基础设施或“生态系统”,它能使得任何用户在任何地点都可以使用计算设备来共享广泛的计算资源。

  4. 产品线软件
      软件产品线都使用相同的底层应用软件和数据体系结构来开发,并使用可在整个产品线中进行复用的一组软件构件来实现。

第1章 思考题

1.举出5个例子来说明“意外效应法则”在计算机软件方面的应用。
  某些新科技的发明创造会给其他一些看似无关的技术领域、商业企业、公众甚至整个社会文化带来深远而出人意料的影响和作用。这就是所谓的“意外效应法则”(law of unintended consequences)。

  典型的例子包括使用“数字汽车仪表板”的软件、赋予高科技,高品质的图像的软件,如广泛的消费类电子产品的软件;个人电脑,工业仪器仪表和机器的软件。

2.软件带给社会的影响。
答:
正面影响
  软件提供了我们这个时代最重要的产品——信息。它转换个人数据,从而使信息在一定范围内发挥更大的作用;它通过管理商业信息提升竞争力;它为世界范围的信息网络提供通路,并为各类格式的信息提供了不同的查询方式。
负面影响
  软件提供了可以威胁个人隐私的载体,并给那些怀有恶意目的的人提供了犯罪途径。

3.针对1.1节提出的五个问题给出你的答案。
答:
软件需要如此长的开发时间:
a)设施不上线
b)开发工具并不如预期般运作
c)客户提出的新要求,需要重新设计和返工
d)产品依赖于政府的规定,被意外更改。
e)严格的要求,与现有系统的兼容性需要超过预期更多的测试,设计和实现。
f)多个操作系统下运行的任务需求比预期需要更长的时间。
g)软件项目风险管理比预期需要更多的时间。
h)依赖的技术仍处于开发阶段,从而延长日程安排。
开发成本高:
a)比当时预期低得令人无法接受的质量,需要进行更多的测试,设计和实施工作。
b)制定了错误的软件功能需要重新设计和实施。
c)开发错误的用户界面,而导致重新设计和实施。
d)开发了不需要的额外的软件功能而延长了开发日程安排。
在将软件交付顾客使用之前,我们无法找到所有错误:
a)开发人员难以站在客户的角度进行充分性测试。
b)软件的市场性不允许我们拥有充分的测试时间
维护已有的程序要花费高昂的时间和人力代价:
a)产品依赖于政府监管,意外而改变。
b)产品技术标准草案,会意外更改。
c)有时需要在项目后期添加新的开发人员。
d)因为团队内的冲突有时会导致沟通不畅,而产生糟糕的设计。
e)破坏高效调度产生的项目管理成果和无效的规划
f〉有时装备部件质量差,导致额外的测试,设计和集成工作和管理额外的客户关系。
软件开发和维护的过程仍旧难以度量:
a)有时该项目的目的是不明确。
b)有大量的业务所涉及的风险。
c)产品内置没有装好。
d)我们需要不断检讨我们的工作。
e)进行维护检查的时间。
f)在整个软件开发过程中要彻底组织项目团队。

4.在交付最终用户之前,或者首个版本投入使用之后,许多应用程序都会有频繁的变更。为防止变更引起软件退化,请提出一些有效的解决措施。
答:
a)收集所需的信息。
b)设计师和客户定义软件的总体目标。
c)识别已知的需求。
d)使用现有的程序片段后,有助于建立原型的开发人员的工作计划快速完成。
e)只有通过合格的培训或经验和充分揭露相关的不足,才能保持和提高我们的技术能力和让其他人承担技术任务
f)文件应该被及时制定出来,在文件中应该有标准定义和机制建立。
g)完成某一特定阶段的审查工作。
h)每一个关键团队成员应该配有一个后备人员
i)检查规避风险的步骤是否应用正确
j)对未来的风险分析中检查是否有必要收集必要的信息。

第2章 软件工程

2.1 定义软件工程学科

IEEE对软件工程的定义:
  软件工程是:(1)将系统化的、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)对(1)中的所述方法的研究。

软件工程层次图
软件工程是一种层次化的技术。
在这里插入图片描述

支持软件工程的根基在于质量关注点
软件工程的基础是过程层
软件工程方法为构建软件提供技术上的解决方法
软件工程工具为过程和方法提供自动化或半自动化的支持

2.2 软件过程

软件过程定义
  软件过程是工作产品构建时所执行的一系列活动、动作和任务的集合。活动主要实现宽泛的目标。动作包含了主要工作产品生产过程中的一系列任务。任务关注小而明确的目标,能够产生实际产品。

2.2.1 过程框架

一个通用的软件工程过程框架通常包括以下5个活动:
  沟通、策划、建模、构建、部署

2.2.2 普适性活动

典型的普适性活动:
  软件项目跟踪和控制、风险管理、软件质量保证、技术评审、测量、软件配置管理、可复用管理、工作产品的准备和生产

2.2.3 过程的适应性调整

软件工程不是教条的法则,而是应该是灵活可适应的(根据软件所需解决的问题、项目特点、开发团队和组织文化等进行适应性调整)。

2.3 软件工程实践

2.3.1 实践的精髓

软件工程实践的精髓:

  1. 理解问题(沟通和分析)
  2. 策划解决方案(建模和软件设计)
  3. 实施计划(代码生成)
  4. 检查结果的准确性(测试和质量保证)
2.3.2 通用原则

7个关注软件工程整体实践的原则:
第1原则:存在价值
一个软件系统因能为用户提供价值而具有存在价值,所有的决策都应该基于这个思想。所有的其他原则都以则条原则为基础。
第2原则:保持简洁
软件设计并不是一种随意的过程,在软件设计中需要考虑很多因素。所有的设计都应该尽可能简洁,但不是过于简化。
第3原则:保持愿景
清晰的愿景是软件项目成功的基础。
第4原则:关注使用者
在需求说明、设计和实现过程中,牢记要让别人理解你所做的事情。
第5原则:面向未来
永远不要把自己的设计局限于一隅。
第6原则:提前计划复用
提前做好复用计划将降低开发费用,并增加可复用构件以及构件化系统的价值。
第7原则:认真思考
在行动之前清晰定位、完整思考通常能产生更好的结果。

第2章 思考题

1.仔细研究并列出全面质量管理活动中关键原则的大纲
答:
原则1:以顾客为关注焦点
原则2:领导作用
原则3:全员参与
原则4:过程方法
原则5:管理的系统方法
原则6:持续改进
原则7:基于事实的决策方法
原则8:与供方互利的关系

2.软件工程对构建WebApp是否适用?如果适用,需要如何改进WebApp的独特特点?
答:
  软件工程对构建 WebApp同样是适用的,应该针对WebApp不同于一般软件的特点做出改变,开发成本较低:使用web开发技术就可以轻松的完成web app的开发;升级较简单:升级不需要通知用户,在服务端更新文件即可;维护比较轻松:和一般的web一样,维护比较简单。WebApp的沟通、策划、,建模、构建、部署应该以上面的特点为中心,进行适应性调整。

3.用自己的化描述过程框架。当我们谈到框架活动适用于所有的项目时,是否意味着对于不同规模和复杂度的项目可应用相同的工作任务?请解释。
答:
  过程框架定义了若干个框架活动,为实现完整的软件工程过程建立了基础,一个通用的软件工程过程框架通常应该包含沟通、策划、,建模、构建、部署这5个活动。框架则是为解决一类问题而开发的程序, 我们谈到框架活动适用于所有的项目是指其逻辑结构是相似的,能够以相同的模式去解决,但并不意味着对于不同规模和复杂度的项目可应用相同的工作任务。

4.普适性活动存在于整个软件过程中,你认为他们均匀分布于软件过程中,还是集中在某个或者某些框架活动中?
答:
  一般来说,普适性活动贯穿软件项目始终,以帮助软件团队管理和控制项目进度、质量、变更和风险。它们被均匀地应用在整个过程中,包括软件项目跟踪和控制、风险管理、软件质量保证、技术评审、测量、软件配置管理、可复用管理、工作产品的准备和生产。

第一部分 软件过程 & 第二部分 建模

软件工程知识点总结——第一、二部分

第三部分 质量管理 & 第四部分 管理软件项目

软件工程知识点总结——第三、四部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值