




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程
SoftwareEngineering主讲:wangzhenE-mail:wz@
电话:867981131软件工程
SoftwareEngineering主讲《软件工程》软件业是决定21世纪国际竞争地位的战略性产业,是信息时代的朝阳产业。1.软件产业是信息产业的核心,是国际竞争的焦点和战略制高点。2.软件关系到国家政治、经济和社会的安全及民族文化的发扬光大。
3.发展软件产业对优化我国产业结构、提高经济运行质量具有极其重要的作用。4.软件是国民经济建设中诸多关键技术的基础。2《软件工程》2
《软件工程》
近二十年来计算机软件已经成为现代科学研究和解决工程问题的基础,以及管理部门、生产部门、服务行业中的关键因素,渗透到了各个领域,成为当今世界不可缺少的一部分。展望二十一世纪,软件仍将成为驱动任何事情,从基础教育到遗传工程取得新进展的动力。学习研究工程化的软件开发方法,使开发过程更加规范,是我们学习的目标和动力。
33软件工程软件工程导论(第四版)张海藩清华大学出版社(2003)教材4软件工程软件工程导论(第四版)教材4软件工程
实用软件工程(第二版)郑人杰殷人昆陶永雷清华大学出版社(1996)
软件工程-实践者的研究方法(英译版第五版)RogerS.Pressman机械工业出版社参考书目5软件工程实用软件工程(第二版)软件工程课程评分方法大作业30%+期末考试70%=总评100%其它作业仅供参考。可通过e-mail递交考勤仅供参考,若抽查3次缺勤,总成绩不及格6软件工程课程评分方法6《学生管理系统》
StudentMis《学生管理系统》针对的用户是学校学生管理部门。相应的需求有:能够存储一定数量的学生信息,并方便有效的进行相应的学生数据操作和管理,主要包括:大作业7《学生管理系统》
StudentMis《学生管理系统》针对的学籍管理学生基本信息的导入、录入、删除及修改。学生辅助信息(综合测评、奖励、处分等)的录入、删除及修改。学生贷款管理(录入、删除及修改。查询)学生保险管理(录入、删除及修改。查询)学生就业管理(录入、删除及修改。查询)学生勤工助学管理(录入、删除及修改。查询)学生各种信息的多关键字检索查询。8学籍管理8
能够对需要的统计结果提供打印输出。能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息备份的服务。
可选题目:-
商业管理系统的分析、设计与实现-教务管理系统的分析、设计与实现-订票管理系统的分析、设计与实现可以自选题目,但需要教师认可9能够对需要的统计结果提供打印输出。可选题目:9应提交的文档软件需求规格说明书软件设计规格说明书用户安装及使用手册系统测试计划演示程序其它10应提交的文档软件需求规格说明书10软件工程目的体验软件工程各阶段的主要工作,特别注意吸取教训;
学会与他人合作,培养团队精神,单干户将得不到成绩。分组:班长组织每组6-8人,选一个组长。组长负责:组织、分工、安排进度、作业提交等。作业提交:每组一个,但必须注明分工.11软件工程目的分组:班长组织11§0.软件概论
什么是软件软件的分类软件的发展§1.软件危机
软件危机的表现
软件危机的原因§2.软件工程软件工程软件工程的目的和要求第一章软件工程学概述12§0.软件概论第一章软件工程学概述12软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料§0.软件概论13软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题§0.软件概论14软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具§0.软件概论15§0.软件概论15软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工艺的开发方式软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性
软件成本相当昂贵相当多的软件工作涉及到社会因素§0.软件概论16软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同§0.软件概论17§0.软件概论17软件的分类按软件的功能进行划分:系统软件
使计算机系统各个部件、相关软件和数据协调、高效地工作的软件§0.软件概论操作系统数据库管理系统设备驱动程序通信处理程序等18软件的分类按软件的功能进行划分:§0.软件概论操作系统18支撑软件
协助用户开发软件的工具软件§0.软件概论文本编辑程序文件格式化程序磁盘向磁带进行数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件19支撑软件§0.软件概论文本编辑程序19应用软件§0.软件概论商业数据处理软件工程与科学计算软件计算机辅助设计/制造软件系统仿真软件智能产品嵌入软件医疗、制药软件事务管理、办公自动化软件计算机辅助教学软件20应用软件§0.软件概论商业数据处理软件20按软件规模进行划分:
类别参加人员数 研制期限源程序行数
微型 1 1~4周0.5k§0.软件概论小型11~6月1k~2k
数值计算或数据处理.通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。
中型2~5 1~2年5k~50k
应用程序和系统程序。软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。系统的软件工程方法是完全必要的。21按软件规模进行划分:§0.软件概论小型
大型5~20 2~3年50k~100k
编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。
§0.软件概论甚大型100~10004~5年1M(=1024k)
若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。。极大型2000~50005~10年1M~10M 军事指挥、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。22大型5~20 2~3年§1.软件危机(SoftwareCrisis)在60年代中期以前:个体化软件开发方法.
用户程序员(编写者=使用者),无文档资料在60年代中期-70年代中期:软件作坊,产品软件.个体化软件开发方法.软件危机:在计算机软件开发、维护过程中所遇到的一系列严重问题。23§1.软件危机(SoftwareCrisis)在60年代§1.软件危机例:美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......在程序运行时发现的错误,必须设法改正用户有新的需求,必须相应地修改程序硬件或OS的更新,通常需要相应地修改程序24§1.软件危机例:美国IBM公司在1963年至1966年开§1.软件危机这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。SoftwareCrisis!25§1.软件危机这个项目的负责人F.D.Brook§1.软件危机⑴项目没有被很好地理解;计划不周,最终导致进度拖延、成本超支。
软件危机的表现:
计划很难制定致使经费预算常常突破:由于缺乏软件开发的经验,主观盲目地制定计划,执行起来和实际情况有很大差距;对于工作量估计不准确,进度计划无法遵循,开发工作完成的期限一拖再拖。已经拖延了的项目,为了加快进度而增加人力,反而更加延误了时间。
项目没有被很好地理解:“闭门造车”。需求在开发的初期阶段提得不够明确,或是未能得到确切的表达。软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,造成开发后期矛盾的集中暴露。然而这时问题既难于分析,也难于挽回。26§1.软件危机⑴项目没有被很好地理解;计划不周,最终导致§1.软件危机⑵没有充分的文档资料(documentation)“软件”程序,人与人的交流比写程序困难得多。⑶软件可靠性(reliability)缺少度量的标准,质量无法保证。如何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件,如:航天.27§1.软件危机⑵没有充分的文档资料(documentati§1.软件危机⑷软件难以维护(maintainability)
不易升级(evolvability)开发过程没有统一的、公认的方法论和规范指导,加之不重视文字资料工作,资料很不完整;忽视每个人与其他人的接口部分,发现了问题修修补补,这样的软件很难维护。(5)未能充分做好检测工作(test)
在运行中暴露出大量的问题,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。28§1.软件危机⑷软件难以维护(maintainabilit
软件危机产生的原因:软件自身的特点(2)在开发和维护过程中,采用了错误的方法和技术早期的个体化开发特点急于求成,仓促上阵我们认为的问题=用户要解决的问题?认为软件=编程、运行;轻视软件维护编程工作量10-20%软件维护工作量55-70%没有软件生命周期概念§1.软件危机29软件危机产生的原因:软件自身的特点§1.软件危机29高中低早中后变化出现的时期代价软件开发过程中,引入同一变动付出的代价随时间变化趋势§1.软件危机30高中低早中后变化出现的时期代价软件开发过程中,引入同一变动付改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)31改正一个问题需付出的代价需结构设计详细设计编码集成测试系统测对软件的常见误解用户的误解开发人员的误解管理者的误解§1.软件危机32对软件的常见误解用户的误解§1.软件危机32误解先对软件需求做一般的说明,以后再逐步明确就可以了.需求本身就是不断变化的,软件容易改变可以很快调整适应这种变化.现实软件需求不明确是造成软件开发费用增加和延时交货的主要原因.软件开发费用随着开发阶段的后移而大大增加.1x1.5-6x60-100x软件开发费用设计阶段开发阶段维护阶段用户的误解§1.软件危机33误解现实1x1.5-6x60-100x软件开发设计阶段开发阶开发人员的误解误解一旦程序开发完毕工作正常,我的任务就完成了在程序工作之前,无法顾及软件的质量问题.对于一个成功的项目来说,唯一能够提供的就是可以工作的程序.现实一个软件的50%-70%的工作量耗在软件交付使用以后.对于某些错误软件审查比软件测试更加有效.一个完整的软件要包括程序、各种文件和各种数据.§1.软件危机34开发人员的误解误解现实§1.软件危机34管理者的误解误解书上已经有各种软件开发的标准,拿来用就是了.已经有足够的软件开发工具可供使用.一旦项目的程序员不够可以随时增加.现实书上是有各种软件开发的标准,但不是过时就是不适用.软件工具不是一拿来就能用的.“项目后期增加程序员会使项目的完成更加推后."--Brooks§1.软件危机35管理者的误解误解现实§1.软件危机35
按工程化的原则和方法组织软件开发是软件开发的一个主要出路。50年代到60年代时,程序设计曾经被看做是一种任人发挥创造才能的技术领域。写出的程序通篇充满了程序技巧,这些程序很难被别人看懂。然而随着计算机的广泛使用,人们逐渐抛弃了这种观点。对于稍大的、并需要较长时间为许多人使用的程序,人们要求这些程序容易看懂、容易使用,并且容易修改和扩充。多个软件人员分工合作、共同完成;只有在项目的总体要求和技术规范的约束下充分发挥和施展。解决问题的出路§1.软件危机36按工程化的原则和方法组织软件开发是软件§1.软件危机
BettermanagementDifferentteamorganizationsBetterlanguages&toolsUniformcodingconventions
技术+管理
必须意识到:“软件”编程,它有自己的生命周期(lifecycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。“软件工程”(SoftwareEngineering)NATOConference,Garmisch,Germany,1968.解决问题的想法:37§1.软件危机Bettermanagement“软件1.软件工程的定义Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料IEEE:软件工程是开发、运行、维护和修复软件的系统方法FritzBauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法经典定义(P5)§2.软件工程(SoftwareEngineering)381.软件工程的定义Boehm:运用现代科学技术知识来设计软件工程—一种层次化技术工具方法过程质量焦点Softwareengineeringlayers软件工程三个要素:方法、工具、过程39软件工程—一种层次化技术工具方法过程质量焦点Soft软件工程三要素
方法、工具和过程支持软件工程的根基就在于对质量的关注。软件方法为软件开发提供了“如何做”的技术软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件工程过程定义了:方法使用的顺序要求交付的文档资料为保证质量和适应变化所需要的管理软件开发各个阶段完成的里程碑§2.软件工程40软件工程三要素
方法、工具和过程支持软件工程的根基就在于对质软件工程项目的基本目标付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发工作,及时交付使用§2.软件工程41软件工程项目的基本目标付出较低的开发成本§2.软件工程41
软件开发项目力图在以上目标的冲突中取得一定程度的平衡。§2.软件工程42软件开发项目力图在以上目标的冲突中取得一定程软件工程过程软件规格说明:规定软件的功能及其运行的限制软件开发:产生满足规格说明的软件软件确认:确认软件能够完成客户提出的要求软件演进:为满足客户的变更要求,软件必须在使用的过程中演进§2.软件工程43软件工程过程软件规格说明:规定软件的功能及其运行的限制§2.软件工程过程的特性易理解性可见性可支持性可接受性可靠性健壮性可维护性速度§2.软件工程44软件工程过程的特性易理解性可靠性§2.软件工程44软件生存期(或生命周期)
(lifecycle)软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期§2.软件工程三个阶段:定义、开发、维护.八个步骤:问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合测试;运行维护45软件生存期(或生命周期)
(lifecycle)软件有一个2、原理(Principles):(P.7-9)⑴用分阶段的生命周期计划严格管理
项目概要计划里程碑计划项目控制计划
产品控制计划
验证计划
运行维护计划⑹开发小组的成员应该少而精⑷采用现代程序设计技术⑸结果应能清楚地审查—setstandards⑺承认不断改进软件工程实践的必要性§2.软件工程⑵坚持进行阶段评审⑶实行严格的产品控制——基准配置管理(Baselineconfigurationmanagement)462、原理(Principles):(P.7-9)⑹开3、生命周期各阶段的基本任务(Principles):§2.软件工程阶段主要问题结束标准问题定义问题是什么?关于规模和目标的报告书可行性研究有可行的解吗?系统的高层逻辑模型:数据流图(DFD)成本/效益分析需求分析系统必须做什么?系统的逻辑模型:数据流图(DFD)数据字典算法描述473、生命周期各阶段的基本任务(Principles):§2.阶段主要问题结束标准总体设计概括地说,应该如何解决这个问题?可能的解法:系统流程图成本/效益分析推荐的系统结构:层次图/结构图详细设计怎样具体地实现这个系统?编码规格说明:HIPO图(层次图+输入/处理/输出图)或PDL图(过程设计语言)§2.软件工程48阶段主要问题结束标准总体设计概括地说,应该如何解决这个问题?阶段主要问题结束标准编码和单元测试正确的程序模块源程序清单单元测试方案、结果综合测试符合要求的软件综合测试方案、结果集成测试验收测试完整一致的软件配置§2.软件工程49阶段主要问题结束标准编码和正确的程序模块源程序清单综合测试符阶段主要问题结束标准维护持久地满足用户需要维护记录四类维护:改正性维护:运行中发现错误适应性维护:适应变化软件环境完善性维护:用户需求改进/扩充预防性维护§2.软件工程50阶段主要问题结束标准维护持久地满足用户需要维护记录§2.软件关键问题:“要解决的问题是什么?”
问题定义§2.软件工程确定问题的性质确定要开发软件系统的目标、规模与用户交互,提交文档(性质、目标、规模)时间最短:1天51关键问题:“要解决的问题是什么?”问题定义§2.软件工程确关键问题:“该问题有行得通的解决办法吗?”
可行性研究§2.软件工程简化的系统分析、设计导出系统的高层逻辑模型(数据流图)目标、规模更具体主要任务:成本/效益分析
形成可行性研究报告,提交管理部门审查52关键问题:“该问题有行得通的解决办法吗?”可行性研究§2.关键问题:“目标系统必须做什么?”
需求分析§2.软件工程确定系统必须具备的功能与用户充分交互,沟通提出用户确认的系统逻辑模型(数据流图、数据字典、简要的算法)编写软件需求说明书或系统功能说明书及初步的系统用户手册,提交管理机构评审53关键问题:“目标系统必须做什么?”需求分析§2.软件工程确关键问题:“概括地说,应该如何解决这个问题?”
总体设计(或概要设计)§2.软件工程确定人机工作范围多方案的选择:低成本中等成本高成本设计软件结构(模块)描述:结构图/层次图编写设计说明书,提交评审。54关键问题:“概括地说,应该如何解决这个问题?”总体设计(或关键问题:“应该怎样具体地实现这个系统?”
详细设计§2.软件工程对每个模块要完成的工作进行具体的描述,设计出程序的详细规格说明,为源程序编写打下基础描述:HIPO图(层次图+输入/处理/输出图)或PDL语言(过程设计语言)编写详细设计说明书,提交评审。55关键问题:“应该怎样具体地实现这个系统?”详细设计§2.关键问题:把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”
编码和单元测试§2.软件工程程序应正确、容易理解(结构良好、清晰易读)、容易维护测试每一模块(功能、结构)提交“源程序清单”56关键问题:把软件设计转换成计算机可以接受的程序代码,即写成以关键任务:通过各种测试使软件达到预定要求
综合测试§2.软件工程测试类型:集成、验收集成测试:将已测试过的模块按一定顺序组装起来,进行测试
用户验收测试:按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用
提交文档:测试计划、详细测试方案、测试结果57关键任务:通过各种测试使软件达到预定要求综合测试§2.软件关键任务:通过各种维护使系统持久地满足用户需要四类维护:改正性维护:运行中发现了软件的错误需要修正适应性维护:为了适应变化了的软件工作环境,需做适当变更完善性维护:为了增强软件的功能需做变更(用户需求改进或扩充)预防性维护:为将来的维护做准备记录维护活动
软件维护§2.软件工程58关键任务:通过各种维护使系统持久地满足用户需要软件维护§2软件生存期模型软件生存期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架瀑布模型快速原型模型增量模型
螺旋模型……§2.软件工程软件工程过程定义了:方法使用的顺序要求交付的文档资料为保证质量和适应变化所需要的管理软件开发各个阶段完成的里程碑59软件生存期模型软件生存期模型是跨越整个生存期的系统开发、运作1.瀑布模型(线形顺序模型)可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段§2.软件工程601.瀑布模型(线形顺序模型)可行性研究与计划需求分析设计§2.软件工程⑴顺序性、依赖性⑵推迟程序的物理实现⑶质量保证的观点——阶段文档与评审的要求,利于尽早发现错误。 每个阶段必须完成规定的文档;
每个阶段结束前完成文档审查,
及早改正错误。特点61§2.软件工程⑴顺序性、依赖性特点612.原型模型(快速成型模型)建造/修改原型用户测试运行原型
听取用户意见原型范型§2.软件工程622.原型模型(快速成型模型)建造/修改用户测试听取用原型采用原型模型的软件生存周期分析定义系统需求生成原型系统设计程序设计编码测试运行和维护原型化含原型化的软件生存期63采用原型模型的软件生存周期分析定义生成系统程序编码测试运行3.演化模型643.演化模型643.1增量模型(递增模型)
先完成一个系统子集的开发,再按同样的开发步骤增加功能(系统子集),如此递增下去直至满足全部系统需求。系统的总体设计在初始子集设计阶段就应作出设想。653.1增量模型(递增模型)先完成一个系统子集的开发分析增量模型设计编码测试分析设计编码测试分析设计编码测试分析设计编码测试增量1增量2增量3增量n
增量1交付客户
增量2交付客户
增量3交付客户增量n交付客户日历时间…..66分析增量模型设计编码测试分析设计编码测试分析3.2螺旋模型风险分析工程实施用户通信用户评估产品维护项目产品增强项目新产品开发项目概念开发项目计划建造及发布673.2螺旋模型风险工程用户通信用户产品维护项目产品增强项目“基于版本发布”的特点V1.0功能时间V2.0V1.168“基于版本发布”的特点V1.0功时间V2.0V1.168Trade-offDecision(折中决定)
可靠性发布日期
功能
最优约束范围可接受正确的Trade-off决定69Trade-offDecision(折中决定)4.面向对象模型704.面向对象模型704.1喷泉模型进一步开发实现和集成阶段运行状态实现阶段面向对象设计阶段计划阶段面向对象分析阶段需求阶段维护期714.1喷泉模型进一步开发实现和集成阶段运行状态实现阶段面喷泉模型特点主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征72喷泉模型特点主要用于支持面向对象开发过程体现了软件创4.2可重用部件组装模型使用重用技术的软件工程模型构件(components):可重用的软件成份可复用性(Reusability)
(可重用性)集成化软件开发环境(ISEE)734.2可重用部件组装模型使用重用技术的软件工程模型73可重用部件组装模型系统A的软件构成系统C的软件构成系统B的软件构成可重用部件可重用
部件74可重用部件组装模型系统A的系统C的系统B的可重用可重用74软件生产线应用构件提取车间应用构件库构件生产车间构件库组装车间领域1领域2应用系统...12341基础构件,2功能构件3接口构件,4用户界面构件75软件生产线应用构件应用构件生构件库组装领域领域应用.§3.技术审查和管理复审任务:发现技术方面的错误,监督项目进度、经费开支、投资回收的前景等。思考:阅读学生管理系统简介,思考下列问题:1、第一件要做的事是什么?2、你认为该软件应具备的最重要的两种品质是什么?3、你认为怎样分工是最合理的?76§3.技术审查和管理复审任务:发现技术方面的错误,监督项目进软件工程
SoftwareEngineering主讲:wangzhenE-mail:wz@
电话:8679811377软件工程
SoftwareEngineering主讲《软件工程》软件业是决定21世纪国际竞争地位的战略性产业,是信息时代的朝阳产业。1.软件产业是信息产业的核心,是国际竞争的焦点和战略制高点。2.软件关系到国家政治、经济和社会的安全及民族文化的发扬光大。
3.发展软件产业对优化我国产业结构、提高经济运行质量具有极其重要的作用。4.软件是国民经济建设中诸多关键技术的基础。78《软件工程》2
《软件工程》
近二十年来计算机软件已经成为现代科学研究和解决工程问题的基础,以及管理部门、生产部门、服务行业中的关键因素,渗透到了各个领域,成为当今世界不可缺少的一部分。展望二十一世纪,软件仍将成为驱动任何事情,从基础教育到遗传工程取得新进展的动力。学习研究工程化的软件开发方法,使开发过程更加规范,是我们学习的目标和动力。
793软件工程软件工程导论(第四版)张海藩清华大学出版社(2003)教材80软件工程软件工程导论(第四版)教材4软件工程
实用软件工程(第二版)郑人杰殷人昆陶永雷清华大学出版社(1996)
软件工程-实践者的研究方法(英译版第五版)RogerS.Pressman机械工业出版社参考书目81软件工程实用软件工程(第二版)软件工程课程评分方法大作业30%+期末考试70%=总评100%其它作业仅供参考。可通过e-mail递交考勤仅供参考,若抽查3次缺勤,总成绩不及格82软件工程课程评分方法6《学生管理系统》
StudentMis《学生管理系统》针对的用户是学校学生管理部门。相应的需求有:能够存储一定数量的学生信息,并方便有效的进行相应的学生数据操作和管理,主要包括:大作业83《学生管理系统》
StudentMis《学生管理系统》针对的学籍管理学生基本信息的导入、录入、删除及修改。学生辅助信息(综合测评、奖励、处分等)的录入、删除及修改。学生贷款管理(录入、删除及修改。查询)学生保险管理(录入、删除及修改。查询)学生就业管理(录入、删除及修改。查询)学生勤工助学管理(录入、删除及修改。查询)学生各种信息的多关键字检索查询。84学籍管理8
能够对需要的统计结果提供打印输出。能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息备份的服务。
可选题目:-
商业管理系统的分析、设计与实现-教务管理系统的分析、设计与实现-订票管理系统的分析、设计与实现可以自选题目,但需要教师认可85能够对需要的统计结果提供打印输出。可选题目:9应提交的文档软件需求规格说明书软件设计规格说明书用户安装及使用手册系统测试计划演示程序其它86应提交的文档软件需求规格说明书10软件工程目的体验软件工程各阶段的主要工作,特别注意吸取教训;
学会与他人合作,培养团队精神,单干户将得不到成绩。分组:班长组织每组6-8人,选一个组长。组长负责:组织、分工、安排进度、作业提交等。作业提交:每组一个,但必须注明分工.87软件工程目的分组:班长组织11§0.软件概论
什么是软件软件的分类软件的发展§1.软件危机
软件危机的表现
软件危机的原因§2.软件工程软件工程软件工程的目的和要求第一章软件工程学概述88§0.软件概论第一章软件工程学概述12软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料§0.软件概论89软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题§0.软件概论90软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具§0.软件概论91§0.软件概论15软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工艺的开发方式软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性
软件成本相当昂贵相当多的软件工作涉及到社会因素§0.软件概论92软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同§0.软件概论93§0.软件概论17软件的分类按软件的功能进行划分:系统软件
使计算机系统各个部件、相关软件和数据协调、高效地工作的软件§0.软件概论操作系统数据库管理系统设备驱动程序通信处理程序等94软件的分类按软件的功能进行划分:§0.软件概论操作系统18支撑软件
协助用户开发软件的工具软件§0.软件概论文本编辑程序文件格式化程序磁盘向磁带进行数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件95支撑软件§0.软件概论文本编辑程序19应用软件§0.软件概论商业数据处理软件工程与科学计算软件计算机辅助设计/制造软件系统仿真软件智能产品嵌入软件医疗、制药软件事务管理、办公自动化软件计算机辅助教学软件96应用软件§0.软件概论商业数据处理软件20按软件规模进行划分:
类别参加人员数 研制期限源程序行数
微型 1 1~4周0.5k§0.软件概论小型11~6月1k~2k
数值计算或数据处理.通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。
中型2~5 1~2年5k~50k
应用程序和系统程序。软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。系统的软件工程方法是完全必要的。97按软件规模进行划分:§0.软件概论小型
大型5~20 2~3年50k~100k
编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。
§0.软件概论甚大型100~10004~5年1M(=1024k)
若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。。极大型2000~50005~10年1M~10M 军事指挥、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。98大型5~20 2~3年§1.软件危机(SoftwareCrisis)在60年代中期以前:个体化软件开发方法.
用户程序员(编写者=使用者),无文档资料在60年代中期-70年代中期:软件作坊,产品软件.个体化软件开发方法.软件危机:在计算机软件开发、维护过程中所遇到的一系列严重问题。99§1.软件危机(SoftwareCrisis)在60年代§1.软件危机例:美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......在程序运行时发现的错误,必须设法改正用户有新的需求,必须相应地修改程序硬件或OS的更新,通常需要相应地修改程序100§1.软件危机例:美国IBM公司在1963年至1966年开§1.软件危机这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。SoftwareCrisis!101§1.软件危机这个项目的负责人F.D.Brook§1.软件危机⑴项目没有被很好地理解;计划不周,最终导致进度拖延、成本超支。
软件危机的表现:
计划很难制定致使经费预算常常突破:由于缺乏软件开发的经验,主观盲目地制定计划,执行起来和实际情况有很大差距;对于工作量估计不准确,进度计划无法遵循,开发工作完成的期限一拖再拖。已经拖延了的项目,为了加快进度而增加人力,反而更加延误了时间。
项目没有被很好地理解:“闭门造车”。需求在开发的初期阶段提得不够明确,或是未能得到确切的表达。软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,造成开发后期矛盾的集中暴露。然而这时问题既难于分析,也难于挽回。102§1.软件危机⑴项目没有被很好地理解;计划不周,最终导致§1.软件危机⑵没有充分的文档资料(documentation)“软件”程序,人与人的交流比写程序困难得多。⑶软件可靠性(reliability)缺少度量的标准,质量无法保证。如何保证软件产品的质量,是非常复杂困难的问题。特别对于规模庞大的软件,如:航天.103§1.软件危机⑵没有充分的文档资料(documentati§1.软件危机⑷软件难以维护(maintainability)
不易升级(evolvability)开发过程没有统一的、公认的方法论和规范指导,加之不重视文字资料工作,资料很不完整;忽视每个人与其他人的接口部分,发现了问题修修补补,这样的软件很难维护。(5)未能充分做好检测工作(test)
在运行中暴露出大量的问题,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。104§1.软件危机⑷软件难以维护(maintainabilit
软件危机产生的原因:软件自身的特点(2)在开发和维护过程中,采用了错误的方法和技术早期的个体化开发特点急于求成,仓促上阵我们认为的问题=用户要解决的问题?认为软件=编程、运行;轻视软件维护编程工作量10-20%软件维护工作量55-70%没有软件生命周期概念§1.软件危机105软件危机产生的原因:软件自身的特点§1.软件危机29高中低早中后变化出现的时期代价软件开发过程中,引入同一变动付出的代价随时间变化趋势§1.软件危机106高中低早中后变化出现的时期代价软件开发过程中,引入同一变动付改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)107改正一个问题需付出的代价需结构设计详细设计编码集成测试系统测对软件的常见误解用户的误解开发人员的误解管理者的误解§1.软件危机108对软件的常见误解用户的误解§1.软件危机32误解先对软件需求做一般的说明,以后再逐步明确就可以了.需求本身就是不断变化的,软件容易改变可以很快调整适应这种变化.现实软件需求不明确是造成软件开发费用增加和延时交货的主要原因.软件开发费用随着开发阶段的后移而大大增加.1x1.5-6x60-100x软件开发费用设计阶段开发阶段维护阶段用户的误解§1.软件危机109误解现实1x1.5-6x60-100x软件开发设计阶段开发阶开发人员的误解误解一旦程序开发完毕工作正常,我的任务就完成了在程序工作之前,无法顾及软件的质量问题.对于一个成功的项目来说,唯一能够提供的就是可以工作的程序.现实一个软件的50%-70%的工作量耗在软件交付使用以后.对于某些错误软件审查比软件测试更加有效.一个完整的软件要包括程序、各种文件和各种数据.§1.软件危机110开发人员的误解误解现实§1.软件危机34管理者的误解误解书上已经有各种软件开发的标准,拿来用就是了.已经有足够的软件开发工具可供使用.一旦项目的程序员不够可以随时增加.现实书上是有各种软件开发的标准,但不是过时就是不适用.软件工具不是一拿来就能用的.“项目后期增加程序员会使项目的完成更加推后."--Brooks§1.软件危机111管理者的误解误解现实§1.软件危机35
按工程化的原则和方法组织软件开发是软件开发的一个主要出路。50年代到60年代时,程序设计曾经被看做是一种任人发挥创造才能的技术领域。写出的程序通篇充满了程序技巧,这些程序很难被别人看懂。然而随着计算机的广泛使用,人们逐渐抛弃了这种观点。对于稍大的、并需要较长时间为许多人使用的程序,人们要求这些程序容易看懂、容易使用,并且容易修改和扩充。多个软件人员分工合作、共同完成;只有在项目的总体要求和技术规范的约束下充分发挥和施展。解决问题的出路§1.软件危机112按工程化的原则和方法组织软件开发是软件§1.软件危机
BettermanagementDifferentteamorganizationsBetterlanguages&toolsUniformcodingconventions
技术+管理
必须意识到:“软件”编程,它有自己的生命周期(lifecycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。“软件工程”(SoftwareEngineering)NATOConference,Garmisch,Germany,1968.解决问题的想法:113§1.软件危机Bettermanagement“软件1.软件工程的定义Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料IEEE:软件工程是开发、运行、维护和修复软件的系统方法FritzBauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法经典定义(P5)§2.软件工程(SoftwareEngineering)1141.软件工程的定义Boehm:运用现代科学技术知识来设计软件工程—一种层次化技术工具方法过程质量焦点Softwareengineeringlayers软件工程三个要素:方法、工具、过程115软件工程—一种层次化技术工具方法过程质量焦点Soft软件工程三要素
方法、工具和过程支持软件工程的根基就在于对质量的关注。软件方法为软件开发提供了“如何做”的技术软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件工程过程定义了:方法使用的顺序要求交付的文档资料为保证质量和适应变化所需要的管理软件开发各个阶段完成的里程碑§2.软件工程116软件工程三要素
方法、工具和过程支持软件工程的根基就在于对质软件工程项目的基本目标付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发工作,及时交付使用§2.软件工程117软件工程项目的基本目标付出较低的开发成本§2.软件工程41
软件开发项目力图在以上目标的冲突中取得一定程度的平衡。§2.软件工程118软件开发项目力图在以上目标的冲突中取得一定程软件工程过程软件规格说明:规定软件的功能及其运行的限制软件开发:产生满足规格说明的软件软件确认:确认软件能够完成客户提出的要求软件演进:为满足客户的变更要求,软件必须在使用的过程中演进§2.软件工程119软件工程过程软件规格说明:规定软件的功能及其运行的限制§2.软件工程过程的特性易理解性可见性可支持性可接受性可靠性健壮性可维护性速度§2.软件工程120软件工程过程的特性易理解性可靠性§2.软件工程44软件生存期(或生命周期)
(lifecycle)软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期§2.软件工程三个阶段:定义、开发、维护.八个步骤:问题定义、可行性研究、需求分析;总体设计、详细设计、编码与单元测试、综合测试;运行维护121软件生存期(或生命周期)
(lifecycle)软件有一个2、原理(Principles):(P.7-9)⑴用分阶段的生命周期计划严格管理
项目概要计划里程碑计划项目控制计划
产品控制计划
验证计划
运行维护计划⑹开发小组的成员应该少而精⑷采用现代程序设计技术⑸结果应能清楚地审查—setstandards⑺承认不断改进软件工程实践的必要性§2.软件工程⑵坚持进行阶段评审⑶实行严格的产品控制——基准配置管理(Baselineconfigurationmanagement)1222、原理(Principles):(P.7-9)⑹开3、生命周期各阶段的基本任务(Principles):§2.软件工程阶段主要问题结束标准问题定义问题是什么?关于规模和目标的报告书可行性研究有可行的解吗?系统的高层逻辑模型:数据流图(DFD)成本/效益分析需求分析系统必须做什么?系统的逻辑模型:数据流图(DFD)数据字典算法描述1233、生命周期各阶段的基本任务(Principles):§2.阶段主要问题结束标准总体设计概括地说,应该如何解决这个问题?可能的解法:系统流程图成本/效益分析推荐的系统结构:层次图/结构图详细设计怎样具体地实现这个系统?编码规格说明:HIPO图(层次图+输入/处理/输出图)或PDL图(过程设计语言)§2.软件工程124阶段主要问题结束标准总体设计概括地说,应该如何解决这个问题?阶段主要问题结束标准编码和单元测试正确的程序模块源程序清单单元测试方案、结果综合测试符合要求的软件综合测试方案、结果集成测试验收测试完整一致的软件配置§2.软件工程125阶段主要问题结束标准编码和正确的程序模块源程序清单综合测试符阶段主要问题结束标准维护持久地满足用户需要维护记录四类维护:改正性维护:运行中发现错误适应性维护:适应变化软件环境完善性维护:用户需求改进/扩充预防性维护§2.软件工程126阶段主要问题结束标准维护持久地满足用户需要维护记录§2.软件关键问题:“要解决的问题是什么?”
问题定义§2.软件工程确定问题的性质确定要开发软件系统的目标、规模与用户交互,提交文档(性质、目标、规模)时间最短:1天127关键问题:“要解决的问题是什么?”问题定义§2.软件工程确关键问题:“该问题有行得通的解决办法吗?”
可行性研究§2.软件工程简化的系统分析、设计导出系统的高层逻辑模型(数据流图)目标、规模更具体主要任务:成本/效益分析
形成可行性研究报告,提交管理部门审查128关键问题:“该问题有行得通的解决办法吗?”可行性研究§2.关键问题:“目标系统必须做什么?”
需求分析§2.软件工程确定系统必须具备的功能与用户充分交互,沟通提出用户确认的系统逻辑模型(数据流图、数据字典、简要的算法)编写软件需求说明书或系统功能说明书及初步的系统用户手册,提交管理机构评审129关键问题:“目标系统必须做什么?”需求分析§2.软件工程确关键问题:“概括地说,应该如何解决这个问题?”
总体设计(或概要设计)§2.软件工程确定人机工作范围多方案的选择:低成本中等成本高成本设计软件结构(模块)描述:结构图/层次图编写设计说明书,提交评审。130关键问题:“概括地说,应该如何解决这个问题?”总体设计(或关键问题:“应该怎样具体地实现这个系统?”
详细设计§2.软件工程对每个模块要完成的工作进行具体的描述,设计出程序的详细规格说明,为源程序编写打下基础描述:HIPO图(层次图+输入/处理/输出图)或PDL语言(过程设计语言)编写详细设计说明书,提交评审。131关键问题:“应该怎样具体地实现这个系统?”详细设计§2.关键问题:把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”
编码和单元测试§2.软件工程程序应正确、容易理解(结构良好、清晰易读)、容易维护测试每一模块(功能、结构)提交“源程序清单”132关键问题:把软件设计转换成计算机可以接受的程序代码,即写成以关键任务:通过各种测试使软
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 阑尾治疗科普
- A-Level英语2024-2025模拟试卷:经典文本解读与创意写作能力培养
- 2025年教师类考试学科知识与教学能力押题试卷高频考点解析
- 二级MySQL考试内容结构及试题及答案
- 2025年企业培训师职业资格考试真题卷(培训师角色认知篇)
- 2025年老年能力评估师考试试题集(老年人生活质量评估指标)及解析
- 2025年南京市小学四年级英语听力故事理解能力测试卷
- 2025年专升本艺术概论模拟试卷:艺术审美心理在艺术批评中的作用试题
- 部编版初中语文九年级上册同步讲练测九年级上册第二单元03巩固练(2份原卷版+解析版)
- 安徽省鼎尖教育联考2024-2025学年高二上学期开学考试政治试题
- 五年级语文PPT课件13-秦兵马俑01
- 制冷工艺设计手册
- 2023年福建省莆田市城厢区数学六年级第二学期期末统考试题含解析
- 关于一校一品一特色的学校汇报材料
- 2023年综合基础知识试题及解析
- 成品、半成品保护方案(土建)
- T-ISEAA 001-2020 网络安全等级保护测评高风险判定指引
- 安徽省合肥一中、六中、八中2021学年上学期高一年级期末考试化学试卷
- 房建工程安全文明施工标准化建筑施工
- 生活用纸生产工艺流程
- 盘扣式钢管脚手架验收表
评论
0/150
提交评论