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