(完整word版)软件工程第四版第1章参
软件工程(第4版)-WebApp 软件工程
2 胖客户机模型
胖客户机(Fat Client)模型与瘦客户机模 型相反,需要在客户端运行庞大的应用程序, 由客户机上的软件实现应用逻辑和系统用户 的交互,服务器只负责对数据的管理。
9.2.1 二层C/S 结构
二层C/S 结构由前端客户机、后端服务器、网络共3 部分组成,如图所示。
➢ 前端客户机:二层C/S 结构的前端客户机负 责接收用户发出的请求,并向数据库服务器 发出请求。
5G
9.5.2 组合模式
组合模式是指一个对象可以由其他对象组合而成,这是一种对象的树形结构形式。组合模 式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。组合模式又可以称为 整体- 部分(Part-Whole)模式,它是一种对象结构型模式。
1 抽象构件
抽象构件可以是接口或抽 象类,为叶子构件和容器 构件对象声明接口,抽象 构件中可以包含所有子类 共有行为的声明和实现
2 叶子构件
在组合模式中表示叶 子结点对象,叶子结 点没有子结点,它实 现了在抽象构件中定 义的行为
3 容器构件
容器构件在组合模式中表示容 器结点对象,容器结点包含子 结点,其子结点可以是叶子结 点,也可以是容器结点
9.5.3 工厂方法模式和策略模式
01 工厂方法模式
OPTION
实现观察者模式有很多形式,比较直观的一种是“ 注册 -通知-撤销注册”的形式。
1 维护和升级方式简单
软件系统的改进和升级越来越频繁, B/S 结构的产品明显体现出系统改进 和升级更为方便的特性。客户机越来 越“瘦”而服务器越来越“胖”是将 来信息化发展的主流方向,可节约人 力、物力、时间和费用。
2 成本降低,选择更多
B/S 结构提供了异种机、异种网、异种应用 服务的联机、联网、统一服务的开放性基础。
软件工程第1章
(3) 软件产品的质量往往靠不住。软件可靠性和质量 保证的确切的定量概念刚刚出现不久,软件质量保 证技术(审查、复审和测试)还没有坚持不懈地应用到 软件开发的全过程中,这些都导致软件产品发生质 量问题。
1.1.2 产生软件危机的原因
在软件开发和维护的过程中存在这么多严重问题, 一方面与软件本身的特点有关,另一方面也和软件 开发与维护的方法不正确有关。
软件不同于硬件,它是计算机系统中的逻辑部件而 不是物理部件。由于软件缺乏“可见性”,在写出 程序代码并在计算机上试运行之前,软件开发过程 的进展情况较难衡量,软件的质量也较难评价,因 此,管理和控制软件开发过程相当困难。此外,软 件在运行过程中不会因为使用时间过长而被“用 坏”,如果运行中发现了错误 ,很可是遇到了一
经过上述软件定义时期的准备工作才能进入开发时 期,而在开发时期首先需要对软件进行设计(通常又 分为概要设计和详细设计两个阶段),然后才能进入 编写程序的阶段,程序编写完之后还必须经过大量 的测试工作(需要的工作量通常占软件开发全部工作 量的40%~50%)才能最终交付使用。所以,编写程 序只是软件开发过程中的一个阶段,而且在典型的
个在开发时期引入的在测试阶段没能检测出来的错 误。因此,软件维护通常意味着改正或修改原来的 设计,这就在客观上使得软件较难维护。
软件不同于一般程序,它的一个显著特点是规模庞 大,而且程序复杂性将随着程序规模的增加而呈指 数上升。为了在预定时间内开发出规模庞大的软件, 必须由许多人分工合作,然而,如何保证每个人完 成的工作合在一起确实能构成一个高质量的大型软 件系统,更是一个极端复杂困难的问题,不仅涉及 许多技术问题,诸如分析方法、设计方法、形式说 明方法、版本控制等,更重要的是必须有严格而科 学的管理。
软件工程第1章电子教案
构。 文档:文档是与程序运行和维护有关的图文资料。
8
1.2 软件与软件危机
1.2.2 软件的特点 (1) 软件具有抽象特征。 (2) 软件具有无明显制造过程特征。 (3) 软件无备件的特征。 (4) 手工制作特征。 (5) 成本昂贵特征。
9
返回目录
1.2 软件与软件危机
1.2.3 软件的分类 1.按软件功能进行划分
(1)系统软件 (2)支撑软件 (3)应用软件 2.按软件规模进行划分 按开发软件所需的人力、时间以及完成的源程序行数, 可确定六种不同规模的软件。如表1.1所示。
10
1.2 软件与软件危机
返回目录
类别 微型 小型 中型 大型
6
1.2 软件与软件危机
主要教学内容: 1.2.1 软件的定义 1.2.2 软件的特点 1.2.3 软件的分类 1.2.4 软件危机
7
返回目录
1.2 软件与软件危机
返回目录
1.2.1 软件的定义 软件是计算机系统中与硬件相互依存的另一部分,它
是包括程序、数据及其相关文档组成的完整集合。 可以写作为:软件=程序+数据+文档。 程序:程序是按事先设计好的功能和性能要求执行的
13
1.2 软件与软件危机
3.软件危机产生的原因 (1)软件开发无计划性 (2)软件需求不充分 (3)软件开发过程无规范 (4)软件产品无评测手段
4.解决软件危机的途径 (1)应该加强软件开发过程的管理。 (2)推广使用开发软件的成功技术与方法 (3)开发和使用好的软件工具
14
返回目录
1.3 软件工程的概念
返回目录
1.3.3 软件工程学的范畴 软件工程学所研究的主要内容包括:软件开发技术和
软件工程(第4版)01第一章:软件工程概述
软件工程
吕云翔 Email: yxlu_2000@
软件学院
1.1.1 计算机系统的发展历程
早期(20世纪60年代中期以前):通用硬件已经相当 普遍,软件却是为每个具体应用而专门编写的,大多 数人认为软件开发是无须预先计划的事情。这时的软 件实际上就是规模较小的程序,程序的编写者和使用 者往往是同一个(或同一组)人。由于规模小,程序 编写起来相当容易,也没有什么系统化的方法,对软 件开发工作更没有进行任何管理。这种个体化的软件 环境,使得软件设计往往只是在人们头脑中隐含进行 的一个模糊过程,除了程序清单之外,根本没有其他 文档资料保存下来。
1.1 软件危机与软件工程的起源 1.2 软件工程 1.3 软件工程包含的领域 1.4 小结与习题
小结
计算机软件工程学的简短概述。 计算机系统发展简史 开发软件的一些错误方法和观念的形成 软件危机 开发和维护软件的科学技术
习题
1.什么是软件危机?为什么会出现软件 危机?
2.假设你是一家软件公司的总工程师, 请把图1.1给软件工程师们看,告诉他们 及早发现并改正错误的重要性。其中有 人不同意你的观点,认为要求在错误进 入软件之前就清除它们是不合理的,并 指出“如果一个故障是编码错误造成的 ,那么一个人怎样能在设计阶段清除它
P1=0.3×0.72Y−1974(美分/位)
如果计算机字长为16位,则存储器价格下 降的趋势为:
P2=0.048×0.72Y−1974(美分/字) 在上列公式中Y代表年份,M是存储容量( 字数),P1和P2代表价格。基于上述假设
软件工程第一章
• Software oriented courses Operating system Programming (C, C++, JAVA) Database Software engineering
What Is This Course About?
• To give directions for software development Development Skills Any other elements?
• Fritz Bauer
– [Software engineering is] the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines
• Although the industry is moving toward component-based assembly, most software continues to be custom built. 虽然整个工业向着基于构件的构造模式发展,然而大多数软 件仍是根据实际的顾客需求定制的 • Software doesn’t wear out. 软件不会“磨损”
What is Software Engineering ?
What is this course about?
General Classification of Courses
• Hardware oriented courses Computer peripheral equipment Computer architecture Single chip
软件工程-第1章第1节
1.1.2 软件生产的发展
3.软件工程时代(1968年至今)
软件工程时代的生产方式是工程化的生产,使用 数据库、开发工具、开发环境、网络、分布式、面向对象 技术来开发软件;硬件特征是:向超高速、大容量、微型 化以及网络化方向发展;软件特征是:开发技术有很大进 步,但是未能获得突破性进展,软件价格不断上升,没有 完全摆脱软件危机。
软件可靠性、软件可维护性、软件生产率和软件重用等。 1) 软件费用 由于软件生产基本上仍处于手工状态,软件是知识高度密集 的技术的综合产物,人力资源远远不能适应这种迅速增长的 软件社会要求,因而软件费用上升的势头必然还将继续下去 。 2) 软件可靠性 软件可靠性是指软件系统能否在既定的环境条件下运行并实 现所期望的结果。在软件开发中,通常要花费40%的代价进行 测试和排错,即使这样还不能保证以后不再发生错误,为了 提高软件可靠性,就要付出足够的代价。
1.1.4 软件工程
1.软件工程的定义 软件工程是用科学知识和技术原理来定义、开发、维
护软件的一门学科,是计算机科学中的一个分支,其主要思 想是在软件生产中用工程化的方法代替传统手工方法。工程 化的方法借用了传统的工程设计原理的基本思想,采用了若 干科学的、现代化的方法技术来开发软件。这种工程化的思 想贯穿到需求分析、设计、实现,直到维护的整个过程。 2.软件工程的性质
西安电子科技大学出版社
第1章 绪 论
本章概述了软件工程领域的基本内容。首先介绍了软件 生产的发展及软件危机,软件工程的特点、性质、目标、面 临的问题;然后简要介绍了软件生存周期的各阶段,各种生 存周期模型以及各种软件开发方法。
软件工程(第4版)-软件工程管理
11.6.4 处理软件开发风险的策略
02 风险监控
OPTION
团队成员对于项目压力的态度 团队的凝聚力 团队成员彼此之间的关系 与工资和奖金相关的潜在问题 在公司内和公司外工作的可能性
11.6.4 处理软件开发风险的策略
11.4 软件配置管理
软件配置(Software Configuration)是软件产品在开发和运行过程中产生的全部信息, 这些信息随着软件开发运行工作的进展而不断变更。软件过程产生的全部信息可分为3 类。
供技术人员或用户使 用的软件工程文档
计算机程序源代码、可执 行程序及存储在计算机内
的数据库
数据(程序内包含的 数据或程序外的数据
本章内容
11.1 软件工程管理概述 11.2 软件开发成本估算 11.3 软件工程人员组织 11.4 软件配置管理 11.5 软件质量保证 11.6 软件开发风险管理 11.7 软件工程标准与软件工程文档
11.4 软件配置管理
软件配置(Software Configuration)是软件产品在开发和运行过程中产生的全部信 息,这些信息随着软件开发运行工作的进展而不断变更。
02 组织机构
OPTION
软件开发团队不能只是一个简单的集合,要求具有良好的组织机构,要具有合理的人员分 工和有效的通信,共同高效率地完成任务。
按项目划分的模式
按职能划分的模式
矩阵型模式
11.3 软件工程人员组织
软件工程团队人员应遵循如下职业道德。
诚实可信、恪尽职守、敬重法律、遵守道德
服从项目领导,严守国家机密,重视合同和协议
11.5.1 软件质量的特性
软件质量是指软件满足明确规定或隐含定义的需求的程度。软件质量的要点如下。
软件工程导论第1章(第4版)
软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。
教学课件第1章软件工程基础
软件定义: 确定软件开发总目标;确定工程的可行性; 导出实现策略及系统功能;估计资源和成本,并且制定 工程进度表。 问题定义、可行性研究、需求分析
软件开发: 具体设计和实现在前一个时期定义的软件 总体设计、详细设计、编码和单元测试、综合测试
7. 综合测试
▪ 集成测试和验收测试,现场测试或平行运行
8. 软件维护
▪ 使系统持久地满足用户的需要。 ▪ 改正性维护,适应性维护,完善性维护,预防性维护。
1.3软件生存期模型
软件生存期模型反映软件生存周期内各种工作应如 何组织及,以及各个阶段应如何衔接。
软件生存期模型是跨越整个软件生存周期的系统开 发、运作、维护所实施的全部工作和任务的结构框 架。
• 推迟实现的观点
清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现。
• 质量保证的观点(文档驱动)
每个阶段都必须完成规定的文档 每个阶段结束前都要对所完成的文档进行评审
瀑布模型的缺点
➢ 模型缺乏灵活性。 ➢ 开发过程一般不能逆转,否则代价太大 ➢ 规格说明很难理解:“我知道这是按我
的要求做的,但不是我想要的样子。” ➢ 软件的实际情况必须到项目开发的后期
▪ 错误出现的时间:在编代码之前(63%:37%) ▪ 改正错误的代价:发现得月晚,开发代价越高
• 实行严格的产品控制
基线配置、变动控制
• 采用现代程序设计技术 • 结果应能清楚地审查 • 开发小组的人员应该少而精 1. 承认不断改进软件工程实践的必要性
6.软件工程研究的基本内容
软件工程学分为:理论与结构、方法、工具与环境、 管理和规范等。
人类工程
关键是处理软件与人的交互问题。 现在“人机界面友好”的要求,已成为基于计算机系
软件工程第1-2章课后习题参考答案
软件⼯程第1-2章课后习题参考答案第⼀章课后参考答案1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机?“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的⼀系列“严重问题”。
这些问题决不仅仅是不能正常运⾏的软件才具有的,实际上,⼏乎“所有软件”都不同程度地存在这些问题。
“软件危机”包含两⽅⾯的问题:(1)如何开发软件,以满⾜对软件⽇益增长的需求;(2)如何维护数量不断膨胀的已有软件。
它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)⽤户对“已完成的”软件系统不满意的现象经常发⽣;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的⽂档资料;(6)软件成本在计算机系统总成本中所占的⽐例逐年上升;(7)软件开发⽣产率提⾼的速度,远远跟不上计算机应⽤普及深⼊的趋势。
出现软件危机的原因(1)开发⼈员与客户认识之间的⽭盾(2)开发⼈员能⼒与开发⽬标之间的⽭盾(3)预估与实际⼯作量之间的⽭盾(4)客户认识的提⾼与软件维护之间的⽭盾(5)遗产系统与实施软件之间的⽭盾2.假设⾃⼰是⼀家软件公司的总⼯程师,当把图1.1给⼿下的软件⼯程师们观看,告诉他们及时发现并改正错误的重要性时,有⼈不同意这个观点,认为要求在错误进⼊软件之前就清楚它们是不现实的,并举例说:“如果⼀个故障是编码错误造成的,那么,⼀个⼈怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进⾏修改付出的代价是很不相同的,在早期引⼊变动,涉及的⾯较少,因⽽代价也⽐较低;在开发的中期,软件配置的许多成分已经完成,引⼊⼀个变动要对所有已完成的配置成分都做相应的修改,不仅⼯作量⼤,⽽且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引⼊变动,当然付出的代价更⾼。
⼀个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很⼩的,因为这不是整体构架的错误。
3.什么是软件⼯程?它有哪些本质特征?怎么⽤软件⼯程消除软件危机?软件⼯程是知道计算机软件开发和维护的⼀门⼯程学科。
软件工程课件第章一第一章共44页文档
✓ 软件的维护工作量大; ✓ 软件没有足够的文档资料 ✓ 软件的开发速度远远跟不上计鞠机应用普及
的速度 ✓ 软件产品质量难以保证 ✓ 用户对“己完成的“软件系统极不满意
软件危机----软件危机产生原因
• 软C件op过yr程ig的ht选2择004-2011 Aspose Pty Ltd.
• 软件生命周期的定义
软件工程学----软件生命周期
• 软件生命周期由软件定义、软件开发、教件 维护三个时期组成。每个时期又分为若干个 阶段。
•Ev的软a总件lu目定a标义t,i,o确又n定称软o为件n系开l统y发.分工析程。的确可定行软性件,开确发 ted with Aspose.Slid定的e实功s现能f工,or程估目计.N标完E应成该该T采项3用工.的程5策需C赂要l和的ie必资n须源t完和P成成rofile 5.2
✓ 软件C规o模p的y增rig大h,t使2程0序0的4复-2杂0程1度1大A大s增p加o,se Pty Ltd. 软件开发的难度难以衔量; ✓ 软件危机产生,还因为软件的开发采用了“手
工作坊”式的开发模式; ✓ 软件作为一种产品,如果缺少必要的文档.就
无法进行维护。
软件工程学----基本概念
• 软件工程学的研究对象
软件工程课件第章一第一章
1、合法而稳定的权力在使用得当时很 少遇到 抵抗。 ——塞 ·约翰 逊 2、权力会使人渐渐失去温厚善良的美 德。— —伯克
3、最大限度地行使权力总是令人反感 ;权力 不易确 定之处 始终存 在着危 险。— —塞·约翰逊 4、权力会奴化一切。——塔西佗
5、虽然权力是一头固执的熊,可是金 子可以 拉着它 的鼻子 走。— —莎士 比
软件工程第四版第1章参考答案
一.基本概念1.软件就是程序吗?如何定义软件?答:人们经过长期实践已经逐步认识到,软件≠程序,程序只是软件的关键要素,普遍接受的观点是:软件=程序+数据+文档。
2.文档有何作用?程序代码属不属于文档?答:文档指的是在软件开发和维护过程中形成的文字记录。
从软件计划、分析、设计、实现(编码和测试)、维护等开发活动中形成的各种文件。
文档属于软件的一部分,是软件维护和升级的重要依据,并且文档内容要与代码同步更新。
没有文档的软件维护不但不能延长反而会缩短软件寿命。
文档包括需求规格说明书、设计说明书、用户使用说明书、在线帮助等,当然程序代码是必不可少的一种软件文档。
3.什么是软件危机?什么原因产生了软件危机?答:软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。
产生的原因是主客观不相适应。
见书图1-2。
●客观上:软件规模增大、功能要求越来越复杂,需求不断变化等;●主观上:传统的个体化开发观念和方法,无开发过程指导,无开发过程管理;由于主客观矛盾,必然产生软件质量差、开发超期、超预算、维护困难等现象。
4.软件工程定义有很多说法,用你自己的理解说明软件工程是干什么的?参考:软件工程是指导计算机进行软件计划、开发和维护的工程学科;软件工程是为解决软件危机而诞生的,解决的途径是:用工程化的理论、方法和技术来管理软件开发过程。
任何产品的工程化就是有计划、有目标、有规范、有文档、有标准。
见1.4节。
软件工程就是指导软件产品的工程化。
5.软件工程三要素是什么?答:软件工程三要素是从计算机科学观点看软件工程,即从软件开发的技术层面应该有过程、方法和工具。
见图1-4。
(2)“过程”是软件产品加工所经历的一系列有组织的活动,保证能够合理、高质量和及时地开发出软件。
过程定义的活动集合及其序列见第2章。
(3)“方法”为软件开发提供“如何做”的技术,它涵盖了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列活动的做法。
《软件工程(第四版)》教学教案
《软件工程(第四版)》教学教案软件工程(第四版)教学教案第一章引论引言在当今信息化社会,软件已经成为各行各业重要的工具和支撑系统。
然而,软件的复杂性和规模不断增长,使得软件开发面临着许多挑战。
软件工程作为一种综合性学科,旨在通过系统化的方法和工具,提高软件开发的质量和效率。
本教学教案旨在全面介绍软件工程的基本概念和方法,并结合实践案例,培养学生的软件开发和项目管理能力。
1.1 软件工程的概念与特点1.2 软件工程知识体系与发展历史1.3 软件工程师的职责与素养1.4 软件开发生命周期模型1.5 软件过程与过程改进第二章软件项目管理2.1 软件项目管理概述2.1.1 项目管理的概念和重要性2.1.2 软件项目管理的特点2.2 软件项目生命周期及其阶段划分2.2.1 项目立项与可行性分析2.2.2 需求分析与规划2.2.3 软件设计与开发2.2.4 软件测试与验证2.2.5 软件发布与维护2.3 软件项目管理过程与技术2.3.1 项目计划与进度管理2.3.2 资源管理与团队协作2.3.3 风险管理与变更控制2.3.4 质量管理与配置管理2.4 软件项目案例分析第三章需求工程3.1 需求工程概述3.1.1 需求工程的定义和目标3.1.2 需求工程的活动和任务3.2 需求获取与分析3.2.1 需求获取方法和技术3.2.2 需求分析与建模工具3.3 需求规格与验证3.3.1 需求规格化与书写规范3.3.2 需求验证方法和技术3.4 需求管理与变更控制3.4.1 需求跟踪与管理工具3.4.2 需求变更控制与影响分析3.5 需求工程案例分析第四章软件设计与实现4.1 软件设计原则与方法4.1.1 模块化与信息隐藏4.1.2 接口设计与抽象4.1.3 数据结构与算法设计4.2 面向对象软件设计4.2.1 类与对象的概念4.2.2 继承与多态性4.2.3 设计模式与重构技术4.3 软件实现与编码规范4.3.1 编程语言与开发环境选择4.3.2 编码规范与代码质量控制4.4 软件设计与实现案例分析第五章软件测试与维护5.1 软件测试的基本概念5.1.1 软件测试的目标与原则5.1.2 软件测试的类别与策略5.2 软件测试基本技术与工具5.2.1 黑盒测试与白盒测试5.2.2 静态测试与动态测试5.2.3 自动化测试与测试工具5.3 软件质量保证与控制5.3.1 缺陷管理与跟踪5.3.2 软件质量度量与评估5.4 软件测试与维护案例分析第六章软件配置管理6.1 软件配置管理概述6.1.1 配置管理的定义和目标6.1.2 配置管理的基本原则6.2 配置项和配置管理体系6.2.1 配置项的识别与控制6.2.2 配置管理体系的建立与维护6.3 变更控制与配置管理工具6.3.1 变更控制流程与责任划分6.3.2 配置管理工具的选择与应用6.4 软件配置管理案例分析第七章软件工程实践7.1 软件开发过程改进7.1.1 CMMI与软件过程改进7.1.2 敏捷开发与迭代式开发7.2 软件项目管理实践7.2.1 项目管理的成功因素7.2.2 团队协作与沟通技巧7.3 软件工程案例分析与实训结语通过本课程的学习,学生将深入了解软件工程的基本概念、方法和工具,培养软件开发与项目管理的能力,为将来从事软件行业或相关领域的工作打下扎实的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.基本概念
1.软件就是程序吗?如何定义软件?
答:人们经过长期实践已经逐步认识到,软件≠程序,程序只是软件的关键要素,普遍接受的观点是:软件=程序+数据+文档。
2.文档有何作用?程序代码属不属于文档?
答:文档指的是在软件开发和维护过程中形成的文字记录。
从软件计划、分析、设计、实现(编码和测试)、维护等开发活动中形成的各种文件。
文档属于软件的一部分,是软件维护和升级的重要依据,并且文档内容要与代码同步更新。
没有文档的软件维护不但不能延长反而会缩短软件寿命。
文档包括需求规格说明书、设计说明书、用户使用说明书、在线帮助等,当然程序代码是必不可少的一种软件文档。
3.什么是软件危机?什么原因产生了软件危机?
答:软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。
产生的原因是主客观不相适应。
见书图1-2。
客观上:软件规模增大、功能要求越来越复杂,需求不断变化等;
主观上:传统的个体化开发观念和方法,无开发过程指导,无开发过程管理;由于主客观矛盾,必然产生软件质量差、开发超期、超预算、维护困难等现象。
4.软件工程定义有很多说法,用你自己的理解说明软件工程是干什么的?
参考:软件工程是指导计算机进行软件计划、开发和维护的工程学科;
软件工程是为解决软件危机而诞生的,解决的途径是:用工程化的理论、方法和技术来管理软件开发过程。
任何产品的工程化就是有计划、有目标、有规范、有文档、有标准。
见1.4节。
软件工程就是指导软件产品的工程化。
5.软件工程三要素是什么?
答:软件工程三要素是从计算机科学观点看软件工程,即从软件开发的技术层面应该有过程、方法和工具。
见图1-4。
(2)“过程”是软件产品加工所经历的一系列有组织的活动,保证能够合理、高质量和及时地开发出软件。
过程定义的活动集合及其序列见第2章。
(3)“方法”为软件开发提供“如何做”的技术,它涵盖了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列活动的做法。
如经常说的面向结构、面向对象、面向组件等开发方法,项目管理中估算、度量、计划等管理方法。
软件工程以介绍方法为主,本书从第3章开始逐步介绍开发过程所用到的方法。
(4)“工具”为过程和方法提供自动的或半自动的支持。
这些工具既包括软件也有硬件。
软件工具包括编程、建模、管理等开发工具。
通过网络环境把这些软件工具集成起来搭建一个支持团队开发的平台,称之为计算机辅助软件工程(ComputerAided Software Engineering,CASE)。
CASE集成了软件、硬件和一个存放开发过程信息的软件工程数据库,形成了一个软件工程环境。
6.软件工程的目标、过程和原则是什么?
答:目标、过程、原则是一切工程的三维框架,它是以工程的观点来看待软件开发。
见书
1.5.2节
(1)软件工程的目标:降低成本,及时交付高质量的软件产品(高质量、高效率、高效益)。
(2)实现目标的过程:完成产品加工的过程。
它包括:基本过程、支持过程和组织过程。
(3)进行过程应遵守的原则:原则就是过程中的轨道约束。
它包括:选取适宜开发范型、采用合适的设计方法、提供高质量的工程支持、重视开发过程的管理。
7.软件工程原理有哪几条?
答:软件工程的基本原理是指导软件工程实践的思想方法,一共有7条,这7条原理相互支撑,保证软件产品的质量和开发效率。
见书1.5.4节。
(1)用分阶段的生命周期计划xx;
(2)坚持进行阶段评审;
(3)实行严格的产品控制;
(4)采纳现代程序设计技术;
(5)结果应能清楚地审查;
(6)开发小组的人员应少而精;
(7)承认不断改进软件工程实践的必要性;
8.软件发展的第四阶段比第三阶段的显著变化和进步在哪些方面?第五阶段的显著特征是什么?
答:主要参见1.6节
(1)第四阶段的进步体现在:
计算机走进千家万户,计算机软件从面向科研和面向企业走向面向大众。
计算机应用走向网络化;
开发技术以面向对象为主;
软件开发产业化;
(2)第五阶段的特征是:
企业需求发生巨大变化,由独立的部门管理走向跨部门、跨行业、跨区域、跨平台,软件规模大、功能复杂、技术综合性强。
需求是变化的,因此要求软件结构是开放的、柔性的、松耦合的,做到开发过程分散解决、逐步集成,维护上可任意裁剪,适应需求的变化。
该阶段采用的开发技术发展到面向组件、面向服务。
9.传统软件工程曾起到哪些推进作用?
答:传统软件工程指的是结构化的软件开发方法,尽管比较原始,但在观念突破、解决软件危机方面是个良好的开始,有许多实际作用。
见1.7.2节。
①遵循了软件开发分阶段、有控制的理论;
②树立软件是程序+文档的观念;
③把自顶向下、逐步求精的原理贯穿在开发过程中;
④软件的估算与度量可以量化开发工作,使计划和控制成为可能;
10.现代软件工程与传统软件工程显著区别是什么?有哪些进步?
答:传统软件工程是基于结构化的软件开发方法,现代软件工程是以面向对象(ObjectOriented)技术为标志。
不仅在编程技术上发生巨大进步,而且在分析、设计整个开发过程中采用OO思维方式,更加完整、自然地反映客观世界;
采用架构技术,开发效率、产品质量得到极大提高;
更注重团队开发和管理,融入更多、更新的管理理念和手段。
如RUP模型、XP模型、过程改进、能力成熟度模型、配置管理等。
二.深入讨论
1.辨析:软件危机是过去发生的事情,现在有了软件工程,软件危机得到有效解决,现在和以后不会再出现软件危机了。
参考答案:新的软件危机依然会出现。
软件危机是软件开发遇到的严重问题,软件工程的诞生解决了早期软件危机的很多问题。
但是任何矛盾事物的解决只是一种暂时的平衡,平衡被打破新的矛盾就会出现。
在新的条件下软件危机会有新的表现,比如,针对现代企业数据和业务联系需要跨行业、跨地区、跨平台的B2B合作方式,原来软件的一次性开发、刚性结构就出现了“危机”,解决这样的危机就要寻求集成式、柔性结构这样新的解决方案,系统分析、设计的方法也要随之改进,软件工程要随之发展。
目前软件工程自身存在很多问题亟待解决:如开发方法学与技术没有同步发展;组件生产以自我奋斗为主,没有形成市场化;集成与装配化的生产方式无重大转变。
2.讨论:请总结一下你使用过什么类型的软件?本书讨论的软件工程倾向于什么类别的软件开发?
参考答案:应用软件分为桌面软件和企业级软件,两种软件的使用和开发有共同点也各有特点:
(1)在前期的课程学习期间,主要使用过的软件有:办公软件如word、excel等;编程软件如宏汇编-MASM、C编程turbo c和Visual C++、Java集成开发工具Eclipse、建模工具Rose等;媒体播放软件如Windows Media Player;图像处理软件如photoshop。
这些软件都属于桌面软件。
(2)在日常的生活和交流中,通过网络收发电子邮件、QQ聊天、网上购物等;在学习中通过校园网进行选课、查询成绩、提交作业、图书查询等。
这些属于企业级软件,就是通常说的Web软件,更为学术的名词称分布式计算。
本书讨论的软件开发主要面向应用软件,且侧重于企业级软件。
3.讨论:企业级软件开发有何特点?
参考答案:参考教材1.1.2节
软件结构为分布式多层结构,它的特点是用于网络、客户群不确定、多用户并发操作、操作和传递大量数据、涉及网络和数据安全等
4.讨论:计算机科学方面的基础课程与学习软件工程有何关系?有何不同?
参考答案:参考书1.5.1节。
(1)计算机有关专业(计算机应用、软件工程)的教育和学习过程是从理解计算机世界开始的,如计算机原理、离散数学、编译原理、数据结构、算法分析、程序设计、数据库等等课程都是围绕计算机科学的,也称为专业基础课。
这些基础课是培养学生把给定的计算模型在计算机中得以实现的计算能力。
(2)然而谁来给出这个模型,怎样把错综复杂的客观世界描述出计算机可实现的计算模型,这就是软件开发的重任,是软件工程的研究的学问。
(3)基础课程只是培养个人单打独斗能力,没有培养工程化思维,还缺乏对软件加工的生产过程、资源计划、质量保证、生产效率、工程效益、风险控制以及团队合作等工程意识的培养。
因此受到计算机科学方面的基础训练是步入软件工程的基础,深入到软件工程还有很远的路要走。