1.我看了这一段文字,P29:“效能分析工具,效能分析,Performance!这是每一个程序员都梦想的事儿.......”,有这个问题:如何去判断一个程序的优劣?要从哪些方面去分析,会涉及到效能分析的哪些方面?我查了资料,有这些说法:(1)分析要求:评估分析应具有实用价值,这就要求评估的准则、评估的方法、评估的效能指标要面向用途,以评估目标为导向,考虑到不同层次评估主体的不同需求。(2)分析质量:指分析结果的可信度衡量,可通过可用性和可靠性来描述,可用性:指评估结果的可用性和一定有效性基础上的评估效率;可靠性:是指一定可利用性基础上的评估结果的正确性。(3)分析时效性:分析结果具有时效性,指应从发展的观点看待评估。由于情况条件的变化,认识的深入,分析结果有一定的变化,因此,分析应在实践中反复检验。(4)指标限定性效能指标是在一定条件下得出的,具有一定的适应范围,使命任务和系统的配置不同,其评估对象的效能指标也不尽相同,效能指标值总体构成约束条件空间内的动态曲线。根据我的实践,我得到这些经验:效能的分析一定要注意一个程序的时间复杂度和空间复杂度,两者结合,共同分析,除此之外还需注意一个程序的运行环境,运行方式,都会影响一个程序的优劣。但我还是不太懂,我的困惑是:是否有接近完美的程序,它的时间复杂度和空间复杂度都为最优,一个程序又要以什么标准去客观地评价。
2.我看了这一段文字,P68:“代码规范,程序员写的代码是给人看的,还是给机器看的......”,有这个问题:代码输入到计算机内需要机器读懂,机器产生结果又会服务于人类,那么代码规范是以机器的标准还是人类的标准规范的?我查了资料,有这些说法:好的代码应该至少具备下面这5个特点:(1)使用空行来分割逻辑(2)使用注释和花括号(3)不用的代码和引用删除(4)不要用中文拼音做变量名(5)可用,清晰优雅,高效。根据我的实践,我得到了这些经验:在程序设计过程中,代码规范分为代码风格规范和代码设计规范,一个好的代码需要简洁的输入和准确的输出。但我还是不太懂,我的困惑是:每一个程序员都有自己独特的编程风格那么在团队合作时代码又是如何规范的。
3.我看了这一段文字,P115:“可有的软件是衡量项目进展的重要指标......”有这个问题:软件工作纷繁复杂如何将其作为衡量项目进展的重要指标?我查了资料,有这些说法:研发工作往往是比较难以量化的,对于研发管理来说,即使把迭代周期压缩到了1-2周,对于进度的控制粒度也是远远不够的。一般会要求团队从第一天开始就尽可能的实现持续集成(每日构建),哪怕产品啥都没有,不仅仅是工程团队,产品所有相关的人从第一天开始就可以真实的运行产品,这比什么都更直观的反应了产品进度到哪里了。在持续集成中还有很多相关的规范需要团队执行,比如自动化测试,对于一些核心代码尤为重要,有了自动化测试的用例覆盖,对于每天构建的版本质量就有了更清晰和量化的数据。自动构建的结果会每天发送邮件的团队所有人,每个人都可以清楚的了解到项目的进展情况。根据我的实践,我得到了这些经验:软件在工作的过程中不断地进步更新,敏捷流程应能保持可持续的发展,只有不断关注技术和设计,才能越来越敏捷。但我还是不太懂,我的困惑是:敏捷流程欢迎需求的变化,如何利用这些变化来提高用户的竞争优势。
4.我看了这一段文字,P232:“我们写软件就是要解决用户的需求,整个软件开发周期我们需要表达,传递和处理下面这些信息......”。有这个问题:软件真的会解决所有的需求吗?软件解决需求时的效率如何?我查了资料,有这些说法:软件设计方法是提高程序效率和确保程序正确性产生的一门计算机软件理论,而软件分析是发现软件设计方法不能阻止的程序错误和程序缺陷而发展的。软件效率表示软件的性能,人们用算法复杂度表示--理论上的运行时间和运行所需存储空间,包括软件地址空间和系统栈空间。软件正确性引导程序开发过程,则形成软件的形式推导方法。正确性的软件经过正确的程序变换规则生成的软件也是正确的。软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。根据我的实践,我得到了这些经验:软件需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。进行需求分析时,应注意一切信息与需求都是站在用户的角度上。尽量避免分析员的主观想象,并尽量将分析进度提交给用户。在不进行直接指导的前提下,让用户进行检查与评价。从而达到需求分析的准确性。分析员通过需求分析,逐步细化对软件的要求,描述软件要处理的数据域,并给软件开发提供一种可转化为数据设计、结构设计和过程设计的数据和功能表示。在软件完成后,制定的软件规格说明还要为评价软件质量提供依据。但我还是不太懂,我的困惑是:完成不同的软件需求其效率也不尽相同,那么如何将其效率最简化。
5.我看了这一段文字,P329:“从代码完成到发布,一个团队经历了计划,设计,开发等阶段,达到代码完成这一目标似乎后面的事情就水到渠成了......”。有这个问题:从软件的代码 完成到最后的发布我们要经历那些步骤?我查了资料,有这些说法:一个软件产品要经过需求,分析,设计,实现,测试五个工作流。根据我的实践,我得到了这些经验:第一步:代码完成。第二步:集成测试。第三步:Alpha发布。第四步:DCR BUG修复。第五步:Beta发布。第六部:外部测试。第七步:发布。但我还是不太懂,我的困惑是:每一个步骤都很明确,但是在真正去做的时候又会有许多的问题需要去处理,我还需要多做练习,在真正去完成一个代码的发布时去仔细体会代码从完成到发布的整个过程。