版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程指导论,课名:软件工程教材:软件工程指导论参考教材: 1实用软件工程(第二版) 2软件工程实践者的研究方法教育方式:授课时间: 54,目录, 第一章软件工程概要第二章可行性研究第三章需求分析第四章形式化说明技术第五章整体设计第六章详细设计第七章实现第八章维护第九章对象方法论第十章面向对象设计第12章面向对象实现第13章软件项目管理, 第一章软件工程概要,1.1软件概要1.2软件危机1.3软件工程1.4软件生命周期1.5软件过程,1.1.1软件的发展1 .程序设计阶段(20世纪50年代初吗2 .程序系统阶段(20世纪60年代中期到20世纪70年代末)3.软件工程阶段(20世纪70年代中期
2、到20世纪80年代中期)4.第四阶段(20世纪80年代中期到现在) 4阶段的典型技术比较,1.1.2软件的定义(2)用于使程序正确动作的数据结构。 (3)描述程序开发过程、方法的文件。 1.1.3重视软件的特点,1 .软件开发过程。 2 .软件不会磨损老化,但维护很复杂。 3 .软件的开发和运营仅限于计算机系统,对计算机系统有一定的依赖性。 4 .软件开发还没有完全脱离手工开发方式。 5 .软件开发费用越来越高,成本相当高。 6 .软件的开发过程复杂,需要在开发过程中进行管理。 7 .软件具有抽象性,硬件低效率曲线,软件低效率曲线,1.2.1软件危机概述,1 .软件危机软件危机是软件开发和维护
3、过程中遇到的一系列严重问题。 软件危机包含两个问题:开发软件的方法和满足软件增长需求的方法。如何维持现有的不断增长的软件? 2 .软件危机的主要表现(1)软件开发成本和进度的估计往往不准确。 (2)经常出现用户对“完成”的软件系统不满的现象。 (3)软件产品的质量往往不可靠。 (4)软件经常无法维护。 (5)软件通常没有合适的文件资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率的提高速度远不及计算机应用迅速普及的趋势。 1.2.2软件危机的原因1 .客观原因软件是计算机系统的逻辑部件,不是物理部件,而是其特征缺乏“可见性”,因此软件开发过程的管理和控制非常困
4、难。 此外,软件维护通常意味着修改和修改设计会使软件维护变得困难。 规模很大,程序的复杂性随着程序规模的增加而指数上升。 软件可能具有的状态数通常是天文数字,无法完全预见软件可能面临的所有情况。 2、主观原因是因为在初期阶段开发软件的个人化,很多软件工程师对软件的开发和维护认识到了很多混乱,在实际工作中采用了一些错误的方法。 程序是完整软件产品的一部分,软件产品必须由完整的配置构成。 软件配置主要包括程序、文档、数据等. 在软件开发的各个阶段需要修改的成本不同。 引入相同变动的成本随时间变化的倾向,软件工程的重要目标之一是提高软件的维护性,降低软件维护的成本。 1.2.3解决软件危机的方法,首
5、先必须建立对计算机软件的正确认识。 软件是程序、数据和相关文档的完整集合。 上述程序是能够实现预定功能和性能的可执行指令序列,数据是使程序能够正确处理信息的数据结构,文档是进程开发、使用、维护所需的字符数据。 软件开发应该是组织良好,管理严密,各类人员团结合作完成的项目。必须充分吸收和借鉴人类长期从事各种工程项目的有效原理、概念、技术和方法,研究能更有效地开发软件的技术和方法。 必须积极开发和使用计算机辅助软件工程(CASE )工具。 1.3.1软件项目概要,1 .软件项目定义软件项目是指导计算机软件开发和维护的项目学科。 采用工程的概念、原理、技术和方法开发和维护软件,把经过时间考验的正确管
6、理技术与目前能得到的最好的技术方法相结合是软件工程。 1968年在第一次北约会议上提出了软件项目的初始定义。 “软件项目为了获得经济可靠、在实际机器上有效地工作的软件,确立并使用完善的工程原理”1993年IEEE还提出了更全面、具体的定义。 “软件工程是将系统的规范、可测量的路径应用于软件开发、运营、维护过程,即在将工程应用于软件的研究中提到的路径。 2 .软件工程的本质特性:软件工程关注大型程序结构软件工程的中心课题是, 控制复杂软件不断变化开发软件的效率是非常重要的协调合作软件开发重要软件必须在软件工程领域有效支持的用户,一个文化背景的人为另一个文化背景的人创造产品1.3.2软件工程的基本
7、原理必须用阶段性的生命周期计划严格管理,执行阶段性审查的严格产品控制明确地审查现代程序设计技术的结果,开发团队人员少,有必要改善软件工程实践,1.3.3软件在软件生命周期的全过程中使用的一系列技术方法的集合也被称为方法学,也称为示范型。 软件工程方法学包含三个要素:方法、工具和过程。 其中,方法是完成软件开发的各任务的技术方法,回答“怎么办”问题的工具是为操作方法提供的作为自动或半自动的软件工程辅助环境的流程,是获得高质量软件所需的一系列任务框架,将各任务目前应用最广泛的软件工程方法论是传统的方法论和面向对象的方法论。 1 .传统方法论的传统方法论也被称为生命周期方法学和结构化模型。 使用结构
8、化技术(结构化分析、结构化设计、结构化实现)完成软件开发任务。 将软件的生命周期分为几个阶段,依次完成各阶段的任务。 各阶段的开始和结束都有严格的基准,任何相邻的阶段,前一阶段的结束基准都是后一阶段的开始基准。 各阶段结束前必须进行严格的技术审查和管理再审。 2 .把面向对象方法论对象作为融合了数据和数据上的操作的软件组件。 也就是说,以对象分解代替以往方法的功能分解。 把所有的对象分成班。 基于父类(也称为基类)和子类(或子类)之间的关系,使多个相关类成为单个分层结构的系统(也称为类)。 对方之间只需发送信息就能保持联系。 1.4从软件的生命周期、软件的定义到开发、使用、维护,到最终被废弃,
9、经过很长的一段时间,这个时期常被称为生存周期。 软件的生命周期由软件定义、软件开发和运行维护(也称为软件维护)三个时期构成,各时期还分为几个阶段。 软件生存周期的三个阶段:1.软件定义阶段软件定义时期的任务是确定软件开发工程必须完成的总目标即确定工程的可行性为了实现工程目标而应采用的战略和系统必须完成的功能这个时期的工作通常也称为系统分析,由系统分析师负责。 软件定义的时期通常分为问题定义、可行性研究、需求分析三个阶段。 (1)问题定义:在问题定义阶段必须回答的重要问题是“需要解决的问题是什么? 通过对客户的访问调查,系统分析师应简洁地写下关于问题性质、工程目标和工程规模的书面报告,经过讨论和
10、必要的修改,本报告应得到客户的确认。 (2)可行性研究:这个阶段应该回答的重要问题是“对前一阶段决定的问题有没有很好的解决方法?” 系统分析师需要更抽象的高级别分析和设计过程。 可行性研究的结果是使用部门负责人来决定是否继续这项工程的重要依据。 (3)需求分析:正确地确定“目标系统为了解决这个问题,必须做什么”,主要确定目标系统必须具备什么样的功能。 系统分析员必须在需求分析阶段与用户密切合作,充分交流信息,以获得用户确认的系统逻辑模型。 一般来说,系统的逻辑模型用数据流图、数据词典和简单算法来表示。 在正式文档中正确记录目标系统的需要。 此文档一般被称为规范(specification )。
11、 2 .软件开发阶段开发时期的具体设计和实现,通常由整体设计、详细设计、代码和单元测试、综合测试四个阶段组成。 其中前两个阶段也被称为系统设计,下两个阶段也被称为系统实现。 (1)整体设计:在这个阶段必须回答的重要问题是“概括起来,应该如何实现目标系统”。 整体设计也称为概要设计。 首先应该设计几个实现目标系统的可能方案。 软件工程师应该使用适当的表现工具来说明各方案,分析各方案的优缺点,充分比较讨论各方案的优缺点,然后推荐最佳方案。 此外,还必须制定详细计划来实现最佳方案。 如果客户接受建议的方案,则需要进一步完成设计过程的体系结构。 换句话说,确定进程由哪个模块组成,以及它们之间的关系。
12、(2)详细设计:详细设计阶段的任务是将整体设计中提出的解决方案具体化,答案的重要问题是“应该如何具体地实现该系统”。 详细设计也称为模块设计,在此阶段详细设计各模块,确定实现模块功能所需的算法和数据结构。 (3)代码和单元测试:程序员必须根据对象系统的性质和实际环境,选择适当的高级编程语言(根据需要,汇编语言),将详细的设计结果翻译成用所选语言写的程序,并慎重地测试制作的各模块(4)综合测试:这个阶段的重要任务是通过各种类型的测试(以及相应的调试)使软件达到预定的要求。 应使用正式文件资料保存测试计划、详细测试计划和实际测试结果,作为软件构成的一部分。 3 .运营维护阶段维护时期的主要任务是软
13、件通过各种必要的维护活动永久满足用户的需要。 具体来说,如果软件在使用过程中发现错误,需要修正。如果环境发生变化时,必须修正软件以适应新的环境,如果用户有新的要求,为了满足用户的新需求,需要及时改善软件。 软件的生存周期,1.5软件过程,过程定义了操作方法的顺序,应交货的文件资料,保证软件质量和协调变化所需的管理措施,软件开发各阶段任务完成的里程碑。 通常使用生命周期模型来简洁地描述软件过程。 生命周期模型也称为流程模型,因为它规定了将生命周期分为哪个阶段和每个阶段执行。生命周期包括:问题定义、可行性研究、需求分析、整体设计、详细设计、代码和单元测试、综合测试、运行维护、8个阶段。 1、瀑布模
14、型直到1980年代,瀑布模型一直是唯一被广泛采用的生命周期模型,至今仍是软件工程中应用最广泛的流程模型。 传统软件工程方法论的软件过程基本上可以用瀑布模型描述。 软件的生存周期的各阶段就像瀑布的流水一样,阶段性地落下,规定了上下、相互连接的一定顺序。 实际的瀑布模型是根据瀑布模型开发软件,在以下的特征:阶段之间有顺序性和依赖性延迟实现的观点的质量保证的观点,在具有开发者采用规范的方法(例如,结构化技术)的优点的各阶段必须严格规定的文件缺点:在可执行的软件产品被提供给用户之前,用户只能通过文档知道未来产品是什么样的,开发者和用户之间缺乏有效的沟通,最终开发的软件产品可以真正满足用户的需求。 2
15、.快速原型模型的快速原型模型的第一步是快速构建反映用户主要需要的原型系统,让用户使用计算机试验,通过实践了解目标系统的概况。 通常,用户在试用原型系统后,会提出很多修改意见,开发者基于用户的意见快速修改原型系统,一旦用户认为该原型系统可以实际完成所需的工作,开发者就可以据此编写规范快速原型模型优点:使用该软件过程开发的软件产品,一般支持的真正需求可以满足的软件产品开发过程基本上是线性顺序过程,3 .增量模型的增量模型也称为递增模型各构成要素由相互协作的几个模块构成,可实现相对独立的功能。 整个软件产品分解为许多增量部件,开发者按部件向用户提供产品。 用户每次都获得满足部分需求的可执行产品,最后
16、获得满足所有需求的完整产品。 增量模型、优点:逐渐增加可以在短时间内向用户提交工作的产品的功能,使用户适应学习新产品的时间,减少新软件对客户组织的冲击。 4、螺旋模型必须在软件开发过程中迅速识别、分析风险,并采取适当措施消除或减少风险危害。 构建原型是将特定类型的风险降到最低的方法。 螺旋模型的基本思想:使用原型和其他方法尽量减少风险。 理解这个模型的一个简单方法是把它看作是到各阶段加上了风险分析过程的快速原型模型。 螺旋模型主要应用于内部开发的大规模软件项目。 完全螺旋模型、优点:软件维护和软件开发没有本质上的差异,它降低了过度测试(资金浪费)和测试不足(产品故障多)带来的风险,有利于现有软件的再利用,以软件质量作为软件开发的重要目标。 使用螺旋模型开发软件,软件开发者需要丰富的风险评价知识和经验. 5、喷泉模型迭代是软件开发过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026福建工行面试题及答案
- 第16章 跨国营运资本的存量管理
- 甘肃省武威第十一中学九年级信息技术 制作形变动画教案2
- 第2课 律动青春教学设计初中艺术·美术人教版2024七年级下册-人教版2024
- 第一节 能源及其应用教学设计高中物理沪科版2020必修第三册-沪科版2020
- Unit 4 Body Language Using language Explore body language 教学设计-人教版高中英语选择性必修第一册
- 2025-度九年级历史下册教案
- 《中学生男女交往教育-花开应有时》主题班会教学设计
- 八年级生物下册 13.3 原生生物教案 北京课改版
- 第7课 近代殖民活动和人口的跨地域转移 教学设计高二历史统编版(2019)选择性必修3
- 2026年高考英语新高考一卷真题卷附答案
- 2026年卫生健康知识培训
- 2026河南淅胜产业发展有限责任公司招聘工作人员10人笔试备考题库及答案详解
- 电梯意外事件与事故应急救援及演习制度培训
- 临床输血全流程清单式质量管理专家共识
- 2026年江苏省文化投资管理集团有限公司招聘笔试题库
- 国开《离散数学》大作业及答案
- JBT 9214-2010 无损检测 A型脉冲反射式超声检测系统工作性能测试方法
- 苏教版四年级数学下册第七单元《三角形平行四边形和梯形》测试卷(含答案)
- 《车险基础知识培训》
- 《外科实习作》课件
评论
0/150
提交评论