软件工程作业汇总

软件工程作业汇总

对软件工程教材中问题的理解

对高质量代码的认识

⾼质量的代码具有:可维护性、可读性、可扩展性、灵活性、简洁性(简单、复杂)、可复⽤性、可测试性。

对软件需求的理解

软件需求是用户解决问题或达到目标所需条件或权能,系统或系统部件要满足合同,标准,规范或其它正式规定文档所需具有的条件或权能,它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制。

功能需求规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求功能需求有时也被称作行为需求,功能需求描述是开发人员需要实现什么,产品特性,是指一组逻辑上相关的功能需求,它们为用户提供某项功能,使业务目标得以满足对商业软件而言,特性则是一组能被客户识别,并帮助他决定是否购买的需求,也就是产品说明书中用着重号标明的部分。

对软件体系结构的理解

软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。

什么是Devops

Ddevops(Development和Operations的组合)是一组过程、方法与系统的统称。它用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。其出现是由于软件行业日益清晰地认识到为了按时交付软件产品和服务,开发和运营工作必须紧密合作的问题。

什么是scrum中的3355(敏捷开发过程)

敏捷开发过程重视团队的交流与管理问题,其提高研发效率的显著效果,使得敏捷开发逐渐成为继瀑布式开发之后,最为流行的软件开发方式。

Scrum是用于开发、交付和持续支持复杂产品的一个框架,是一个增量的、迭代的开发过程。

Scrum团队总是先开发对客户具有较高价值的需求。

所谓Scrum3355指的是:3个核心角色,3个工件,5个关键事件和5个价值观。

3个核心角色:

产品负责人(PO)
负责最大化投资回报率(ROI),通过确定产品特性,把它们翻译成一个有优先级的列表,为下一个Sprint决定在这个列表中哪些应当优先级最高,并且不断地重新调整优先级和梳理这个列表。
职责是定义需求,定义需求优先级,定义需求的验收标准,定义产品发布内容与日期。

Scrum Master/敏捷教练
帮助产品开发团队学习并应用Scrum来达成商业价值,为大家服务,会做任何力所能及的事情来帮助团队、产品负责人和组织取得成功。
对应敏捷团队中的项目经理,但并非是一个项目经理。职责是促进团队的工作,帮助团队熟悉和掌握敏捷的价值观与框架,帮助排除影响生产力障碍,确保团队不受打扰。

开发团队
建造产品负责人所指定的产品。对交付结果负责。
团队是“跨职能”的,它包含了所有专业能力,如开发、测试、需求分析等,并且它是“自组织”[自管理]的,被给予很高程度的自治和责任。

3个工件:
产品代办清单(Product BackIog)、Sprint迭代代办清单、潜在可发布产品增量

5个关键事件:
Scrum五大事件,包括:Sprint、Sprint 计划会、每日 Scrum 站会、Sprint 评审会、Sprint 回顾会

5个价值观:
开放,尊重,勇气,专注,承诺。

了解和使用过的编程工具

PyCharm:
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。
此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

VC6.0:
Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大。VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。

你是用过那些编程语言?并比较他们的优势

Java:

Java是一款编程语言,开发者可以利用其在计算机上创建应用程序。大家在下载某款需要Java运行时的程序时,可能已经在不知不觉中将其安装到了自己的系统当中。Java还提供Web插件,允许大家在浏览器中运行此类应用。

主要用途:
Android & iOs应用开发,视频游戏开发,图形用户界面,软件开发
弊端:

占用大量内存(Java使用的内存量高于C++)
学习曲线(并不属于最易于上手的语言,当
然也不是最难学习的语言)
启动时间较长(其模拟器代码在台式机上运行速度缓慢)

Python:

Python是一项服务器端解释型开源非编译脚本语言。可单独使用,也可作为django等框架的组成部分。

主要用途:
Web开发,视频游戏开发,图形用户界面,软件开发

弊端:
速度:作为一种解释型语言,其速度往往低于编译语言。
移动:Python在移动计算领域的表现比较糟糕。利用Python开发的移动应用非常罕见。
设计:Python语言在设计上存在一些问题,其属于动态类语言,因此需要进行更多测试且会带来某些只在特定运行时中出现的错误。

优势:
易于学习:Python作为最易于掌握的编程语言而拥有极高人气。
库:广泛的工具及功能库能够帮助大家轻松完成构建工作。
物联网:Python将随着物联网技术的普及而进一步发展,目前Rasp-berry Pi等新型平台已经将其作
为开发基础。

决策树(决策表)

决策表:
决策表又称判断表 是一种呈表格状的图形工具 适用于描述处理判断条件较多 各条件又相互组合、有多种决策方案的情况。
在所有的功能性测试方法中 基于决策表的测试方法被认为是最严格的 因为决策表具有逻辑严格性。
不同于传统程序语言中的控制语句 决策表能将多个独立的条件和多个动作直接的联系清晰的表示出来。
决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。在程序设计发展的初期 决策表就已被用作编写程序的辅助工具了。
它可以把复杂的逻辑关系和多种条件组合的情况表达得比较明确。方便程序员无需知道背后复杂的逻辑关系就能看出动作对应的状态。
决策表一般分为4个部分。 每个条件对应一个变量、关系或预测
● 条件桩(Condition stub) 列出了问题的所有条件 通常认为列出的条件的次序无关紧要。
● 动作桩(Action stub) 列出了问题规定可能采取的操作 这些操作的排列顺序没有约束。
● 条件项(Condition entry) 列出针对它所列条件的取值 在所有可能情况下的真假值。
● 动作项(Action entry) 列出在条件项的各种取值情况下应该采取的动作。
规则
决策表根据候选条件和动作入口的表现方法的变化而变化。有些决策表使用true/false作为候选条件值 有些使用数字 有些甚至使用模糊值或概率值。任何一个条件组合的特定取值及其相应要执行的操作。在决策表中贯穿条件项和动作项的一列就是一条规则。显然 决策表中列出多少组条件取值 也就有多少规则 条件项和动作项就有多少列。

决策树
决策树是一种逻辑简单的机器学习算法
它是一种树形结构 所以叫决策树。
在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率 评价项目风险,判断其可行性的决策分析方法 是直观运用概率分析的一种图解法。
决策树的生成算法有ID3, C4.5和C5.0等。决策树的树形结构中的每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。
决策树由三种元素构成:根节点(包含样本的全集)内部节点(对应特征属性测试) 叶节点(代表决策的结果)

如果你要开发一个中小学生学习数学的软件,你应该找谁去做用户调研?

教师,学生,学生家长

阅读和理解什么是形式化方法?

形式化方法英文的名称是formalmethods。在逻辑科学中是指分析、研究思维形式结构的方法。它把各种具有不同内容的思维形式(主要是命题和推理)加以比较,找出其中各个部分相互联结的方式,如命题中包含概念彼此间的联结,推理中则是各个命题之间的联结,抽取出它们共同的形式结构;再引入表达形式结构的符号语言,用符号与符号之间的联系表达命题或推理的形式结构。

为什么软件开发方法论让你觉得很糟糕?

在实际项目开发过程中,我们并没有办法去预测将遇到的困难,很难用一个固定的方法来开发项目。即使是那些牛人说的软件开发方法论,也不是万能的。因为 it 业的技能很难被掌握和度量,用代码量衡量一个人的技术标准是不靠谱的。it 人员掌握技能有两个基本条件:一个环境足够规律以便可预测和有机会通过长时间实践来学习掌握这些规律。但是典型的软件项目往往是没有规律及可预测环境的。项目成功的唯一正确度量就是:最终的结果通过整个生命周期里的实施达到了预期目标吗? 很难知道什么关键活动导致了项目成功和失败,很少有人能够通过旧有或现有的项目获得答案。几乎不可能判定哪些决策导致了成功或失败。这些因素造成了 it 专业人员很难掌握引导产品和服务走向成功所需的能力。

如何理解信息隐蔽和局部化?

信息隐藏:指设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说是不能访问的。这种隐藏可以通过定义一组独立的模块来实现,每个模块仅交换必要的信息,从而避免了修改期间由于疏忽而引入的错误传播到软件的其他部分。
局部化:指把一些关系密切的软件元素物理地放得彼此靠近。这种局部化有助于实现信息隐藏,因为不同模块之间的紧密联系被限制在局部范围内,避免了系统中不必要的耦合和依赖。

衡量模块独立化的标准是什么?

衡量模块独立性的两个定性标准是耦合性和内聚性。耦合性是指软件系统结构中各模块间相互联系紧密程度的一种度量,也称为模块间联系,模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。而内聚性是指一个模块内各成分之间相互依赖程度的度量,它是衡量模块独立性的另一个重要标准,通常,内聚度越高,模块的独立性就越强。在将软件系统划分为模块时,应尽量做到高内聚低耦合,以提高模块的独立性,从而设计高质量的软件结构。

什么是模块化?为什么要模块化?

模块化是一种将软件系统划分为相对独立的模块并按照一定的规则组合在一起的设计方法。

模块化的优点包括:

提高代码可维护性。模块化可以将代码划分为相对独立的模块,每个模块都只关注自己的功能。这样,当需要修改某个功能时,只需修改相应的模块,而不需要关注整个系统。这大大提高了代码的可维护性。
灵活架构,焦点分离,方便模块间组合、分解。模块化使得系统的架构更加灵活。不同的模块可以组合在一起,形成不同的系统。同时,也可以将一个复杂的系统分解成多个相对独立的模块,这样更容易管理和维护。
多人协作互不干扰。模块化可以将系统分成多个相对独立的模块,每个模块都由不同的人开发。这样,不同的人可以在不干扰其他人的情况下开发自己的模块,提高了开发效率。

模块化的出现是为了解决软件的复杂性问题。通过将软件系统划分为相对独立的模块,每个模块只关注自己的功能,从而降低了软件的复杂性。

什么是wbs

wbs是工作分解结构:以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围,每下降一层代表对项目工作的更详细定义。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。项目范围是由WBS定义的,所以WBS也是一个项目的综合工具。

为什么软件开发都周期总是预估的两三倍

软件开发周期主要是取决于项目 主导者 选择的项目开发模式以及项目规划。一般的项目 采用 甲乙方(用户和开发、业务和开发等)沟通中的迭代开发。构造雏形在概要设计时做的东西没有也无法全量覆盖 业务需求、技术难点 等,导致与实际落地产品 差距甚大。这个差距,就是周期的一种内耗。
当然,再包含更多的项目扯皮等,预期会被更加拖延。

什么是分而治之

所谓分而治之,就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的解,把各部分的解组成整个问题的解,这种朴素的思想来源于人们生活与工作的经验,也完全适合于技术领域。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。分而治之,最初的意思就是 分别的管理(处理)。在计算机上用到分而治之就是把一个复杂的大问题化成一个个可执行的小问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值