Part One : Foundation

Activities in software development

1. Problem definition

2. Requirements development

3. Construction planning

4. Software architecture

5. Detailed design

6. Coding and debugging

7. Unit testing

8. Integration testing

9. Integration

10. System testing

11. Corrective maintenance

 

1. What is software construction?

    构建活动主要是编码与调试,但也涉及详细设计、规划构建、单体测试、集成、集成测试等其他活动。

    Software construction mainly is coding and debugging, but it also involoved Detailed design, Construction planning, unit test, integration, integration test and so on.

2. Why is software construction important?

    ① 构建活动是软件开发的主要组成部分。

        根据项目规模的不同,构建活动在整个软件开发活动总时间中所占的比例一般在30-80%之间。

    ② 构建活动是软件开发中的核心活动。

    ③ 把主要精力集中于构建活动,可以大大提高程序员的生产力。

        研究表明:在构建活动期间,不同程序员的生产率的差异可达10-20倍。

    ④ 构建活动的产物——源代码——往往是对软件的唯一精确描述。

    ⑤ 构建活动是唯一一项确保会完成的工作。

3. What is metaphor?

    使用日常现象或者容易理解的现象来描述一些难于理解的事务的过程称为隐喻。

4. How to use metaphor?

    重要的研发成果常常产自类比。通过把你不太理解的东西的一些你较为理解、且十分类似得东西作比较,你可以对这些不太理解的东西产生更深刻的理解。这种使用隐喻的方法叫做“建模”。

    隐喻的价值绝不应低估。隐喻的优点在于其可预期的效果:能被所有的人理解。不必要的沟通和误解也因此大为减低,学习与教授更为快速。实际上,隐喻是对概念进行内在化和抽象的一种途径,它让人们在更高的层面上思考问题,从而避免低层次的错误。

    ——Frmando J. Corbato

5. Why is preparation important?

    ① 从管理的角度讲,做计划意味着确定项目所需要用的时间、人数以及计算机台数。

        从技术的角度讲,做计划意味着弄清楚你想要建造的是什么,以防止浪费钱去建造错误的东西。

    ② 一般而言,发现错误的时间要尽可能接近引入该错误的时间。缺陷在软件开发中存在的时间越长,它造成的损        害就越大。由于不可能在开发开始就完全了解项目,那么在前期就要做好充足的准备,尽量在早期发现缺陷,        避免更大的损失。

 

6. What are preconditions of problem definition?

    在开始构建之前,需要对这个系统要解决的问题做出清楚的陈述。

    “问题定义”之定义了“问题是什么”,而不涉及任何可能的解决方案。

    好问题:我们跟不上客户的订单了。

    坏问题:我们需要优化数据库系统,使之跟上客户的订单。

    问题定义应该用客户的语言来书写,而且应该从客户的角度来描述问题。

    未能定义问题的处罚是,你浪费了大量时间去解决错误的问题。这是双重处罚,因为你也没有解决正确的问题。

   

7. What are preconditions of requirement?

    需求详细描述软件系统应该做什么,这是达成解决方案的第一步。

    明确的需求有助于确保是用户(而不是程序员)来决定系统的功能。

    明确的需求还有助于避免争论。

    平均水平的项目在开发过程中,需求会有25%的变化。

    在典型的项目中,需求变更导致的返工占到返工总量的75-85%。

    重要的一点是确保每一个人都知道需求变更的代价。

8. What are preconditions of architecture?

    软件架构是软件设计的高层部分,适用于支撑更细节的设计的框架。

9. Where am I at the technology tide?

    浪潮的末期。现在有各种各样的工具来帮助我们编程。

Note:

  1. 典型的软件系统在其首次发布之后的工作量,可能达到整个工作量的90%,典型情况下也有三分之二之多(Pigoski 1997)。

posted on 2013-11-11 08:26  shunny  阅读(142)  评论(0)    收藏  举报