附加题1—— 我想搞懂的软工问题
1、教材第2章2.2节
我的问题是关于效能分析的函数调用次数和时间
疑问:初学编程,我们关注的是代码能够运行,还没有考虑到代码优化,效能分析的问题,在看到书上教材第33页System.Collections.ArrayList.get_Count()的调用次数和时间的时候,我产生了疑问,
int count=m_wordList.Count;for (int i=0;i<count;i++)
比 for(int i=0;i<m_wordList.Count;i++)语句,调用函数的次数和时间少。
解答:这是我自己的理解:第一种方法中,就已经把m_wordList.Count赋给了count,所以for语句中就直接使用的count的值,不需要重复调用m_wordList.Count,而第二种方法中,每循环一次就需要调用一次m_wordList.Count,所以第二种方法比第一种方法更繁琐,调用函数的次数多,但我还有一个疑问m_wordList.Count是函数吗,可以把一个函数赋值给变量?
2、教材第3章3.1节
我的问题是关于软件设计思想和软件工程思想
疑问:看到教材关于初级软件工程师的成长,有提到软件设计思想和软件工程思想,在生活中我们时刻接触着软件,然而对软件的想法也只停留在表面,如希望使用的软件易于理解、可操作性强、不会出现故障,那么到底什么是好的软件设计思想,什么是好的软件工程思想?
解答:我认为软件设计的思想应该是以“持续的质量保证”为中心,一个软件的出现都是经过无数次的单元测试、回归测试,代码复审和优化才投入市场的,这些都是从质量问题角度出发的。软件开发出来就是给用户使用的,所以质量问题是用户最关心的,同时用户的满意度、用户对软件的可靠性评价也是软件维护和升级的强大推动力。通过百度http://blog.163.com/liuqingwu_228/blog/static/4294616120129119129493/
我了解到IBM 提出了软件开发思想的4项要点——迭代开发、以系统架构为中心、持续的质量保证以及管理变更和资产 ,说实话这四点我并没有完全看懂,但是我知道,作为一个软件工程师,要不断地开拓创新、有自己的设计思想。此外,我还在网上查找了很多关于软件设计思想,如http://www.cnblogs.com/luweifeng1031/archive/2012/04/06/2434480.html里面介绍了软件开发设计的模型 ——瀑布模型(waterfall model)、 快速原型模型(原型模式)prototype model,在一本叫做《软件工程思想》的书里也介绍了上面链接提到的模型,以后有机会我也会看看这本书。百度上查找到的软件设计思想和软件工程思想无外乎是如何设计软件、开发软件,并没有真正意义上解释这两者的概念。我也想听听老师对软件设计的理解,毕竟老师是有过多年软件设计的经验。
3、教材第4章4.3.3节
我的问题是关于代码设计规范中对于断言的理解
疑问:验证程序的准确性要用断言,那什么是断言,断言又是怎么用的?
解答:通过百度百科断言http://baike.baidu.com/link?url=9mVLd0MjzPd9Bbcs1e_3SzyDs2Tz_tmvOdpwqHmhFsx-oHt6WGbpWeU4OpnH0diHUPTQ6yjDamjtrG3OWAfH7md9zKgGcG0-Gejis3hLGSm,我了解到编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。断言表示为一些布尔表达式,程序员认为在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,在测试时启用断言而在部署时禁用断言。
断言可以有两种形式
1.assert Expression1
2.assert Expression1:Expression2
其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。
同时百度百科中还详细的介绍了如何启用断言、在什么情况下使用断言,但是我对于断言的认识还是停留在表面上,我想只有在编程中真的运用到的时候,才能对断言有实质意义上的认识。
通过对断言的理解,我想断言就是用来检测在程序正常运行的时候某一个条件的值是否总为真,它能让错误在运行时刻暴露在程序员面前。
4、教材第8章8.3节
我的问题是关于excel的用法
疑问:在excel中,如何互换一个表格中的行和列?
解答:这个问题在第二作业中有涉及到,我也花时间弄懂了,步骤如下:
先复制要转换的内容,粘贴的时候选择选择性粘贴,出现下面这个对话框,转置要打勾,然后确定。
http://jingyan.baidu.com/article/a24b33cd5730bc19fe002b3e.html这个链接也很详细的解释了如何行转列、列转行。
5、教材第13章13.1.1节
我的问题是关于软件测试的方法
疑问:软件测试得方法有哪些?
解答:教材中主要介绍了软件测试设计的方法,对软件测试方法一带而过,所以这道题我是完全百度的,有以下测试方法:
1测试分类 ▪UI测试 ▪冒烟测试 ▪随机测试
2本地化测试 ▪基础化 ▪国际化 ▪安装测试
3白盒测试
4黑盒测试
5自动化 ▪回归测试 ▪验收测试
6静态测试
7动态测试
8性能测试 ▪健全测试 ▪衰竭测试 ▪负载测试 ▪强迫测试 ▪压力测试 ▪恢复测试