请输入您要查询的百科知识:

 

词条 软件工程
释义
1 学科

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。

定义

英文解释:Software engineering is the branch of computer science that seeks principles to guide the development of large,complex software systems.

软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义:

BarryBoehm

运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。

IEEE

在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究

FritzBauer

在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。

计算机科学技术百科全书

软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。普遍定义

目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

目标

软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。下面分别介绍这些概念。

可修改性

(modifiablity)。容许对系统进行修改而不增加原系统的复杂性。它支持软件的调试与维护,是一个难以达到的目标。

有效性

(efficiency)。软件系统能最有效地利用计算机的时间资源和空间资源。各种计算机软件无不将系统的时/空开销作为衡量软件质量的一项重要技术指标。很多场合,在追求时间有效性和空间有效性方面会发生矛盾,这时不得不牺牲时间效率换取空间有效性或牺牲空间效率换取时间有效性。时/空折衷是经常出现的。有经验的软件设计人员会巧妙地利用折衷概念,在具体的物理环境中实现用户的需求和自己的设计。

可靠性

(reliability)。能防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力。对于实时嵌入式计算机系统,可靠性是一个非常重要的目标。因为软件要实时地控制一个物理过程,如宇宙飞船的导航、核电站的运行,等等。如果可靠性得不到保证,一旦出现问题可能是灾难性的,后果将不堪设想。因此在软件开发、编码和测试过程中,必须将可靠性放在重要地位。

可理解性

(understandability)。系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。

可维护性

(maintainability)。软件产品交付用户使用后,能够对它进行修改,以便改正潜伏的错误,改进性能和其他属性,使软件产品适应环境的变化,等等。由于软件是逻辑产品,只要用户需要,它可以无限期的使用下去,因此软件维护是不可避免的。软件维护费用在软件开发费用中占有很大的比重。可维护性是软件工程中一项十分重要的目标。软件的可理解性和可修改性有利于软件的可维护性。

可重用性

(reusebility)。概念或功能相对独立的一个或一组相关模块定义为一个软部件。软部件可以在多种场合应用的程度称为部件的可重用性。可重用的软部件有的可以不加修改直接使用,有的需要修改后再用。可重用软部件应具有清晰的结构和注解,应具有正确的编码和较低的时/空开销。各种可重用软部件还可以按照某种规则存放在软部件库中,供软件工程师选用。可重用性有助于提高软件产品的质量和开发效率、有助于降低软件的开发和维护费用。从更广泛的意义上理解,软件工程的可重用性还应该包括:应用项目的重用,规格说明(也称为规约)的重用,设计的重用,概念和方法的重用,等等。一般来说,重用的层次越高,带来的效益也就越大。

可适应性

(adaptability)。软件在不同的系统约束条件下,使用户需求得到满足的难易程度。适应性强的软件应采用广为流行的程序设计语言编码,在广为流行的操作系统环境中运行,采用标准的术语和格式书写文档。适应性强的软件较容易推广使用。

可移植性

(portability)。软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度。为了获得比较高的可移植性,在软件设计过程中通常采用通用的程序设计语言和运行环境支撑。对依赖于计算机系统的低级(物理)特征部分,如编译系统的目标代码生成,应相对独立、集中。这样,与处理机无关的部分就可以移植到其他系统上使用。可移植性支持软件的可重用性和可适应性。

可追踪性

(traceability)。根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力。软件可追踪性依赖于软件开发各个阶段文档和程序的完整性、一致性和可理解性。降低系统的复杂性会提高软件的可追踪性。软件在测试或维护过程中或程序在执行期间出现问题时,应记录程序事件或有关模块中的全部或部分指令现场,以便分析、追踪产生问题的因果关系。

可互操作性

(interoperability)。多个软件元素相互通信并协同完成任务的能力。为了实现可互操作性,软件开发通常要遵循某种标准,支持折衷标准的环境将为软件元素之间的可互操作提供便利。可互操作性在分布计算环境下尤为重要。

过程

生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。

原则

软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。软件工程的原则有以下四项基本原则:

选取适宜开发范型

该原则与系统设计有关。在系统设计中,软件需求、硬件需求以及其他因素之间是相互制约、相互影响的,经常需要权衡。因此,必须认识需求定义的易变性,采用适宜的开发范型予以控制,以保证软件产品满足用户的要求。

采用合适的设计方法

在软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。合适的设计方法有助于这些特征的实现,以达到软件工程的目标。

提供高质量的工程支持

“工欲善其事,必先利其器”。

在软件工程中,软件工具与环境对软件过程的支持颇为重要。软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。

重视开发过程的管理

软件工程的管理,直接影响可用资源的有效利用,生产满足目标的软件产品,提高软件组织的生产能力等问题。因此,仅当软件过程得以有效管理时,才能实现有效的软件工程。

这一软件工程框架告诉我们,软件工程的目标是可用性、正确性和合算性;实施一个软件工程要选取适宜的开发范型,要采用合适的设计方法,要提供高质量的工程支撑,要实行开发过程的有效管理;软件工程活动主要包括需求、设计、实现、确认和支持等活动,每一活动可根据特定的软件工程,采用合适的开发范型、设计方法、支持过程以及过程管理。根据软件工程这一框架,软件工程学科的研究内容主要包括:软件开发范型、软件开发方法、软件过程、软件工具、软件开发环境、计算机辅助软件工程(CASE) 及软件经济学等。

基本原理

自从1968年提出“软件工程”这一术语以来,研究软件工程的专家学者们陆续提出了100多条关于软件工程的准则或信条。美国著名的软件工程专家巴利·玻姆(Barry Boehm)综合这些专家的意见,并总结了美国天合公司(TRW)多年的开发软件的经验,于1983年提出了软件工程的七条基本原理。

玻姆认为,这七条原理是确保软件产品质量和开发效率的原理的最小集合。它们是相互独立的,是缺一不可的最小集合;同时,它们又是相当完备的。人们当然不能用数学方法严格证明它们是一个完备的集合,但是可以证明,在此之前已经提出的100多条软件工程准则都可以有这七条原理的任意组合蕴含或派生。下面简要介绍软件工程的七条原理:

用分阶段的生命周期计划严格管理

这一条是吸取前人的教训而提出来的。统计表明,50%以上的失败项目是由于计划不周而造成的。在软件开发与维护的漫长生命周期中,需要完成许多性质各异的工作。这条原理意味着,应该把软件生命周期分成若干阶段,并相应制定出切实可行的计划,然后严格按照计划对软件的开发和维护进行管理。玻姆认为,在整个软件生命周期中应指定并严格执行6类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。

坚持进行阶段评审

统计结果显示:大部分错误是在编码之前造成的,大约占63%错误发现的越晚,改正它要付出的代价就越大,要差2到3个数量级。 因此,软件的质量保证工作不能等到编码结束之后再进行,应坚持进行严格的阶段评审,以便尽早发现错误。

实行严格的产品控制

开发人员最痛恨的事情之一就是改动需求。但是实践告诉我们,需求的改动往往是不可避免的。这就要求我们要采用科学的产品控制技术来顺应这种要求。也就是要采用变动控制,又叫基准配置管理。当需求变动时,其它各个阶段的文档或代码随之相应变动,以保证软件的一致性。

采纳现代程序设计技术

从六、七十年代的结构化软件开发技术,到最近的面向对象技术,从第一、第二代语言,到第四代语言,人们已经充分认识到:方法大似气力。采用先进的技术即可以提高软件开发的效率,又可以减少软件维护的成本。

结果应能清楚地审查

软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况可见性差,难于评价和管理。为更好地进行管理,应根据软件开发的总目标及完成期限,尽量明确地规定开发小组的责任和产品标准,从而使所得到的标准能清楚地审查。

开发小组的人员应少而精

开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。 这一条基于两点原因:高素质开发人员的效率比低素质开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少的多;当开发小组为N人时,可能的通讯信道为N(N-1)/2, 可见随着人数N的增大,通讯开销将急剧增大。

承认不断改进软件工程实践的必要性

遵从上述六条基本原理,就能够较好地实现软件的工程化生产。但是,它们只是对现有的经验的总结和归纳,并不能保证赶上技术不断前进发展的步伐。因此,玻姆提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条原理。根据这条原理,不仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度和消耗等数据,进行出错类型和问题报告统计。这些数据既可以用来评估新的软件技术的效果,也可以用来指明必须着重注意的问题和应该优先进行研究的工具和技术。

方法

软件工程的方法有很多方面的意义。包括专案管理,分析,设计,程序的编写,测试和质量控制。

软件设计方法可以区别为重量级的方法和轻量级的方法。重量级的方法中产生大量的正式文档。

著名的重量级开发方法包括ISO9000,CMM,和统一软体开发过程(RUP)。

轻量级的开发过过程没有对大量正式文档的要求。著名的轻量级开发方法包括极限编程(XP)和敏捷流程(AgileProcesses)。

根据《新方法学》这篇文章的说法,重量级方法呈现的是一种防御型的姿态。在应用重量级方法的软件组织中,由于软件项目经理不参与或者很少参与程序设计,无法从细节上把握项目进度,因而会对项目产生恐惧感,不得不要求程序设计师不断撰写很多“软件开发文档”。而轻量级方法则呈现“进攻型”的姿态,这一点从XP方法特别强调的四个准则—“沟通、简单、反馈和勇气”上有所体现。目前有一些人认为,“重量级方法”适合于大型的软件团队(数十人以上)使用,而“轻量级方法”适合小型的软件团队(几人、十几人)使用。当然,关于重量级方法和轻量级方法的优劣存在很多争论,而各种方法也在不断进化中。

一些方法论者认为人们在开发中应当严格遵循并且实施这些方法。但是一些人并不具有实施这些方法的条件。实际上,采用何种方法开发软体取决于很多因素,同时受到环境的制约。

需求

软件工程中包含需求、设计、编码和测试四个阶段,其中需求工程是软件工程第一个也是很重要的一个阶段,本文以医院管理系统为例详细介绍了需求工程的构成和进行方法。

首先人们必须了解需求工程和其他项目过程的关系:

图1需求与其他项目过程的关系

软件需求包括三个不同的层次-业务需求、用户需求和功能需求-也包括非功能需求:业务需求说明了提供给客户和产品开发商的新系统的最初利益,反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明;用户需求文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明;功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。

需求工程分为了需求开发和需求管理两个阶段:下面就以这两个阶段说明:

需求开发又分为需求获取、需求分析、编写规格说明书和需求验证。需求的获取和分析包括对原始需求变更控制,版本控制,从需求到产品和模块的可追溯性,成品交付和产品的状态跟踪。以下列出和讲解分析常规的步骤,当然应按照项目的大小和特点等实际情况我们应该自己确定合适的步骤。

确定需求开发过程

确定需求开发过程确定如何组织需求的收集、分析、细化并核实的步骤,并将它编写成文档。对重要的步骤要给予一定指导,这将有助于分析人员的工作,而且也使收集需求活动的安排和进度计划更容易进行。

编写项目视图和范围文档

项目视图和范围文档应该包括高层的产品业务目标,所有的使用实例和功能需求都必须遵从能达到的业务需求。项目视图说明使所有项目参与者对项目的目标能达成共识。而范围则是作为评估需求或潜在特性的参考。

表1项目视图和范围文档的模板

a、1背景在这一部分,总结新产品的理论基础,并提供关于产品开发的历史背景或形势的一般性描述。

a、2业务机遇描述现存的市场机遇或正在解决的业务问题。描述商品竞争的市场和信息系统将运用的环境。包括对现存产品的一个简要的相对评价和解决方案,并指出所建议的产品为什么具有吸引力和它们所能带来的竞争优势。

a、3业务目标用一个定量和可测量的合理方法总结产品所带来的重要商业利润,把重点放在给业务的价值上。

a、4客户或市场需求描述一些典型客户的需求,包括不满足现有市场上的产品或信息系统的需求。提出客户目前所遇到的问题在新产品中将可能(或不可能)出现的阐述,提供客户怎样使用产品的例子。确定了产品所能运行的软、硬件平台。

a、5提供给客户的价值确定产品给客户带来的价值,并指明产品怎样满足客户的需要。

a、6业务风险总结开发(或不开发)该产品有关的主要业务风险,例如市场竞争、时间问题、用户的接受能力、实现的问题或对业务可能带来的消极影响。预测风险的严重性,指明你所能采取的减轻风险的措施。

b.1项目视图陈述编写一个总结长远目标和有关开发新产品目的的简要项目视图陈述。项目视图陈述将考虑权衡有不同需求客户的看法。它可能有点理想化,但必须以现有的或所期待的客户市场、企业框架、组织的战略方向和资源局限性为基础。

b.2主要特性包括新产品将提供的主要特性和用户性能的列表。强调的是区别于以往产品和竞争产品的特性。可以从用户需求和功能需求中得到这些特性。

b.3假设和依赖环境在构思项目和编写项目视图和范围文档时,要记录所作出的任何假设。通常一方所持的假设应与另一方不同。

c.1首次发行的范围总结首次发行的产品所具有的性能。描述了产品的质量特性,这些特性使产品可以为不同的客户群提供预期的成果。c.2随后发行的范围如果你想象一个周期性的产品演变过程,就要指明哪一个主要特性的开发将被延期,并期待随后版本发行的日期。

c.3局限性和专用性明确定义包括和不包括的特性和功能的界线是处理范围设定和客户期望的一个途径。列出风险承担者们期望的而你却不打算把它包括到产品中的特性和功能。

d.1客户概貌客户概述明确了这一产品的不同类型客户的一些本质的特点,以及目标市场部门和在这些部门中的不同客户的特征。

d.2项目的优先级一旦明确建立项目的优先级,风险承担者和项目的参与者就能把精力集中在一系列共同的目标上。达到这一目的的一个途径是考虑软件项目的五个方面:性能、质量、计划、成本和人员。e.产品成功的因素明确产品的成功是如何定义和测量的,并指明对产品的成功有巨大影响的几个因素。不仅要包括组织直接控制的范围内的事务,还要包括外部因素。如果可能,可建立测量的标准用于评价是否达到业务目标。用户群分类

产品的用户在很多方面存在着差异,例如:用户使用产品的频度、他们的应用领域和计算机系统知识、他们所使用的产品特性、他们所进行的业务过程、他们在地理上的布局以及他们的访问优先级。根据这些差异,你可以把这些不同的用户分成小组。用户类不一定都指人,你可以把其它应用程序或系统接口所用的硬件组件也看成是附加用户类的成员。以这种方式来看待应用程序接口,可以帮助你确定产品中那些与外部应用程序或组件有关的需求。将用户群分类并归纳各自特点为避免出现疏忽某一用户群需求的情况,要将可能使都有所差异。详细描述出它们的个性特点及任务状况,将有助于产品设计。选择产品代表

择每类用户的产品代表为每类用户至少选择一位能真正代表他们需求的人作为那一类用户的代表并能作出决策。这对于内部信息系统的开发是最易实现的,因为此时,用户就是身边的职员。而对于商业开发,就得在主要的客户或测试者中建立起良好的合作关系,并确定合适的产品代表。他们必须一直参与项目的开发而且有权作出决策。每一个产品代表者代表了一个特定的用户类,并在那个用户类和开发者之间充当主要的接口。建立核心队伍

建立起典型用户的核心队伍把同类产品或产品的先前版本用户代表召集起来,从他们那里收集目前产品的功能需求和非功能需求。这样的核心队伍对于商业开发尤为有用,因为你拥有一个庞大且多样的客户基础。与产品代表的区别在于,核心队伍成员通常没有决定权。确定使用实例

让用户代表确定使用实例从用户代表处收集他们使用软件完成所需任务的描述-使用实例,讨论用户与系统间的交互方式和对话要求。在编写使用实例的文档时可采用标准模版,在使用实例基础上可得到功能需求。

一个单一的使用实例可能包括完成某项任务的许多逻辑相关任务和交互顺序。因此,一个使用实例是相关的用法说明的集合,并且一个说明是使用实例的例子。在描述时列出执行者和系统之间相互交互或对话的顺序。当这种对话结束时,执行者也达到了预期的目的。

对于一些复杂的使用实例,画出图形分析模型是有益的,这些模型包括数据流程图、实体关系图、状态转化图、对象类和联系图。

使用实例的描述并不向开发者提供他们所要开发的功能的细节。为了减少这种不确定性,需要把每一个使用实例叙述成详细的功能需求。每一个使用实例可引伸出多个功能需求,这将使执行者可以执行相关的任务;并且多个使用实例可能需要相同的功能需求。使用实例方法给需求获取带来的好处来自于该方法是以任务为中心和以用户为中心的观点。比起使用以功能为中心的方法,使用实例方法可以使用户更清楚地认识到新系统允许他们做什么。

每一个使用实例都描述了一个方法,用户可以利用这个方法与系统进行交互,从而达到特定的目标。使用实例可有效地捕捉大多数所期望的系统行为,但是你可能有一些需求,这些需求与用户任务或其他执行者之间的交互没有特定的关系。这时你就需要一个独立的需求规格说明。召开应用程序开发联系会议

召开应用程序开发联系会议应用程序开发联系会议是范围广的、简便的专题讨论会,也是分析人员与客户代表之间一种很好的合作办法,并能由此拟出需求文档的底稿。该会议通过紧密而集中的讨论得以将客户与开发人员间的合作伙伴关系付诸于实践。分析用户工作流程

分析用户工作流程观察用户执行业务任务的过程。画一张简单的示意图(最好用数据流图)来描绘出用户什么时候获得什么数据,并怎样使用这些数据。编制业务过程流程文档将有助于明确产品的使用实例和功能需求。你甚至可能发现客户并不真地需要一个全新的软件系统就能达到他们的业务目标。确定质量属性

确定质量属性和其它非功能需求在功能需求之外再考虑一下非功能的质量特点,这会使你的产品达到并超过客户的期望。对系统如何能很好地执行某些行为或让用户采取某一措施的陈述就是质量属性,这是一种非功能需求。听取那些描述合理特性的意见:快捷、简易、直觉性、用户友好、健壮性、可靠性、安全性和高效性。你将要和用户一起商讨精确定义他们模糊的和主观言辞的真正含义。检查问题报告

通过检查当前系统的问题报告来进一步完善需求客户的问题报告及补充需求为新产品或新版本提供了大量丰富的改进及增加特性的想法,负责提供用户支持及帮助的人能为收集需求过程提供极有价值的信息。需求重用

跨项目重用需求如果客户要求的功能与已有的产品很相似,则可查看需求是否有足够的灵活性以允许重用一些已有的软件组件。

2 机械工业出版社出版图书

中文版

书名:软件工程(原书第9版)原书名:Software Engineering, Ninth Edition

作者:(英)Ian Sommerville 著

译者:程成等译

丛书名:计算机科学丛书

ISBN:978-7-111-33498-9

定价:75.00

出版日期:2011年5月

出版社:机械工业出版社

英文版

书名:软件工程(英文版·第9版)原书名:Software Engineering Ninth Edition

丛书名:经典原版书库

作者:(英)Ian Sommerville著

页数:792

ISBN 978-7-111-34825-2

定价:99.00元

出版日期:2011年7月

出版社:机械工业出版社

内容简介

本书是系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的发展不断更新版本,影响了一代又一代软件工程人才,对学科的发展建设也产生了积极影响。全书分四部分完整讨论了软件工程的各级段内容,是软件工程和系统工程专业本科和研究生的优秀教材,也是软件工程师必备的参考书籍。

本书特点●涵盖了对所有开发过程都很基础的重要主题,包括了软件工程理论与实践的最新进展。

将本书第8版中的八篇内容重构为四个部分,使教师讲授软件工程课程更加容易。

每一章都有30%~40%的更新,增加了敏捷软件开发和嵌入式系统等新章,补充了模型驱动工程、开源开发、测试驱动开发、可依赖系统体系结构、静态分析和模型检查、COTS复用、服务作为软件以及敏捷规划等新内容。

着重讨论了开发可靠的分布式系统的相关主题以及敏捷方法和软件复用。

反映敏捷方法先进性的同时,不忘强调传统的计划驱动软件工程的作用,阐述了两者结合构建优秀软件系统的重要性。

以一个新的病人记录系统案例研究贯穿始终,系统、完整地讲解软件工程的各个方面。

将本书设计为“印刷/Web”相结合的方式,核心信息采用印刷版本,教辅材料及先前版本中的一些章节放在Web上,为读者提供丰富翔实的信息。

作者简介

Ian Sommerville英国著名软件工程专家,曾任教于兰卡斯特大学,现为圣安德鲁斯大学软件工程学教授。他在软件工程的教学和科研方面有20多年的经验。他是IEEE CS组织编撰“软件工程知识体系”(SWEBOK)的专家委员会成员之一。他的研究领域包括计算机系统工程、需求工程、系统可靠性以及软件进货。

媒体推荐

计算机专业图书在不同领域都有双峰峙立的情形,软件工程类综述性的巨著也有两本:第一本就是Roger Pressman所著的《软件工程:实践者的研究方法》,另一本就是Ian Sommerville所著的本书。这两本书名著都有多年历史(初版可追溯到20世纪80年代早期),对于软件工程学科的形成,尤其是在教育界和学术界影响极大。相比Pressman的书,Sommerville的这本教材将全部内容划分为四个部分,每个部分可以单独使用或者是结合其他部分作为软件工程课程的基本内容,更加适合不同类型软件工程课程的教学需求,叙述也更趋清晰和简明。

——摘自业界专业人士的推荐

这本软件工程的经典教材不仅展现了软件工程的广阔视野,还着重阐述了在开发大型系统中一些广泛采用的技术,并辅以大量的例子和图解;而且作者将所有的话题控制在适度的篇幅,用简练到位的文字把最重要的内容呈现给读者,并提供进一步阅读资料,供有兴趣的读者深入学习,使得本书更符合国内软件工程课程的教学需求。书中没有学院派布道式的说教,作者认为并不存在解决软件工程问题的灵丹妙药,而是强调读者需要学习和掌握更广泛的技术和工具以解决软件工程问题。从内容选材上,本书不落俗套,大胆舍弃了传统的软件工程内容和一些繁琐的软件工程理论,代之以简洁实用的软件工程新知识、新方法,增加了教材的实用性和可读性;从专题安排上,本书避虚就实,没有对软件工程的技术泛泛而谈,而是针对那些大型系统开发技术进行分析,避免了对个别产品中的技术进行过多阐述。

——刘艺,《计算机英语》作者

目录

中文版

出版者的话

译者序

前言

第一部分软件工程导论

第1章概述

11专业化软件开发

111软件工程

112软件工程的多样性

113软件工程和Web

12软件工程人员的职业道德

13案例研究

131胰岛素泵控制系统

132用于心理健康治疗的患者信息系统

133野外气象站

要点

进一步阅读材料

练习

参考书目

第2章软件过程

21软件过程模型

211瀑布模型

212增量式开发

213面向复用的软件工程

22过程活动

221软件描述

222软件设计和实现

223软件有效性验证

224软件进化

23应对变更

231原型构造

232增量式交付

233Boehm的螺旋模型

24Rational统一过程

要点

进一步阅读材料

练习

参考书目

第3章敏捷软件开发

31敏捷方法

32计划驱动开发和敏捷开发

33极限编程

331极限编程中的测试

332结对编程

34敏捷项目管理

35可扩展的敏捷方法

要点

进一步阅读材料

练习

参考书目

第4章需求工程

41功能需求和非功能需求

411功能需求

412非功能需求

42软件需求文档

43需求描述

431自然语言描述

432结构化描述

44需求工程过程

45需求导出和分析

451需求发现

452采访

453脚本

454用例

455深入实际

46需求有效性验证

47需求管理

471需求管理规划

472需求变更管理

要点

进一步阅读材料

练习

参考书目

第5章系统建模

51上下文模型

52交互模型

521用例建模

522时序图

53结构模型

531类图

532泛化

533聚合

54行为模型

541数据驱动的建模

542事件驱动模型

55模型驱动工程

551模型驱动体系结构

552可执行UML

要点

进一步阅读材料

练习

参考书目

第6章体系结构设计

61体系结构设计决策

62体系结构视图

63体系结构模式

631分层体系结构

632容器体系结构

633客户机-服务器体系结构

634管道和过滤器体系结构

64应用体系结构

641事务处理系统

642信息系统

643语言处理系统

要点

进一步阅读材料

练习

参考书目

第7章设计与实现

71利用UML进行面向对象设计

711系统上下文与交互

712体系结构的设计

713对象类识别

714设计模型

715接口描述

72设计模式

73实现问题

731复用

732配置管理

733宿主机-目标机开发

74开源开发

要点

进一步阅读材料

练习

参考书目

第8章软件测试

81开发测试

811单元测试

812选择单元测试案例

813组件测试

814系统测试

82测试驱动开发

83发布测试

831基于需求的测试

832情景测试

833性能测试

84用户测试

要点

进一步阅读材料

练习

参考书目

第9章软件进化

91进化过程

92程序进化的动态特性

93软件维护

931维护预测

932软件再工程

933通过重构进行预防性维护

94遗留系统管理

要点

进一步阅读材料

练习

参考书目

第二部分可依赖性和信息安全性

第10章社会技术系统

101复杂系统

1011系统总体特性

1012系统非确定性

1013成功标准

102系统工程

103系统采购

104系统开发

105系统运行

1051人为错误

1052系统进化

要点

进一步阅读材料

练习

参考书目

第11章可依赖性与信息安全性

111可依赖性特征

112可用性和可靠性

113安全性

114信息安全性

要点

进一步阅读材料

练习

参考书目

第12章可依赖性与信息安全性描述

121风险驱动的需求描述

122安全性描述

1221危险识别

1222危险评估

1223危险分析

1224风险降低

123可靠性描述

1231可靠性度量

1232非功能性的可靠性需求

1233功能可靠性描述

124信息安全性描述

125形式化描述

要点

进一步阅读材料

练习

参考书目

第13章可依赖性工程

131冗余性和多样性

132可依赖的过程

133可依赖的系统体系结构

1331保护性系统

1332自监控系统体系结构

1333N-版本编程

1334软件多样性

134可依赖的编程

要点

进一步阅读材料

练习

参考书目

第14章信息安全工程

141信息安全风险管理

1411生存期风险评估

1412运行风险评估

142面向信息安全的设计

1421体系结构设计

1422设计准则

1423部署设计

143系统生存能力

要点

进一步阅读材料

练习

参考书目

第15章可依赖性与信息安全保证

151静态分析

1511检验和形式化方法

1512模型检测

1513自动静态分析

152可靠性测试

153信息安全性测试

154过程保证

155安全性和可依赖性案例

1551结构化论证

1552结构化的安全性论证

要点

进一步阅读材料

练习

参考书目

第三部分高级软件工程

第16章软件复用

161复用概览

162应用框架

163软件产品线

164COTS产品的复用

1641COTS解决方案系统

1642COTS集成系统

要点

进一步阅读材料

练习

参考书目

第17章基于组件的软件工程

171组件和组件模型

172CBSE过程

1721面向复用的CBSE

1722基于复用的CBSE

173组件合成

要点

进一步阅读材料

练习

参考书目

第18章分布式软件工程

181分布式系统的问题

1811交互模型

1812中间件

182客户机-服务器计算

183分布式系统的体系结构模式

1831主从体系结构

1832两层客户机-服务器结构

1833多层客户机-服务器结构

1834分布式组件体系结构

1835对等体系结构

184软件作为服务

要点

进一步阅读材料

练习

参考书目

第19章面向服务的体系结构

191服务作为可复用的组件

192服务工程

1921可选服务的识别

1922服务接口设计

1923服务实现和部署

1924遗留系统服务

193使用服务的软件开发

1931工作流设计和实现

1932服务测试

要点

进一步阅读材料

练习

参考书目

第20章嵌入式软件

201嵌入式系统设计

2011实时系统建模

2012实时编程

202体系结构模式

2021观察和反应

2022环境控制

2023处理管道

203时序分析

204实时操作系统

要点

进一步阅读材料

练习

参考书目

第21章面向方面的软件工程

211关注点分离

212方面、连接点和切入点

213采用方面的软件工程

2131面向关注点的需求工程

2132面向方面的设计和编程

2133检验和有效性验证

要点

进一步阅读材料

练习

参考书目

第四部分软件 管理

第22章项目管理

221风险管理

2211风险识别

2212风险分析

2213风险规划

2214风险监控

222人员管理

223团队协作

2231成员挑选

2232小组的结构

2233小组的沟通

要点

进一步阅读材料

练习

参考书目

第23章项目规划

231软件报价

232计划驱动的开发

2321项目计划

2322规划过程

233项目进度安排

234敏捷规划

235估算技术

2351算法成本建模

2352COCOMO Ⅱ模型

2353项目的工期和人员配备

要点

进一步阅读材料

练习

参考书目

第24章质量管理

241软件质量

242软件标准

243复查与审查

2431复查过程

2432程序审查

244软件度量和量度

2441产品量度

2442软件组件分析

2443度量歧义

要点

进一步阅读材料

练习

参考书目

第25章配置管理

251变更管理

252版本管理

253系统构建

254发布版本管理

要点

进一步阅读材料

练习

参考书目

第26章过程改善

261过程改善过程

262过程度量

263过程分析

264过程变更

265CMMI过程改善框架

2651分阶段的CMMI模型

2652连续CMMI模型

要点

进一步阅读材料

练习

参考书目

术语表

英文版

CONTENTS

Preface v

Part 1 Introduction to Software Engineering 1

Chapter 1 Introduction 3

1.1 Professional software development 5

1.2 Software engineering ethics 14

1.3 Case studies 17

Chapter 2 Software processes 27

2.1 Software process models 29

2.2 Process activities 36

2.3 Coping with change 43

2.4 The rational unified process 50

Chapter 3 Agile software development 56

3.1 Agile methods 58

3.2 Plan-driven and agile development 62

3.3 Extreme programming 64

3.4 Agile project management 72

3.5 Scaling agile methods 74

Chapter 4 Requirements engineering 82

4.1 Functional and non-functional requirements 84

4.2 The software requirements document 91

4.3 Requirements specification 94

4.4 Requirements engineering processes 99

4.5 Requirements elicitation and analysis 100

4.6 Requirements validation 110

4.7 Requirements management 111

Chapter 5 System modeling 118

5.1 Context models 121

5.2 Interaction models 124

5.3 Structural models 129

5.4 Behavioral models 133

5.5 Model-driven engineering 138

Chapter 6 Architectural design 147

6.1 Architectural design decisions 151

6.2 Architectural views 153

6.3 Architectural patterns 155

6.4 Application architectures 164

Chapter 7 Design and implementation 176

7.1 Object-oriented design using the UML 178

7.2 Design patterns 189

7.3 Implementation issues 193

7.4 Open source development 198

Chapter 8 Software testing 205

8.1 Development testing 210

8.2 Test-driven development 221

8.3 Release testing 224

8.4 User testing 228

Chapter 9 Software evolution 234

9.1 Evolution processes 237

9.2 Program evolution dynamics 240

9.3 Software maintenance 242

9.4 Legacy system management 252

Part 2 Dependability and Security 261

Chapter 10 Sociotechnical systems 263

10.1 Complex systems 266

10.2 Systems engineering 273

10.3 System procurement 275

10.4 System development 278

10.5 System operation 281

Chapter 11 Dependability and security 289

11.1 Dependability properties 291

11.2 Availability and reliability 295

11.3 Safety 299

11.4 Security 302

Chapter 12 Dependability and security specification 309

12.1 Risk-driven requirements specification 311

12.2 Safety specification 313

12.3 Reliability specification 320

12.4 Security specification 329

12.5 Formal specification 333

Chapter 13 Dependability engineering 341

13.1 Redundancy and diversity 343

13.2 Dependable processes 345

13.3 Dependable system architectures 348

13.4 Dependable programming 355

Chapter 14 Security engineering 366

14.1 Security risk management 369

14.2 Design for security 375

14.3 System survivability 386

Chapter 15 Dependability and security assurance 393

15.1 Static analysis 395

15.2 Reliability testing 401

15.3 Security testing 404

15.4 Process assurance 406

15.5 Safety and dependability cases 410

Part 3 Advanced Software Engineering 423

Chapter 16 Software reuse 425

16.1 The reuse landscape 428

16.2 Application frameworks 431

16.3 Software product lines 434

16.4 COTS product reuse 440

Chapter 17 Component-based software engineering 452

17.1 Components and component models 455

17.2 CBSE processes 461

17.3 Component composition 468

Chapter 18 Distributed software engineering 479

18.1 Distributed systems issues 481

18.2 Client–server computing 488

18.3 Architectural patterns for distributed systems 490

18.4 Software as a service 501

Chapter 19 Service-oriented architecture 508

19.1 Services as reusable components 514

19.2 Service engineering 518

19.3 Software development with services 527

Chapter 20 Embedded software 537

20.1 Embedded systems design 540

20.2 Architectural patterns 547

20.3 Timing analysis 554

20.4 Real-time operating systems 558

Chapter 21 Aspect-oriented software engineering 565

21.1 The separation of concerns 567

21.2 Aspects, join points and pointcuts 571

21.3 Software engineering with aspects 576

Part 4 Software Management 591

Chapter 22 Project management 593

22.1 Risk management 595

22.2 Managing people 602

22.3 Teamwork 607

Chapter 23 Project planning 618

23.1 Software pricing 621

23.2 Plan-driven development 623

23.3 Project scheduling 626

23.4 Agile planning 631

23.5 Estimation techniques 633

Chapter 24 Quality management 651

24.1 Software quality 655

24.2 Software standards 657

24.3 Reviews and inspections 663

24.4 Software measurement and metrics 668

Chapter 25 Configuration management 681

25.1 Change management 685

25.2 Version management 690

25.3 System building 693

25.4 Release management 699

Chapter 26 Process improvement 705

26.1 The process improvement process 708

26.2 Process measurement 711

26.3 Process analysis 715

26.4 Process change 718

26.5 The CMMI process improvement framework 721

Glossary 733

Subject Index 749

Author Index 767

3 2011年中国铁道出版社出版图书

基本信息

书名:软件工程

书号:7-113-12391

作者:陈明

定价:35.00元

出版日期:2011年4月

版次:1版1次

开本:16开

页码:356页

策划编辑:严晓舟 杨勇

责任编辑:秦绪好

适用专业:计算机专业

适合层次:高等院校

课程类别:软件工程

出版单位:中国铁道出版社

内容简介

本书是计算机专业核心课程软件工程的教材,主要内容包括:软件工程概述、软件项目分析、需求分析、概要设计、详细设计、面向对象的分析与设计方法、用户界面设计、编码、软件质量与质量保证、项目计划与管理、软件维护、软件开发工具与环境概述、软件建模等。

本教材的主要特点体现在其内容系统、语言精练、概念准确。本书适合作为高等学校软件工程课程的教材,也可作为从事软件工程人员的参考书。

图书目录

第1章 软件工程概述 1

1.1 软件 1

1.1.1 软件的发展 2

1.1.2 软件的定义 3

1.1.3 软件的特点 3

1.1.4 软件的分类 5

1.2 软件工程的内容与方法 7

1.2.1 软件危机与软件工程的定义 7

1.2.2 软件工程的基本内容与目标 9

1.2.3 软件的基本开发方法 10

1.2.4 软件工程的基本原则 10

1.2.5 软件工具与环境 11

1.3 软件生存周期与软件开发模型 11

1.3.1 软件生存周期 11

1.3.2 软件开发模型 13

1.4 软件工程学的知识体系 21

小结 22

习题 22

第2章 软件项目分析 23

2.1 可行性研究的任务 23

2.2 可行性研究的步骤 24

2.3 可行性研究的要素 26

2.3.1 经济可行性 26

2.3.2 技术可行性 26

2.3.3 社会环境 27

2.4 系统流程图 27

2.5 成本-效益分析 29

2.5.1 成本估计 29

2.5.2 费用估算 30

2.5.3 度量效益的方法 31

小结 32

习题 32

第3章 软件需求工程 33

3.1 概述 34

3.1.1 软件需求分类 35

3.1.2 需求规格说明 36

3.1.3 需求工程概念 37

3.1.4 需求工程过程 37

3.2 需求获取方法 38

3.3 需求分析的任务与原则 40

3.3.1 需求分析的任务 40

3.3.2 需求分析的原则 41

3.4 需求建模方法 41

3.4.1 结构化需求建模方法 42

3.4.2 数据流图 44

3.4.3 数据字典 51

3.5 需求分析图形工具 55

3.5.1 层次方框图 56

3.5.2 Warnier图 56

3.5.3 IPO图 57

3.6 需求验证 57

3.6.1 目的与任务 57

3.6.2 内容与方法 58

3.6.3 需求评审 59

3.7 需求管理 60

3.7.1 需求管理的目标 60

3.7.2 需求管理的原则 60

3.7.3 需求开发的管理 61

3.7.4 需求管理活动 62

小结 64

习题 64

第4章 概要设计 65

4.1 软件体系结构 66

4.1.1 概述 66

4.1.2 系统构成 68

4.1.3 控制模型 71

4.1.4 模块化分解 74

4.1.5 领域相关的体系结构 76

4.2 概要设计任务与步骤 78

4.2.1 概要设计任务 78

4.2.2 概要设计过程 79

4.3 软件设计的基本概念 80

4.3.1 模块化与模块独立性 80

4.3.2 抽象 85

4.3.3 结构设计原则 87

4.3.4 软件复用 90

4.3.5 设计模式 93

4.4 面向数据流的设计方法 95

4.4.1 基本概念 95

4.4.2 系统结构图的组成 96

4.4.3 变换分析 98

4.4.4 事务分析 102

4.4.5 设计优化 103

4.5 面向数据结构的分析设计方法 104

4.5.1 Jackson系统开发方法 104

4.5.2 Warnier方法 113

4.6 概要设计文档评审 114

小结 115

习题 115

第5章 详细设计 116

5.1 详细设计的任务与原则 117

5.1.1 详细设计的任务 117

5.1.2 详细设计的原则 117

5.2 详细设计工具 118

5.2.1 程序流程图 118

5.2.2 N-S图 119

5.2.3 PAD图 121

5.2.4 PDL 122

5.2.5 HIPO图 124

5.2.6 详细设计工具的选择 125

5.3 详细设计规格说明与复审 126

5.3.1 详细设计说明书 126

5.3.2 设计复审 127

小结 127

习题 128

第6章 面向对象设计 129

6.1 面向对象方法 130

6.1.1 面向对象方法概述 130

6.1.2 面向对象软件工程 131

6.1.3 面向对象的基本概念和特征 135

6.2 面向对象分析 142

6.2.1 面向对象分析过程与原则 142

6.2.2 确定对象与类 146

6.2.3 确定属性 149

6.2.4 定义服务 149

6.2.5 对象间通信 153

6.3 面向对象设计的概念和方法 158

6.3.1 面向对象设计的概念 159

6.3.2 面向对象设计的方法 160

小结 163

习题 163

第7章 用户界面设计 164

7.1 用户界面的主要特征 165

7.1.1 用户界面的质量特征 165

7.1.2 用户界面的图形特征 165

7.1.3 用户界面的优点 166

7.2 设计原则 166

7.3 用户交互 168

7.3.1 用户交互类型 168

7.3.2 交互类型的比较 168

7.4 信息表示 169

7.4.1 用户界面的信息表示方法 169

7.4.2 用户界面的信息表示形式 170

7.5 帮助系统 171

7.6 界面设计 173

7.6.1 数据输入界面设计 173

7.6.2 数据显示界面设计 174

7.6.3 控制界面设计 174

7.7 界面设计评价 174

7.7.1 界面设计评价指标 174

7.7.2 界面设计评价方法 175

小结 176

习题 176

第8章 编码 177

8.1 程序设计语言 178

8.1.1 程序设计语言的分类 178

8.1.2 程序设计语言的特点 180

8.1.3 程序设计语言的选择 182

8.2 编码风格 184

8.2.1 源程序文档化 184

8.2.2 数据说明 186

8.2.3 语句结构 186

8.2.4 输入/输出 189

8.3 程序效率 189

8.3.1 程序效率准则 190

8.3.2 算法对效率的影响 190

8.3.3 影响存储器效率的因素 190

8.3.4 影响输入/输出效率的因素 190

8.4 编程安全 191

8.4.1 冗余程序设计 191

8.4.2 防错程序设计 192

8.5 面向对象程序设计步骤 193

8.6 编码优化 193

8.6.1 优化的内容与原则 193

8.6.2 程序结构优化 194

8.6.3 程序代码优化 195

小结 195

习题 195

第9章 软件质量与软件测试 196

9.1 软件质量 197

9.1.1 软件质量定义 197

9.1.2 影响软件质量的因素 197

9.1.3 软件质量保证策略 198

9.1.4 软件质量保证活动 199

9.1.5 软件质量保证标准 200

9.2 软件评审 201

9.2.1 设计质量评审内容 202

9.2.2 程序质量评审内容 206

9.3 结构化程序测试 208

9.3.1 软件测试目的 209

9.3.2 软件测试原则 209

9.3.3 软件测试对象 210

9.3.4 软件测试过程 210

9.3.5 软件测试技术 211

9.3.6 设计测试方案 212

9.3.7 软件测试步骤 214

9.3.8 软件纠错技术 219

9.4 面向对象软件测试 220

9.4.1 面向对象分析和设计模型测试 220

9.4.2 面向对象测试策略 222

9.4.3 面向对象软件测试集设计 223

9.5 测试计划与测试分析报告 225

小结 227

习题 227

第10章 软件交付与维护 228

10.1 软件发布与部署 228

10.1.1 软件产品发布 229

10.1.2 软件产品实施 229

10.2 软件演化的特征 230

10.2.1 大型程序演化的动态特征 230

10.2.2 软件体系结构的进化 231

10.3 软件维护 231

10.3.1 软件维护分类与特点 232

10.3.2 软件维护步骤 234

10.3.3 软件的可维护性 237

10.3.4 软件维护的副作用 238

10.4 逆向工程和再生工程 239

小结 240

习题 240

第11章 项目计划与管理 242

11.1 软件项目特点及软件管理功能 243

11.1.1 软件项目的特点 243

11.1.2 软件管理的功能 243

11.1.3 软件项目的工作范围 244

11.2 软件项目的资源 244

11.2.1 人力资源 244

11.2.2 硬件资源 245

11.2.3 软件资源 245

11.3 人员的计划和组织 246

11.4 成本估计及控制 247

11.4.1 软件开发成本估计方法 247

11.4.2 专家估算法 247

11.4.3 成本估算模型 248

11.5 进度计划 251

11.5.1 各阶段工作量的分配 251

11.5.2 制定开发进度计划 251

11.6 软件配置管理 252

11.6.1 基线 252

11.6.2 软件配置项 253

11.6.3 软件配置管理过程 255

11.7 软件管理方案 258

11.8 软件能力成熟度模型 259

11.8.1 软件过程评估的必要性 259

11.8.2 能力成熟度模型的主要用途 260

11.8.3 能力成熟度模型中的概念 261

11.8.4 软件能力成熟度的等级 263

11.8.5 能力成熟度模型的内部结构 266

11.8.6 能力成熟度模型的应用 268

小结 270

习题 270

第12章 软件建模及其工具 271

12.1 模型概述 271

12.1.1 模型的定义 271

12.1.2 模型的分类 272

12.2 软件建模中最常用的模型 272

12.2.1 业务模型 272

12.2.2 功能模型 272

12.2.3 数据模型 273

12.3 需求建模 273

12.4 统一建模语言(UML) 274

12.4.1 UML概述 274

12.4.2 UML表示法 280

12.4.3 UML软件开发过程概述 291

小结 294

习题 294

第13章 软件开发工具与环境 295

13.1 软件开发工具概述 295

13.2 软件开发工具的功能 296

13.3 软件开发工具的特性 297

13.4 软件开发工具的分类 298

13.5 软件开发环境 300

13.6 常用开发环境 301

13.6.1 Windows开发环境 301

13.6.2 Linux开发环境 305

13.6.3 UNIX开发环境 309

13.7 软件开发工具的发展 313

13.8 CASE技术 314

小结 316

习题 316

附录A 可行性研究报告规范 317

附录B 项目开发计划规范 322

附录C 需求规格说明书规范 325

附录D 概要设计说明书规范 330

附录E 详细设计说明书规范 333

附录F 测试计划 336

附录G 测试分析报告 339

附录H 项目开发总结报告规范 341

参考文献 343

4 2009年中国铁道出版社出版图书

基本信息

书名:软件工程

书号:7-113-10807

作者:张林 等

定价:35.00元

出版日期:2009年12月

出版单位:中国铁道出版社

内容简介

全书共分为四篇,分别讲解了如下知识点:软件工程与需求分析,软件设计方法与技术,软件编码、测试与维护,软件工程项目管理等基本理论和相关技术。本书是按照教育部高等学校计算机科学与技术专业教学指导分委员会颁布的《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》中“软件工程”课程教学大纲的要求编写而成的,适合作为高等学校计算机和相关专业软件工程课程的教材,也可作为软件开发人员与软件项目管理人员的学习参考书。

目录

第一篇 软件工程与需求分析

第1章 软件工程概述

第2章 软件项目可行性分析

第3章 软件需求分析

第4章 软件开发工具与环境

第二篇 软件设计的方法与技术

第5章 软件设计方法概述

第6章 软件的总体设计与详细设计

第7章 结构化开发方法

第8章 面向对象的开发方法

第9章 人机交互界面设计

第10章 软件重用技术

第三篇 软件编码、测试与维护

第11章 软件编码

第12章 软件测试

第13章 软件维护

第四篇 软件工程项目管理

第14章 软件项目组织与人力资源管理

第15章 软件项目计划与进度控制

第16章 软件质量管理

第17章 软件配置管理

第18章 软件项目风险管理

参考文献

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/12 17:11:37