软件工程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10618 |
作业目标 | 把疑问都解决了 |
作业正文 | https://i-beta.cnblogs.com/posts/edit;postId=12674811 |
其他参考文献 | www.baidu.com |
第一次课学习问题
一:目前软件开发面临哪些问题?
1. 软件开发是高风险、高投入的项目
2. 开发时间长、成本高
3. 无法证明正确性
4. 维护代价高
5. 开发、维护难于度量 等等
6. 偏激看法:凡是软件开发项目就不可能按时完成。
二:为什么要不断开发软件
在软件开发的过程中,用户需求不断的变更这种情况是随时可能发生的,这对于研发组人员是应该早有预见的,因此要不断开发软件
三:软件的生命周期可以分为哪些阶段?
软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和
第二次课学习问题
1:python是目前最好得语言吗?
python是目前市面上,我个人认为是最简洁&&最优雅&&最有钱途&&最全能的编程语言,没有之一。
2:如何学好python?
实践出真知,多动手!
3:python得优点
易学。python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。可扩展性和可嵌入性。如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
第三次课学习问题
1:优化代码是不是就是换不同的算法去尝试?
代码优化是指对程序代码进行等价(指不改变程序的运行结果)变换。程序代码可以是中间代码(如四元式代码),也可以是目标代码。等价的含义是使得变换后的代码运行结果与变换前代码运行结果相同。优化的含义是最终生成的目标代码短(运行时间更短、占用空间更小),时空效率优化。原则上,优化可以在编译的各个阶段进行,但最主要的一类是对中间代码进行优化,这类优化不依赖于具体的计算机。
2:该如何优化字符串?
1尽量使用内置函数,2拼接字符串,3使用 generator,5巧用多重赋值
3:是不是一定要给自己的代码全部做出解释?
不是,适当得做出解释,要让别人看的懂
第四次课学习问题
1:黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是不是发现不了?
黑盒测试百也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使度用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测专试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试是以用户的角度,从输入数据属与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
2:等价类的原则是什么?
1)如果输入条件规定了取值的范围或个数,则可确定一个有效等价类和两个无效等价类。
(2)如果输入条件规定了输入值的集合或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。
(3)如果输入的是布尔表达式,则可确定一个有效等价类和一个无效等价类。
(4) 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。
(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
3:基于边界值分析方法选择测试用例的原则是什么?
1)如果输入条件规定了取值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
2)如果输入条件规定了取值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。
4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
6)分析规格说明,找出其它可能的边界条件。
第五次课学习问题
1:软件测试的原则有哪些?
1.软件开发人员即程序员应当避免测试自己程序
管程序员还开发小组都应当避免测试自己程序或者本组开发功能模块
2. 应尽早地和断地进行软件测试
3.对测试用例要有正确态度:第测试用例应当由测试输入数据和预期输出结两部分组成;第二设计测试用例时仅要考虑合理输入条件更要注意合理输入条件因软件投入实际运行往往遵守正常使用方法却进行了些甚至大量意外输入导致软件时半时能做出适当反应容易产生系列问题轻则输出错误结重则瘫痪失效因此常用些合理输入条件来发现更多鲜人知软件缺陷
4.人群分物类聚软件测试也例外定要充分注意软件测试群集现象也认80-20原则要发现几错误并且解决些问题之需要测试了反而里错误群集地方对段程序要重点测试提高测试投资效益 5.严格执行测试计划排除测试随意性避免发生疏漏或者重复无效工作 6.应当对每测试结进行全面检查定要全面地、仔细地检查测试结常常被人们忽略导致许多错误被遗漏 7.妥善保存测试用例、测试计划、测试报告和终分析报告备回归测试及维护之用
2:软件维护有哪几种类型?
改正性维护
适应性维护
完善性维护
预防性维护
3:导致维护成本搞企得原因主要有哪些?
软件开发途径好,导致软件课维护性差,与拿来得开发人员没有参与维护,维护成本日益高涨,从维护得工作量得禁言模型可以看到,维护工作得工作量喝成本将呈指数增加。
第六次课学习问题
1:什么是软件生命周期?
软件如同自然界任何事物一样,都有其孕育、诞生、成长、成熟衰亡的生存过程。软件的这一过程,称为软件生命周期。
2:什么是软件生命周期模型?
软件生命周期模型也称软件开发过程模型,是为了解决产业环境中得实际问题,而提出开发策略。是反映整个软件生命周期中,系统开发,运行,维护,等实施活动得一种结构框架。
3:瀑布模型,增量模型,螺旋模型优缺点?以及各自适用范围!
瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。但问题是,往往不能够真正满足用户得需求适用于传统软件工程领域的结构化开发。
原型模型。 是为了克服瀑布模型的缺点而提出来的。通过快速构建一个在机器上可运行的原型系统,让用户试用原型,并收集反馈意见的办法,来获取用户真实的需求。
螺旋模型适用于大型软件项目,比起之前的其它模型而言,有其一定的优越性,但这些优越性并不是对的。主要体现在对开发人员的风险评估经验和专门知识的要求较高。如果项目风险较大,而开发人员的水平较低,不能准确的识别和分析风险,则势必造成重大损失。
4.增量模型具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要求软件具有开放的结构。
第七次课学习问题
1:软件项目规模一般是指所开发软件的规模大小,它的度量方法一般有哪些?
在软件研发成本度量(包括估算与测量)方面,对于软件规模本身的评价是首要任务。根据软件行业的实践,目前评价软件规模的方法主要分为两种:基于业务视角和基于开发视角。基于业务视角的方法是从用户角度出发,与软件开发技术无关,如:功能点、故事点、用例点、对象点等方法;基于开发视角的方法是从开发者角度出发,如:基于软件源代码行、数据库表、函数数量等方法。
2:软件项目的成本主要是有哪些?
通常的软件开发成本=直接人力成本+直接非人力成本+间接人力成本+间接非人力成本
开发预算,即项目预算,后期维护升级费用,平台费用
3:功能规模度量规则
第八次课学习问题
1:如何挑选配置管理工具?
根据自己得实际情况挑选!
2:scrum方法的优缺点
1.个体和交互胜过过程和工具
2.可以工作的软件胜过面面俱到的文档
3.客户合作胜过合同谈判
4.响应变化胜过遵循计划
3:用户故事的重要性?
用户故事在软件开发过程中被作为描述需求的一种表达形式。为了规范用户故事的表达,便于沟通,用户故事通常的表达格式为:作为一个<用户角色>, 我想要<完成活动>, 以便于<实现价值>。用户故事背后的细节来源于和客户或者产品负责人的交流沟通;确保各方对故事的理解正确。