这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10618 |
这个作业的目标 | 列出本课程学习过程中问题 |
作业正文 | 此下文 |
参考文献 | 百度,知乎 |
第一次课
1:软件开发的过程中在运行阶段出现了bug那么修改bug要把开发的代码从头到尾进行修改么?
不需要从头到尾把代码全部修改,只要找到出现bug处的那部分代码进行修改即可
2:软件开发的基本策略中的分而治之还是有些不清楚
分而治之是指把大而复杂的问题分解成若干个简单的小问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,也完全适合于技术领域。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。
3:软件的质量该如何进行保证?
软件质量保证通常有两类方法:一种是以预防为主。通过标准化、过程管理等如CMM、ISO以控制质量缺陷为目的的事前控制;一种是以调试、测试、技术评审等以找出质量缺陷为目的的事后控制。以事后控制解决软件质量问题有一定的局限性,软件质量保证更重要的是事前控制。从技术层面上来说,软件质量保证方法又可以分为:框架级、方法级和技术级三种。框架级指导我们该做什么和结果是什么;技术级只解决具体的问题,如确定是黑盒还是白盒测试等;方法级则衔接框架级和技术级,是软件质量保障的强有力武器。
软件的质量保证应构筑以用户满意为中心,能防患于未然的质量保证体系。文提出影响软件质量的因素有人的因素、过程因素和技术因素,并提出基于CMM的软件质量管理与保证体系和基于IS09000的软件质量保证体系,在软件测试过程中通过精心设计软件测试用例来保证软件质量。通过以客户的质量需求为基础,在项目开发周期的各个检查点建立质量目标;接着定义各种质量度量来评价项目活动的结果是否达到质量目标;然后确定能够帮助实现各项质量目标的活动,并将这些活动集成到软件生命周期模型中去:最后执行已经确定的质量活动和评价质量目标是否达到,若未达到则采取修正行动等步骤来实现软件质量保证。
4:制作出一个软件最应该考虑注重的是什么?
软件的质量,正确的软件,软件的正确运行
第二次课
1:phython编程规范有哪些注意事项?
使用Python编程时的10个注意事项:1、初始变化量,2、从第一列开始,3、缩进一致,4、在函数调用时使用括号,5、在Import时不要使用表达式或路径,6、不要在Python中写C代码,7、在打开文件的调用不使用模块搜索路径,8、不同的类型对应的方法也不同,9、不能直接改变不可变数据类型,10、使用简单的for循环而不是while或range
2:模块化程序设计的分解划分有那几类?
四类,基于水平划分,基于垂直划分,基于单一职责划分,基于易变与稳定划分
3:我们以后是不是都要使用pycharm来编写代码?
是的
4:错误和异常之间的区别?
错误:
1.语法错误:代码不符合解释器或者编译器语法
2.逻辑错误:不完整或者不合法输入或者计算出现问题
异常:执行过程中出现万体导致程序无法执行
1.程序遇到逻辑或者算法问题
2.运行过程中计算机错误(内存不够或者IO错误)
错误和异常区别
错误:
代码运行前的语法或者逻辑错误,
语法错误在执行前修改,逻辑错误无法修改
异常分为两个步骤:
1.异常产生,检查到错误且解释器认为是异常,抛出异常;
2.异常处理,截获异常,忽略或者终止程序处理异常。
第三次课
1:代码的审查是审查那些内容?
审查代码的一致性、编码风格、代码的安全问题、脱敏问题、代码冗余、是否正确设计以符合设计要求(性能、功能)与设计文档相同等等。
2:python中除了用pylint代码分析工具还有其他的么?
Python Pandas是一个开源的Python数据分析库。PySpark为我们提供了许多用在Python中分析大数据的功能。
3:在性能测试工具profile中,我们对于它的测试结果该如何去进行优化。
进行比较,查看测试每一个结果的数值比例,一般从占用时间最长的那一部分以及调用函数次数最多的那些函数进行优化。
4:结对编程我们在日后的学习中会安排给我们两两结对去完成某一项任务么?
日后会安排给我们进行结对编程
第四次课
1:测试覆盖率是测试那些的覆盖率?
覆盖率按照测试方法大体上可以划分为三大类,即白盒覆盖(white-Box Coverage)、灰盒覆盖(Gray-Box coverage)和黑盒覆盖(Black-Box Coverage)。
白盒覆盖率中使用的最常见的就是逻辑覆盖率(Logical Coverage ),也叫代码覆盖率(Code Coverage)或者结构化覆盖率(Structural Coverage),我们常见的逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
灰盒覆盖率(Gray-Box Coverage)函数覆盖和接口覆盖可以归为灰盒测试的范畴
黑盒覆盖率(Black-Box Coverage)在实际测试中,与黑盒相关的覆盖率比较少,主要是功能覆盖率(Function Coverage),其中最常见的是需求覆盖。
2:黑盒测试和白盒测试之间的主要区别?
黑盒白盒测试区别如下:
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。
软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。
3:java语言有没有单元测试比较好的工具?
JUnit为Java代码编写单元测试
第五次课
1:软件的过程方法有哪些?
过程方法是系统地识别和管理组织内所使用过程,它包括管理过程,实现过程,支持过程。
2:可转换模型在支付宝和微信的收款以及支付功能上有用到吗?
因为这种原型适用于安全性比较高的软件开发,因此可以应用到可转换模型。
3:原型化模型的纸上原型能够运用于那些类型的软件开发?
它先是根据已给的和分析的需求,建立一个原始模型,这是一个可以修改的模型(在声明周期法中,需求分析一般不再多修改)。在软件开发的各个阶段都把有关信息相互反馈,直至模型的修改,使模型趋于完善。在各个过程中,用户的参与和决策加强了,最终的结果更适合用户的要求。这种原型技术有分为三类:抛弃式、演化式和递增式。原型法成败的关键及效率的高低关键在于模型的建立和建模的速度。
原型法的优点是:可以解决在产品开发早期需求不确定的问题(不确定性、二义性、不完整性、含糊性等),可以明确并完善需求、探索设计选择方案、发展为最终产品。
原型法的缺点也是显而易见的,需要在正式的代码开发之前进行必要的原型开发,在某种程度上增加了工作量,尤其采用抛弃型原型,更是如此。另外,团IDC网上有许多产品团购,便宜有口碑
第六次课
1:敏捷开发与迭代模型之间的有什么区别和相似?
一、定义:
1.迭代开发:在迭代开发中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代,这叫迭代开发。每一次迭代都包括了定义、需求分析、设计、实现与测试。
2.敏捷开发:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
二、区别:
1.性质不同:迭代开发是软件开发的生命周期模型,是一种开发过程;敏捷开发是多种软件开发项目管理方法的集合,是一种开发方法。这是两者最根本的区别。
2.开发方法模型不同:迭代开发对应的是瀑布模型,螺旋模型等;敏捷开发对应的是Scrum,XP(极限编程),Crystal(水晶编程)等开发方法。
3.对需求要求不同:迭代式开发适合那些需求信息不明确的项目;而敏捷开发是紧紧围绕用户需求,以用户为导向,以快速开发,快速验证,快速修正的迭代式开发打造大量精品。
2:scrum的架构分别是那几个部分构成?
SCRUM框架包括3个角色、3个工件、5个活动、5个价值
3个角色
产品负责人(Product Owner)
Scrum Master
Scrum团队
3个工件
产品Backlog(Product Backlog)
SprintBacklog
燃尽图(Burn-down Chart)
5个活动
Sprint计划会议(Sprint Planning Meeting)
每日站会(Daily Scrum Meeting)
Sprint评审会议(Sprint Review Meeting)
Sprint回顾会议(Sprint Retrospective Meeting)
产品Backlog梳理会议( Product Backlog Refinement)
5个价值
承诺 – 愿意对目标做出承诺
专注– 把你的心思和能力都用到你承诺的工作上去
开放– Scrum 把项目中的一切开放给每个人看
尊重– 每个人都有他独特的背景和经验
勇气– 有勇气做出承诺,履行承诺,接受别人的尊重
3:极限编程(XP)可以运用在那些开发的项目中?
XP是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。极限编程(xp )是一种软件开发要领 。其关键概念在于将你的整个团队聚集在一起。xp 的核心思想是敏捷编程,即高速 ,灵活和迭代式的开发。小组在遇到特定的情况时通过收集足够的反馈而决定处理 方针。xp 十分适合规模较小的团队。
第七次课
1:开发团队组织模式中矩阵式结构应用在那些软件项目中?
2:定义顶层设计需要注意那些地方?
3:功能点方法和用例点的方法来进行估算他们之间有什么本质上的区别?
第八次课
1:产品的订单的优先级是根据市场价值来决定优先级的,那么市场价值是如何来评判的?
2:团队协作工具tower我们现阶段要下载该工具来进行团队合作么?
3:配置管理工具Git和我们放置代码的Github之间有什么联系?
第九次课
1:如何和干系人进行有效的沟通可以获得更大的效率?
1、为项目干系人的利益着想。
2、从项目干系人的角度思考问题。
3、双方要达到互利共赢的目的。
2:怎么用图形化方法对软件系统的行为和结构进行分析?
3:SRS模板是从那些角度生成的?
分别是描述性的自然语言文本,从用例模型产生,从需求数据库中生成,从混合模型(特征模型和用例模型)中生成
4:需求建模方法中UML模型和非UML图型模型是啥?
UML的全称是Unified Modeling Language。翻译过来就是统一建模语言。它对产品经理最主要的作用是用于需求分析中更好的梳理逻辑,同时能够提升沟通效率。
UML主要包括图表中的十一种,那在本次的介绍中,只讲解类图、构件图、部署图、活动图、状态机图、顺序图、用例图。