乱入传统软件行业,之前对软件工程一点概念都没有,读点书,仅此而已。
1.1 什么是软件构件?
通过阅读可知,软件构建主要就是指整个软件项目的编码过程或阶段。
那么一个软件工程都有哪些阶段呢?
大致可为:
1.定义问题(可能就是要解决什么问题)
2.需求分析(和客户的沟通应该很重要)
3.规划构建(是不是该谈钱了?)
4.软件构架(粗框)
5.详细设计(细框)
6.编码与调试(软件构建了)
7.单元测试(单个功能击破)
8.集成测试(链接bug吗?)
9.集成(不同模块的拼接)
10.系统测试(总体测试)
11.保障维护(后期的运营啦~)
在一些不正规的项目中,无法在软件开发过程中细分这么多的过程,基本都会被并入到编程的环境当中。
1.2 那么为什么软件构建如此重要呢?
1.构建活动是软件开发的主要组成部分。(在一个项目中大约会占到30%-80%的时间)
2.构建活动是软件开发中的核心活动。(不正规的项目中基本达到100%)
3.把主要的精力集中于构建活动,可以大大的提高程序员的生成效率。
4.构建活动的产物:源代码,往往是对软件的唯一的精确描述。(很多项目中,程序员可以得到的唯一文档就是源代码本身。)
5.构建活动是唯一一项确保会完成的工作。(也就是说可以没有别的流程%>_<%。。)
2.1 隐喻的重要性
重要的研发成果常常产自类比。通过把你不太理解的东西和一些你较为理解、且十分类似的东西作比较,你可以对这些不太理解的东西产生更深刻的理解,这种使用隐喻的方法叫做建模。
2.2 如何使用软件隐喻
隐喻的作用更像是启示,而不是算法。算法是一套定义明确的指令,是你完成某个特定的项目,而启示是一种帮你寻找答案的技术。
对于编程来说,最大的挑战还是将问题概念化,编程中的很多错误都是概念的错误。(说的太好了!)
原因在于每个问题在概念上都具有独特性。(所以没有通吃的方法啦~)
那么该如何使用软件中的隐喻呢?应该用他来提高你对编程问题和编程过程的洞察力,用它来帮助你思考编程过程中的活动,想象出更好的做事的方法。(就是建模建的好,编程飞上天呗!)
2.3常见的软件隐喻
A.软件中的书法:写作代码(简单、呆板)
写信隐喻主要针对于个人开发,但不适合更大的软件项目常见,因为它没有完整、充分地刻画软件开发工作。
对于写作而言,最重要的事其原创性。但对于软件构架来说,努力创造真正的原创成功的开发效率,往往低于专注于重用以往项目的一些设计思想、代码以及测试用例的开发效率。(这种方法和《人月神话》好像还扯上了关系)
文字写作隐喻暗示着软件开发过程是一种代价昂贵的试错过程,而非仔细的规划和设计。
B.软件的耕作法:培育系统(一次做一点)
C.软件的牡蛎养殖观点:系统生长(先搭架在添加)
增量式的开发过程就是我们先搭建一个尽可能简单,但能运行的版本,然后在向这个版本一点一点的增加功能代码。这种隐喻的优势在于未做过过度承诺。
D.软件构建:构建软件(详细指引)
它与软件生长的概念相似,只是给出了更详细的指引,暗示出软件开发过程中有诸多阶段。
适当的多层次的规划对于建造建筑物和构建软件都有好处。如果你按错误的顺序构建软件,那么编码、测试和调试都会更难。需要花更长的时间才能完成,甚至整个项目分崩离析。你只需要保证已经做了足够的计划,不会到后来因为计划不足而引发重大问题。
E.应用软件技术:智慧工具箱(拿来就用)
不同的隐喻是不同的启发方法而不是算法,因为它们并不互斥,你可以组合使用对你来说最有用的隐喻。