课程链接:学堂在线:软件工程 - 清华大学 - 学堂在线
软件工程的基本标准:以经济有效的方法开发高质量(”足够好“)的软件。
一、软件的定义及本质特征
1.1定义
软件是软件工程的研究对象,也是软件工程的产品形态与客观存在。
软件 = 程序+数据+文档,对于用户是一系列实现各种功能的图形化界面,对于计算机内部由各种代码实现不同功能,需要操作各种数据,为了后续维护和开发以及方便用户使用,需要描述技术、实现细节的开发文档,和系统使用的用户文档。
1.2软件的本质特征(造成软件开发困难的基本原因)
- 可变性:具有随需而变的特性。
- 一致性:依附于运行环境,面向用户适应技术和系统,接口可变性。
- 复杂性:繁琐,消耗资源较多,给开发管理和质量保证带来很多困难。
- 不可见性:软件不具有空间的形体特征、源代码并不是软件本身、软件运行时无法保证代码执行透明。
二、软件工程的发展历程及目前面临的主要挑战
2.1 发展历程
- 史前时代(56~67):软件开发没有系统方法,设计是在人脑中完成。
- 瀑布过程模型(68~82):提出概念和结构化开发方法。
- 质量标准体系(83~95):面向对象,软件过程和标准体系改进。
- 互联网(至今):团队协作、迭代和增量开发、快速交付高质量软件。
2.2 开发面临的挑战
- 客户不满意:功能冗杂、交付日期拖沓、使用Bug较多。
- 项目过程失控:紧跟客户需求吃力、无法预见软件交付质量、盲从流程,忽视客户业务价值。
- 风险与成本能力:开发团队专注技术,忽视风险、无能预测成本导致超出预算
- 无力管理团队:无法评估开发人员能力及工作进度、困扰与提高团队能力和效率。
三、 软件工程的基本概念及组成要素
3.1 基本概念
软件工程是一种专业化软件开发的方法,是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上。并且对该方法进行研究。
3.2 软件工程的基本要素
- 过程:支持软件开发各个环节的控制和管理(问题定义->需求开发->软件设计->软件构造->软件测试)
- 方法:完成软件开发任务的技术手段(面向过程->面向对象->构建->服务)
- 工具:为软件开发方法提供自动或半自动的软件支撑环境(需求开发->软件设计->软件构造->软件测试->软件维护->开发管理)
四、开发基本策略
软件复用->分而治之->逐步演进->优化折中
小结
本节内容介绍了软件和软件工程的各个特征和概念。整体感觉上软工这门学科是非常重实践的,而且从课程里1.6节CEO讲话里可以看出,一个优秀的软工团队需要较强的团队协作能力,项目结构化和可量化的能力,这点对于后续组队完成团队项目应该较为重要。