Educode--头歌 《软件工程》实验作业
走进软件工程
- 第一关:软件?什么是软件?
- 任务描述
- 相关知识
- 什么是软件
- 程序、数据、文档
- 软件的类别
- 作答要求
- 参考资料
- 答案:
- 第二关:软件工程基础
- 任务描述
- 相关知识
- 什么是软件工程
- 软件工程的目标
- 内聚性
- 耦合性
- 作答要求
- 参考资料
- 答案
- 第三关:软件工程的基本原理
- 任务描述
- 相关知识
- 软件工程的基本原理
- 软件生存周期
- 作答要求
- 参考资料
- 答案
第一关:软件?什么是软件?
任务描述
本关任务:掌握软件的基本概念与特征,并完成相应的选择题。
相关知识
为了完成本关任务,你需要掌握:
1.什么是软件;
2.软件的特点;
3.常见的软件类型。
什么是软件
软件( Software )是一系列按照特定顺序组织的计算机数据和指令的集合。如图1所示,它通常包含以下特点:
无形性;软件是看不见、摸不着的东西,它没有物理形态,但是我们可以通过对软件的使用来了解它的功能、逻辑等等特性;
软件是一种智力成果;软件是由开发者通过运用计算机知识构建出来的,它是编程者智力和逻辑性的结果;
软件不会像硬件一样老化磨损,但存在缺陷维护和技术更新;
依赖性;软件的开发受限制于硬件的环境,因为在开发过程中应该尽量减少软件对硬件的依赖,从而有了可移植性的概念;
可复用性;在完成软件的开发以后,可以进行复制从而形成多个副本。
程序、数据、文档
程序:按事先设计的功能和性能需求执行的指令序列。
数据:是程序能正常操纵信息的数据结构。
文档:与程序开发、维护和使用有关的图文资料。
软件的类别
按应用范围划分,一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。
- 系统软件:系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
- 应用软件:应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。
按照软件的应用领域,可将计算机软件划分为以下几类:
- 系统软件:服务于其他程序的程序。
- 应用软件:解决特点业务需要的独立应用程序。
- 工程/科学软件:通常带有“数值计算”算法的特征。
- 嵌入式软件:存在于某个产品或系统中,可实现和控制面向最终使用者和系统本身的特性和功能。
- 产品线软件:为多个不同用户的使用提供特定功能。
- Web应用:是一类以网络为中心的软件,其概念涵盖了宽泛的应用程序产品。
- 人工智能软件:使用非数值算法解决计算和直接分析无法解决的复杂问题。
- 开放计算:无线网络的快速发展将促成真正的普适计算、分布式计算的实现。
- 网络资源:构建简单而智能的应用程序,为全世界的最终用户市场提供服务。
- 开源软件:开放系统应用程序的代码。
作答要求
根据相关知识,按照要求完成右侧选择题任务。作答完毕,通过点击“测评”,可以验证答案的正确性。
参考资料
【1】 软件工程概论
【2】 软件的定义与分类
开始你的任务吧,祝你成功!
答案:
第二关:软件工程基础
任务描述
本关任务:理解清楚软件工程的基本概念,并完成相应的选择题。
相关知识
为了完成本关任务,你需要掌握软件工程的基本概念,并理解内聚、耦合的具体含义。
什么是软件工程
软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。软件工程包括三个要素:方法、工具和过程。
软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。软件工程的目的是在经费的预算范围内,按期交付出用户满意的、质量合格的软件产品。
软件工程的目标
软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。
- ① 适用性:软件在不同的系统约束条件下,使用户需求得到满足的难易程度;
- ② 有效性:软件系统能最有效地利用计算机的时间和空间资源;
- ③ 可修改性:允许对系统进行修改而不增加原系统的复杂性;
- ④ 可靠性:能防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力;
- ⑤ 可理解性:系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制系统软件复杂性,并支持软件的维护、移植或重用;
- ⑥
可维护性:软件交付使用后,能够对它进行修改,以改正潜伏的错误,改进性能和其它属性,使软件产品适应环境的变化等。软件维护费用在软件开发费用中占有很大的比重。可维护性是软件工程中一项十分重要的目标; - ⑦ 可重用性:把概念或功能相对独立的一个或一组相关模块定义为一个软部件。可组装在系统的任何位置,降低工作量;
- ⑧ 可移植性:软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度;
- ⑨ 可追踪性:根据软件需求对软件设计、程序进行正向追踪,或根据软件设计、程序对软件需求的逆向追踪的能力;
- ⑩ 可互操作性:多个软件元素相互通信并协同完成任务的能力。
内聚性
内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。
- 偶然内聚:一个模块执行多个完全不相关的操作,则具有偶然性内聚;
- 逻辑性内聚:这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块参数来确定该模块应完成哪一种功能;
- 时间性内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块;
- 过程内聚:构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。简单的说就是如果一个模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚;
- 通信内聚:执行一系列与产品要遵循的步骤顺序有关的操作,并且,如果所有操作都对相同的数据进行,则该模块具有通信性内聚;
- 功能内聚:模块内所有元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,模块已不可再分;
- 信息性内聚:如果模块进行许多操作,每个都有各自的入口点,每个操作的代码相对独立,而且所有的操作都对相同的数据结构完成。
耦合性
耦合关系是指某两个事物之间如果存在一种相互作用、相互影响的关系。常见的耦合关系有:
①内容耦合( 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所示,一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每一个时期又划分为若干阶段。每个阶段有明确的任务,这样使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理,生存周期包括:
- 可行性分析:主要确定软件的开发目标及其可行性;
- 需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。主要解决“做什么”的问题;
- 概要设计:主要根据需求分析的结果,对整个系统进行设计;
- 详细设计:对每个模块完成的功能进行具体描述,要把功能转变为精确的、结构化的过程;
- 程序编码:将软件设计的结果转换为计算机可运行的程序代码;
- 软件测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正;
- 维护:由于各种原因,软件可能无法再继续适应用户的需求,为了延续软件的使用寿命,就要对软件进行维护,包括纠错性维护和改进性维护两个方面。
作答要求
根据相关知识,按照要求完成右侧选择题任务。作答完毕,通过点击“测评”,可以验证答案的正确性。
参考资料
【1】软件工程基本原理
【2】软件工程概论
答案
Educode--头歌 《软件工程》实验作业相关推荐
- 头歌 数据库系统实验 答案 善用目录
头歌 数据库系统实验 答案 善用目录 其他作业链接 非盈利文章,谢谢大家的分享和支持,如果大家有想要投稿的答案,也可以点击下面链接联系作者. 点击联系作者 作者博客 选择题加粗为正确答案 头歌java ...
- 头歌数据库实验六:存储过程
转载于头歌数据库实验六:存储过程头歌数据库实验六:存储过程 - Yenshthen研学绅头歌数据库实验六:存储过程 第1关:增加供应商相关列sqty use demo;#代码开始 #在S表中增加一列供 ...
- 数字逻辑---头歌实训作业---逻辑函数及其描述工具(Logisim)
第1关:根据布尔表达式绘制电路 如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!! 本关卡最终答案: 任务描述 本关任务:在Logisim中根据给定的 ...
- 数字逻辑---头歌实训作业---多路选择器设计与应用(Logisim)
第1关:2选1选择器设计 如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!! 本关卡最终答案: 任务描述 本关任务:在Logisim中绘制2选1多路选 ...
- 数字逻辑---交通灯系统设计(HUST)---头歌实训作业---数字系统设计(课程设计)
数字逻辑---交通灯系统设计(HUST) 第1关:7段数码管驱动电路设计 如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!! 本关卡最终答案:下面是此 ...
- 【四】头歌平台实验-确定性推理
推理是求解问题的一种重要方法.因此,推理方法成为人工智能的一个重要研究课题.目前,人们已经对推理方法进行了比较多的研究,提出了多种可在计算机上实现的推理方法. 本篇文章主要介绍推理的基本概念,然后着重 ...
- 数字逻辑-头歌实训作业-译码器设计与应用(Logisim)
准备工作 首先要下载Logisim,我开始使用是真的痛苦,老师也不讲 中文版下载,使用码云下载地址 把那两个logisim-ita-cn-20200118.exe,logisim-ita-cn-202 ...
- 【二】头歌平台实验-离散数学逻辑与推理
主要介绍基本逻辑运算,利用逻辑推理解决相关问题. 第1关:命题与逻辑 编程要求:编程得出(P→Q)∧R的真值表的所有结果. #coding=utf-8 import sympy as sym# 定义符 ...
- 头歌Educoder实验:C++ 面向对象 - 类的继承与派生
第1关:公有继承 -- 学生信息类 任务描述 本关任务:采用公有继承设计学生信息类. 相关知识 继承 继承是使代码可以复用的重要手段,也是面向对象程序设计的核心思想之一.简单的说,继承是指一个对象直接 ...
- 头歌Educoder实验:C++ 面向对象 - 构造函数与析构函数
第1关:构造函数 -- 学生信息类 任务描述 本关任务:设计一个带有构造函数和析构函数的学生类. 相关知识 构造函数.析构函数与赋值函数是每个类最基本的函数.他们太普通以致让人容易麻痹大意,其实这些貌 ...
最新文章
- 【camera-radar】相机-毫米波雷达联合标定方案介绍+实现
- Spring MVC学习笔记——POJO和DispatcherServlet
- python 柱状图-【python】【数据分析】3D柱状图就是这么好看
- iPhone开发之网络编程 AsyncSocket
- 佳能g3800故障灯说明书_汽车仪表灯的使用方法以及注意事项
- python integer_【Python】string/list/integer常用函数总结
- mysql 插入当前时间_MySql优化之前期探索
- stm32l0的停止模式怎么唤醒_最强家庭娱乐系统+儿童模式,小度在家智能屏X8开售抢先体验...
- 路由器三种口令的设置
- 最短路径 自己写的一个很简单的模板 dijkstra算法
- if单分支,二分支,多分支
- JavaScript 学习笔记一 (入门篇)
- 苹果鼠标滚轮驱动_双飞燕血手幽灵V8M Max电竞鼠标兼具功能和性价比
- 《匠人手记》里的10种软件滤波
- vue3前端项目引入iconfont阿里图标
- Stream.sorted
- Bron-kerbosch算法-求图的最大团,极大团
- 计算机安装xp蓝屏怎么办,重装xp系统一直蓝屏重启循环怎么回事
- 数据分析报告怎么写(一)
- 转一位计算机牛人的心得,谈计算机和数学,很实用~