您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 2月25日00_软件工程基础_知识点
第3章软件工程基础3.1软件工程基本概念3.1.1软件的定义与软件特点3.1.1.1软件的定义计算机软件由两部分组成。●一是机器可执行的程序和数据;●二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。软件的构成软件的构成见表3-1。计算机软件是由程序、数据及相关文档构成的完整集合,它与计算机硬件一起组成计算机系统。表3-1计算机软件各组成部分的含义我国国家标准(简称国标,GB)中对计算机软件(Software)完整的定义是:与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。3.1.1.2软件的特点(1)软件是逻辑产品,而不是物理实体,它具有无形性,通过计算机的执行才能体现它的功能和作用;(2)没有明显的制作过程,其成本主要体现在软件的开发和研制上,可进行大量的复制;(3)软件在使用期间不存在磨损和消耗问题;(4)软件的开发、运行对计算机系统具有依赖性;(5)开发和维护成本高;(6)软件开发涉及诸多社会因素。3.1.1.3软件的分类计算机软件按功能分为系统软件、应用软件、支撑软件(或工具软件)。系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。例如,操作系统(OS)、数据库管理系统(DBMS)、编译程序、汇编程序和网络软件等。应用软件为了应用于特定的领域而开发的软件。例如,我们熟悉的Word2003、Winamp、QQ和Flashget等软件属于应用软件。支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具型软件,其中包括帮助程序人员开发和维护软件产品的工具软件,也包括帮助管理人员控制开发进程和项目管理的工具软件。例如,Dephi、PowerBuilder等。3.1.1.4软件的作用软件是用户与硬件之间的接口,是计算机系统的指挥者,是计算机系统结构设计的重要依据。3.1.2软件危机与软件工程3.1.2.1软件产生和发展软件生产的发展经历了程序设计时代、程序系统时代和软件工程时代。(1)程序设计时代从第一台计算机上的第一个程序的出现到实用的高级程序设计语言出现以前(1945年-1956年)。程序设计时代的生产方式是个体手工劳动,使用的工具是机器语言、汇编语言,主要通过编程来实现,不重视程序设计方法。(2)程序系统时代从实用的高级程序设计语言出现以后到软件工程出现以前(1956年-1968年)。程序系统时代的生产方式是作坊式小集团生产,生产工具是高级语言,开始提出结构化方法,但开发技术还没有根本性突破,开发人员素质和开发技术不适应规模大、结构复杂的软件开发,导致了软件危机的产生。(3)软件工程时代软件工程出现以后至今(1968年-至今)。软件工程时代的生产方式是工程化生产,使用数据库、开发工具、开发环境、网络等先进的开发技术和方法,使生产效率大大提高,但未能完全摆脱软件危机3.1.2.2软件危机随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的软件危机。软件危机主要表现在:(1)软件需求的增长得不到满足;(2)软件开发成本和进度无法控制;(3)软件质量难以保证;(4)软件不可维护或维护程度非常低;(5)软件成本不断提高;(6)软件开发生产效率的提高赶不上硬件的发展和应用需求的增长。总之,可以将软件危机归结为成本、质量和生产率等问题。3.1.2.3软件工程的产生为了摆脱软件危机,北大西洋公约组织成员国软件工作者于1968年和1969年两次召开会议(NATO会议),认识早期软件开发中所存在的问题和产生问题的原因,提出软件工程的概念。国标(GB)中指出软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。软件工程学包含的内容可概括为以下两点:(1)软件开发技术:主要有软件开发方法学、软件工具、软件工程环境;(2)软件工程管理:主要有软件管理、软件工程经济学。3.1.3软件工程过程3.1.3软件工程过程ISO9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。软件工程过程包含4种基本活动:(1)软件规格说明P(Plan):规定软件的功能及其运行机制;(2)软件开发D(Do):产生满足规格说明的软件;(3)软件确认C(Check):确认软件能够满足客户提出的要求;(4)软件演进A(Action):为满足客户的变更要求,软件必须在使用的过程中演进。3.1.4软件生命周期通常把软件产品从提出、实现、使用、维护到停止使用、退役的过程称为软件生命周期。软件生命周期分为3个时期共8个阶段。①软件定义期:包括问题定义、可行性研究和需求分析3个阶段;②软件开发期:包括概要设计、详细设计、实现和测试4个阶段;③运行维护期:即运行维护阶段。软件生命周期各个阶段的活动可以有重复,执行时也可以有迭代,如图3-4所示。(2)软件生命周期各阶段主要任务①问题定义。确定要求解决的问题是什么。②可行性研究与计划制定。决定该问题是否存在一个可行的解决办法,指定完成开发任务的实施计划。③需求分析。对待开发软件提出需求进行分析并给出详细定义。编写软件规格说明书及初步的用户手册,提交评审。④软件设计。通常又分为概要设计和详细设计两个阶段,给出软件的结构、模块的划分、功能的分配以及处理流程。该阶段提交评审的文档有概要设计说明书、详细设计说明书和测试计划初稿。⑤软件实现。在软件设计的基础上编写程序。该阶段完成的文档有用户手册、操作手册等面向用户的文档,以及为下一步作准备而编写的单元测试计划。⑥软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。⑦运行维护。将已交付的软件投入运行,同时不断地维护,进行必要而且可行的扩充和删改。3.1.5软件工程的目标与原则3.1.5.1软件工程的目标软件工程的目标是:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。软件开发技术软件工程研究的内容主要包括:软件开发技术和软件工程管理。(1)软件开发技术。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。软件开发方法学是从不同的软件类型,按不同的观点和原则,对软件开发中应遵循的策略、原则、步骤和必须产生的文档资料做出规定,从而使软件的开发能够规范化和工程化,以克服早期的手工方式生产中的随意性和非规范性。软件工程管理(2)软件工程管理。软件工程管理包括软件管理学、软件工程经济学、软件心理学等内容。软件工程管理是软件按工程化生产时的重要环节,它要求按照预先制定的计划、进度和预算执行,以实现预期的经济效益和社会效益。工程管理包括人员组织、进度安排、质量保证和成本核算等;软件工程经济学是研究软件开发中对成本的估算、成本效益分析的方法和技术。它应用经济学的基本原理来研究软件工程开发中的经济效益问题;软件心理学从个体心理、人类行为、组织行为和企业文化等角度来研究软件管理和软件工程的。3.1.5.2软件工程的原则(1)抽象。抽象事物最基本的特性和行为,忽略非本质细节,采用分层次抽象、自顶向下、逐层细化的办法控制软件开发过程的复杂性。(2)信息隐蔽。采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。(3)模块化。模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义。模块的大小要适中,模块过大会使模块内部的复杂性增加,不利于模块的理解和修改,也不利于模块的调试和重用;模块太小会导致整个系统表示过于复杂,不利于控制系统的复杂性。(4)局部化。要求在一个物理模块内集中逻辑上相互关联的计算资源,保证模块间具有松散的耦合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。3.1.5.2软件工程的原则(5)确定性。软件开发过程中所有概念的表达应是确定的、无歧义的且规范的。这有助于人与人的交互,不会产生误解和遗漏,以保证整个开发工作的协调一致。(6)一致性。包括程序、数据和文档的整个软件系统的各模块应使用已知的概念、符号和术语;程序内外部接口应保持一致,系统规格说明与系统行为应保持一致。(7)完备性。软件系统不丢失任何重要成分,完全实现系统所需的功能。(8)可验证性。开发大型软件系统需要对系统自顶向下,逐层分解。系统分解应遵循容易检查、测评、评审的原则,以确保系统的正确性。3.1.6软件开发工具与软件开发环境软件工程技术鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用进一步提高了软件的开发效率、维护效率和软件质量。(1)软件开发工具。软件开发工具是协助开发人员进行软件开发活动所使用的软件或环境,它包括需求分析工具、设计工具、编码工具、排错工具、测试工具等。(2)软件开发环境。软件开发环境是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。工具集包括支持软件开发相关过程、活动、任务的软件工具,以便对软件开发提供全面的支持。环境集成机制为工具集成和软件开发、维护与管理提供统一的支持,它通常包括数据集成、控制集成和界面集成3个部分。3.2.2需求分析方法目前使用最广泛的软件工程方法学是结构化方法学和面向对象方法学。结构化方法学也称为传统方法学,它采用结构化方法来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化方法的运用。3.2.1可行性研究可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。(1)经济可行性研究分析系统的估算开发成本是否会超过项目预期的全部利润。分析系统开发对其他产品或利润的影响。(2)技术可行性研究根据客户提出的系统功能、性能及现实系统的各项约束条件,从技术角度研究实现系统可行性。技术可行性研究包括:风险分析、资源分析和技术分析。①风险分析的任务是在给定的约束条件下,判断能否设计并实现系统所需功能和性能。②资源分析的任务是论证是否具备系统开发所需的各类人员、软件、硬件资源和工作环境等。③技术分析的任务是当前的科学技术是否支持系统开发的全过程。(3)法律可行性分析研究在系统开发过程中可能涉及的各种合同、侵权、责任以及同法律相抵触的问题。(4)开发方案的选择性研究提出并评价实现系统的各种开发方案,并从中选出一种最适宜项目的开发方案。3.2.2.1需求分析软件需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。(1)需求分析的定义①用户解决问题或达到目标所需的条件或权能;②系统或系统部件要满足合同、标准、规范或其他正式规定文档所具有的条件或权能;③一种反映①或②所描述的条件或权能的文档说明。(2)需求分析阶段的工作需求分析阶段的工作可概括为4个方面:①需求获取;②需求分析;③编写需求规格说明书;④需求审评。3.2.2.2需求分析的方法(1)结构化分析方法。主要包括面向数据流的结构化分析方法、面向数据结构的Jackson系统开发方法和面向数据结构的结构化数据系统开发方法。(2)面向对象的分析方法。从需求分析建立的模型的特点来分,需求分析方法分为静态分析方法和动态分析方法。3.2.3结构化分析方法的概念结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型,步骤如下:(1)通过对用户的调查,以软件的需求为线索,获得当前系统的具体模型;(2)去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型;(3)根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型;(4)完善目标系统并补充细节,写出目标系统的软件需求规格说明;(5)评审直到确认完
本文标题:2月25日00_软件工程基础_知识点
链接地址:https://www.777doc.com/doc-2925860 .html