您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 数据库与软件工程第二部分:软件工程(结合数据库分析和设计)
软件工程概述数据库与软件工程第二部分12软件工程综述软件生存周期软件质量与质量保证软件工程管理软件开发环境3软件发展的三个阶段软件工程相关概念软件工程目标软件工程三要素什么是计算机软件?计算机软件指计算机系统中的程序及其文档程序是计算任务的处理对象和处理规则的描述计算任务:任何以计算机为处理工具的任务处理对象:数据(如数据、文字、图形、图像、声音等,它们只是表示,而无含义)或信息(数据及有关的含义)处理规则一般指处理的动作和步骤。程序必须装入计算机内才能工作文档是为了便于了解程序所需的阐明性资料,文档一般是给人看的,不一定装入计算机45软件的特点:抽象性—不是实物。严密性—是逻辑产品。智力性—思维过程。持久性—无时间损坏。一次性—创造性的产物。难以度量—难定量测量。易出错—信息转移造成。必须维护—纠错和变更。6软件发展的三个阶段程序设计时代(50-60年代)软件指程序,软件开发关注程序编写,用汇编及机器语言程序系统时代(60-70年代)软件指程序及说明书,软件开发包括程序设计和测试,用高级语言软件工程时代(70年代以后)软件开发包括软件生命期,用软件语言(包括需求定义语言、软件功能语言、软件设计语言、程序设计语言等)7软件工程相关概念软件危机:在软件开发过程中遇到的问题找不到解决的办法,致使问题积累起来形成了日益尖锐的矛盾。危机实例(1):1963年美国飞往火星的火箭探测器爆炸,造成1000万美元(数亿美元)的损失。原因是用于控制火星探测器的计算机软件FORTRAN程序:DO5I=1,3误写为:DO5I=1.3危机实例(2):1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。宇航员:弗拉迪米尔·科马洛夫8软件工程相关概念软件危机:危机实例(3):人员伤亡:由于计算机软件被广泛应用于包括医院等与生命息息相关的行业。这也使得软件的错误导致人员伤亡成为了可能。Therac-25的意外:(在软件工程界被大量引用的案例)在1985年六月到1987年一月之间,六个已知的医疗事故来自于Therac-25错误地超过剂量,导致患者死亡或严重辐射灼伤9软件工程相关概念软件危机:危机实例(4):IBM公司1963-1966年开发IBM360操作系统,项目花了5000人-年的工作量,最多时有1000人投入开发工作,写出100万行源程序,但发行的每一新版本都是上一版1000个错误的修正。事后负责人F.D.Brooks总结教训时说:“……正象一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷的越深。最后无法逃脱灭顶的灾难。程序设计工作正像这样一个泥潭,一批批程序员被迫在泥潭中拼命挣扎,……谁也没料到问题竟会陷入这样的困境……”10软件危机的表现对软件开发成本和进度的估计常常很不正确用户对“已完成的”软件系统不满意的现象经常发生软件产品的质量往往靠不住软件常常是不可维护的软件通常没有适当的文档资料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势11软件危机的原因软件是逻辑产品,开发进度、成本难以估计缺乏或不完整、不一致的文档给维护带来困难用户对软件需求的描述往往不够精确,有遗漏,有二义软件开发人员对需求的理解与用户的本来愿望有差异大型软件项目需多人协同完成,缺乏管理经验开发人员不能有效地、独立自主地处理大型软件的全部关系缺乏有力的方法学和工具的支持软件项目的特殊性和人类智力的局限性12克服软件危机的途径消除错误的概念和做法推广使用成功的开发技术和方法使用软件工具和软件工程支持环境加强软件管理摆脱软件危机的出路:软件开发的工程化和标准化13软件工程相关概念软件工程:软件工程是用科学知识和技术原理来定义、开发、维护软件的一门综合性的交叉学科,软件工程是开发与维护软件的规范化系统方法。它综合应用计算机科学、数学及管理科学等原理开发软件的工程。计算机科学、数学用于构造模型与算法;工程科学用于制定规范、设计范型、评估成本及确定权衡;管理科学用于用于计划、资源、质量、成本等管理。14软件工程的目标能按时完成开发任务,及时交付使用;付出较低的开发成本,达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;开发的软件可靠性高。15软件工程三要素软件工程方法软件工具软件工程过程为软件开发提供“如何做”的技术。如怎样定项目计划、怎样实施需求分析、如何测试等。为软件工程方法提供自动或半自动软件支撑环境。如软件开发工具、测试工具等。软件开发的不同阶段可使用不同的工具。将软件工程划分为若干阶段,分配方法和工具,定义每个阶段的先后顺序和完成标志。16软件生存周期生存周期概念生存周期各阶段生存周期模型17软件生存周期软件生存周期(softwarelifecycle)又称为软件生命期。是指从形成开发软件概念起,所开发的软件使用以后,直到失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括计划、开发、运行三个时期,每一个时期又划分为若干阶段。每个阶段有明确的任务,这样使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理。软件生存周期概念18软件生命周期软件生命期各阶段1.软件计划与可行性研究2.软件系统需求分析3.软件设计4.软件编码5.软件测试与调试6.软件运行与维护软件生命期一般包括以下各阶段:19软件-建筑计划与可行性研究系统需求分析软件设计软件编码软件测试与调试软件运行与维护20一、软件计划与可行性研究目的确定软件项目是否能够开发?是否值得去开发?输出:可行性研究报告成本—效益分析项目开发计划21一、软件计划与可行性研究初步确定项目的规模和目标,确定项目的约束和限制。分析员进行简要的需求分析,抽象出逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,找出几种可供选择的解决办法。过程22一、软件计划与可行性研究对每种解决方法,可从以下三个方面分析研究每种解决方法的可行性。1.技术可行性2.经济可行性3.社会可行性内容23软件可行性研究1.技术可行性对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。资源:已有的或可以获得的硬件、软件资源现有技术人员的技术水平已有的工作基础。技术可行性分析通常包括风险分析、资源分析和技术分析三个方面的可行性24风险分析:分析在给定的约束条件下设计和实现系统的风险。采用不成熟的技术可能造成技术风险人员流动可能给项目带来风险成本和人员估算不合理造成的预算风险风险分析的目的是找出风险,评价风险的大小,并有效地控制和缓解风险。25资源分析:论证是否具备系统开发所需的各类人员、软件、硬件等资源和相应的工作环境。例如,有一支开发过类似项目的开发和管理的团队,或者开发人员比较熟悉系统所处的领域,并有足够的人员保证,所需的硬件和支撑软件能通过合法的手段获取,那么从技术角度看,可以认为具备设计和实现系统的条件。26技术分析:分析当前的科学技术是否支持系统开发的各项活动。在技术分析过程中,分析员收集系统的性能、可靠性、可维护性和生产率方面的信息,分析实现系统功能、性能所需的技术、方法、算法或过程,从技术角度分析可能存在的风险,以及这些技术问题对成本的影响。技术可行性分析时通常需进行系统建模,必要时可建造原型和进行系统模拟27软件可行性研究2.经济可行性进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发?经济可行性:成本—效益分析公司经营长期策略开发所需的成本和资源潜在的市场前景三个方面的可行性28基于计算机的系统的成本主要包括:购置硬件、软件(如数据库管理系统、第三方开发的构件等)和设备(如传感器等)的费用系统的开发费用系统安装、运行和维护费用人员培训费用29效益经济效益使用基于计算机的系统后可增加的收入和可节省的运行费用(如操作人员数、工作时间、消耗的物资等)。社会效益使用基于计算机的系统后对社会产生的影响(如提高了办事效益,使用户满意等),通常社会效益只能定性地估计。在进行成本效益分析时通常只统计五年内的经济效益。经济效益通常可用货币的时间价值、投资回收期和纯收入来度量。30货币的时间价值(以利率计算的机会成本)设:当前金额为P,年利率为i,n年后的金额为F,则计算时,累计经济效益应折合成当前金额例如,一个基于计算机的系统使用后,每年产生的经济效益为10万,如果年利率为5%,那么,五年内该系统的累计经济效益是43.2948万,而不是50万。niFP)1/(niPF)1(31投资回收期:累计的经济效益正好等于投资数(成本)所需的时间纯收入:累计经济效益–投资数当纯收入大于零时,该工程值得投资开发当纯收入小于零时,该工程不值得投资(除非它有明显的社会效益)当纯收入等于零时,通常也不值得投资显然,纯收入越大越好32软件可行性研究3.社会可行性要开发的项目是否存在任何侵犯、妨碍等责任问题?要开发项目的运行方式在用户组织内是否行得通?现有管理制度、人员素质、操作方式是否可行?三个方面的可行性33中华人民共和国著作权法计算机软件保护条例保密法等34可行性分析的结论可以立即开始进行需要推迟到某些条件(例如资金、人力、设备等)落实之后才能开始进行需要对开发目标进行某些修改之后才能开始进行因为某种原因(如,技术不成熟、经济上不合算等)不能进行35软件可行性研究1.复查项目规模和目标2.研究正在使用的系统3.得到新系统的概括的逻辑模型4.导出和评价各种方案5.推荐可行的方案6.编写可行性研究报告可行性研究的具体步骤36软件可行性研究可行性研究报告内容1.引言。2.可行性研究前提。3.对现有系统的分析。4.所建议系统的技术可行性分析。5.所建议系统的经济可行性分析。6.社会因素的可行性分析。7.其他可供选择方案。8.结论意见。37二、软件系统需求分析1.需求分析概念2.需求分析的基本任务3.结构化分析方法BDS38数据库建设的基本规律三分技术,七分管理,十二分基础数据管理数据库建设项目管理企业(即应用部门)的业务管理基础数据收集、入库更新新的数据39二、软件系统需求分析1.需求分析概念2.需求分析的基本任务3.结构化分析方法40需求的定义IEEEStandardGlossaryofSoftwareEngineeringTerminology用户解决一个问题或达到一个目标所需要的一种状况或能力系统为了满足一种约定、标准、规格说明或其它正式文件而必须满足或拥有的一种状况或能力以上两种状态或能力的文档化表示主观需求客观需求需求文档41功能性需求和非功能性需求功能性需求系统需要提供的服务或功能:如图书检索系统对特定输入的处理方式:如对非法输入的提示系统在特定环境下的行为:如长时间无操作时的屏保非功能性需求对系统功能或服务附加的质量约束,例如响应时间、容错性、安全性等——客户所关心的(外部质量)从系统开发和维护角度出发的质量属性,例如可理解性、可扩展性、可配置性等——软件开发或维护者所关心的(内部质量、软件所特有)42二、软件系统需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。结构化分析方法和面向对象分析方法1.需求分析概念43是要准确地定义新系统的目标,满足用户需要。回答系统必须“做什么”的问题。本阶段要进行以下几方面的工作:(1)分析人员和用户对问题识别,双方商定对问题的综合需求。包括:功能需求、性能需求、环境需求和用户界面需求。另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求.这些需求一般通过双方交流、调查研究来获取,并达到共同的理解。2.需求分析的基本任务44(2)分析与综合,导出软件的逻辑模
本文标题:数据库与软件工程第二部分:软件工程(结合数据库分析和设计)
链接地址:https://www.777doc.com/doc-149300 .html