版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软 件 工 程Software Engineering,郑诚 E-mail : ,课程介绍,课程学时 54 学时 上课 36 (2 18),实验 18(4 4.5) 考核环节:考试+作业+课程设计 课程设计:书面、实验 书面(作业):需求分析、系统设计 实验:程序设计、测试 ( 注:程序设计语言不限 ),软 件 工 程,软件工程导论(第四版) 张海藩 清华大学出版社(2003年),教 材,软 件 工 程, 实用软件工程 (第二版) 郑人杰 殷人昆 陶永雷 清华大学出版社(1996),软件工程理论与实践(第二版 影印版) Shari Lawrence Pfleeger 高等教育出版社(2001)
2、,主要参考书目,软 件 工 程,课程评分方法 (课程设计+作业) 20% + 期末考试 80% = 总评,实习题,期刊管理系统 (1) 期刊登记 (2) 期刊借阅 (3) 查询 某人所借阅的期刊清单; 按关键字查询,查询出相应关键字的文 章题目、作者、刊名、年、卷、期 期刊的去向(被何人借去) (4) 征订 列出要征订的期刊名、刊号、邮发代号。,软件是与计算机系统操作有关的程序、规程、规则及与之有关的文档及数据。 软件的分类 系统软件、实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件、个人计算机软件、CASE工具软件,第一章 软件工程学概述,软件发展 四个阶段: 50年代初
3、-60年代初 初期阶段 个人的技艺 60年中期-70年代末 多用户、多道程序和人机交互,软件维护问题的矛盾加剧 70年中期-80年代末 分布式系统、计算机网络等 80年代末 面向对象技术、专家系统、人工智能软件、并行软件、Internet环境下软件、布式计算环境等,1.软件危机 (Software Crisis),软件应用范围扩大需求增加软件规模增长复杂度增加费用巨大可靠性低、质量差软件危机,1.软件危机,例: 美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。.据统计,这个操作系
4、统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。.,一、软件危机简介,1.软件危机,这个项目的负责人F. D. Brooks事后总结了他在组织开发过程中的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷入这样的困境.”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。,Software Crisis !,(1) 对软件开发成本和进度的估计常常很不准确。,(2) 用户对“已完成的”软件系统不满意的现象经常发
5、生。,(3) 软件产品的质量往往靠不住。,(4) 软件常常是不可维护的。,(5) 软件通常没有适当的文档资料,(6) 软件成本占计算机系统总成本中所的比例逐年上升。,(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。,1.软件危机,软件危机主要有以下一些典型表现,1.软件危机, 项目没有被很好地理解;计划不周,最终导致进度拖延。,问题出在哪里?,二、软件危机的原因,1.软件危机, 没有充分的文档资料(documentation),人与人的交流比写程序困难得多。,Managers 管理和评价工程的进展 Programmers 交流信息 Maintainers 至关重要,文
6、档的作用,(1) 作为开发人员在一定阶段内的工作成果和结束标志 (2) 向管理人员提供软件开发过程中的进展和情况,把软件开发过程中的一些“不可见的”事物转换成“可见的”文字资料。以便管理人员在各个阶段检查开发计划的实施进展,使之能够判断原定目标是否达到,还将继续耗用资源的种类和数量。 (3) 记录开发过程中的技术信息,以便协调以后的软件开发,使用和修改。 (4) 提供对软件的有关运行、维护和培训的信息,便于协调管理人员、开发人员、操作人员和用户之间相互了解彼此的工作。 (5)向潜在用户报道软件的功能和性能,使他们能判定软件能否服务于自己的需要。,补充:,1.软件危机, 软件可靠性(reliab
7、ility)缺少度量的标准,质量无法保证。 如何保证软件产品的质量,是非常复杂困难的问题。,1.软件危机,(4) 修改软件所付出的代价会变大,1.软件危机,(5) 软件难以维护(maintainability) 不易升级(evolvability),程序写完了并不是工作就完成了,应该彻底消除“软件就是程序”的错误观念。软件是程序、数据及相关文档的完整集合。其中,程序是能够完成预定功能和性能的可执行的指令序列; 数据是使程序能够适当地处理信息的数据结构; 文档是开发、使用和维护程序所需要的图文资料。,1.软件危机,三、消除软件危机,认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、
8、管理严密、各类人员协同配合、共同完成的工程项目。,“软件” 编程,它有自己的生命周期 (life cycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。,更好的语言和工具 统一的编码规范,1.软件危机,软件工程是指导计算机软件开发和维护的一门工程学科。,1968年在第一届NATO会议上曾经给出了软件工程的一个早期定义:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。”,1993年IEEE(美国电气电子工程师学会)全面更具体的定义:“软件工程是: 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就
9、是把工程应用于软件; 研究中提到的途径。”,2.软件工程(Software Engineering ),一、人们普遍认为软件工程具有下述的本质特性 1. 软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品,2.软件工程,二、软件工程的基本原理(Principles): 用分阶段的生命周期计划严格管理 项目概要计划 里程碑计划 项目控制计划 产品控制计划 验证计划 运行维护计划 坚持进
10、行阶段评审 实行严格的产品控制基准配置管理(Baseline configuration management), 开发小组的成员应该少而精, 采用现代程序设计技术, 结果应能清楚地审查, 承认不断改进软件工程实践的必要性,2.软件工程,软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。 管理:就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。 方法学:在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。在软件工程领域中,这两个术语的含义基本相同。,三、软件工程方法学,
11、2.软件工程,软件工程方法学包含3个要素:方法、工具和过程。 方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题; 工具是为运用方法而提供的自动的或半自动的软件工程支撑环境; 过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。,2.软件工程,1. 传统方法学 传统方法学也称为生命周期方法学或结构化范型。 它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。,2.软件工程,这种方法学把软件生命周
12、期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。,前一个阶段任务的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的解法更进一步具体化,加进了更多的实现细节。,在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,2.软件工程,传统方法学仍然是人们在开发软件时使用得十分广泛的软件工程方法学。在相当长一段时期内这种方法学还会有生命力。,2.软件工程,2. 面向对象方法学 当软件规模庞大,或者对软件的需求是模糊的或会随时间而变化的时候,使用传统方法学开发软件往往不成功,此外,使用传统方法学开发出的
13、软件,维护起来仍然很困难。,2.软件工程,数据和对数据的处理原本是密切相关的,把数据和操作人为地分离成两个独立的部分,自然会增加软件开发与维护的难度。 与传统方法相反,面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。,2.软件工程,概括地说,面向对象方法学具有下述4个要点。 把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。 (2) 把所有对象都划分成类(class)。每个类都定义了一组数据和一组操作,类是对具有相同数据和相同操作的
14、一组相似对象的定义。,2.软件工程,(3) 按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为继承。 (4) 对象彼此间仅能通过发送消息互相联系。 也就是说,对象的所有私有信息都被封装在该对象内,不能从外界直接访问,这就是通常所说的封装性。,2.软件工程,面向对象方法学的出发点和基本原则: 尽量模拟人类习惯的思维方式, 使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程, 从而使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽
15、可能一致。 传统方法学强调自顶向下顺序地完成软件开发的各阶段任务。,2.软件工程,用面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。 面向对象方法普遍进行的对象分类过程: 支持从特殊到一般的归纳思维过程; 通过建立类等级而获得的继承性,支持从一般到特殊的演绎思维过程。,2.软件工程,对象是相对独立的实体,容易在以后的软件产品中重复使用,面向对象范型的另一个重要优点是促进了软件重用 面向对象方法特有的继承性和多态性,进一步提高了面向对象软件的可重用性,2.软件工程,1. 问题定义 “要解决的问题是什么?” ,在实践中它却可能是最容易被忽视的一个步骤。 通过对客户的访问调查,系统
16、分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。,3.软件生命周期(Software Life Cycle ),2. 可行性研究 “对于上一个阶段所确定的问题有行得通的解决办法吗?” 系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程,也就是在较抽象的高层次上进行的分析和设计过程。 研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。,3.软件生命周期,3. 需求分析 这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。,3.软件生命
17、周期,系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。 用正式文档准确地记录对目标系统的需求,这份文档通常称为规格说明书(specification)。 (提示:它经常被作为软件验收的技术协议),3.软件生命周期,4. 总体设计 这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?” 总体设计又称为概要设计。 应该设计出实现目标系统的几种可能的方案。并在充分权衡各种方案的利弊的基础上,推荐一个最佳方案。 总体设计的另一项主要任务就是设计程序的体系结构,也就是确定程序由哪些模块组成以及
18、模块间的关系。,3.软件生命周期,5. 详细设计 详细设计阶段的任务就是把解法具体化,也就是回答下面这个关键问题:“应该怎样具体地实现这个系统呢?” 不是编写程序,而是设计出程序的详细规格说明。 详细设计也称为模块设计,在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。,3.软件生命周期,6. 编码和单元测试 这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。 程序员应该根据目标系统的性质和实际环境,选取一种适当的高级程序设计语言(必要时用汇编语言),把详细设计的结果翻译成用选定的语言书写的程序, 并且仔细测试编写出的每一个模块。,3.软件生命周期,7. 综合测
19、试 这个阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。 最基本的测试是集成测试和验收测试。 所谓集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。 所谓验收测试则是按照规格说明书的规定,由用户对目标系统进行验收。,3.软件生命周期,8. 软件维护 维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。 通常有4类维护活动: 改正性维护,也就是诊断和改正在使用过程中发现的软件错误; 适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善; 预防性维护,
20、即修改软件为将来的维护活动预先做准备。,3.软件生命周期,4.软件过程,软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 ISO 9000把过程定义为“使用资源将输入转化为输出的活动所构成的系统。”此处,“系统”的含义是广义的:“系统是相互关联或相互作用的一组要素。”,过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。 科学、有效的软件过程应该定义一组适合于所承担的项目特点的任务集合。通常,一个任务集合包括一组软件工程任务、里程碑和应该交付的产品。 通常使用生命周期模型
21、简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。,4.软件过程,一、瀑布模型(Waterfall Model) :,通常使用生命周期模型简洁地描述软件过程。 把生命周期划分成哪些阶段及各个阶段的执行顺序,也称为过程模型。, 顺序性、依赖性 前一阶段的输出文档是后一阶段的输入文档,瀑布模型特点,4.软件过程, 推迟程序的物理实现 软件开发人员不能急于求成,它们总想早点编写程序。 对于大、中型的软件编码开始得越早,完成所需时间反而越长,过早地考虑程序的实现,常常导致大量返工,甚至灾难性后果(彻底推翻),4.软件过程, 质量保证的观点 阶段文
22、档与评审的要求,利于尽早发现错误。,每一阶段都要完成规定的文档 每一阶段都要对完成的文档进行复审,以便尽早发现问题,消除隐患,复审要及时,暴露出问题愈晚,排除故障付出代价也愈高。,4.软件过程,优点:规范化开发; 每个阶段提交文档 每个阶段 验证,缺点:过于理想化 (不能适应需求的变化,初期用户对产品的“样式”不了解),4.软件过程,实际的瀑布模型,快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。 快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。,4.软件过程,二、快速原型模型,通常,用户试用,提出修改意见,开发人员修改原型系统,然后用户再次试用一旦用户认可,开发人员书写规格说明文档,软件可以满足用户的真实需求。,4.软件过程,快速原型模型,三、增量模型,增量模型,4.软件过程,增量模型也称为渐增模型。 使用增量模型开发软件时,把软件产品作为一系列增量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机构研究报告-Brand KPIs for laundry detergent 1 2 3 in Mexico-外文版培训课件
- 大豆垄三栽培模式实施技术指南
- 柴油微耕机安全操作技术指引
- 康养物资采购库存管理
- 水稻侧深施肥施肥技术规范
- 社区团购蔬菜配送服务标准
- 仪器设备日常维护保养操作指南
- 家政客户投诉处理应急响应方案
- 农产品绿色认证申请流程标准
- 门店消毒卫生检查执行标准
- 《粤港澳大湾区城际铁路互联互通技术要求》
- 维修小家电知识培训课件
- 2025年广东省考考试笔试试题(含答案)
- 苏州2025年江苏苏州市相城区卫健系统招聘备案制工作人员133人笔试历年参考题库附带答案详解
- 2025年环保技术研发与转化效率研究报告
- 智慧树知道网课《企业法务概论》课后章节测试满分答案
- 心脑血管病事件报告培训试题及答案
- 2025年事业单位工勤技能-河北-河北工程测量工二级(技师)历年参考题库含答案解析(5套)
- 疑难病例讨论制度
- 矿山生态修复效果评估报告
- 2025年四川省广安市中考物理试题(原卷版)
评论
0/150
提交评论