版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件的概念什么是软件?软件:计算机程序及其说明程序的各种文档软件定义:软件=程序+数据+文档在运行中能提供所希望的功能和性能的指令集(即程序)使程序能够正确运行的数据描述程序研制过程和方法使用的文档
软件的特点软件是一种抽象的
逻辑产品。软件的形态不可见,必须通过观察、分析、思考、判断来了解其功能、性能和其它特性。软件是人脑思维的产物,其生产过程与硬件不同,没有明显的制造过程,主要是思维,具有不可见性,带有个人色彩。如何控制开发过程的质量,如何保护软件产品的版权,都是不同于硬件的。软件的开发和运行受硬件、环境的限制--软件移植问题。软件的开发技术落后,手工开发方式仍占统治地位,开发效率低。
软件的特点软件产品没有硬件那样的机械磨损、老化问题。软件的失效率与硬件不同。图1-1软硬件失效率曲线
软件的特点软件的复杂性越来越高,对软件人员的要求越来越高,出现了软件复杂性与软件技术发展的不适应现象。软件复杂性差距软件需求与软件技术发展现状软件需求时间软件技术
软件的特点软件的开发研制成本高,自80年代以来,已大大超过硬件成本。计算机系统软、硬件成本比例的变化情况硬件年份软件50年70年85年20608010040成本
软件的特点相当多的软件工作涉及社会因素,如机构、体制、管理方式等,包括人的观念及心理,都直接影响软件工作的成败。
软件的分类按功能按规模按工作方式按使用频度按失效影响系统软件支撑软件应用软件按服务对象
软件的分类按功能按规模按工作方式按使用频度按失效影响按服务对象微型软件小型软件大型软件甚大型软件极大型软件
软件的分类按功能按规模按工作方式按使用频度按失效影响按服务对象实时处理软件分时软件交互式软件批处理软件
软件的分类按功能按规模按工作方式按使用频度按失效影响按服务对象产品软件项目软件
软件的分类按功能按规模按工作方式按使用频度按失效影响按服务对象使用频度低使用频度高
软件的分类按功能按规模按工作方式按使用频度按失效影响按服务对象不良影响严重影响软件开发的发展过程程序设计阶段—50至60年代程序系统阶段—60至70年代 软件工程阶段—70年代以后计算机应用发展软件数量多规模大软件成本高质量低个体化软件开发方法软件维护困难软件危机软件工程软件危机定义计算机软件的开发和维护过程所遇到的一系列严重问题。表现对软件开发成本和进度的估算很不准确用户对“已完成的”软件系统不满意软件质量往往靠不住没有适当的文档,软件常常是不可维护的软件成本比重上升供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势软件危机原因客观:软件本身特点逻辑部件规模庞大主观:不正确的开发方法忽视需求分析错误认为:软件开发=程序编写轻视软件维护产生软件危机的原因1)用户对软件需求的描述不精确。2)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致。3)缺乏处理大型软件项目的经验。4)开发大型软件易产生疏漏和错误。5)缺乏有力的方法学的指导和有效的开发工具的支持。软件开发过多地依靠程序员的“技巧”,从而加剧了软件产品的个性化。6)面对日益增长的软件需求,人们显得力不从心。从某种意义上说,解决供求矛盾将是一个永恒的主题。软件危机解决途径组织管理工程项目管理方法技术措施软件开发技术与方法软件工具
软件工程
为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术方面研究如何更好地开发和维护计算机软件的学科。定义:软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来——即软件工程。软件工程的基本原理软件工程的基本原理(自“软件工程”提出后,专家和学者们陆续提出了100多条关于软件工程的准则或“信条”,有专家归纳出了确保开发质量和效率的原理的最小集合——7条基本原理):1)用分阶段的生命周期严格管理;2)坚持进行阶段评审;3)实行严格的产品控制;4)采用现代程序设计技术;5)结果应能清楚地审查;6)开发小组人员应少而精;7)承认不断改进软件工程实践的必要性。
软件工程三要素软件工程三个要素方法工具过程提供一系列软件开发技术。包括完成开发过程中各方面任务的方法并用某种特殊的语言或图形来描述。
软件工程三要素软件工程三个要素方法工具过程软件工具为软件方法提供了自动的或半自动的支撑环境。将多种工具集成在一起可构成计算机辅助软件工程(CASE)的软件开发支撑系统。
软件工程三要素软件工程三个要素方法工具过程软件过程是将软件工程的方法和工具综合起来,进行软件开发。
方法、工具和过程:软件工程方法为软件开发提供了“如何做”的技术.软件工具为软件工程方法提供了自动的或半自动的软件支撑环境.软件工程过程定义了:方法使用的顺序要求交付的文档资料为保证质量和适应变化所需要的管理软件开发各个阶段完成的里程碑软件工程的三要素软件工程项目的基本目标付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发工作,及时交付使用软件工程基本原则抽象
采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性。信息隐蔽
将模块设计成“黑箱”,实现的细节隐藏在模块内部,不让模块的使用者直接访问。这就是信息封装,使用与实现分离的原则。模块化
如C语言程序中的函数过程,C++语言程序中的类。模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。局部化
要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂性。确定性
软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。一致性整个软件系统的各个模块应使用一致的概念、符号和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致。软件工程基本原则完备性
软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。可验证性
开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。软件工程基本原则
软件工程过程和软件生命期软件工程过程:软件工程过程是为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。软件工程过程内容软件工程过程特性1)软件规格说明:规定软件的功能及运行限制2)软件开发:产生满足规格说明的软件3)软件确认:对软件能否满足用户要求进行确认4)软件演进:为满足用户的变更要求的演进
软件工程过程和软件生命期软件工程过程:软件工程过程是为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。软件工程过程内容软件工程过程特性1)可理解性;2)可见性;3)可支持性;4)可接受性;5)可靠性;6)健壮性;7)可维护性;8)速度。
软件工程过程和软件生命期软件生命期(Lifecycle):
一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期。生命期的划分:可行性分析和项目计划需求分析软件设计程序编写软件测试运行/维护定义时期开发时期维护时期软件定义时期的基本任务是确定软件系统的工程需求,即软件开发工程必须完成的总目标,也就是要搞清待开发的系统要“做什么”。分为2个阶段(或称为步骤)
1、可行性研究。
2、需求分析。
软件定义时期1.可行性研究阶段
这个阶段要回答的关键问题是:对于所确定的问题“有行得通的解决办法吗?”
可行性研究应该比较简短,这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。
可行性研究确定软件元素的作用范围,并对软件进行成本估算,制定进度安排,最后提交软件计划。软件定义2.需求分析阶段
需求分析阶段的任务,主要是确定目标系统必须具备的功能。
需求分析阶段仍不能具体地解决问题,只能在前一阶段的基础上,对几种可行的方案进一步分析,得出经用户确认的系统逻辑模型。根据该系统逻辑模型,准确地回答“为了解决这个问题,目标系统必须做什么”
系统逻辑模型是以后设计和实现目标系统的基础,必须准确而完整地体现用户的要求。通常是用数据流图、数据词典和简要的描述表示系统的逻辑关系。软件定义软件开发时期的基本过程是软件开发人员按照需求规格说明的要求,由抽象到具体,直到生成程序,并进行全面的测试,最后生产软件产品。软件开发过程即软件的设计和实现,主要分为以下几个阶段:
1、概要设计 2、详细设计 3、编码实现 4、测试软件开发时期1、概要设计阶段
概要设计,也叫总体设计或初步设计。这个阶段必须回答的是“概括地说,应该如何解决这个问题”。
总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求。也就是说,总体设计的基本任务是确定模块分解、各模块功能和模块间接口,设计全局数据结构。2、详细设计阶段
详细设计阶段的任务是把解法具体化,也就是回答“应该怎样具体地实现这个系统”。
详细设计亦即模块设计。它是在算法设计和结构设计的基础上,针对每个模块的功能、接口和算法定义,设计模块内部的算法过程及程序的逻辑结构,并编写模块设计说明。软件开发3、编码实现阶段
这个阶段的任务,是根据详细设计的结果,选择一种适合的程序设计语言,把详细设计的结果翻译成程序的源代码。每编写完一个模块,都要对模块进行测试,即单元测试,以便尽早发现程序中的错误和缺陷。4、测试阶段
模块编码完成后,需要进行各种测试。软件测试的目标是尽可能多地发现错误。
测试不仅要对软件内部逻辑进行测试,还要对其外部功能进行测试。测试在软件生命期中横跨两个阶段:程序员在编写出每个模块之后进行的必要的测试,即单元测试专门的测试人员对系统进行的各种综合测试软件开发软件的维护就是为了延长软件的寿命而对软件产品进行修改或对软件需求变化做出响应的过程。软件的维护是软件生命周期中时间最长的阶段,软件维护的工作量可能占了软件生命周期全部工作量的70%以上软件的退役即软件的停止使用。退役意味着软件生存周期的结束,表明软件系统已不再具有维护价值。软件运行和维护时期河北工业大学廊坊分院计算机系可行性研究需求分析概要设计详细设计编码实现测试运行与维护软件定义软件开发软件运行与维护软件生存周期各阶段划分河北工业大学廊坊分院计算机系开发软件不仅仅是编程
软件生存期模型软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略河北工业大学廊坊分院计算机系软件开发模型的几种类型:以软件需求完全确定为基础的瀑布模型;在开发初期仅给出基本需求的渐进式模型,如原型模型、螺旋模型、喷泉模型等;以形式化开发方法为基础的变换模型、基于四代技术的模型;基于知识的智能模型等等。在实际开发时,应根据项目的特点和现有的条件选取合适的模型,也可以把几种模型组合起来使用以便充分利用各模型的优点。瀑布模型由WinstonRoyce在1970年最早提出的软件开发模型。瀑布模型是一种传统的开发方法,它是将软件开发活动按线性顺序联结的若干阶段的模型。从系统分析开始,规定了各项软件工程活动,以及它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。直至得到通过验收测试的软件产品并进入使用维护阶段为止是一种以文档为驱动的模型。
瀑布模型计划需求分析设计编码测试运行、维护定义阶段开发阶段维护阶段1、瀑布模型的特点按照传统的瀑布模型来开发软件,有如下几个特点:(1)阶段间具有顺序性相依赖性这个特点有两重含义:第一,必须等前一阶段的工作完成之后,才能开始后一阶段的工件;第二,前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。瀑布模型(2)推迟实现的观点瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想。
(3)质量保证的观点软件工程的基本目标是优质、高产,每个阶段都应坚持两个重要做法:第一,每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档不仅是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。瀑布模型
第二,每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。事实上,越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量,降低软件成本的重要措施。
瀑布模型河北工业大学廊坊分院计算机系2、瀑布模型的局限性瀑布模型是一种理想的线性开发模式,缺乏灵活性
开发前期用户对系统往往没有一个清晰、准确的认识,很难准确的表达对系统的全面要求。因此,在系统定义阶段就想将所有的工作都准确、清晰、完整的表达出来实际上是理想化的,实际中做不到。瀑布模型主要问题:
开发过程中,用户可能产生新的想法,开发者可能遇到未曾料到的困难,希望在开发过程中进行一些变更,而瀑布模型的线性化次序,缺乏灵活性,使得这些变更比较困难。许多错误只有在最终产品运行时才能发现,所有质量难以维护。各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。瀑布模型原型模型原型模型也称快速原型模型.原型模型的基本思想是:软件开发人员在与用户进行需求分析时,以比较小的代价快速建立一个能够反映用户主要需求的原型系统,让用户在计算机上进行操作,在实践过程中提出改进意见,开发人员根据用户的意见,对原型进行补充和完善,然后再由用户试用、评价、提出建议,重复这一过程,直到用户对开发的原型系统满意为止。
原型模型需求分析原型开发原型评价最终系统设计系统设计和实现用户反馈
原型模型螺旋模型螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:制定计划──确定软件目标,选定实施方案,弄清项目开发的限制风险分析──分析所选方案,考虑如何识别和消除风险实施工程──实施软件开发客户评估──评价开发工作,提出修正建议螺旋模型螺旋模型特点瀑布模型+快速原型+风险分析迭代过程一个螺旋式周期
确定目标,选择方案,选定完成目标的策略
风险角度分析该策略
启动一个开发阶段
评价前一步的结果,计划下一轮的工作
喷泉模型由B.H.Sollers和J.M.Edwards于1990年提出。喷泉模型对软件复用和生存期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。"喷泉"一词本身体现了迭代和无间隙特性。系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演进的系统。所谓无间隙是指在开发活动,即分析、设计和编码之间不存在明显的边界。河北工业大学廊坊分院计算机系维护测试实现设计分析演化喷泉模型1.软件系统可维护性较好;2.各阶段相互重叠;3.整个模型是一个迭代的过程;4.具有增量开发特性,即能做到分析一点、设计一点、实现一点,测试一点,使相关功能随之加入到演化的系统中。5.模型是对象驱动的;6.支持软部件的重用。构件组装模型构件组装模型特点:面向对象基于构件库融合螺旋模型特征支持软件开发的迭代方法
软件重用统一过程模型Rational统一过程(RationalUnifiedProcess,RUP)是由Rational公司开发的一种软件过程,它的开发过程有如下3个主要特点:⑴是一种用例(Use-case)驱动的软件开发过程⑵是以体系结构(Architecture)为中心的过程⑶迭代(Iterative)开发与增量(Incremental)开发相结合的过程第四代技术“第四代技术”(4GT)包含了一系列的软件工具,其特点是:能使软件工程师在较高级别上说明软件的某些特征,然后利用工具将开发者的说明自动生成源代码,并且软件被说明级别越高,其建造程序的速度就越快。基于4GT的开发过程如下:⑴像其他范型一样,4GT也是从需求收集这一步开始。
⑵制订一个系统的设计策略。
⑶应用4GL的生成功能,自动生成所期望的代码。
⑷进行测试,完成相关文档,并完成其他软件工程范型中同样要求的所有集成活动,得到最终产品。
软件开发方法简述软件开发方法是指软件开发过程中所应遵循的方法和步骤。1.结构化方法结构化方法是E.Yourdon等人于20世纪70年代中期提出的简单实用、使用广泛的一种系统化开发软件的方法,它适用于开发大型的数据处理系统,特别是管理信息系统。采用“抽象”和“分解”两个基本手段。通常包括SA、SD和SP三个方面,SA和SD是生命周期方法学的基本方法。结构化分析方法SA:对软件进行需求分析结构化设计方法SD:进行总体设计和详细设计结构化编程SP按照功能分解的原则,自顶向下、逐步求精,直到实现软件功能为止。该方法简单、实用。软件开发方法简述结构化方法的主要问题:(1)它以功能分解为基础,而用户的功能是经常改变的,必然导致系统的框架结构不稳定。
(2)从数据流程图到软件结构图之间的过渡有明显的断层,导致设计回溯到需求有困难。
软件开发方法简述2、面向数据结构的开发方法面向数据结构的软件开发方法有两种:Warnier方法:由J.D.Warnier提出的结构化数据系统开发方法(DSSD);Jackson方法:由M.A.Jackson提出的Jackson系统开发方法(JSD)。面向数据结构的软件开发方法基本思想是:从目标系统的输入/输出数据结构入手,导出程序的基本框架结构,在此基础上,对细节进行设计,得到完整的程序结构图。软件开发方法简述3、面向对象的方法面向对象方法学出现于20世纪80年代中后期,并迅速成为20世纪90年代的主流开发方法。以客观世界中实体为基础,将客观实体的属性与
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年幼儿园用电安全知识
- 2026年中金公司招聘笔试模拟题
- 2026年科目四理论考试模拟卷
- 2026年中石化笔试模拟题及解题技巧分享
- 2026年德语四级考试模拟题精
- 2026年小学科学教师资格证考试宝典
- 2026年造价工程师执业资格考试模拟题集
- 2026年线上普及防疫知识竞赛活动方案
- 2026年结构化面试方案设计方法
- 2026年中小学教师招聘面试试讲教案
- 2024新高考I卷全国统一考试高考物理试题(真题+答案)
- 《火力发电厂监控系统信息安全技术监督导则》
- (正式版)JBT 6315-2024 汽轮机焊接工艺评定
- 【北师大版】小学六年级下册英语全册教案
- T-ZNX 023-2023 副产氯化钾团体标准
- 肿瘤病人化疗所致脱发护理
- 西方经济学(第四版)全套教学课件
- 五年级道德与法治下册 (推翻帝制 民族觉醒)课件
- 桥梁工程钢箱梁拖拉施工专项方案 配图丰富
- 住宅烟道系统技术标准
- GB 16897-2022制动软管的结构、性能要求及试验方法
评论
0/150
提交评论