在实际工作的时候,码代码并不是一切,是我们实现一个完整软件的一个重要步骤。
在软件设计的过程中,我们需要知道软件设计流程、项目管理、需求分析、技术和架构设计、测试和分析性能等等。我们在软件设计的过程中,最好能够使用较好的debug工具、配置管理、单元测试、性能分析等等。在这里特别推荐一本书《Roger S. Pressman, Software Engineering, A Practitioner’s Approach》,这本书是软件设计集大成者,也是CMU软件工程的课程推荐的书籍,我正在看,感觉收获颇多。
软件设计流程
- 瀑布式
整个流程像瀑布一样,一气呵成,但是很显然,在软件设计领域根本无法达到这种层次。
需求分析:主要问题是客户自己要什么它自己都不清楚、以及它知道但是无法表达,这部分的东西搞技术的我们先不管了。
设计:根据需求,我们需要知道选择软硬件平台、程序接口、用户接口、定义好各个部分以及所需算法。
实现:除了码代码以外,要注意做好document,代码管理,进度跟进、团队协作分工。
质量保证:通过unit test,功能测试、code review。
改进:通过改变代码能够满足新的需求。
这样子的流程沟通成本太高,而且必须保证一个阶段完成后,另外一个阶段才开始,导致团队效率比较低。
- 螺旋上升
螺旋式就是考虑到了项目中的不确定性,比如需求更改。
项目预测
Oakinson’s la