导论(引言):
1. 为什么要学习软件工程?
软件工程知识并不只是项目管理可以用,同样适用于开发岗。比如开发也要做需求分析和架构设计,也要做计划。学习软件工程后也可以帮助开发人员更好的理解软件项目的整个过程,不再看局限于技术实现,拥有全局的视野。软件工程就是用系统化的思维去解决一个问题。有了软件工程的保障,才能把软件开发做好。软件工程学让我知道,软件项目的开发其实是一个工程,整个开发过程是可以有效组织起来的;对于开发过程的各个阶段,已经有很多解决问题的最佳实践,有很多方法来帮助我们高效完成任务;我们还可以借助工具来协助管理,提升开发效率。
2. 软件工程能学到什么?
课程的讲授内容按照软件过程基本框架------(沟通、分析、设计、实施与维护进行组织,涉及项目可行性分析、需求分析、概要设计、详细设计、阶段评审、成本效益、软件实施、软件测试以及软件维护等。通过本课程的学习,理解软件工程基本理念与核心思想,熟悉软件工程的基础理论、工具和方法,熟悉软件质量保证的任务、目标和度量,熟悉软件项目管理基本方法与手段,理解组建团队进行软件项目或产品开发的重要性等。课程学习有助于提升学生解决实际复杂工程问题的全局观、系统能力和工程化思想。
3. 应该如何学习该课程?
讨论:1.目前软件的应用(举例说明)
目前我所学所用到的软件有:Dev-c++、Eclipse-java、Visual Studio2019、VMware虚拟机-Linux、SQL-Sever 、PowerDesigner、MATLAB、SPSS、Dreamweaver等。
2.对工程的思想的认知(举例说明)工程是指以某组设想的目标为依据,应用有关的科学知识和技术手段,通过有组织的一群人将某个(或某些)现有实体(自然的或人造的)转化为具有预期使用价值的人造产品过程。
软件工程师职业素养:
软件工程师是对在IT行业从事软件开发、维护及管理等相关工作人员的统称。软件工程师职业包括软件架构、软件设计、软件编码、软件测试、软件维护、软件管理等一系列岗位。尽管这些岗位的分工不同,主要工作内容也有所差异,但都参与软件(系统)的设计、开发、测试、维护等过程,协助项目管理者保证所开发软件产品的质量,解决软件开发过程中的关键问题和技术难题。作为一个合格的软件工程师,除了具有扎实的计算机及软件技术相关专业技能之外,还有具有以下软件工程师职业所必备的职业素养。
- 自信 2.自学 3.责任心 4.沟通 5.和谐的人际关系 6.上进心 7.团队合作
第一章 软件工程学概述
一、软件的定义
软件是程序和所有使程序正确运行所需要的相关文档和配置信息。
Software = Program + Data + Document
二、软件的特征
1、软件是无形的
2、软件副本制作简单
3、软件无磨损
三、软件的发展
四、软件的分类
- 基于软件功能的划分
系统软件、支撑软件、应用软件 。
- 基于软件工作方式的划分
实时处理软件、分时软件、交互式软件、批处理软件。
- 基于软件规模的划分
微型软件、小型软件、中型软件、大型软件、巨大型软件、极大型软件。
- 基于软件失效的影响进行划分
- 基于软件服务对象的范围进行划分
定制软件 、产品软件。
五、软件危机
- 定义:软件开发和维护过程中遇到的一系列严重问题。
- 具体表现:
1、产品不符合用户的实际需要;
2、软件开发生产率不高,不能满足客观需要;
3、软件产品质量差;
4、对软件开发成本和进度的估计不准确;
5、可维护性差;
6、软件的文档资料不完整和不合格;
7、软件成本逐年上升。
- 产生原因:
1 、宏观
(1)缺乏总体考虑,没有软件工程学概念或系统工程思想。------软件
(2)对业务了解支离破碎,需求分析不准。------软件
(3)企业依赖激情指挥,企业管理标准化、规范化、科学化程度不高,导致不能成功地应用"死板"的软件,它依赖于业务的"科学化"、"条理化"、"程序化" ------企业
(4)企业信息化程度和计算机应用水平低,导致无法准确描述需求。------企业
(5)一把手对信息管理的重视程度不够。------企业
(6)缺乏相互沟通,业务描述的详尽程度不能达到具备生活常识的人能够轻易理解。------ 企业、软件
2 、微观
(1)软件的规模比较庞大,其开发和维护相当困难;
(2)开发人员虽然有经验,但还存在着不少错误观点,没有实行工程化的方法;
(3)不能与用户及时沟通,不能了解用户的实际需要;
(4)没有统一的软件质量管理规范;
(5)不能根据环境的变化而随时对产品进行改正。
六、软件生命周期常见过程
- 制定计划 ------解决什么问题,目标及其可行性(技术、人员、财力、社会)
- 需求分析 ------做什么、验收标准
- 总体设计 ------怎么做
- 详细设计 ------具体怎么做
- 程序编写 ------实现
- 软件测试 ------保证软件质量
- 运行/维护 ------保证正常而可靠地运用
目录
[第一章 软件工程学概述](#第一章 软件工程学概述)