工程
所谓工程就是应用有关的科学知识和技术手段通过有组织的群体协作活动建造具有预期使用价值的人造产品的过程。
高楼大厦、轮船、飞机建造,工程活动一般都具有以下特钟:
- 大规模的设计和建造
- 复杂问题与目标分解
- 团队协作与过程控制
工程是将理论和知识应用于实践的科学,以便经济有效地解决问题
软件工程
是什么
- 将系统的、规范化的、可定量的方法应用于软件的开发、运行与维护,即工程化应用到软件上
- 对以上所述的方法的研究
目标
创造”足够好“的软件
足够好的软件是什么?
- 较低的开发成本
- 按时完成开发任务并及时交付
- 实现客户要求的功能
- 具有良好性能、可靠性、可扩展性、可移植性等
- 软件维护费用低
软件工程过程
软件工程方法
代码封装从函数到类再到构件,再到应用层级上的服务
软件工程工具
工欲善其事必先利其器,软件工程也不例外
软件开发的基本策略
软件复用
将已有的软件制品,直接组装或者合理修改形成新的软件系统,从而提升开发效率和产品质量,降低维护成本
软件复用不仅仅是代码复用
- 库函数、类库
- 模板(文档、网页等)
- 设计模式
- 组件
- 框架
分而治之
软件工程是一项解决问题的工程活动,通过对问题的研究分析,将一个复杂问题分解成可以理解并能够处理的若干小问题,然后逐个解决
逐步演进
软件工程师,应当把优化当成一种责任,不断改进和提升软件质量;但是优化是一个多目标的最有决策,在不可能使所有目标都得到优化时,需要进行折中实现整体最优