




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湘潭大学,软件工程,教材:软件工程原理、方法与应用(第三版)著作者:史济民顾春华郑红授课人:张陵山,第1章绪论,某些新科技的发明创造会给其他一些看似无关的技术领域、商业企业、公众甚至整个社会文化带来深远而出人意料的影响和作用。这就是所谓的“意外效应法则”。计算机软件已经成为世界舞台上最为重要的科技领域,并且是“意外效应法则”的一个最好的体现。,现在的软件技术具有产品和产品生产载体的双重作用。作为一个产品,软件显示了由计算机硬件体现的计算能力。作为产品生产的载体,软件提供了计算机控制(操作系统)、信息通信(网络)以及应用开发和控制(软件工具和环境)的基础平台。软件传递了我们这个时代最重要的产品信息。,现在,庞大的软件产业已经成为工业经济中的主导因素。早期的独立程序员也已经被多个专业的软件开发团队所代替。同过去的独立程序员一样,开发现代计算机系统时,软件开发人员依然面临同样的问题:为什么软件需要如此长的开发时间?为什么开发成本居高不下?为什么在将软件交付顾客使用时,我们无法找到所有的错误?为什么维护已有的程序要花费高昂的时间和人力代价?为什么软件开发和维护的过程难以度量?,1.1软件和软件危机,软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需的数据,以及有关描述程序操作和使用的文档(R.S.Pressman)软件=程序(包括数据)+文档程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。数据是使程序能正常操纵信息的数据结构。文档是与程序开发,维护和使用有关的图文材料。,-软件的特征,软件与硬件的不同软件开发不同于硬件设计;软件生产与硬件制造不同;软件维护不同于硬件维修。软件是逻辑的,而不是物理的软件开发与人关系密切;软件开发成本大;软件生产是简单的拷贝;软件不会磨损和老化;软件受环境影响大;软件维护易产生新的问题。,-软件危机,软件危机的表现对软件开发成本和进度的估算很不准确;用户很不满意;质量很不可靠;没有适当的文档;软件成本比重上升;供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势。,-软件危机,硬件/软件成本变化趋势,100%,0%,1955,1970,1985,-软件危机,软件技术进步落后于需求增长,-软件危机,软件危机的原因客观:软件本身特点-逻辑部件-规模庞大、复杂度高主观:不正确的开发方法-忽视需求分析-个人化方式:软件开发=程序编写-轻视软件维护,-软件危机,解决途径组织管理-工程项目管理方法技术措施-软件开发技术与方法-软件工具促使了软件工程的诞生按工程化的原理和方法组织软件开发是解决软件开发中的问题一个主要出路。,1.2软件工程学的研究范畴,软件工程学的研究范畴“软件工程”一词是在1968年北大西洋公约组织在联邦德国召开的一次会议上提出。有多种定义,中心思想是把软件当做一件工业产品。,软件工程学的研究范畴,软件开发方法为软件开发提供了“如何做”的技术个性化方法-结构化方法-面向对象方法-软件复用软件工具为软件开发提供了自动的或半自动的软件支撑环境单个工具-工具箱、集成工具-环境软件工程管理目的:为了按进度及预算完成软件计划内容:成本估算、进度安排、人员组织、质量保证等,.1.3软件工程的发展,三种编程范型过程式编程范型程序由一组被动数据和一组能动过程组成程序=数据结构+算法着眼于程序的过程和基本控制结构,粒度最小面向对象编程范型数据及其操作被封装在对象中程序=对象+消息着眼于程序中的对象,粒度比较大基于构件技术的编程范型构件是通用的、可复用的标准化对象类程序=构件+架构着眼于适合整个领域的类对象,粒度更大,过程式和面向对象的编程范型,银行储蓄处理业务,三代软件工程传统软件工程开发过程经历的阶段:结构化分析结构化设计面向过程的编码软件测试面向对象软件工程开发过程经历的阶段:OO分析与对象抽取对象详细设计面向对象的编码和测试基于构件的软件工程开发过程经历的阶段:领域分析和测试计划定制领域设计建立可复用构件库查找并集成构件,1.4软件工程的应用,软件工程指导中小型软件软件工程指导大型软件软件工程的成就解决软件开发中的部分问题(非本质)软件生产率稳步增长软件工程发展的展望开发伴随软件复用,开发为了软件复用软件就是服务,小结,软件工程自1968年提出以来,在过去30余年中,已发展成为用于指导软件生产工程化,覆盖软件开发方法学、软件工程管理、软件工具与环境等内容的一门新学科。随着程序设计从结构化程序设计发展到面向对象程序设计,软件工程也由传统的软件工程演变为面向对象的软件工程,现正向更新一代的基于构件的软件工程迈进。长期的实践,软件工程积累了许多行之有效的原理与方法,已经为产业界广泛接受与应用。,上篇:传统软件工程,第2章软件生存周期与软件过程第3章结构化分析与设计,第2章软件生存周期与软件过程,软件生存周期传统的软件过程软件演化模型形式化方法模型统一过程和敏捷过程软件可行性研究,2.1软件生存周期,软件生存周期(SoftwareLifeCycle):一个软件从问题提出立项开始,直到软件产品最终退役(废弃不用)为止。软件生存周期分为三个时期:计划、开发和维护。整个软件生存周期划分为多个相对独立的较小阶段,给每个阶段赋予确定而有限的任务,从而降低了整个软件工程的难度,提高了软件开发生产率。,典型的软件生存周期,软件生存周期的主要活动,需求分析明确需要解决的问题(从用户的视角)。建立需求模型:描述软件的功能、性能、约束、接口等。软件分析在需求模型基础上从开发人员的视角对软件进行分析。建立与需求模型一致的分析模型:描述软件的逻辑模型。软件设计将分析模型转变为设计模型。软件设计分为总体设计和详细设计两个阶段。总体设计:确定软件的总体结构和全局性设计原则。详细设计:确定各部件的数据结构和操作。建立软件设计模型:考虑实现技术和平台。,软件生存周期的主要活动,编码用程序设计语言将设计文档翻译成源程序。建立软件实现模型:包含现有软件构件包。软件测试发现程序中的错误、提高软件质量单元测试、集成测试、确认测试、系统测试运行维护,软件过程与软件生存周期的关系,软件过程围绕软件开发所进行的一系列活动。软件过程模型把软件生存周期中软件开发活动的有序流程用一个合理的框架来规范描述。软件过程模型是一种软件过程的抽象表示法,它从一个特定的角度表现一个开发过程。软件生存周期中的阶段和软件过程中的活动是基本一致的。,2.2传统的软件过程,传统的过程模型瀑布模型waterfallmodel基于软件生存周期的线性开发模型快速原型模型rapidprototypemodel基于原型的迭代化开发模型,瀑布模型,W.Royce于1970年提出线性开发模型强调软件文档每一个阶段必须完成规定的文档每一个阶段都要复审完成的文档,瀑布模型,特点阶段的顺序性和依赖性推迟实现的观点质量保证的观点存在问题不适合需求模糊的系统开发初始阶段很难彻底弄清软件需求,快速原型模型,需求,原型开发,最终系统设计,原型评价,最终系统实现,用户反馈,快速原型法的过程模型,快速原型模型,特点“逼真”的原型可以使用户迅速作出反馈。循环回溯和迭代:非线性模型。使用快速开发工具。种类渐进型:对原型补充和修改获得最终系统。抛弃型:原型废弃不用。应防止的偏向舍不得抛弃,从而影响软件质量。,2.3软件演化模型,演化开发模型:使所开发的软件在迭代中逐步完善,是渐进式的开发模型,也称为迭代化开发模型。增量模型(incrementalmodel)螺旋模型(spiralmodel)构件集成模型(componentintegrationmodel),增量模型,增量模型是瀑布模型的顺序特征与原型法的迭代特征相结合的产物,把软件看作一系列相互联系的增量,每次迭代完成一个增量。增量小而可用的软件。第一个增量通常是软件的核心。特点在前面增量的基础上开发后面的增量。每个增量的开发可用瀑布或快速原型模型。每个增量开发的顺序性和总体的迭代性相结合。,增量模型,螺旋模型,特点瀑布模型(顺序性、边开发边复审)+快速原型(迭代性)风险分析-发现、控制风险一个螺旋式周期计划:确定目标,选择方案,选定完成目标的策略风险分析:从风险角度分析该策略开发:启动一个开发活动评审:评价前一步的结果,计划下一轮的工作,螺旋模型,构件集成模型,构件集成模型主要适用于面向对象的软件开发。面向对象的基本概念对象Object类Class继承Inheritance消息Message面向对象对象+类+继承+消息通信,构件集成模型,构件在某个领域内具有通用性,可以复用的软件部件将可以复用的构件存储起来,形成构件库特点面向对象基于构件库融合螺旋模型特征支持软件开发的迭代方法软件复用,构件集成模型,2.4形式化方法模型,形式化方法模型:基于程序变换和验证技术的软件开发转换模型(transformationalmodel)净室模型(cleanroommodel),转换模型,开发过程第一步:确定形式化需求规格说明书(使用形式化语言)第二部步:进行自动的程序变换(由变换系统完成,产生形式化开发记录)第三步:针对形式化开发记录进行测试特点形式化软件开发方法基于模型的,基于代数结构的,基于时序逻辑的形式化需求规格说明变换技术程序自动生成技术确保正确,转换模型,转换模型,净室模型,净室思想在分析和设计阶段消除错误。在“洁净”状态下实现软件制作。增量模型把软件看成一系列的增量。每个增量是一个用形式化方式表示的“盒”。形式化盒结构表示分析和设计。正确性验证。,净室模型,需求收集,盒结构规约,形式化设计,统计性使用测试,正确性证明,代码生成与检查,测试计划,认证,需求收集,盒结构规约,形式化设计,统计性使用测试,正确性证明,代码生成与检查,测试计划,认证,需求收集,盒结构规约,形式化设计,统计性使用测试,正确性证明,代码生成与检查,测试计划,认证,增量1,增量2,增量n,净室模型,软件过程模型的特点汇总,2.5统一过程和敏捷过程,统一过程RationalUnifiedProcess(RUP)描述了软件开发中各个环节应该做什么、怎么做、什么时候做以及为什么要做,描述了一组以某种顺序完成的活动。敏捷过程AgileDevelopment是一种以人为核心、迭代、循序渐进的开发方法,其软件开发过程称为“敏捷过程”。,RUP,RationalUnifiedProcess将软件开发分为四个阶段:初始(先启)定义整个项目的范围;细化(精化)制定项目计划、描述功能、建立体系架构框架;构造(构建)构造软件产品;迁移将软件产品移交到最终用户手中。每个阶段分为若干次迭代,每次迭代有一个核心工作流,都会经历需求、分析、设计、实现、测试等活动。,敏捷过程,敏捷开发是以人为核心,以迭代方式循序渐进开发的方法。敏捷过程是把一个大项目分为多个相互联系的可独立运行的小项目,并分别完成,在此过程中软件一直处于可用状态。敏捷开发的价值观个人和交互胜过过程和工具可以运行的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划,敏捷开发的12条原则尽早、不断地提交有价值的软件允许改变需求,利用变化来为客户创造优势尽快、不断地提交可运行的软件在业务人员和开发人员必须天天都在一起工作以积极向上的员工为中心建立项目组,提供环境和支持,并信任他们的工作在团队内部重视面对面的交流依据可运行软件来评估项目的进展提倡可持续的开发时刻关注技术上的精益求精和好的设计,以增强敏捷能力简单是最根本的最好的构架、需求和设计出于自组织团队每隔一定时间,要反省如何才能更有效地工作,然后作相应调整,极限编程,extremeprogramming是一种轻量级的、敏捷的软件开发方法4个价值观交流、简单、反馈、勇气4个方面改善加强交流、从简单做起、寻求反馈、勇于实事就是12个核心实践完整团队、计划对策、测试、简单设计、结对编程、小软件版本、设计改进、持续集成、代码共有、编码标准、系统比喻、可持续的速度,2.6软件可行性研究,目的研究项目是否可能实现和值得进行回答Whytodo?研究的内容经济可行性技术可行性运行可行性法律可行性,可行性研究的步骤,对当前系统进行调查和研究弄清当前系统导出新系统逻辑模型导出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 观察身体活动方案
- 高等男友考试题及答案
- 品牌市场推广与广告服务协议细节说明
- 稳定供货周期及质量承诺书4篇范文
- 质量控制标准化检测模板与操作指南
- 法医证考试题及答案
- 员工绩效管理目标设定与跟踪表
- (正式版)DB15∕T 3661-2024 《内蒙古东部区丹参育苗技术规程》
- (正式版)DB15∕T 3371-2024 《油莎豆良种繁育技术规程》
- 《世界民族音乐文化特点介绍与赏析教案》
- 医用设备购置可行性论证报告(10万元以上设备需填写此表)
- 医院机电系统设计汇报
- 消防员心理测试题库及答案解析
- 2025至2030中国肉豆蔻酸行业需求潜力及前景动态研究报告
- 小儿静脉输液规范
- 土方换填施工方案
- 少先队的作风课件
- 第1课“北京双奥”荣耀中华 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
- 国家安全教育大学生读本课件高教2024年8月版课件-第四章坚持以人民安全为宗旨
- 施工船舶对通航安全的影响及管理策略
- 妇产科三基三严培训内容
评论
0/150
提交评论