软件工程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10574 |
作业目标 |
|
作业正文 |
|
参考文献 |
|
第一次问题
1.import语句是什么?
2.python编程里的注释应该到底应该怎样写?
答:应该是怎么样而不是为什么;
3.缩进是什么?驼峰风格?
答:增强可读性;调整文本与页面边界之间的距离,后者是编程的格式。
第二次问题
1.代码中的地雷区指的是什么?
答:容易犯错误的地方。
2.结对编程缺点有些什么?
答:1.对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾。
2.有时候,程序员们会对一个问题各执己见(代码风格可能会是引发技术人员口水战的地方),争吵不休,反而产生重大内耗。
3.两个人在一起工作可能会出现工作精力不能集中的情况。程序员可能会交谈一些与工作无关的事情,反而分散注意力,导致效率比单人更为低下。
4.结对编程可能让程序员们相互学习得更快。有些时候,学习对方的长外,可能会和程序员们在起滋生不良气氛一样快。比如,合伙应付工作,敷衍项目。
5.面对新手,有经验的老手可能会觉得非常的烦躁。不合适的沟通会导到团队的不和谐
6.有经验的人更喜欢单兵作战,找个人来站在他背后看着他可能会让他感到非常的不爽,最终导致编程时受到情绪影响,反而出现反作用。
3.模块循环依赖是什么?
答:代码中的一种风格和语法模式。
第三次问题
1.软件开发以后会不断更新变化,而不断更新变化又会使软件慢慢退化,这两者是不是矛盾?
答:不矛盾,因为好的软件都是需要不断更新的。
2.软件测试是要干嘛?
答:1.通过测试发现软件中的缺陷或不足。
2.软件测试需要把发现的问题整理成报告。
3.测试人员需要分析软件的质量好坏。
3.开发一个软件需要哪几方面的技术人才?
答:软件开发人员、软件设计人员、市场研究人员、客服人员、推广人员等。其中技术人员具体包括编程人员、美工、创意人员等。
第四次问题
1.等价类型怎么划分?
答:是把所有可能输入的数据,即程序的输入域划分策划国内若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。方法是一种重要的、常用的黑盒测试用例设计方法。
2.白盒测试与黑盒测试有何联系与区别?
答:白盒测试:
是指实际运行被测程序,通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法、溢出、路径和条件等方面的缺点或者错误,进而加以修正。
黑盒测试:
又称功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试,,而并没有通过检查程序的源代码,或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据看输出的结果,从而了解软件怎样工作。应该更适合测试网页游戏。
区别一:从定义上
白盒测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。而黑盒测试着重测试软件功能,它并不涉及程序的内部结构和内容特性。黑盒测试并不能取代白盒测试,它与白盒是互补的测试方法,它很可能发现白盒测试不易发现的其他类型错误。
区别二:从测试目的上
黑盒测试的目的是检测是否有不正确或遗漏的功能;数据或者参数上,输入能否正确接收;是否有数据结构错误或外部信息访问错误;性能上是否能够满足要求;是否有初始化或终止性错误。而白盒测试的目的是通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致,而不顾它的功能。
区别三:检测方式上
白盒测试是穷举路径测试,黑盒测试是穷举输入测试,这两种方法是基于完全不同的观点,反应了事物的两个极端,它们各有侧重和优势,但不能彼此替代。在现代的测试理念中,这两种测试方法不是截然分开的,而是交叉使用
3,软件测试的方法有多少种?最优的是哪几种?
答:第一类测试方法是试图验证软件是“工作的”,所谓“工作的”就是指软件的功能是按照预先的设计执行的;而第二类测试方法则是设法证明软件是“不工作的”;
白盒法和黑盒法
第五次问题
1.瀑布模型是否反映了实际的软件开发过程?
答:是
2.软件开发应该具备什么特点?
答:1、软件开发方法学、工具和环境支持;
2、其主体内容是:软件开发方法学。软件开发方法学是从不同的软件类型,按不同的观点和原则,对软件开发中应遵循的策略、原则、步骤和必须产生的文档资料作出规定,从而使软件的开发能够规范化和工程化,以克服早期的手工方式生产中的随意性和非规范性。
3.迭代式开发有无缺点?
答:1.降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。
2.降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
3.加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
4.由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些
第六次问题
1.敏捷方法的特征是什么?
答:1. 工作在小的团队中
2. 团队是跨功能的-包括测试人员,开发人员,文档开发人员等等
3. 短迭代-利用短迭代方法来交付软件
4. 相较于文档,敏捷开发更注重面对面的交流
5. 敏捷不是一个过程,而是一个软件开发的形式或者方法
6. 敏捷可以与软件过程如CMMI等一起实施
2.瀑布模型与敏捷方法的区别是什么?
答:传统的瀑布式开发:也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好。特别是前期阶段,设计的越完美,提交后的成本损失就越少。
敏捷开发:相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。
3,微软中“尸体解剖”怎样理解?
答:微软公司术语,具体意思不清楚。
第七次问题
1.顶层设计的过程?
答:企业文化决定企业高度,股权机制.薪资体系决定人才流失,产品定位是企业发展的根本,目标客户,渠道设计。
2,用例点估算不太懂?
答:是一种算法,估算软件项目工作量。
3.神经网络具体过程是什么?
答:1.计算每个中间层的输出
B(m)=f( ∑n( W(n,m)*X(n) ) + Θ(m) )
2. 计算每个输出层的输出
Y(k)=f( ∑m( V(m,k)*B(m) ) + ф(k) )
3. 根据输出层输出和真实值比较,修改W V Θ ф
在这一步主要通过一定的方法,比如误差反向传播法、梯度下降法、遗传算法等,修改权重和阈值
4. 重复以上过程,直到网络的得到满意的输出。
第八次问题
1.敏捷估算准确性怎么样?作用?
答:还可以,可以让团队心中有谱,降低项目的不确定性,提高预测能力。
2.并行工作模式?
答:基于集成制造的并行性,并行有序,群组协同。
3.git分支的操作?git版本库的操作?
答:其实每创建一个git库,会自动生成master这个主分支,而且只有一个主分支,然后其他分支都在主分支上拓展。
第九次问题
1.需求是什么?有什么要求?
答:软件需求是指用户解决问题或达到目标所需条件或权能,以及系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。也是一种反映前面两项所述条件或权能的文档说明。它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制
2.这么多种需求方式,输入输出的数据是否持久保存?
答:是的
3.需求满足度?
答:对软件的一种评估结果。