##软件工程第二周作业
提出问题
1. 一般来说,想要自己的程序跑得又快又好,就要减少函数的反复调用,但有所得则必有所失,效能提高就有可能伴随着程序的稳定性的降低,这两者应该如何权衡呢?
2. 关于5.3.5 老板驱动的流程,这种开发流程模式存在着一些问题,那要如何解决这些问题呢?
这种模式当然也有它的问题。
领导对许多技术细节是外行。
领导未必懂得软件项目的管理,领导的权威影响了自由的交流和创造。
领导最擅长的管理方式是行政命令,这未必能管好软件团队或任何需要创造力的团队。
领导的精力有限,领导很忙时,团队怎么办?
我认为可以在老板与开发人员之间加入PM进行管理,一方面拥有基本的知识储备,可以与开发人员沟通,一方面又具备有较强的人际交往能力,可以与老板沟通,辅助管理等。
3. 书本8.6.1 目标、估计和决心 中,有提到通过对自身的能力的估计以完成对项目完成所需时间的估计,事实上,自己正确认识自己的能力是一件很难的事情,那我们应该怎样去自我认知,并将其与项目完成联系在一起做出较准确的估计?有什么具体的方法吗?
软件项目的难度还体现在另一个方面,软件工程师的【能力】没有合适的衡量单位,而且大部分依赖于估计值。例如,如果移山公司的程序员果冻一天能写一千行C++代码,那他10天就能写好一万行代码?!而且什么叫写好一万行代码?如果估计一个项目的代码量是10万行,难道十个像果冻这样的人10天就能做完?
4. 在测试过程中,如果本身测试的数据不全面,或者测试的过程本身就存在问题,这时候就无法正确测试出来程序是否有BUG,这种时候要如何正确判断呢?
5. “Ad hoc”在软件工程的实践中,大多是指随机进行的、探索性的测试,然而随机的话,就有可能有的地方随机不到,那这个测试方式的意义何在?一般进行测试的时候都是采用什么方式进行测试的?
我认为,“Ad hoc”是一种特定性的测试,它是针对某一特定方向随机测试的,这样一来,如果某特定方向的功能我们没有考虑到,忽略了这个方向的测试,那就会存在潜在问题,届时将很麻烦。所以应该在测试过程中应该存在多种测试方法进行测试,确保没有潜在问题。