从编程到工程,首先我以为首先应该理解什么是工程。为何要将软件设计编写提高到“工程”的高度呢?与咱们平常见到的土木工程做对比,若是咱们从工程的角度来理解“软件工程”的话,咱们对这个专业会有更深层次的理解。算法
咱们来看一个软件的生命周期,软件工程强调使用生存周期方法学、结构分析和结构设计技术以及新兴的面向对象分析和设计技术。生存周期学(SDLC--系统开发生命周期)是指从软件开发项目的提出到软件产品完成使命而报废的整个时期;分为八个阶段:编程
一、问题定义:问题是什么? 完成规模和目标的报告。工具
二、可行性研究:有可行性么?是否值得去作? 完成系统的实际模型,数据流图,成本/效益分析。单元测试
三、需求分析:系统必须作什么? 系统逻辑模型,数据流图,数据字典,算法描述,需求说明书。测试
四、整体设计:如何解决此问题? 可行的解法,系统流程图、成本/效益分析,推荐的系统结构,层次图 /结构图。编码
五、详细设计:如何实现此系统? 编码的规格说明。设计
六、编码和单元测试:正确的程序模块。 程序清单,单元测试方案和结果。对象
七、综合测试:符合要求的软件。 综合测试方案和结果,完整一致的系统配置。生命周期
八、软件维护:持久的知足用户。 完整准确的维护记录,需求的软件。资源
工程是什么?《大道至简》中给了咱们答案:程序+方法+过程。最狭义的工程,是描述“作什么”和“作到什么”。也就是说,是对目标的描述和成果的检测。至于这个工程目标的实现,是“过程”和“方法”的事;而有效快速的实现“过程”和“方法”所需的,就是“工具”。
工具的产生仍旧是出于“ (软件)实现”的须要。不可能从软件开发实践中产生出轮子和指南针,由于那不是软件开发的本质需求”能够推进的。 软件工程的体系中, “实现”做为软件开发的本质需求和基本动因,如同上帝之手在推进这几十年来的软件工程理论体系的造成。工程理论实际上是包含组织学的。组织,包括人力资源、项目资金以及多个项目间的协调等,是由向项目经理负责的。他须要为项目的各个阶段创建计划,并逐渐地细化计划内容;须要确立项目或产品阶段目标,成果的准确描述,定位,以及整个项目的质量目标及其评核办法;须要对团队中的不一样角色培训,指导,并协调他们的工做;还须要为每个人准备他所须要的资源等等。总之,组织者的工做都是非技术性的。而Boss并非组织者而是经营者。
语言对于程序设计师而言只是一种工具。