版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UNIT1软件与软件工程教材英文精编版第7版(第1章)本科教学版第7版(第1章)原书第7版(第1章)2软件是意外效应法则的最好体现没有人曾预料到软件科学会成为商业、科学和工程所必需的技术软件促进了新科技创新(基因工程、纳米技术)、现代科技发展(通信)、传统技术的根本转变(印刷业)软件技术已经成为个人电脑革命的推动力量消费者可以很容易地在附近的商店购买到包装好的软件产品软件由产品逐渐演化为服务,软件公司随需应变,通过Web浏览器发布即时更新功能软件公司比几乎任何传统工业时代的公司更大、更有影响力在大量应用软件的驱动下,互联网将迅速发展,对人们生活的诸多方面—从图书馆搜索、消费购物、政治演说到年轻人(或者不那么年轻的人)的约会习惯—引起革命性的变化没有人曾想到软件可嵌入到各种系统中:交通运输、医疗、通信、军事、工业、娱乐以及办公设备等不胜枚举3软件角色的演化Before1960’s:软件=程序Before1980’s:软件=工具(程序+数据+文档)程序:指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求数据:数据结构,使得程序可以合理利用信息文档:软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序操作和使用Now:软件=服务软件中承载知识
以知识为中心SoftwareProgramsDocumentsDataKnowledge4软件的本质软件既是产品也是交付产品的载体作为一个产品,扮演着信息转换的角色:产生、管理、获取、修改、显示或者传输各种不同的信息,简单如几个比特的传递或复杂如从多个独立的数据源获取的多媒体演示作为产品生产的载体,软件提供了计算机控制(操作系统)、信息通信(网络)以及应用程序开发和控制(软件工具和环境)的基础平台5软件软件是设计开发的,而不是传统意义上生产制造的软件不会磨损,但是会退化虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍然是根据实际的顾客需求定制的6磨损与退化如果希望降低软件退化,需要改进软件的设计软件工程方法的目的:降低变更突变的幅度,及其实际失效曲线的斜率7软件的应用领域系统软件应用软件工程/科学软件嵌入式软件产品线软件(包括娱乐软件)Web应用软件人工智能软件8应用软件1.文字处理软件WPSOffice、MicrosoftOffice、LibreOffice、GoogleDocs2.信息管理软件OracleDatabase数据库、SQLServer数据库3.辅助设计软件:如CATIA、NX、AutoCAD4.实时控制软件5.教育与娱乐软件6.图形图像软件AdobePhotoshop、GIMP、MAYA、Softimage、3DS7.后期合成软件aftereffects、combustion、digitalfusion、shake、flame8.网页浏览软件InternetExplorer、Firefox、Chrome、Safari9应用软件9.网络通信软件WindowsLiveMessenger、Skype、QQ10.影音播放软件:WMP、暴风影音、风雷影音11.音乐播放软件:Winamp、千千静听12.下载管理软件Orbit、迅雷、快车、QQ旋风13.电子邮件客户端WindowsLiveMail、OutlookExpress、Foxmail、KMail14.信息安全软件360、卡巴斯基、诺顿、瑞星、金山毒霸、PSA密码管理软件15.虚拟机软件VMware、VirtualBox、MicrosoftVirtualPC16.输入法软件:谷歌拼音输入法10软件—新种类开放计算(Open-worldcomputing)普适计算、分布式计算开发系统和应用软件,以使得移动设备、个人电脑和企业应用,通过网络设施进行通信网络资源(Netsourcing)Web作为计算引擎和内容提供平台构建一个结构简单而智能的应用程序,为全世界的最终用户市场提供服务开源软件(OpenSource)free源码(一个祝福,或一个潜在的诅咒)开放的系统应用程序的源代码,使得用户可以轻松、可靠地进行局部的修改11软件—新种类普适计算12软件—新种类数据挖掘&网格计算13遗留软件在几十年前开发,不断被修改以满足商业需要和计算平台的变化质量差:维护代价高昂、系统演化风险较高设计难以扩展,代码令人费解,文档混乱甚至根本没有,测试用例和结果从未归档,变更历史管理混乱等,有着数不清的问题具有生命周期长以及业务关键性的特点许多遗留软件系统仍然支持核心的商业功能,是业务‘必不可少’的支撑14遗留软件演化的原因软件需要进行适应性调整,从而可以满足新的计算环境或者技术的需求软件必须升级以实现新的商业需求软件必须扩展使之具有与更多新的系统和数据库的互操作能力软件架构必须进行改建使之能适应多样化的网络环境所有软件工程师都必须认识到:变化是不可避免的,不要反对变化15软件工程师面临的问题为什么软件需要如此长的开发时间?为什么开发成本居高不下?为什么在将软件交付给顾客使用之前,我们无法找到所有的错误?为什么维护已有的程序要花费高昂的时间和人力代价?为什么软件开发和维护的过程仍旧难以度量?软件危机软件危机(SoftwareCrisis):计算机软件的开发和维护过程所遇到的一系列严重问题;软件危机的表现:对软件开发成本和进度的估算很不准确,甚至严重拖期和超出预算;无法满足用户需求,导致用户很不满意;质量很不可靠,经常失效;难以更改、调试和增强;没有适当的文档;软件成本比重上升;软件开发生产率跟不上计算机应用迅速深入的趋势。软件复杂性的增长实例:1963年水星计划系统200万条指令1967年双子星座计划系统400万条指令1973年阿波罗计划系统1000万条指令1979年哥伦比亚航天飞机系统4000万条指令WindowsVista:3000开发人员,59个开发节点,愈6千万行代码每个汽车系统代码量:10万行(1970s)-1亿行(2010s)波音飞机:总代码量超过400万行;宇宙飞船:软件代码2000万行;空间站:软件代码10亿行问题:假设1个人一年生产一万条有效指令,那么是否4000人生产一年,或400人生产10年就能完成任务呢?答案是否定的一万条指令的复杂度决不仅仅是100条指令复杂度的100倍软件复杂性:指数级软件危机典型案例在1963年至1966年开发的IBM360机的操作系统共有4000多个模块,约100万条指令,投入5000人年,耗资数亿美元,结果还是延期交付。在交付使用后的系统中仍发现大量(2000个以上)的错误。这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:……正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深。最后无法逃脱灭顶的灾难,……程序设计工作正像这样一个泥潭,……一批批程序员被迫在泥潭中拼命挣扎,……谁也没有料到竟会陷入这样的困境……1963年美国飞往火星的火箭爆炸,造成1000万美元的损失原因是FORTRAN程序:DO5I=1,3误写为:DO5I=1.31967年苏联“联盟一号”载人宇宙飞船返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁软件危机典型案例丹佛新国际机场:机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4000台遥控车,可按不同线路在20家不同的航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5000个电子眼、400台无线电接受机、56台条形码扫描仪和100台计算机按原定计划要在1993年万圣节前启用,但直到1994年6月,机场计划者还无法预测“行李系统”何时能达到机场开放的稳定程度如何理解软件工程在软件开发中的作用?开发一段程序,输入班级所有人的成绩,按成绩由高到低的次序进行排序你会如何去做?方法1:直接写程序方法2:先设计算法,然后再用程序语言实现方法3:先建立数学模型,然后转换为算法,然后编程实现映射与转换任何软件系统开发的共同本质在于:从现实空间的需求到计算机空间的软件代码之间的映射与转换软件工程的作用软件工程的本质:用严格的规范和管理手段来缩小偏差,通过牺牲“时间”来提高“质量”软件工程映射之1:概念映射概念映射:问题空间的概念与解空间的模型化概念之间的映射例如:“学生”ClassStudent(No,Name,Dept,Grade)“计算机学院大三学生张三” ObjectStudent(1050310401,张三,计算机,大三)“学生成绩” StructStudentScore(StudentNo,CourseNo,Score)“张三的软件工程课成绩为85分” ZS_SE_SCORE(1050310401,软件工程,85)软件工程映射之2:业务逻辑映射业务逻辑映射:问题空间的处理逻辑与解空间处理逻辑之间的映射例如:计算某班学生的平均分数
doublecalculateAvgScore(Struct[]scores){
冒泡排序法; }软件工程的作用为了实现以上两个映射,软件工程需要解决以下问题:需要设置哪些抽象层次——单步映射?多步映射?几步?每一抽象层次的概念、术语与表达方式——公式?图形?文字?相邻的两个抽象层次之间如何进行映射——需要遵循哪些途径和原则?软件工程的作用需求分析:现实空间的需求需求规约在一个抽象层上建立需求模型的活动,产生需求规约,作为开发人员和客户间合作的基础,并作为以后开发阶段的输入设计:需求规约设计规约定义了实现需求规约所需的系统内部结构与行为,包括软件体系结构、数据结构、详细的处理算法、用户界面等,即所谓设计规约,给出了实现软件需求的软件解决方案实现:设计规约代码由设计规约到代码的转换,以某种特定的编程语言,对设计规约中的每一个软件功能进行编码验证/确认一种评估性活动,确定一个阶段的产品是否达到前阶段确立的需求,或者确认开发的软件与需求是否一致27软件工程范畴28软件工程的几个简单事实在制定软件的解决方案之前,必须尽力理解问题设计已经成为一项关键的软件工程活动软件必须保证高质量软件需具备可维护性质量和可维护性都来自于好的设计29软件工程弗里茨·鲍尔建立和使用一套合理的工程原则,以便经济地获得可靠的、可以在实际机器上高效运行的软件IEEE将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。在(1)中所述方法的研究。《CrossTalk》软件工程是一种层次化的技术,包括过程、方法和工具30软件工程是一种层次化的技术质量关注点是支持软件工程的根基任何工程方法(包括软件工程)必须构建在质量承诺的基础之上过程是软件工程的基础过程是一个框架结构,将各个技术层次结合在一起,使得合理、及时地开发计算机软件、有效实施软件工程成为可能过程构成了软件项目管理控制的基础,建立了工作环境以便于应用技术方法、提交工作产品(模型、文档、数据、报告、表格等)、建立里程碑、保证质量及正确管理变更方法为构建软件提供技术上的解决方法(“如何做”)方法包括沟通、需求分析、设计建模、编程、测试和技术支持方法依赖于一组基本原则,这些原则涵盖了软件工程所有技术领域,包括建模和其他描述性技术等。工具为过程和方法提供自动化或半自动化的支持工具建立软件开发的支撑系统,称为计算机辅助软件工程31软件工程是一种层次化的技术例如:去南京红山森林动物园质量关注点:安全、时间、舒适、费用过程:制定计划和费用,确定路线和方法方法:骑车、开车、报旅行社工具:自行车、汽车、获取信息实践:具体的操作,如:哪里转弯,哪里有路障软件实现的三个基础33通用的软件过程框架不同案例,过程细节差别很大,但框架活动都是一致的框架活动的顺序可能是线性、迭代、演化或并行的每一个框架活动由很多普适性活动来补充实现普适性活动贯穿整个软件过程,关注于项目管理、跟踪和控制(项目进度、质量、变更和风险)对软件过程的普适性调整是项目成功的关键34过程要素活动(activity)主要实现宽泛的目标(如与利益相关者进行沟通)与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系动作(action):如体系结构设计包含了主要工作产品(如体系结构设计模型)生产过程中的一系列任务任务(task)关注小而明确的目标,能够产生实际产品(如构建一个单元测试)工作任务、工作产品、质量保证点、里程碑355个框架活动沟通:客户协作、理解利益相关者的目标、收集需求,定义软件的特性和功能策划:制定软件项目计划,定义和描述了软件工程工作,包括需要执行的技术任务、可能的风险、资源需求、工作产品和工作进度计划建模:利用模型来更好地理解软件需求,并完成符合这些需求的软件设计构建:编码(手写的或者自动生成的)和测试以发现编码中的错误部署:软件(全部或者部分增量)交付到用户,用户对其进行评测并给出反馈意见36普适性活动软件项目跟踪和控制—评估进展,采取纠正措施,维护计划风险管理—评估影响项目成果、产品质量的风险软件质量保证—确定和执行软件质量保证的活动技术评审—评估产品,在错误传播到下个活动之前,发现并清除错误测量—定义和收集过程、项目和产品的度量,以帮助团队在发布软件的时候满足利益相关者要求软件配置管理—管理变更所带来的影响可复用管理—定义产品复用的标准(包括软件构件),并且建立构件复用机制工作产品的准备和生产—包括了生成产品(诸如建模、文档、日志、表格和列表等)所必需的活动37过程模型普适性调整的关注点活动、动作和任务的总体流程,以及相互依赖关系在每一个框架活动中,动作和任务细化的程度工作产品的定义和要求的程度质量保证活动应用的方式项目跟踪和控制活动应用的方式过程描述的详细程度和严谨程度客户和利益相关者对项目参与的程度软件团队所赋予的自主权队伍组织和角色明确程度38实践的精髓1.理解问题(沟通和分析)2.计划解决方案(建模和软件设计)3.实施计划(代码生成)4.检查结果的正确性(测试和质量保证)39理解问题谁将从问题的解决中获益?也就是说,谁是利益相关者?有哪些是未知的?哪些数据、功能、特征和行为是解决问题必需的?问题可以划分吗?是否可以描述为更小、更容易理解的问题?问题可以图形化描述吗?可以建立分析模型吗?40计划解决方案以前曾经见过类似问题吗?在潜在的解决方案中,是否可以识别一些模式?是否已经有软件实现了所需要的数据、功能、特征和行为?类似问题是否解决过?如果是,解决方案所包含元素是否可以复用?可以定义子问题吗?如果可以,子问题是否已有解决方案?能用一种可以很快实现的方式来描述解决方案吗?能构建出设计模型吗?41实施计划解决方案和计划一致吗?源码是否可追溯到设计模型?解决方案的每个组成部分是否可以证明正确?设计和代码是否经过评审?或者更好的算法是否经过正确性证明?42检查结果能否测试解决方案的每个部分?是否
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玻璃保温容器热膨胀系数控制考核试卷
- 天然气的碳排放与环境影响考核试卷
- 林业与绿色生态产业链考核试卷
- 污水处理中的微污染物去除与控制考核试卷
- 目视化管理在质量管理中的应用研究考核试卷
- 杂工施工协议书
- 林木育种中的经济效益与社会效益分析考核试卷
- 医药制造业的全球化发展与机遇考核试卷
- 中国汽车独立电动空调行业市场现状分析及竞争格局与投资发展研究报告(2024-2030版)
- 中国氢氧化锂行业运营格局及投资前景趋势研究报告(2024-2030版)
- 质量管理制度及过程控制措施
- 电视剧导演职业规划案例
- 投标报价承诺书
- 光伏并网前单位工程验收报告-2023
- TLT轴流风机液压缸结构及工作原理介绍
- 武术套路冬季训练计划书
- 消防员心理培训课件
- 航空餐饮服务课件
- 床单位终末清洁与消毒模拟实操培训课件
- 保洁服务投标方案(技术方案)
- 基于数据的医疗质量管理策略
评论
0/150
提交评论