




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一讲 概述学习目的什么是软件,什么是软件工程软件工程和计算机科学间有什么不同,软件工程和系统工程间有什么不同什么是软件过程,什么是软件过程框架什么是软件生存周期软件过程模型:瀑布模型、演化模型、基于构件的软件工程过程迭代:增量交付、螺旋开发过程活动:软件规格说明、软件设计和实现、软件确认、软件进化什么是软件工程方法什么是CASE优秀软件的属性是什么软件工程的目标和原则是什么一、软件的发展时间硬件的发展软件的发展代表事件代表事件1946年第一台计算机弹道计算程序60年代每秒百万次的大型计算机软件是为某一专门的应用领域设计的70年代微机的出现出现了专门的软件公司,软件成为产品90年代计算机进入家
2、庭,兼容机的大量生产软件生产企业出现,软件产品种类丰富:系统软件、工具软件、应用软件当前Internet对全球开放夸平台的编程语言使软件应用更加广泛,软件市场不断扩大。二、软件的定义计算机发展阶段硬、软件关系软件生产方式软件定义要点初期以硬件生产为主,软件处于从属地位。个体、手工方式生产程序或机器指令程序第二阶段软硬件均考虑互助合作的手工方式程序说明书第三阶段软件在计算机系统中的比重越来越大软件设计和生产开始采用工程学的基本原理和方法文档程序1、软件定义的发展二、软件的定义当前软件的定义为:计算机程序和所有使程序正确运行所需要的相关文档和配置信息。软件产品可为特定客户和通用市场开发。2、软件的
3、特点3、软件的种类三、软件危机一般情况下,人们把与软件开发相联系的问题看作“危机(crisis)”与软件开发相关的主要问题:软件的质量、软件的生产率等Pressman,Roger S 1992年编写的Software Engineering: A Practitioners Approach一书中提出用“chronic affliction(慢性折磨)”来描述与软件开发相关的问题比“危机(crisis)”更贴切。为了解决软件危机,1968年秋在当时的联邦德国近50名第一流的编程人员、计算机科学家和工业巨头,制定摆脱软件危机的办法。尽管当时专家无法设计出一张指导软件业走向更牢固阵地的详细路线图,
4、但他们确实为这一目标创造了一个名词:软件工程(software engineering)。四、软件工程软件工程广义的定义为:软件工程是一门工程学科,涉及软件生产的各个方面,从最初的系统描述一直到使用后的系统维护,都属于其学科范畴。软件工程狭义的定义是:“运用系统的、规范的、可定量的方法来开发、运行和维护软件”。五、软件工程和计算机科学的区别计算机科学研究的是构成计算机和软件系统基础的有关理论和方法,而软件工程则侧重于软件开发和交付的实际活动。软件工程人员必须具有一定的计算机科学知识。六、软件工程与系统工程的区别系统工程侧重于计算机开发的所有方面,包括硬件、软件和处理过程。软件工程只是它的一部分
5、。七、软件过程及软件过程模型(一)软件过程一个软件过程是一组引发软件产品生产的活动。软件过程是复杂的,像所有的智力过程一样,它是依赖人的判断的。因为需要判断和创造力,所以软件过程的自动化的尝试只获得了有限的成功。尽管软件过程具有极大的差异性,但是有些活动还是所有软件过程都具有的基本活动:软件描述:必须定义软件功能以及对其使用的限制。软件开发:必须制作满足描述的软件。软件有效性验证:软件必须经过验证以保证能够满足客户的要求。软件进化:软件必须随客户需求的变化不断改进。(一)软件过程实现软件过程改善的方式有很多,其一是通过过程标准化办法来减少在一个机构的软件过程的随意性,这样可以改进沟通、缩短培训
6、时间、使自动化的过程支持更经济。 七、软件过程及软件过程模型(二)软件过程模型软件过程模型是从一特定角度提出的软件过程的简化描述。模型的本质就在于简单化。软件过程模型就是对被描述的实际过程的抽象,它包括构成软件过程的各种活动、软件产品以及软件工程参与人员的不同角色。1. 几种可能建立的软件过程模型如下 (1)工作流模型(2)数据流或活动模型 (3)角色/动作模型(二)软件过程模型 一个软件过程模型是软件过程的一个抽象的表示法。每个过程模型从一个特定的角度表现一个过程,只提供过程某一侧面的信息。2. 一般的过程模型有:(1)瀑布模型(2)进化式开发模型(3)形式化系统开发(4)面向对象生存期模型
7、(5)面向复用的开发(二)软件过程模型3. 几种软件开发的通用模型和范例 (1)瀑布式模型系统需求分析软件需求分析维 护设 计编 码测 试(二)软件过程模型瀑布式模型的特点:最老的软件工程过程模型。面向阶段的、线性的,每个阶段只有当前一个阶段结束以后才能开始。优点:缺点:适用范围:(二)软件过程模型(2)进化式(原型)开发模型需求分析快速设计生产产品建立原型用户评价原型修改原型(二)软件过程模型进化式开发(原型开发)又可分为两类:探索式开发:其目标是与用户一起工作,共同探索系统需求,直到最后交付系统。开发从需求清楚的部分开始,根据用户的建议逐渐向系统中添加功能。抛弃式原型:其目标是理解用户需求
8、,然后再给出系统的一个较好的需求定义。原型注重对客户需求理解较差的那部分开始。优点:用户参与、快速设计缺点:整个软件系统的结构不够清晰(二)软件过程模型(3)螺旋模型螺旋开发模型(the spiral model)综合了传统的生存期模型和原型开发模型的优点,同时增加了一个新元素,即风险分析(risk analysis),用来弥补两者的不足。四个象限表示了定义的四个主要活动:1)计划:目标的确定,可选方案和限制2)风险分析:可选方案的分析,风险的确定、解决3)工程:下一级产品的开发4)用户评价:工程结果的评价(二)软件过程模型螺旋模型图示如下:计划评价制定风险评估策略建模分析设计构造编码测试部署
9、交付反馈(二)软件过程模型(4)形式化系统开发类似于瀑布模型的软件开发方法。是对系统进行形式化的数学描述,然后把这种描述用数学方法转换成程序。这种转换是“正确性保持”的,因而可以保证开发的程序满足其描述。 需求定义形式化描述形式化转换集成和系统测试该方法与瀑布模型的本质区别是:软件需求描述被精炼成一个用数学符号表达的详细的形式化描述。设计、实现和单元测试等开发过程被一个转换的开发过程所替代,在这个转换的开发过程中,形式化描述经过一系列转换变成一个可执行的程序。已知的形式化开发过程的最好的例子是“净室(Cleanroom)”过程。净室参考模型(CRM)由软件工程所(Linger和Trammell
10、 1996)提出,它为净室项目运行定义了一套完整的过程和工作产品。CRM由14个分别对应于软件管理、规范、开发和认证的独立过程组成:管理过程包括项目计划、项目管理、性能改进以及工程变更。规范过程包括需求分析、功能规范、使用规范、使用规范、结构规范和增量计划。开发过程包括软件再工程、增量设计和正确性验证。认证过程包括使用建模、测试计划、统计测试和认证。三种形式化语言和方法:VDM、Z方法和3. B方法。(二)软件过程模型(二)软件过程模型(5)面向对象生存期模型常规方法与面向对象方法的比较比较项目设计方法常规的面向对象的目标说明主要功能说明主要对象结果收集雷达信息更改显示飞机显示屏雷达接收器(二
11、)软件过程模型(6)面向复用的开发这种方法是假定系统的各个组件已经存在。系统开发的焦点在于集成这些组件,而不是从头开始重新去开发。面向复用的方法依赖可以存取的可复用软件组件以及能集成这些组件的框架。需求描述组件分析需求修改使用复用的系统设计开发和集成系统有效性验证(6)面向复用的开发初始需求阶段和有效性验证阶段与其他过程差不多,面向复用过程的中间阶段就大不相同了,这些阶段是:组件分析:给出需求描述,然后搜寻能满足需求的组件。需求修改:根据得到的组件信息来分析需求,然后修改需求以反映可得到的组件。使用复用的系统设计:开始设计系统的框架,或者重复使用一个已存在的框架。开发和集成:集成是开发过程的一
12、个重要部分。当组件买不到时就要自己开发,然后将自己开发的和现成的组件集成,使之成为一个整体。明显的优势:减少了需要开发的软件数量,从而降低了软件开发成本,同时也降低了风险。 七、软件过程及软件过程模型(三)过程反复对于绝大多数系统,有必要针对系统不同部分采取不同的方法,即使用混合的模型。此外,也需要对过程的部分阶段进行反复以支持系统需求的改动和完善。混合模型有:增量式开发和螺旋式开发。七、软件过程及软件过程模型(四)过程活动详述1.软件描述其目标是确定系统需要哪些服务以及开发和运行期间受到哪些约束。这个活动又被称为需求工程,对软件过程而言是一个特别关键的阶段,这个阶段的错误将不可避免地带到后续
13、的系统设计和实现的阶段。需求工程过程产生用以描述系统的需求文档。通常分为两个层次:高层:最终用户和客户需要的需求描述低层(系统):系统开发人员需要的较详细的系统描述。 (四)过程活动详述2.需求工程需求工程过程有四个主要阶段:可行性研究:指明现有软硬件技术能否实现用户对新系统的要求。需求导出和分析:通过对现有系统分析、与潜在用户和购买者讨论、进行任务分析等导出系统需求的过程。需求描述:把在分析活动中收集到的信息以文档的形式确定下来。需求有效性验证:检查需求实现、一致和完备。(四)过程活动详述3.软件设计和实现将系统描述转换成一个可运行的系统的过程。它总是包含设计和编程,在使用原型开发模型时,还
14、包括对软件描述的精炼过程。软件设计是对实现软件的结构、系统的数据、系统的组件间的接口以及所用算法的描述。设计过程中一些特别的活动包括:体系结构设计:识别系统是由哪些子系统构成的,以及这些子系统之间的关系是怎样的,并对这些内容编写文档。抽象描述:给出每个子系统提供的服务以及子系统在什么范围内运行的抽象描述。接口设计:对每个子系统,都要给出与其他子系统间的接口设计并编写文档。3.软件设计和实现组件设计:分派服务到不同的组件,并设计这些组件的接口。数据结构设计:详细设计系统实现阶段要使用的数据结构,并给出描述。算法设计:详细设计服务将要采用的算法并给出描述。(四)过程活动详述(1)设计方法结构化方法
15、采用一组符号和一些软件设计的指导原则。结构化方法的例子包括:结构化设计、结构化系统分析、Jackson的系统开发和各种不同的面向对象设计。结构化方法包括一个设计过程模型、表示设计的符号、格式化的报表、规则和设计指南。结构化方法支持下列的系统模型:数据流模型:系统被看成是对数据的一系列转换。实体关系模型:用来描述设计中的基本实体及其相互关系。是描述数据库结构的标准技术。结构化模型:是系统组件及其相互关系的描述。面向对象方法:包含一个系统的继承模型、对象间静态和动态关系模型以及系统运行时对象交互模型。 数据流模型实体关系模型结构化模型ABCABCADCBABCSC图中的模块调用(1)简单调用在SC
16、图中,调用线的箭头指向被调用的模块。(2)选择调用图中用菱形符号来表示选择。(3)循环调用图中用叠加在调用线始端的环形箭头表示。作为面向数据流的设计方法,SD方法的中心任务就是把用DFD图表示的系统分析模型方便地转换为软件结构的设计模型。它所提供的方法与原则,主要是为了确定软件的体系结构与接口。它还提供了一种称为SC图的描述工具,专门用来描述软件的总体结构。 面向对象方法(四)过程活动详述4.程序设计和调试程序设计因人而异,通常没有统一的模式。程序设计者对自己开发的程序进行测试,发现错误并加以纠正。5.软件有效性验证是要看系统是否符合它的描述以及系统是否符合客户的预期。测试过程同系统开发过程相
17、结合,分阶段增量式进行。绝大多数的有效性验证成本发生在系统完成测试的时候。(四)过程活动详述测试过程包括:(1)单元测试:测试单个组件,以确保其操作的正确性。(2)模块测试:一个模块是独立组件(一个对象类、一个抽象的数据类型)的集合或是一个更松散的过程和函数集合。(3)子系统测试:对集成在一起的模块集合进行整体测试。侧重于模块接口错误。(4)系统测试:子系统被集成为系统。侧重于找出子系统间发生的非与预期的交互行为和子系统接口问题。(5)接收测试:系统在运行之前进行的最后阶段的测试。真实数据测试,侧重于对系统需求定义中的错误和遗漏纠正。 针对主要模块,从接口上进行检验/查错。(灰盒测试) 针对系
18、统结构的控制层次,确定模块测试的顺序和资源确认每一个算法实现的前置条件和后置条件,设计相应测试用例,特别注重非法的输入条件用户注册/登陆/修改信息模块输入条件模块测试项用户登陆能在数据库中正确查找该用户名 (1)若存在该用户名且密码正确,应能使用户登陆 (2)若不存在该用户名或密码错误,应能给出错误提示 (3)用户注册1能在数据库中正确查找该用户名是否已存在 (4)2若用户名不存在,数据库应能正确添加该用户 (5)3若用户名已存在,应能给出错误提示 (6)用户修改信息数据库相应信息应更新为用户的输入 (7)测试用例:编号测试用例用例覆盖的测试项1.1用户信息数据库中不存在用户”Jack”, 用
19、该用户名登陆;或存在用户”Jack”,密码为”greatJack”,但用Jack用户名登陆所用密码不是”greatJack”。(3)1.2用户信息数据库中还没有用户”Jack”,用“Jack”名注册。(4)(5)1.3用户信息数据库中已存在用户”Jack”,密码为”greatJack”,用该用户名和密码登陆。(1)(2)1.4用户信息数据库中已有用户”Jack”,用“Jack”名注册。(6)1.5用户信息数据库中已存在用户”Jack”,密码为”greatJack”,用该用户名和密码登陆后,修改某些信息,并修改密码为”greatJacky”。(7)(四)过程活动详述6.软件进化作为软件,变更可以
20、发生在系统开发之中或之后的任何时间里。软件开发与软件维护过程不同。八、软件过程自动化工具计算机辅助软件工程(CASE)是用来支持软件过程活动的软件。CASE是计算机辅助软件工程(ComputerAided Software Engineering)的英文缩写。它包括很多种类的程序工具:代码编辑器、报告生成器等。支持分析和设计的CASE工具,有时被称为高端CASE工具,它支持软件过程中的早期阶段。相比之下,那些支持实现和测试的工具,如调试器、程序分析系统、测试用例生成器和程序编辑器等,则被称为低端工具。 九、软件工程成本由于整个软件过程中确切的成本分布取决于所采用的过程和开发的软件类型。如果把开
21、发一个复杂的软件系统所需的全部成本看作100个成本单元,那么这些单元的可能分布如下图: 描述设计开发集成和测试0255075100图 开发成本分布十、软件工程方法软件工程方法是一种软件开发的结构化方法,其目的是使高质量软件的生产性价比较高。结构化分析方法(DeMarco,1978)和JSD方法(Jackson,1983)在20世纪70年代首次开发出来,这些方法旨在识别系统中基本的功能模块,而面向功能的方法现在仍被广泛应用。面向对象的方法是Booch(1994)和Rumbaugh等(1991)等人在20世纪80年代至90年代提出的。现在,这些方法已经被集成为一种方法统一建模语言(UML)(Fow
22、ler和Scott,1997;Booch等,1999;Rumbaugh等,1999a,1999b)。 十、软件工程方法组件描述实例系统模型描述对要开发的系统模型和定义这些模型所使用的符号描述对象模型、数据流模型、状态机模型规则系统模型总的使用约束系统模型中每一个实体都要有一个名字建议启发式方法可使设计活动具有创意,使用该方法可做出组织得很好的系统模型任何一个对象都不要有超过7个以上的相关子对象过程指南描述开发系统模型要遵循的活动以及这些活动的组织结构在定义与对象关联的操作前应记录对象的属性十一、优良软件的属性表1-5 优良软件必须具有的特性产品特性描述可维护性软件必须能够不断进化以满足客户的需
23、求变化,这是软件产品最根本的特性,因为工作环境是不断变化的,软件也必然要跟着变化。可依赖性软件可依赖性包括一系列特性,包括可靠性、保密性、安全性。可靠的软件在系统失败的情况下,也不会导致人员伤亡和经济损失。有效性软件不要浪费内存和处理器等系统资源,因而有效性应包括响应时间、处理时间、内存利用率等方面。可用性可用性就是用户不用特殊地努力就能操作。这就意味着,软件必须具备相似的用户界面和充分的说明文档。十二、软件工程所面临的主要问题1.遗留系统的挑战维护和更新这些软件,既要避免过多的支出,又要不断地交付基本地业务服务。2.多样性的挑战网络中包含不同类型地计算机和支持系统。必须开发新的技术,制作可靠的软件,从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年故都秋一等奖教案:探索教学的新境界
- 2025年纺织片梭织机合作协议书
- 《昆虫记》读后感
- 演讲稿题目新颖范文
- DB31∕T 680.8-2019 城市公共用水定额及其计算方法 第8部分:公共管理和社会组织机关单位
- 宠物急救知识培训班课件
- 慢性支气管炎肺炎等修改课件
- 液压知识培训课件下载
- 2023年北京卷高考真题数学试卷-解析
- 工程入股合作合同协议书
- 跟着名著《小王子》学高考英语读后续写绝佳的续写清单-高中英语作文复习专项
- 产教融合大学科技园建设项目实施方案
- 交通法律与交通事故处理培训课程与法律解析
- 广西版四年级下册美术教案
- 《换热器及换热原理》课件
- 儿童权利公约演示文稿课件
- UPVC排水管技术标准
- MSA-测量系统分析模板
- 血透室公休座谈水肿的护理
- 急诊预检分诊专家共识课件
- 广州市海珠区事业单位考试历年真题
评论
0/150
提交评论