软件工程概论第一二三四章
软件工程概论 知识点
第一章软件工程概论1.1软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
1.2.软件工程1、软件工程的定义:指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理技术和方法进行软件的开发和维护,把经过时间考虑而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护.2、软件工程的基本原理:1) 用分阶段的生命周期计划严格管理2) 坚持进行阶段评审3) 实行严格的产品控制4) 采纳现代程序设计技术5) 结果应能清楚地审查6) 开发小组的人员应少而精7) 承认不断改进软件工程实践的必要性3. 软件工程的方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。
软件工程三个要素:工具、方法、过程。
1.3 软件生命周期A,可行性分析与开发项计划:主要确定软件的开发目标及其可行性。
B,需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。
C,设计(概要设计和详细设计):主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。
D,,编码:将软件设计的结果转换成计算机可运行的程序代码。
E,测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。
F,维护:在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求.1.4软件过程1.传统瀑布模型:是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。
2.快速原型模型:在用户不能给出完整、准确的需求说明等情况下,可以根据用户的一组基本需求,快速建造一个原型(可运行的软件),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。
软件工程概论ch01_3_软件工程技术与项目管理
32
1.5.2.2 软件质量保证措施
软件质量保证(software quality assurance,SQA)的措施主 要有: ①基于非执行的测试(也称为复审或评审)
②基于执行的测试(即以前讲过的软件测试)
复审主要用来保证在编码之前各阶段产生的文档的质量;
基于执行的测试需要在程序编写出来之后进行,它是保证软件 质量的最后一道防线;
33
SQA活动与组织
参加软件质量保证工作的人员,可以划分成下述两类: 软件工程师通过采用先进的技术方法和度量,进行正式的技术 复审以及完成计划周密的软件测试来保证软件质量。 SQA小组的职责,是辅助软件工程师以获得高质量的软件产品。 其从事的软件质量保证活动主要是: 计划,监督,记录,分 析和报告。简而言之,SQA小组的作用是,通过确保软件过程 的质量来保证软件产品的质量。
14
1.5.1
配置管理
1.5.1.1 软件配置
1. 软件配置项 2. 基线
1.5.1.2 软件配置管理过程
1. 标识软件配置中的对象 2. 版本控制 3. 变化控制 4. 配置审计 5. 状态报告
15
1.5.1.2 软件配置管理过程
软件配置管理是软件质量保证的重要一环,它的主 要任务是①控制变化,同时也负责②各个软件配置 项和软件各种版本的标识、③软件配置审计以及④ 对软件配置发生的任何变化的报告。 具体来说,软件配置管理主要有5项任务: ①标识、 ②版本控制、③变化控制、④配置审计和⑤报告。
24
5. 状态报告
书写配置状态报告是软件配置管理的一项任务,它 回答下述问题: ①发生了什么事? ②谁做的这件事? ③这件事是什么时候发生的?
软件工程概论知识点汇总
软件工程概论知识点汇总软件工程概论知识点汇总第一章软件工程概述1. 软件工程定义及概念2. 软件工程的历史发展3. 软件开发生命周期模型a. 瀑布模型b. 迭代模型c. 增量模型d. 螺旋模型e. 敏捷开发模型第二章需求分析与管理1. 需求工程的基本概念2. 需求获取与分析方法3. 需求规格说明书4. 需求变更与配置管理第三章软件设计与架构1. 结构化设计方法2. 面向对象设计方法3. 设计模式及应用4. 软件架构设计与选择第四章软件编码与测试1. 编码规范与风格2. 测试方法与策略3. 单元测试与集成测试4. 软件质量保证与评估第五章软件项目管理1. 软件项目组织与人力资源管理2. 软件项目计划与进度管理3. 风险管理与配置管理4. 软件项目质量管理第六章软件维护与演化1. 软件维护的类型与阶段2. 软件维护的过程与方法3. 软件重构与演化第七章软件工程的理论与方法1. 软件需求建模方法2. 软件设计原则与方法3. 软件度量与评估方法4. 软件工程的形式化方法第八章软件工程的伦理与职业道德1. 软件工程的伦理问题2. 软件工程师的职业道德要求3. 软件工程师的专业素养与发展本文档涉及附件:________本文所涉及的法律名词及注释:________1.著作权法:________保护软件的著作权,禁止未经授权的复制、修改、发布等行为。
2.商标法:________保护软件的商标权,禁止他人未经授权使用相同或相似的商标。
3.专利法:________保护软件的发明专利权,禁止他人未经授权使用相同或相似的发明。
4.合同法:________规定软件开发过程中的合同签订与履行等事项。
软件工程导论第一章
1.1.3 软件危机产生的原因
❖ 项目过程方面 设计低劣 缺少质量保证措施 缺少管理控制 太早和过于频繁的集成 项目估算时遗漏必要的任务 追赶计划 鲁莽编码
Back
1.1.4 缓解软件危机的途径
❖ 概念的修正 软件危机只有缓解,不可能消除!!
❖ 如何缓解? 只有通过从事软件研究的科技人员,不断的勤奋探索,推动软件的发展,改进软件的开发方法、 完善软件的开发工具,提高软件的生产率
1.1.2 软件危机的含义
❖ 软件危机的表现: 6、成本在计算机系统总成本所占的比例逐年上升
1.1.2 软件危机的含义 ❖ 软件危机的表现:
7、软件的发展跟不上硬件的发展速度与应用需求 ❖ 小知识:摩尔定律(Moore‘s Law):Intel公司创建人之一戈登·摩尔的经验法则,他预言微 处理器的处理能力每18个月到24个月将增加一倍,实际情况证明这一定律是对的。
1.1.2 软件危机的含义
❖ 关于软件危机的统计数据 大约70%的软件开发项目超出了估算的时间,大型项目平均超出计划交付时间20%到50%,90% 以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高 美国政府审计局:只有不到2%的合同定购软件在发布时具有可用性——98%以上的项目都失败 了
第一章 软件工程
软件工程面向的是软件 软件面向的是信息
第一章 软件工程
第一节 软件危机 第二节 软件工程
❖ 1.1.1 计算机系统的发展历程 ❖ 1.1.2 软件危机的含义 ❖ 1.1.3 软件危机产生的原因 ❖ 1.1.4 缓解软件危机的途径
第一节 软件危机
1.1.1 计算机系统的发展历程
涉及的主要方面是什么?
软件工程适合用于各类软件系统的开发,它包含需求分析的规约、设计、构建、测试、运行和维护等 软件系统生存周期的所有阶段。
第一章软件工程概论
第⼀章软件⼯程概论第⼀章⼀、体系结构的发展(1)主机结构(2)F/S结构(⽂件-服务器结构)(3)C/S结构(客户-服务器结构)(4)B/S结构(浏览器结构)⼆、开发环境(1)单⾏命令式调式器(如DEBUG)(2)多⾏代码编辑器(如EDIT编辑器)(3)集成开发环境三、软件的概念软件是计算机系统中与硬件相互依存的另⼀部份,它是包括程序、数据及其相关⽂档的完整集合。
可以理解为:软件=程序+数据+⽂档四、软件的特点1.软件具有抽象特征2.软件具有⽆明显制造过程的特征3.软件⽆备件的特征4.⼿⼯制作特征5.成本⾼昂特征五、软件的分类(1)按软件功能进⾏划分:1系统软件 2⽀撑软件 3应⽤软件2.按软件规模进⾏划分六、软件危机指什么在软件开发和维护中所产⽣的⼀系列严重的问题。
⼀是如何开发软件,满⾜⽤户对软件的需求;⼆是如何维护数量众多的已有软件。
七、解决软件危机的途径(1)加强软件开发过程的管理(2)推⼴使⽤开发软件的成功技术与⽅法(3)开发和使⽤好的软件⼯具,建⽴良好的软件⼯程⽀持环境。
⼋、软件⼯程的⽬标1.付出较低的开发成本2.实现要求的功能3.取得较好的软件性能4.开发的软件易于移植5.需要的维护费⽤较低6.能按时完成开发⼯作,及时交付使⽤。
九、软件⽣存周期及其⼯作任务软件从定义、开发、使⽤和维护,直到最终被废弃,要经历⼀个漫长的时期,通过称为软件⽣命(⽣存)周期。
⼯作任务1.计划时期:主要任务是调查和分析:调查⽤户需求,分析新系统的主要⽬标,分析开发该系统的可⾏性。
细分为问题定义和可⾏性研究两个阶段。
可⾏性研究分为技术可⾏性和经济可⾏性。
2.开发时期:完成设计和实现两⼤任务,设计包括需求分析和软件设计,实现阶段包括编码和测试。
从重要性和⼯作量上看,设计要重于实现。
分为四个阶段:(1)需求分析(2)软件设计(3)编码(4)测试3.运⾏维护阶段:发现错误、⼯作变化、增加功能等需要的软件升级⼯作。
⼗、软件开发模型分类1.瀑布模型传统的⽣命周期⽅法学通常被命名为“瀑布模型”,包括:问题定义、可⾏性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。
软件工程导论1-3章总结
开发软件的基本过程:提出研制要求生命周期方法:生命周期法采用介于形式语言和自然语言之间的描述方式,通过一套分层的数据流程图,附以数据字典、小说明等工具来描述系统。
生命周期法的基本思想为保证系统开发的顺利进行,生命周期法强调遵循以下几个基本原则:(一)面向用户的观点信息系统的目的是为管理人员提供管理和决策信息,能否满足用户的信息需求,是系统成败的重要标志。
实践证明,用户的参与,尤其是领导的介入,是系统成功的关键。
在整个研制过程中,系统研制人员应该始终与用户保持联系,从调查研究入手,充分理解用户的信息需求和业务活动,不断地让用户了解工作进展情况,校准工作方向。
(二)严格区分工作阶段生命周期法强调按时间顺序、工作内容,将系统开发划分为几个工作阶段,如系统规划阶段、系统分析阶段、系统设计阶段、系统实施阶段以及系统运行与维护阶段等等,各个阶段的任务是明确的,过程是循序渐进的。
对于复杂的系统,要强调和加强前期工作,强调分析设计的深入细致,以避免后期返工,造成投资耗费和负社会效益。
(三)自顶向下地完成系统的研制工作在系统分析阶段,从全局出发,对企业进行周密的调查分析,自上而下,从粗到精,由表及里,逐层、逐级进行业务过程分解,最后进行逆向综合和抽象,完成新系统模型的构造。
在系统设计阶段,用划分子系统的方法,把系统逐层分解到详细模块,完成设计方案。
在实施阶段,从实现系统的框架开始,自上而下实现系统功能。
程序设计过程中同样采用结构化设计的方法,自顶向下,逐步求精。
(四)充分考虑变化的情况组织的经营环境在变化,用户的信息需求也在变化,他们对信息系统的要求会自然越来越高。
生命周期法充分考虑了这种变化,在系统设计中,把系统的可变更性放在了首位,运用模块结构方式来组织系统,使系统的灵活性和可变更性得以充分体现。
(五)工作成果文档化、标准化系统开发是一项复杂的系统工程,参加人员多,经历时间长。
生命周期法用文档的标准化保证开发工作的连续性,在每个开发阶段,都要用文字、图表表达该阶段的成果,资料格式标准化、格式化。
软件工程第1章 软件工程概论
11
1.2 软件危机
软件危机是指在计算机软件开发和维护时所遇到的 一系列问题。软件危机主要包含两方面的问题:一是如 何开发软件以满足社会对软件日益增长的需求,二是如 何维护数量不断增长的已有软件。 (1)软件危机产生的原因 软件危机产生的原因与软件的特点有关,也与软件 开发的方式、方法、技术和软件开发人员本身有关。 ①软件不同于硬件,它是计算机系统中的逻辑部件 而不是物理部件。
6
1.1.3 软件的特性 软件同传统的工业产品相比,由于其本身具有的特 殊性质,因此,软件产品具有以下特性: ①软件是信息产品。 ②软件的生产过程与硬件不同。 ③软件的成本构成和传统工业产品不同。 ④软件没有磨损、老化的问题,只有过时与失效。 ⑤软件的开发和运行常常受到不同的计算机软件和 硬件平台的限制。 ⑥软件具有可剪裁、可扩展、便于分解和组合以及 插入、删除的特性。
15
②推广使用在长期实践中总结出来的开发软件的成 功的技术和方法,探索和研究更好的软件设计、表达技 术及管理方法,消除计算机系统早期发展阶段形成的一 些错误概念和做法;采用面向对象的软件设计方法,使 解决问题的方法空间同客观世界的问题空间完全一致, 降低或化解软件设计的复杂性。 ③使用好的软件开发工具及软件工程环境。正如机 械工具可以“放大”人类的体力一样,软件开发工具及 软件工程环境可以“放大”人类的智力。 ④软件开发不是某种个体劳动,因此应该有良好的 组织、严密的管理,促使各类人员相互配合共同完成任 务。
出版社理工分社软件工程311软件综述随着计算机系统的发展计算机的应用日趋广泛计算机软件自身在开发技术及编程方法上存在严重的滞后和无序导致软件的供给质量与巨大的社会需求之间存在差异的软件危机困扰为了更好地开发和维护软件软件工作者在20世纪60年代后期开始认真研究消除软件危机的新途径从而逐渐形成了一门新兴的工程学科计算机软件工程学简称为软件工程
第1章软件工程概论
听取用 户意见
建立/修改 原型
用户测试 运行原型
原型模型
1.5.3 RAD模型
快速应用开发 (RAD)是一个瀑布式的软件开发 模型,强调开发周期要短。RAD模型是瀑布模型的 一个“高速”变种,通过使用基于构件的建造方法 获得了快速开发。如果对需求理解得很好,且约束 了项目范围,RAD过程能使一个开发组在很短时间 内创建出“功能完善的系统”。
版本。该模型又可细分为增量模型、螺旋模
型、构件组装模型和并发开发模型。
增量模型
系统/信 息 工程 分析 设计
增量1
编码 调试 第1个增量的 发布 编码 调试 第2个增量的 发布 编码 调试 第3个增量的 发布 编码 调试 第4个增量的 发布
增量2 分析
设计
增量3 分析
设计
增量4 分析
设计
calendar time 增量模型
( 4 )企业信息化程度和计算机应用水平低, 导致无法准确描述需求。--企业 (5) 一把手对信息管理的重视程度不够。-企业 ( 6 )缺乏相互沟通,业务描述的详尽程度不 能达到具备生活常识的人能够轻易理解。 -企业、软件
产生软件危机的原因(微观)
(1)软件的规模比较庞大,其开发和维护相当困难; (2)开发人员虽然有经验,但还存在着不少错误观 点,没有实行工程化的方法; (3)不能与用户及时沟通,不能了解用户的实际需 要; (4)没有统一的软件质量管理规范; (5)不能根据环境的变化而随时对产品进行改正。
(1)缺乏总体考虑,没有软件工程学概念或系 统工程思想。--软件 (2)对业务了解支离破碎,需求分析不准。-软件 (3)企业依赖激情指挥,企业管理标准化、规 范化、科学化程度不高,导致不能成功地应 用 “死板”的软件,它依赖于业务的“科学 化”、“条理化”、“程序化” --企业
《软件工程》各章节重点
瀑布模型
软件过程的经典模型,每个 阶段按顺序完成。缺点是不 能容忍修改和反馈。
螺旋模型
一种适应型软件过程模型, 强调风险管理。缺点是变化 不稳定。
迭代模型
一种多次迭代的软件过程模 型,每次迭代完成一个小而 完整的软件。缺点是需求的 稳定性。
敏捷开发
一种以人为核心,注重适应变 化,提供高质量服务的软件开 发方法。缺点是文档化的缺 失和不同项目难以比较。
第三章:需求工程
1
需求来源
如何识别和获取需求,包括需求表示法、需求描述、需求协商。
2
需求分析
如何分析理解、抽象和总结需求特性,包括需求抽象、需求验证。
3
需求管理
如何跟踪需求变更、评审需求变更的影响范围
第四章:软件设计
设计任务
系统结构设计、数据结构和 算法设计、接口及数据管理 设计。
设计方法
结构化设计、面向对象设计、 面向方面设计、进化设计。
3 项目管理:Redmine
4 测试工具:JUnit
开源的项目管理和缺陷跟踪工具,支持敏 捷开发,提高团队协作能力。
开源的测试框架,支持自动化构建、单元 测试和回归测试。
结论
软件工程是一门需要持续学习和探索的学科,为软件开发提供了良好的指导 框架和开发流程。在软件开发过程中,我们应该根据实际情况选择合适的软 件开发方法和工具,提高软件开发效率和质量。
《软件工程》各章节重点
软件工程是一门综合性、系统性很强的学科,主要研究如何开发和维护高质 量的软件。《软件工程》一书对软件工程的基础理论、知识和方法进行了全 面详细的阐述。
引言
引言是一份礼物,像向朋友打开您内心的大门。引言是一篇文章或书籍的开端,包含主题和相关内容的 介绍。在软件工程中,引言的重点是软件工程学科的产生背景和发展历程。
一章节软件工程概论-PPT文档资料
问题定义
可行性研究 需求分析 概要设计 详细设计 编码 测试 维护
1.3 软件生存周期(5)
定义阶段流程图
软件项目提出 确定工作范围、资源 需求和投资成本; 可行性分析; 制定开发进度表。 修改 评审 通过 未审批
软件计划
软件项目“搁浅”
确定功能、性能要求; 制定有效性验收标准; 编写初步用户手册。
8
1.4 软件开发的方法和技术(2)
二.渐增型 1.渐增型方法是从问题的部分需求出发,先建立一个不完全的系 统,通过测试运行该系统取得经验和信息反馈,加深对软件需 求的理解,进一步使系统扩充和完善。如此反复,直至软件人 员和用户对所设计完成的软件系统满意为止。 2.在渐增型开发下的软件是随软件开发的过程而逐渐形成的。 3.渐增型开发方法适合于知识型软件的开发,设计系统时对用户 需求的认识开始不是很清楚的,需要在开发过程中不断认识、 不断获得新的知识去丰富和完善系统。多数研究性质的试验软 件,一般采用此方法。 开发过程图解如下所示:
修改 技术评审 可接收 进入开发阶段
软件计划 规格说明
6
1.3 软件生存周期(6)
确定的软件需求
开发阶段流程图
编写程序 修改 静态检查 通过 源程序 清单
软件结构 图与模块 功能说明
定义软件结构 与数据结构, 确定模块功能、 调用关系接口 修改
评审 接受 详细设计 描述 确定每个 模块算法
单元测试, 集成测试, 验收测试。
11
1.4 软件开发的方法和技术(5)
原型化开发过程
需求分析
原型开发
用户反馈
原型评价
最终系统设计
最终系统实现
12
1.4 软件开发的方法和技术(6)
河南理工大学软件工程软件工程概论
第1章软件工程学概论1本章内容软件危机软件工程软件生命周期软件过程2学习重点1、软件危机、软件工程产生的原因软件工程过程和软件生命周期2、软件工程过程和软件生命周期3、软件生命周期模型掌握一些基本概念软件危机软件工程 增量模型螺旋模型软件生命周期 软件过程 RUP敏捷过程软件生命周期模型 瀑布模型 极限编程3微软过程本章内容软件危机软件工程软件生命周期软件过程4软件危机与软件工程学软件工程学的产生要从“软件危机”说起1968年第届NAT01968 年,第一届NAT0 (北大西洋公约组织的计算机科学家的国际会议)会议,“软件工程”的慨念作为一种有效解决软件危机的途径被正式提出。
“软件危机”的途径被正式提出什么是软件危机?软件危机有什么典型表现?为什么会产软件危机会产生软件危机?怎么解决软件危机?5软件危机什么是软件危机?软件危机指在计算机软件的过程中所遇开发和维护过程中,所遇到的一系列严重问题。
许多软件项目不能满足客户的要求 许多软件项目超出预算和时间安排功能和性能方面成本和进度方面6软件危机的典型表现对软件开发成本和进度的估计常常很不正确用户对“已完成的”软件系统不满意的现象经常发生 软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档资料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势7硬件/软件成本变化趋势8图硬件/软件成本变化趋势几个软件危机的著名案例①1966年,IBM 360 机的操作系统。
花费5000 人一年的工作量,写了近1 万行代码。
错误百出,每次的新版本就是从前一版本中写了近1万行代码错误百出每次的新版本就是从前一版本中找1 000个程序错误而修正的结果。
②1963年美国用于控制火星探测器的计算机软件中的一个“ 1963 年,美国用于控制火星探测器的计算机软件中的个, ”号被误写为“.”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。
软件工程概论课后答案解析
第1章软件与软件工程的概念1.1 举出你所知道的应用软件的例子。
办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。
1.2 认为“软件就是程序,软件开发就是编程序。
”这种观点是否正确?为什么?认为“软件就是程序,软件开发就是编程序。
”这种观点是错误的。
首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。
1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。
1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
典型表现:(1)对软件开发成本和进度的估计常常很不准确。
(2)用户对“已完成的”软件系统不满意的现象经常发生。
(3)软件产品的质量往往靠不住。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。
(7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面:(1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。
(2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。
(3) 软件开发过程不规范。
如,没有真正了解用户的需求就开始编程序。
(4) 随着软件规模的增大,其复杂性往往会呈指数级升高。
需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。
(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。
1.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件危机
原因
客观:软件本身特点
逻辑部件 规模庞大
主观:不正确的开发方法
忽视需求分析 软件开发=程序编写 轻视软件维护
软件危机
解决途径
组织管理
工程项目管理方法
技术措施
软件开发技术与方法 软件工具
软件工程
定义
指导计算机软件开发和维护的工程学科 工程方法+管理技术+技术方法
B.W.Boehm七条基本原理
高层系统流程图 确定系统功能
比较新旧系统
新系统必须完成旧系统的基本功能 新系统必须改正旧系统存在问题 新系统必须比旧系统增收入、减支出
3 导出新系统模型
旧系统逻辑模型 新系统目标和规模 逻辑模型描述工具
数据流图 数据字典 用例图
新系统逻辑模型
4 重新定义问题
复查问题定义、规模和目标
根据新系统模型 分析员误解 用户遗漏
螺旋模型
螺旋模型
特点
瀑布模型+快速原型+风险分析 迭代过程
一个螺旋式周期
确定目标,选择方案,选定完成目标的策略 风险角度分析该策略 启动一个开发阶段 评价前一步的结果,计划下一轮的工作
转换模型
形式化开发记录 与 需 求 比 较 后 修正
变换n
形式化 规格说明
变换2 测试 变换1
系统需求
目标系统
转换模型
特点
形式化软件开发方法
形式化需求规格说明 变换技术
程序自动生成技术 确保正确
构件集成模型
构件集成模型
特点
面向对象 基于构件库 融合螺旋模型特征 支持软件开发的迭代方法 软件重用
RUP
用例驱动 迭代和增量的过程 五个活动:需求、分析、设计、实现和 测试 四个阶段
第三章 可行性研究
可行性研究的任务 可行性研究的步骤 可行性研究的工具
系统流程图 数据流图 数据字典
成本/效益分析
开发软件要回答三个问题
Why to do? —可行性研究 What to do?—需求分析 How to do? —系统设计
可行性研究的任务
回答是否可行
最短时间 最小代价
三个方面的可行性
技术可行性 经济可行性 操作可行性
可行性研究的步骤
1. 2. 3. 4. 5. 6. 7. 8.
DFD、DD和PSPEC CFD CSPEC STD CFD、CSPEC和STD E-R图
面向对象分析工具
用例图,类对象图 对象-关系图 对象-行为图
CFD和CSPEC
与DFD类似 适合实时系统的分析 表示控制流
CFD和CSPEC的符号表示
控制信息或事件
引用控制说明
例子:DFD和CFD---DFD
信息在系统中的流动和处理
用途
交流信息的工具 分析和设计的工具
数据流图DFD
符号P24 例子P25-27 分层
从高层到低层 分解前后的数据流必须一致
命名
数据流 处理
DFD练习—售书系统
学 生
购书单
教材 购销 系统
缺书单
领书单
进书通知
书 库 保 管 员
DFD练习—售书系统
F1教材存量表
学 购书单 生
以数据为中心 对象是主动的 实现数据封装 本质上有并行性 模块独立性好
类Class和实例Instance
类
相同属性和行为的对象的抽象
实例
特定类所描述的一个具体对象
继承(Inheritance)
子类直接继承父类的数据和操作
家具
桌子
椅子 椅子的实例
衣柜
床
继承的传递性,单继承、多重继承
多态性Polymorphism
1 销 领书单 售
进书通知
2 采 购 进书通知
缺书单
书库 保管 员
F2Байду номын сангаас书登记表
数据字典DD
DFD中所有元素的定义的集合 内容
数据流 数据流分量 数据存储 处理(一般不用DD描述)
数据字典DD
定义数据的方法
自顶向下分解数据
数据元素的组合方式
顺序:A+B 选择:[A|B] 重复:1{A}5 可选: (A)
充分准备,寻找共同语言 循循序渐进、逐步逼近
问题分析与确认
多个来回
分析建模
结构化分析模型 面向对象分析模型 分析模型描述工具
DFD、DD和PSPEC CFD、CSPEC和STD E-R图 用例图,对象-关系图,对象-行为图
两种程序设计方法
程序设计的两次飞跃 结构化程序设计
程序=数据结构+算法
面向对象程序设计
结构化分析模型
数据对象说明 E-R图 DD 加工说明 DFD图
STD图 控制说明
面向对象分析模型
属性、操作、协作者
类/对象 模型 使用实例
对象关系模型
对象-行为模型
软件需求说明(SRS)
引言 信息描述 功能描述 需要规格说明书 行为描述 质量保证 接口描述 其它需求
分析模型描述工具
结构化分析工具
重新定义问题
循环(定义,分析,求解,重定义)
5 导出和分析可选解决方案
从逻辑模型导出物理系统方案
不同角度 多个方案
分析各种可选方案
技术可行性 操作可行性 经济可行性
为可行方案制定初步进度计划
6 推荐行动方针
得出可行性研究结果
继续开发 终止项目
推荐解决方案
成本/效益
7 草拟开发计划
为推荐方案确定开发计划
光电管 采集 信号 计数 传送 实时数 据显示
半分钟数据
半小时数据
班数据
工控机 处理
班数据 处理
例子:DFD和CFD---CFD
物品经过 光电管 采集 信号 某型号累加 计数 传送 人工驱动信息 班数据 处理
半分钟 时钟 半分钟数据 半小时 工控机 处理 实时数 据显示 半小时数据 班数据
翻屏
STD
进度 开发人员 硬件设备 软件工具 各阶段成本估计
8 书写文档提交审查
可行性研究报告
各步骤结果 推荐方案 开发计划等
系统流程图SFD
物理数据流图,不同与程序流程 描述物理系统
表示物理部件 信息流动
符号(P21) 例子(P23) 分层的SFD
从抽象到具体,从简单到复杂
数据流图DFD
描述系统逻辑模型
第四章 需求分析
需求分析的任务与步骤 需求获取的常用方法 分析建模 软件需求说明 结构化分析技术 面向对象分析技术
需求分析的任务和步骤
需求分析的任务
建立分析模型 编写需求说明
需求分析的步骤
需求获取 需求提炼 需求描述 需求验证
需求获取的常用方法
联合分析小组
用户代表、领域专家和系统分析员
客户访谈
软件工程概论
48学时(24理论+24上机) 顾春华 chgu@
课程安排
理论
内容:基本原理、方法和技术 形式:讲授、自学、讨论
实践
内容:构造一个应用系统(包括分析、设计、 编码、测试) 形式:分组、分阶段文档、编码、集成
软件工程的内容
软件工程的基本概念 软件过程 软件开发各阶段的任务、技术、方法 传统方法、面向对象方法 项目管理 软件质量保证
程序 = 对象 + 消息
两种软件工程方法
传统软件工程
软件分析 → 总体设计 → 详细设计 → 面向 过程的编码 → 测试
面向对象软件工程
软件分析与对象抽取 → 对象详细设计 → 面 向对象的编码 → 测试
面向对象的基本概念
对象Object 类Class 继承Inheritance 消息Message 面向对象
对象+类+继承+消息通信
对象Object
客观世界中的实体
状态(静态属性 Attributes) 操作(动态行为 Mehtods) Mehtods
对象::=<ID,MS,DS,MI>
Identifier Method Set Data Structure Message Interface
对象的特点
确保软件质量和开发效率 P5-7
课后作业
你以前开发软件的过程是什么?你认为 正确的软件开发过程是怎样的? 学习理解RUP(可选)
/products/rup/
你对软件工程课教学方式和内容的建议
软件生命周期
软件生命周期
软件定义
问题定义 可行性分析 需求分析
数据字典DD
DD的用途
分析阶段的交流工具 包含控制信息 数据库设计的基础
例子
P32
成本/效益分析
成本估计
代码行技术
行数*每行平均成本
任务分解技术
人月1*月工资+人月2*月工资+ 。。。
自动成本估算
软件工具
成本/效益分析
成本/效益分析方法
开发成本、运行费用 新系统带来的经济效益 必须考虑
货币的时间价值(利率) 计算投资回收期 纯收入 投资回收率
软件开发
系统设计 编码 测试
软件维护
技术复审和管理复审
复审
每阶段结束前
技术复审
从技术角度确保质量 降低软件成本(尽早发现问题)
管理复审
成本、进度、经费等
技术复审
审查小组 审查过程
准备 简要介绍情况 阅读被审文档 开审查会 返工 复查
第二章 软件过程模型 Process Model
瀑布模型(waterfall model) 快速原型模型(rapid prototype model) 螺旋模型(spiral model) 转换模型(transformational model) 构件集成模型(component integration model)