Educode--头歌 《软件工程》实验作业

走进软件工程

    • 第一关:软件?什么是软件?
      • 任务描述
      • 相关知识
        • 什么是软件
        • 程序、数据、文档
        • 软件的类别
      • 作答要求
      • 参考资料
      • 答案:
    • 第二关:软件工程基础
      • 任务描述
      • 相关知识
        • 什么是软件工程
        • 软件工程的目标
        • 内聚性
        • 耦合性
      • 作答要求
      • 参考资料
      • 答案
    • 第三关:软件工程的基本原理
      • 任务描述
      • 相关知识
        • 软件工程的基本原理
        • 软件生存周期
      • 作答要求
      • 参考资料
      • 答案

第一关:软件?什么是软件?

任务描述

本关任务:掌握软件的基本概念与特征,并完成相应的选择题。

相关知识

为了完成本关任务,你需要掌握:
1.什么是软件;
2.软件的特点;
3.常见的软件类型。

什么是软件

软件( Software )是一系列按照特定顺序组织的计算机数据和指令的集合。如图1所示,它通常包含以下特点:

无形性;软件是看不见、摸不着的东西,它没有物理形态,但是我们可以通过对软件的使用来了解它的功能、逻辑等等特性;
软件是一种智力成果;软件是由开发者通过运用计算机知识构建出来的,它是编程者智力和逻辑性的结果;
软件不会像硬件一样老化磨损,但存在缺陷维护和技术更新;
依赖性;软件的开发受限制于硬件的环境,因为在开发过程中应该尽量减少软件对硬件的依赖,从而有了可移植性的概念;
可复用性;在完成软件的开发以后,可以进行复制从而形成多个副本。
Educode--头歌 《软件工程》实验作业_第1张图片

程序、数据、文档

程序:按事先设计的功能和性能需求执行的指令序列。
数据:是程序能正常操纵信息的数据结构。
文档:与程序开发、维护和使用有关的图文资料。
Educode--头歌 《软件工程》实验作业_第2张图片

软件的类别

按应用范围划分,一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。

  • 系统软件:系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
  • 应用软件:应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。
    Educode--头歌 《软件工程》实验作业_第3张图片

按照软件的应用领域,可将计算机软件划分为以下几类:

  • 系统软件:服务于其他程序的程序。
  • 应用软件:解决特点业务需要的独立应用程序。
  • 工程/科学软件:通常带有“数值计算”算法的特征。
  • 嵌入式软件:存在于某个产品或系统中,可实现和控制面向最终使用者和系统本身的特性和功能。
  • 产品线软件:为多个不同用户的使用提供特定功能。
  • Web应用:是一类以网络为中心的软件,其概念涵盖了宽泛的应用程序产品。
  • 人工智能软件:使用非数值算法解决计算和直接分析无法解决的复杂问题。
  • 开放计算:无线网络的快速发展将促成真正的普适计算、分布式计算的实现。
  • 网络资源:构建简单而智能的应用程序,为全世界的最终用户市场提供服务。
  • 开源软件:开放系统应用程序的代码。

作答要求

根据相关知识,按照要求完成右侧选择题任务。作答完毕,通过点击“测评”,可以验证答案的正确性。

参考资料

【1】 软件工程概论
【2】 软件的定义与分类

开始你的任务吧,祝你成功!

答案:

Educode--头歌 《软件工程》实验作业_第4张图片
Educode--头歌 《软件工程》实验作业_第5张图片
Educode--头歌 《软件工程》实验作业_第6张图片
Educode--头歌 《软件工程》实验作业_第7张图片

第二关:软件工程基础

任务描述

本关任务:理解清楚软件工程的基本概念,并完成相应的选择题。

相关知识

为了完成本关任务,你需要掌握软件工程的基本概念,并理解内聚、耦合的具体含义。

什么是软件工程

软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。软件工程包括三个要素:方法、工具和过程。

软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。软件工程的目的是在经费的预算范围内,按期交付出用户满意的、质量合格的软件产品。

软件工程的目标

软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。

  • ① 适用性:软件在不同的系统约束条件下,使用户需求得到满足的难易程度;
  • ② 有效性:软件系统能最有效地利用计算机的时间和空间资源;
  • ③ 可修改性:允许对系统进行修改而不增加原系统的复杂性;
  • ④ 可靠性:能防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力;
  • ⑤ 可理解性:系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制系统软件复杂性,并支持软件的维护、移植或重用;

  • 可维护性:软件交付使用后,能够对它进行修改,以改正潜伏的错误,改进性能和其它属性,使软件产品适应环境的变化等。软件维护费用在软件开发费用中占有很大的比重。可维护性是软件工程中一项十分重要的目标;
  • ⑦ 可重用性:把概念或功能相对独立的一个或一组相关模块定义为一个软部件。可组装在系统的任何位置,降低工作量;
  • ⑧ 可移植性:软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度;
  • ⑨ 可追踪性:根据软件需求对软件设计、程序进行正向追踪,或根据软件设计、程序对软件需求的逆向追踪的能力;
  • ⑩ 可互操作性:多个软件元素相互通信并协同完成任务的能力。

内聚性

内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。

  • 偶然内聚:一个模块执行多个完全不相关的操作,则具有偶然性内聚;
  • 逻辑性内聚:这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块参数来确定该模块应完成哪一种功能;
  • 时间性内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块;
  • 过程内聚:构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。简单的说就是如果一个模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚;
  • 通信内聚:执行一系列与产品要遵循的步骤顺序有关的操作,并且,如果所有操作都对相同的数据进行,则该模块具有通信性内聚;
  • 功能内聚:模块内所有元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,模块已不可再分;
  • 信息性内聚:如果模块进行许多操作,每个都有各自的入口点,每个操作的代码相对独立,而且所有的操作都对相同的数据结构完成。
    Educode--头歌 《软件工程》实验作业_第8张图片

耦合性

耦合关系是指某两个事物之间如果存在一种相互作用、相互影响的关系。常见的耦合关系有:

①内容耦合( Content Coupling )
如果发生下列情形,两个模块之间就发生了内容耦合。

  • 一个模块直接访问另一个模块的内部数据;
  • 一个模块不通过正常入口转到另一模块内部;
  • 两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
  • 一个模块有多个入口。

②公共耦合( Common Coupling )
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

③外部耦合( External Coupling )
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。

④控制耦合( Control Coupling )
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。

⑤数据耦合( Data Coupling )
如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。

作答要求

根据相关知识,按照要求完成右侧选择题任务。作答完毕,通过点击“测评”,可以验证答案的正确性。

参考资料

【1】软件工程概论
【2】内聚、耦合

答案

Educode--头歌 《软件工程》实验作业_第9张图片
Educode--头歌 《软件工程》实验作业_第10张图片
Educode--头歌 《软件工程》实验作业_第11张图片
Educode--头歌 《软件工程》实验作业_第12张图片
Educode--头歌 《软件工程》实验作业_第13张图片
Educode--头歌 《软件工程》实验作业_第14张图片

第三关:软件工程的基本原理

任务描述

本关任务:通过对软件工程基本原理的学习,完成相应的选择题。

相关知识

为了完成本关任务,你需要掌握:软件工程的基本原理,并理解软件生存周期各个阶段的具体任务。

软件工程的基本原理

美国著名的软件工程专家 B.W.Boehm 于1983年提出了软件工程的7条基本原理。 Boehm 认为这7条原理是确保软件产品质量和开发效率的原理的最小集合。
①用分阶段的生命周期计划严格管理

有统计表明,50% 以上的失败项目是由于计划不周造成的。这条原理表明应该把软件生命周期划分为若干阶段,并相应地制定切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理;

②坚持进行阶段评审
据统计,大部分错误是在编码之前造成的。在每个阶段都应进行严格的评审,以便尽早发现在软件开发过程中所犯的错误;

③实行严格的产品控制

一切有关修改软件的建议,特别是涉及基准配置的修改建议,都必须按照严格的规程进行评审,在获得批准以后才能实施修改;

④采用现代程序设计技术

采用先进的技术既可以提高软件开发的效率,又可以降低软件维护的成本;

⑤结果应能清楚地审查

为了更好地进行管理,应根据软件开发的总目标以及完成期限尽量明确地规定开发小组的责任和产品标准,从而使所得到的结果能够清楚地审查;

⑥开发小组的人员应该少而精

开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。这一条基于两点原因:高素质开发人员的效率比低素质开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少的多;当开发小组为 N 人时,可能的通信信道为 N(N-1)/2, 可见随着人数 N 的增大,通讯开销将急剧增大;

⑦承认不断改进软件工程实践的必要性

遵从上述六条基本原理,就能够较好地实现软件的工程化生产。但是,它们只是对现有的经验的总结和归纳,并不能保证赶上技术不断前进发展的步伐。因此, Boehm 提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条原理。

软件生存周期

软件生命周期( Software Life Cycle )是从软件开发需求被提岀,启动可行性分析开始,经历软件开发过程,直到软件被开发出来、投入使用,最终被淘汰为止的整个时间。

如图1所示,一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每一个时期又划分为若干阶段。每个阶段有明确的任务,这样使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理,生存周期包括:

  • 可行性分析:主要确定软件的开发目标及其可行性;
  • 需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。主要解决“做什么”的问题;
  • 概要设计:主要根据需求分析的结果,对整个系统进行设计;
  • 详细设计:对每个模块完成的功能进行具体描述,要把功能转变为精确的、结构化的过程;
  • 程序编码:将软件设计的结果转换为计算机可运行的程序代码;
  • 软件测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正;
  • 维护:由于各种原因,软件可能无法再继续适应用户的需求,为了延续软件的使用寿命,就要对软件进行维护,包括纠错性维护和改进性维护两个方面。
    Educode--头歌 《软件工程》实验作业_第15张图片

作答要求

根据相关知识,按照要求完成右侧选择题任务。作答完毕,通过点击“测评”,可以验证答案的正确性。

参考资料

【1】软件工程基本原理
【2】软件工程概论

答案

Educode--头歌 《软件工程》实验作业_第16张图片

Educode--头歌 《软件工程》实验作业_第17张图片
Educode--头歌 《软件工程》实验作业_第18张图片
Educode--头歌 《软件工程》实验作业_第19张图片
Educode--头歌 《软件工程》实验作业_第20张图片
Educode--头歌 《软件工程》实验作业_第21张图片
Educode--头歌 《软件工程》实验作业_第22张图片

你可能感兴趣的:(头歌--软件工程,软件工程,java,经验分享,学习)