1. 目的
软件工程是计算机科学与技术的核心课程,是一门指导软件开发和维护的工程学科,学习后可以掌握系统的软件开发理论,技术和方法,使用正确的工程方法开发出成本低,可靠性好,可以高效运行的软件
如果想要系统性学习软件工程导论,推荐阅读以下书籍:
- 《软件工程导论》作者:张海藩,专业基础
- 《软件工程 实践者的研究方法》作者:Roger.Pressman(美国),专业扩展
- 《软件工程—理论,方法与实践》作者:孙家广,刘强,在面向对象这一点讲解较为简洁明了
- 《UML与系统分析设计》作者:张龙祥,用来快速入门,在面向对象方法时会建模,用的就是UML统一建模语言
2. 软件
2.1 软件定义和分类
软件指的是计算机程序,文档,运行程序所必须的数据,方法,规。方法和规则在文档中说明,在程序中实现。
软件的方法主要介绍两种:基于软件功能的划分和基于软件规模的划分
2.1.1基于软件功能
基于软件功能,可以把软件分为系统软件,支撑软件,和应用软件
系统软件:指的是与计算机硬件紧密配合使计算机各个部件与相关软件以及数据协调,高效工作的软件,比如:操作系统,编译程序等
支撑软件:指的是协助用户开发软件的工具性软件
应用软件:指的是为了特定的应用领域和应用目的开发的软件
根据应用领域和目的的不同分为很多类:
- 商业数据处理软件
- 工程与科学计算软件,比如CAD / CAM,仿真模拟
- 智能产品嵌入软件:驻留在智能产品内部,控制产品工作的软件,比如,家用电器
- 人工智能软件:利用非数值算法来解决复杂性问题的软件。比如模式识别软件,人工神经网络软件
- 个人计算机软件,比如扫雷,电子表格等
2.2.2 基于软件规模划分
分类 | 参加人数 | 开发周期 |
微型 | 1 | 1—4周 |
小型 | 1 | 1—6月 |
中型 | 2—5 | 1—2年 |
大型 | 5—20 | 2—3年 |
甚大型 | 100—1000 | 4—5年 |
极大型 | 2000—5000 | 5—10年 |
3. 软件模式发展阶段
3.1 集中主机模型
把应用程序和数据存取都安装在一台计算机上,用户通过这一台计算机运行应用程序处理数据
缺点:数据无法共享
3.2 客户机 / 服务器模型(C/S)
3.2.1两层模式
用户可以在客户端运行应用程序通过网络访问服务器进行数据存取。解决了多个用户数据共享问题
缺点:客户端负担太重,所有的应用程序都在客户端,服务器端只进行存储数据和简单的数据存取
3.2.2 三层模式
三层模式软件分为三层,分别是客户端,应用服务器端,数据库服务器端
客户端存放人机交互界面(前端界面),应用服务器端存放业务处理程序,数据库服务器端存放数据存取
解决了客户端负担太重的问题
运行流程:多个客户端运行人机交互程序,通过网络访问应用服务器运行业务处理程序,然后再访问数据库服务器进行数据存取,然后将结果返回给客户端
3.3 浏览器 / 服务器模型(B/S)——三层模式
客户端不需要安装软件,只需要安装浏览器链接internet访问到web服务器就可以,因为所有的处理程序都在web服务器上
优点:用户不受地域控制,只要能联网就可以访问web服务器运行程序,程序更新时只需要更新web服务器,降低维护成本
3.4 新技术
人工智能,神经网络,并行运算,云计算等
4. 软件危机
4.1 软件危机定义
在计算机软件开发和维护过程中遇到的一系列严重的问题就是软件危机
4.2 主要表现
- 开发成本和进度估计不准,比如:软件延迟交付或者项目取消
- 用户对已交付软件不满意、开发人员对用户信息交流不充分,产品不符合用户需求
- 软件产品质量靠不住。软件产品保证技术(审查,复审,测试)未坚持不懈应用程序开发全过程
- 软件可维护性差,建议开发时用可移植性比较好的开发工具
- 软件没有适当的文档资料。文档资料应在老发过程中产生,保持最新
5. 软件工程
5.1 软件工程定义
根据1993年IEEE的定义:把系统化,规范化,可度量的途径应用于软件开发,运行和维护过程中,研究其实现途径。
5.2 软件工程研究的东西
5.2.1 软件工程技术
- 软件开发方法学
- 软件开发过程
- 软件工具和软件工程环境
5.2.2 软件工程管理
- 软件管理学
- 软件经济学
- 软件心理学