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

走进软件工程

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

第一关:软件是软件h2>

任务描述

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

相关知识

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

什么是软件

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

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

软件的类别

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

  • 系统软件:系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。

耦合性

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

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

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

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

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

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

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

作答要求

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

参考资料

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

答案

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

任务描述

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

相关知识

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

软件工程的基本原理

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

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

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

③实行严格的产品控制

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

④采用现代程序设计技术

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

⑤结果应能清楚地审查

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

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

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

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

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

软件生存周期

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

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

  • 可行性分析:主要确定软件的开发目标及其可行性;
  • 需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。主要解决“做什么”的问题;
  • 概要设计:主要根据需求分析的结果,对整个系统进行设计;
  • 详细设计:对每个模块完成的功能进行具体描述,要把功能转变为精确的、结构化的过程;
  • 程序编码:将软件设计的结果转换为计算机可运行的程序代码;
  • 软件测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正;
  • 文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93738 人正在系统学习中

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月12日
下一篇 2022年9月12日

相关推荐