期末要到了,复习中。
软件工程是指导计算机软件开发和维护的一门工程学科。
1,软件危机
北大西洋公约组织-1968-软件危机
为解决软件危机。NATO科学委员提出了软件工程。
软件危机指在计算机软件开发和维护中出现的一系列严重问题的现象。
主要原因:
1,软件不同于硬件,是计算机系统的逻辑部件而非物理部件。
2,参与人员之间沟通与配合问题。
3,重开发,轻问题使软件产品不满足用户要求。
4,无统一软件质量管理规范。
5,错误观念影响。
软件工程的7条基本原理:
1,生命周期计划。
2,阶段评审。
3,产品控制。
4,现代程序设计技术。
5,结果审查清楚。
6,人员少而精。
7,不断改进的必要性。
1.2软件生存期
三要素:方法,工具和过程。
软件生命周期各阶段:
1,问题定义。
2,可行性研究。
3,需求分析。
4,总体设计-三种方案。
5,详细设计。
6,编码与单元测试。
7,综合测试。
8,软件维护。
1.3软件工程方法学
软件工程方法 结构化方法与面向对象方法
结构化方法:用系统工程的思想和工程化的方法,按用户至上原则,结构化,模块化,自顶向下地对系统进行分析与设计。
特点:1,自顶向下的分析设计,自底向上的系统开发过程。
2,用户至上。
3,深入调查研究。
4,严格区分工作阶段。
5,充分预计可能发生的变化。
6,开发过程工程化。
面向对象方法:从客观世界固有的事物出发构造系统,提倡用常规思维方法来认识,理解,描述客观事物,强调最终建立的系统能够映射问题域。
优点:1,容易理解。
2,稳定性好,局部修改易实现。
3,可重用性好。
1.4软件工程工具
1,需求分析工具
流程图,类图等
2,设计工具
概要设计工具设计体系结构,控制结构和数据结构,详细设计工具实现细节。
3,编码与调试工具
集成开发环境IDE
4,测试工具
程序单元测试工具,组装测试工具,系统测试工具。
1.5软件生存期模型
1,瀑布模型
核心思想按工序将问题化简,将功能的实现与设计分工,便于分工协作。采用结构化分析与设计方法将逻辑实现与物理实现分开。
特点1,阶段间具有倾序性和依赖性。
2,推迟实现。尽可能推迟程序的物理实现。
3,质量保证。
优点1,可强迫开发人员采用规范化方法。
2,严格规定每个阶段必须提交的文档。
3,要求每个阶段所有产品都经过验证。
缺点1,完全依赖于书面规格说明,很可能产品不满足用户雳要。
2,只适用于项目开始时需求已确定的情况。
2,增量模型
融合了瀑布模型的基本成分和原型实现的迭代特征。
优1,能在较短时间内向用卢提交一些有用的工作产品。
2,逐步增加产品功能。
3,风险较低。
4,最重要的系统将接受最多测试。
3,快速原型模型
表现1,需求可变,2,需求模糊,3,用户和开发者沟通困难。
优1,有助于满足用户真实需求。
2,规格说明文档能正确描述用户需求。
3,线性顺序进行。
4,无较大返工。
5,设计与编码阶段发生错误的可能性小。
6,快速。
原型可抛弃
4,喷泉模型
1,同步开发,节省时间
2,开发人员多,不利于项目管理。
要求严格管理文档,审核难度大。
5,螺旋模型
瀑布模型与快速原型模型结合,强调风险分析,适合大型复杂系统。
四象限,1,目标设定。2,风险估计与弱化。
3,开发与验证,4,计划。
限制1,风险分析。2,只适合大规模软件项目。3,开发人员要擅长寻找风险,分析风险。
优1,设计上有灵活性。2,成本计算简单容易。
3,可控性高。4,客户能和管理层有效交互。
5,软件质量。
缺,风险驱动,开发人员要擅长寻找风险,分析风险。
6,统一过程模型RUP
6个核心工作流:1,业务建模工作流,2,需求工作流,3,分析与设计工作流,4,实现工作流,5,测试工作流,6,部署工作流。
四个阶段:1,初始阶段,2,细化阶段,3,构建阶段,4,转换阶段。
迭代式开发,更好地理解需求,构建一个健状的体系结构。
7,敏捷开发模型
以用户的需求进化为核心,采用迭代,循序渐进的方法进行软件开发。
三大角色:
1,产品负责人。2,流程管理员。
3,开发团队。
开发原则:
1,快速迭代。2,让测试人员与开发者参与需求讨论。3,编写可测试的需求文档。4,多沟通,尽量减少文档。5,做好产品原型。6,及早考虑测试。
团队要求:
1,自主管理,2,自主组织,3,多功能型。