当前位置:文档之家› 游戏开发的标准过程(软件工程概述)

游戏开发的标准过程(软件工程概述)

游戏开发的标准过程(软件工程概述)
游戏开发的标准过程(软件工程概述)

软件开发的过程

作者:逍遥小狼

摘要:什么是软件工程

软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。

(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。

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

(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。

1软件开发的流程概要

需求分析——概要设计——详细设计——编码——单元测试——集成测试——系统测试——维护

2需求调研

①调研用户领域的组织结构、岗位设置和职责定义,从功能上区分有多少个子系统,划分系统的大致范围,明确系统的目标。

②调研每个子系统所需的工作流程、功能与处理规则,收集单据、报表和账本等原始资料,分析物流、资金流和信息流三者的关系,以及如何用数据流来表示这三者的关系。

③对调研的内容事先准备,针对不同管理层次的用户询问不同的问题,列出问题清单。将操作层、管理层和决策层的需求既联系,又区分开来,形成一个金字塔,使下层满足上层的需求。

④对与用户沟通的情况及时总结归纳,整理调研结果,找出新的疑点,初步构成需求基线。

⑤若基线符合要求,则需求分析完毕;反之返回到第1步或第2或第3步。如此循环多次,直到需要分析使双方满意为止。

3可行性分析和需求分析

可行性分析是要决定“做还是不做”。

需求分析是要决定“做什么,不做什么”。

3.1 可行性分析

3.1.1经济

经济可行性分析主要包括:“成本——收益”分析和“短期——长远利益”分析。

3.1.1.1 成本——收益

(1)办公室房租。(¥)

(2)办公用品,如桌、椅、书柜、照明电器、空调等。(¥)

(3)计算机、打印机、网络等硬件设备。(¥)

(4)电话、传真等通讯设备以及通讯费用。(¥)

(5)资料费。(¥)

(6)办公消耗,如水电费、打印复印费等。(¥)

(7)软件开发人员与行政人员的工资。(¥)

(8)购买系统软件的费用,如买操作系统、数据库、软件开发工具等。有些老板买盗版的系统软件,却按市场价算成本,可从美国佬那里赚一笔。(¥)

(9)做市场调查、可行性分析、需求分析的交际费用。(¥)

(10)公司人员培训费用。(¥)

(11)产品宣传费用。如果用Internet作宣传,则要考虑建设Web站点的费用。(¥) (12)如果客户是政府部门,还要充分考虑用于吃喝玩乐、行贿的费用。(¥)

(13)如果公司的风水不好,会有很多莫名其妙的管理费。每戳一个红艳艳的公章都要化一把钞票。(¥)

3.1.1.2 短期——长远利益

人们喜欢吃着碗里的、看着锅里的,还想着别人家里的。短期利益和长远利益兼得是人们梦寐以求的事。在商业上,这等好事可不会轻易降临。

短期利益容易把握,风险较低。但收益有限,做的是项目。

长远利益难以把握,风险较大。但收益可能巨大,做的是企业。

3.1.2技术

技术可行性分析至少要考虑以下几方面因素:

(1)在给定的时间内能否实现需求说明中的功能。

(2)软件的质量如何?主要考虑在网络、硬件、市场竞争等上面的分析。

(3)软件的生产率如何?主要是开发的周期、移植性、维护、扩展方面的考虑。

技术可行性分析可以简单地表述为:做得了吗?做得好吗?做得快吗?

3.1.3社会环境

社会环境的可行性至少包括两种因素:市场与政策。

3.1.3.1 市场

市场又分为未成熟的市场、成熟的市场和将要消亡的市场。

涉足未成熟的市场要冒很大的风险,要尽可能准确地估计潜在的市场有多大?自己能占多少份额?多长时间能实现?

挤进成熟的市场,虽然风险不高,但油水也不多。如果供大于求。收入稳定

将要消亡的市场就别进去了。如DOS时代编程现在不可能有人去做了。

3.1.3.2 政策

政策对软件公司的生存与发展影响非常大。需要考虑:国家的网络法律的发展、与对项目的限制,是否有鼓励机制,新的网络技术等先进科技的引进等(如3G时代什么时候到来,对我们的项目会有什么影响等。)

3.1.4人的因数

技术人员的水平如何,时间安排是否可以到位,特殊情况(如病假等)等对项目开发的进度和质量的影响。如何合理安排人手,对各个计划(小功能块)的开发时限分析等,对于项目开发是非常重要的。

3.2 需求分析

有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。

3.2.1客户说不清楚需求

也可以理解为市场人员和初级策划要给出整个软件开发的目的,消费人群,市场等内容。

3.2.2需求自身经常变动

首先先接受“需求会变动”这个事实,免得在需求变动时惊慌失措。明白“需求会变动”这个道理后,在进行需求分析时就要留点神:

(1)尽可能地分析清楚哪些是稳定的需求,哪些是易变的需求。以便在进行系统设计时,将软件的核心建筑在稳定的需求上,否则将会吃尽苦头。

(2)在文档中一定要说清楚“做什么”和“不做什么”。

3.2.3分析人员或客户理解有误

不同的分析人员可能有不同的理解。如果分析人员理解错了,可能会导致开发人员白干活,吃力不讨好。

所以在具体的项目开发过程中,程序员和策划还有市场要随时沟通,不断交流。

3.2.4业务需求

业务需求说明了提供给客户和产品开发商的新系统的最初利益。不同产品可能会有不同的侧重点。本部分描述了你为什么要从事此项项目的开发,以及它将给开发者和购卖者带来的利益。

3.2.

4.1 背景

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

3.2.

4.2 业务机遇

描述现存的市场机遇或正在解决的业务问题。描述商品竞争的市场和信息系统将运用的

环境。包括对现存产品的一个简要的相对评价和解决方案,并指出所建议的产品为什么具有吸引力和它们所能带来的竞争优势。认识到目前只能使用该产品才能解决的一些问题,并描述产品是怎样顺应市场趋势和战略目标的。

3.2.

4.3 业务目标

用一个定量和可测量的合理方法总结产品所带来的重要商业利润。关于给客户带来的价值在后面阐述,这里仅把重点放在给业务的价值上。这些目标与收入预算或节省开支有关,并影响到投资分析和最终产品的交付日期。

3.2.

4.4 客户或市场需求

描述一些典型客户的需求,包括不满足现在市场上的产品或信息系统的需求。提出客户目前所遇到的问题在新产品中将可能(或不可能)出现的阐述,提供客户怎样使用产品的例子。确定了产品所能运行的软、硬件平台。定义了较高层次的关键接口或性能要求,但避免设计或实现细节。把这些要求写到列表中,可以反过来跟踪调查特殊用户和功能需求。

3.2.

4.5 提供给客户的价值

确定产品给客户带来的价值,并指明产品怎样满足客户的需要。可以用下列言辞表达产品带给客户的价值:

1.提高生产效率,减少返工;

2.节省开支;

3.业务过程的流水线化;

4.先前人工劳动的自动化;

5.符合相关标准和规则;

6.与目前的应用产品相比较,提高了可用性或减少了失效程度。

3.2.

4.6 业务风险

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

3.2.

4.7 项目视图

文档中的这一部分为系统建立了一个长远的项目视图,它将指明业务目标。这一项目视图为在软件开发生存期中做出决策提供了相关环境背景。这部分不包括详细的功能需求和项目计划信息。

3.2.

4.7.1项目视图陈述

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

3.2.

4.7.2主要特征

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

包括拥有的功能,用户对象,优势等内容。

3.2.

4.7.3假设和依赖环境

在构思项目和编写项目视图和范围文档时,要记录所做出的任何假设。通常一方所持的假设应与另一方不同。如果你把它们都记录下来,并加以评论,就能对项目内部隐含的基本

假设达成共识。(该产品的市场定位,和依赖环境)

3.2.

4.8 范围和局限性

项目范围定义了所提出的解决方案和概念和适用领域,而局限性则指出产品所不包括的某些性能。如果一般客户所提出的需求超出项目的范围时就应当拒绝它,除非这些需求是很有益的。记录这些需求以及拒绝它们的原因,以待查。

3.2.

4.8.1首次发行的范围

总结首次发行的产品所具有的性能。描述了产品的质量特性,这些特性使产品可以为不同的客户群提供预期的成果。应当避免将想到的每一个特性都包括到1.0版本产品中去。开发者应把重点放在能提供最大价值、花花费最合理的开发费用及普及率最高的产品上。

3.2.

4.8.2随后发行的范围

如果你想象一个周期性的产品演变过程,就要指明哪一个主要特性的开发将被延期,并期待随后版本发行的日期。

3.2.

4.8.3局限性和专用性

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

3.2.

4.9 业务环境

这一部分总结了一些项目的业务问题。

3.2.

4.10 客户概貌

客户概述明确了这一产品的不同类型客户的一些本质特点,以及目标市场部门和在这些部门中的不同客户的特征。对于每一种客户类型,概述要包括:

各种客户类型将从产品中获得的主要益处;

它们对产品所持的态度;

感兴趣的关键产品的特性;

哪一类型客户能成功使用;

必须适应任何客户的限制。

3.2.

4.11 项目的优先级

一旦明确建立项目的优先级,风险承担者和项目的参与者就能把精力集中在一系列共同的目标上。达到这一目的的一个途径是考虑软件项目的五个方面:性能、质量、计划、成本和人员。

3.2.

4.12 产品成功的因素

明确产品的成功是如何定义和测量的,并指明对产品的成功有巨大影响的几个因素。不仅要包括组织直接控制的范围内的事务,还要包括我部素。如果可能,可建立测量的标准,用于评价是否达到业务目标,如:市场股票、销售量及收入、客户满意度、交易处理量和准确度。

4系统设计(策划与程序员完成)

系统设计是新系统的物理设计阶段。根据系统分析阶段所确定的新系统的逻辑模型、功能要求,在用户提供的环境条件下,设计出一个能在计算机网络环境上实施的方案,即建立

新系统的物理模型。

这个阶段的任务是设计软件系统的模块层次结构,设计数据库的结构以及设计模块的控制流程,其目的是明确软件系统"如何做"。

这个阶段又分两个步骤:概要设计和详细设计。概要设计解决软件系统的模块划分和模块的层次机构以及数据库设计;详细设计解决每个模块的控制流程,内部算法和数据结构的设计。这个阶段结束,要交付概要设计说明书和设计说明,也可以合并在一起,称为设计说明书。

4.1 架构设计

架构设计也被认为是体系结构设计,重点在于将系统分层并产生层次内的模块、阐明模块之间的关系。主要工作是根据架构分析和设计思想产生系统的架构图,并对架构图进行描述,说明分层的原因、层次的职责,并根据架构图绘制系统的物理部署图,描述系统的部署体系。根据架构图进行模块的划分并阐明模块划分的理由,绘制模块物理图以及模块依赖图。

体系结构是软件系统中最本质的东西:

(1)体系结构是对复杂事物的一种抽象。良好的体系结构是普遍适用的,它可以高效地处理多种多样的个体需求。

(2)体系结构在一定的时间内保持稳定。只有在稳定的环境下,人们才能干点事情,社会才能发展。如果当需求发生变化时,程序员不得不去修改软件的体系结构,那么这个软件的系统设计是失败的。

良好的体系结构意味着普适、高效和稳定。

4.2 概要设计

概要设计的主要任务是把需求分析得到的数据流图(DFD)转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,总体设计建立的是目标系统的逻辑模型,与计算机无关。

概要设计重点在于将模块分解为对象并阐明对象之间的关系,引用架构设计说明书中的模块图,并阐述对于模块进行设计的大致思路。主要工作是根据该模块的职责对模块进行概要设计(分解模块为对象、描述对象的职责以及声明对象之间的接口),绘制模块的对象图、对象间的依赖图以及模块主要功能的序列图,分别加以描述并相应的描述模块异常的处理方法。如果需要并描述数据视图。

在需求明确、准备开始编码之前,要做概要设计,而详细设计可能大部分公司没有做,有做的也大部分是和编码同步进行,或者在编码之后。因此,对大部分的公司来说,概要设计文档是唯一的设计文档,对后面的开发、测试、实施、维护工作起到关键性的影响。

4.2.1概要设计的任务

制定规范:代码体系、接口规约、命名规则。这是项目小组今后共同作战的基础,有了开发规范和程序模块之间和项目成员彼此之间的接口规则、方式方法,大家就有了共同的工作语言、共同的工作平台,使整个软件开发工作可以协调有序地进行。

总体结构设计:

功能(加工)->模块:每个功能用那些模块实现,保证每个功能都有相应的模块来实现;

模块层次结构:某个角度的软件框架视图;

模块间的调用关系:模块间的接口的总体描述;

模块间的接口:传递的信息及其结构;

处理方式设计:满足功能和性能的算法

用户界面设计;

数据结构设计:

详细的数据结构:表、索引、文件;

算法相关逻辑数据结构及其操作;

上述操作的程序模块说明(在前台?在后台?用视图?用过程?······)

接口控制表的数据结构和使用规则

其他性能设计。

4.2.2概要设计写什么

结构化软件设计说明书结构

任务:目标、环境、需求、局限;

总体设计:处理流程、总体结构与模块、功能与模块的关系;

接口设计:总体说明外部用户、软、硬件接口;内部模块间接口(注:接口≈系统界面)数据结构:逻辑结构、物理结构,与程序结构的关系;

模块设计:每个模块“做什么”、简要说明“怎么做”(输入、输出、处理逻辑、与其它模块的接口,与其它系统或硬件的接口),处在什么逻辑位置、物理位置;

运行设计:运行模块组合、控制、时间;

出错设计:出错信息、处错处理;

其他设计:保密、维护;

4.2.3概要设计的模板

1引言

1.1编写目的

说明编写这份概要设计说明书的目的,指出预期的读者。

1.2背景

说明:

a. 待开发软件系统的名称;

b. 列出此项目的任务提出者、开发者、用户以及将运行该软件的计算站(中心)。

1.3定义

列出本文件中用到的专门术语的定义和外文首字母组词的原词组。

1.4参考资料

列出有关的参考文件,如:

a. 本项目的经核准的计划任务书或合同,上级机关的批文;

b. 属于本项目的其他已发表文件;

c. 本文件中各处引用的文件、资料,包括所要用到的软件开发标准。列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。(序号资料名文件编号发表日期出版单位)

2总体设计

2.1需求规定

说明对本系统的主要的输入输出项目、处理的功能性能要求(可以参考需求说明书)

2.1.1功能描述

2.1.2性能要求

2.2运行环境

简要地说明对本系统的运行环境(包括硬件环境和支持环境)的规定(可以参考需求说明书)2.3基本设计概念和处理流程

说明本系统的基本设计概念和处理流程,尽量使用图表的形式。

注:可以使用word绘制流程图(示意图),也可以使用专业的MS Visio或者Rational Rose 绘制

2.4结构

用一览表及框图或者树状图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划分,扼要说明每个系统元素的标识符和功能,分层次地给出各元素之间的控制与被控制关系。

2.5功能需求与程序的关系

本条用一张如下的矩阵图说明各项功能需求的实现是处于哪个模块中的:

如:

2.6人工处理过程

说明在本软件系统的工作过程中不得不包含的人工处理过程(如果有的话)。

2.7尚未问决的问题

说明在概要设计过程中尚未解决、而设计者认为在系统完成之前必须解决的各个问题。

3接口设计

3.1用户接口

说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。

3.2外部接口(硬件接口)

说明本系统同外界的所有接口的安排,包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系,比如需要从外界系统接收哪些数据,或者需要输出哪些数据给外部系统等3.3内部接口(软件接口)

说明本系统之内的各个系统元素之间的接口的安排(可暂时先省去)

4运行设计

4.1运行模块组合

说明对系统施加不同的外界运行控制时所引起的各种不同的运行模块组合,说明每种运行所历经的内部模块和支持软件。

模块集合运行条件支持软件

4.2运行控制

说明每一种外界的运行控制的方式方法和操作步骤。

运行名称控制方法操作步骤

4.3运行时间

说明每种运行模块组合将占用各种资源的时间。

运行名称所占资源时间

5系统数据结构设计

5.1逻辑结构设计要点

给出本系统内所使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。

5.2物理结构设计要点

给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存取单位、存取的物理关系(索引、设备、存储区域)、设计考虑和保密条件。

补充说明:5.1和5.2可以合并为列出数据库中的所有表的设计结构

5.3数据结构与程序的关系

说明各个数据结构(表)与访问这些数据结构的模块的关系:

6系统出错处理设计

6.1出错信息

用一览表的方式说明每种可能的出错或故障情况出现时,系统输出信息的形式、含意及处理方法。

出错情况提示信息发生条件解决办法

6.2补救措施

说明故障出现后可能采取的变通措施,可能包括:

a. 后备技术说明准备采用的后备技术,当原始系统数据万一丢失时启用的副本的建立和启动的技术,例如周期性地把磁盘信息记录到磁带上去就是对于磁盘媒体的一种后备技术;

b. 降效技术说明准备采用的后备技术,使用另一个效率稍低的系统或方法来求得所需结果的某些部分,例如一个自动系统的降效技术可以是手工操作和数据的人工记录;

c. 恢复及再启动技术说明将使用的恢复再启动技术,使软件从故障点恢复执行或使软件从头开始重新运行的方法。

6.3系统维护设计

说明为了系统维护的方便而在程序内部设计中做出的安排,包括在程序中专门安排用于系统的检查与维护的检测点和专用模块。各个程序之间的对应关系

4.3 详细设计

详细设计重点在于对每个模块进行实现,将模块的对象分解为属性和方法,并阐述如何实现。主要工作视根据模块概要设计详细描述对于模块内对象的实现,包括对象的职责、属性、方法、对象内功能的流程图、对象关联的类、对象的异常。(需要绘制的主要为类图) 详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。

主要任务:

1.为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;

2.确定每一模块使用的数据结构;

3.确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。

在详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档。交付给下一阶段(编码阶段)的工作依据。

4.要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。

5编码(主要为程序员完成)

对具体软件的编写与实现。

软件编码是将上一阶段的详细设计得到的处理过程的描述转换为基于某种计算机语言的程序,即源程序代码。

需注意根据项目的应用领域选择适当的编程语言、编程的软硬件环境以及编码的程序设计风格等事项

6测试(主要为程序员完成)

“白盒测试”是指开发人员从程序内部对上述内容进行测试,而“黑盒测试”是指独立的测试人员从程序外部对上述内容进行测试。

6.1 单元测试

对单个模块进行测试

单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

6.2 集成测试

对整个软件或工程进行测试

集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。

6.2.1集成测试方法

集成测试应该考虑以下问题:

1、在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;

2、各个子功能组合起来,能否达到预期要求的父功能;

3、一个模块的功能是否会对另一个模块的功能产生不利的影响;

4、全局数据结构是否有问题;

5、单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。

6.2.2集成测试的实施

集成测试是一种正规测试过程,必须精心计划,并与单元测试的完成时间协调起来。在制定测试计划时,应考虑如下因素:

1、是采用何种系统组装方法来进行组装测试;

2、组装测试过程中连接各个模块的顺序;

3、模块代码编制和测试进度是否与组装测试的顺序一致

4、测试过程中是否需要专门的硬件设备;

6.2.3集成测试完成标准

怎样判定集成测试过程完成了, 可按以下几个方面检查:

1、成功地执行了测试计划中规定的所有集成测试;

2、修正了所发现的错误;

3、测试结果通过了专门小组的评审。

7系统测试

系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。

8维护(主要为程序员完成)

软件维护一般划分为主要的三类:纠错性维护(Corrective maintenance)、适应性维护(Adaptive maintenance)和完善性维护(Perfective maintenance):

(1)纠错性维护。由于前期的测试不可能揭露软件系统中所有替在的错误,用户在使用软件时仍将会遇到错误,诊断和改正这些错误的过程称为纠错性维护。

(2)适应性维护。由于新的硬件设备不断推出,操作系统和编译系统也不断地升级,为了使软件能适应新的环境而引起的程序修改和扩充活动称为适应性维护。

(3)完善性维护。在软件的正常使用过程中,用户还会不断提出新的需求。为了满足用户新的需求而增加软件功能的活动称为完善性维护。

《软件工程发展概述》

软件工程发展概述 计算机工业发达国家在发展软件的过程中曾经走过不少弯路,受过许多的挫折,至今仍然经受着“软件危机”的困扰。人们开发幼稚软件的能力大大落后于计算机硬件日新月异的进展和社会对计算机软件不断增长的需求,这种状况已经严重妨碍了计算机技术的进步。 为了摆脱软件危机,一门新的学科产生并发展起来—软件工程,几十年来软件工程的发展大致如下几个阶段。 第一阶段—软件危机。 20世纪中期,计算机刚被从军用领域转向民用领域使用,那时编写程序的工作被视同为艺术家的创作。当时的计算机硬件非常昂贵,编程人员追求的是如何在有限的处理器能力和存储器空间约束下,编写出执行速度快、体积小的程序。程序中充满了各种各样让人迷惑的技巧。这时的软件生产非常依赖于开发人员的聪明才智。 到了20世纪60年代,计算机的应用范围得到较大扩展,对软件系统的需求和软件自身的复杂度急剧上升,传统的开发方法无法适应用户在质量、效率等方面对软件的需求。这就是所谓的“软件危机”。 早期出现的软件危机主要表现在: ①软件开发费用和进度失控。费用超支、进度拖延的情况屡屡发生。有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量。 ②软件的可靠性差。尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人。 ③生产出来的软件难以维护。很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。进入80年代以来,尽管软件工程研究与实践取得了可喜的成就,软件技术水平有了长足的进展,但是软件生产水平依然远远落后于硬件生产水平的发展速度。 软件危机不仅没有消失,还有加剧之势。主要表现在: ①软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。由于微电子学技术的进步和硬件生产自动化程度不断提高,硬件成本逐年下降,性能和产量迅速提高。

第1章_软件工程学概述练习题

第一章练习题 一、判断题 1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(√) 2..软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开 发实际上就是编写程序代码。(X) 3.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是 生成类的模板。(X) 4.快速原型模型可以有效地适应用户需求的动态变化。(√) 5.类是关于对象性质的描述,由方法和数据组成。(√) 6.如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。(√) 二、名字解释: 1.软件:完成特定功能的程序+数据结构+文档。 2.软件危机:软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。 3.软件工程:指导计算机软件开发和维护的一门工程学。 4.软件生命周期:一个软件从定义、开发、使用和维护直至最终被废弃,要经历的漫长时 期。 5.软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任 务的工作步骤。 6.瀑布模型:是将软件生存各个活动规定为依线性顺序联接的若干阶段的模型。它包括可 行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试盒维护。它规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。 7.快速原型模型:是快速建立起来的可以再计算机上运行的程序,它所能完成的功能往往 是最终产品能完成的功能的一个子集。 8.增量模型:是在项目的开发工程中以一系列的增量方式开发系统。增量方式包括增量开 发和增量提交。增量开发是指在项目开发过程中以一定的时间间隔开发部分工作软件; 增量提交是指在开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应文档。增量开发和增量提交可以同时使用,也可以单独使用。 9.螺旋模型:是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模 型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。 对象。

软件工程发展概述

软件工程发展概述 摘要:本文简单介绍了软件工程。分别从软件工程的定义、发展历程、现在发展动态以及未来发展趋势做出简单分析,使我对软件工程的过去、现在和未来有了进一步的了解和认识。 关键词:定义;过程;动态;趋势 1.引言 随着计算机的广泛应用,信息产业悄然兴起,越来越成为经济发展中的先导产业。目前,信息化已从整体上引导着世界经济和社会发展,信息处理技术已成为现代社会生产力、竞争力的关键,具有十分重要的战略位置。这一期间,计算机软件以其独特的知识形态,广泛渗透于国名经济建设的各行各业中,对信息采集、信息处理、信息交换以及生产过程、社会生活的变革产生了深远的影响。计算机软件,尤其是软件工程作为软件产业的依托学科已经成为信息技术的核心之一。 2.软件工程概述 软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。工程是将理论和知识应用于实践的科学。就软件工程而言,它借鉴了传统工程的原则和方法,以求高效地开发高质量软件。其中应用了计算机科学、数学和管理科学。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。 2.1软件工程定义 软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义。概括地说,软件工程是指导计算机软件开发和维护的工程学科。 根据各位学者、组织机构给出的软件工程定义,我简单的将软件工程理解为:软件工程是按照工程学的管理方式,有组织、有计划的在成本限额以内按时完成开发且能在实际机器上可靠有效地运行的软件,并不断对软件进行优化、维护及管理的工作过程。 2.2软件工程方法和技术

软件需求工程复习题

需求工程练习题 一、单选题(每空1分,共20分,请在备选答案中选择唯一一个正确的选项) 1、产品特性可以称为质量属性,在众多质量属性中,对于开发人员来说重要的属性有哪些 (B ) A 有效性、效率、灵活性、互操作性 B 可维护性、可移植性、可重用性、可测试性 C 完整性、可靠性、健壮性、可用性 D 容错性、易用性、简洁性、正确性 2、需求包括11个方面的内容,其中网络和操作系统的要求属于(B),如何隔离用户之间的数据属于(C),执行速度、相应时间及吞吐量属于(D),规定系统平均出错时间属于(A )。 A 质量保证B环境需求C安全保密需求 D 性能需求 3、需求分析过程应该建立3种模型,它们分别是数据模型、功能模型、行为模型。以下几种图形中,(B)属于功能模型,(A)属于数据模型,(C)属于行为模型。 A 实体-联系图(ERD) B 数据流图(DFD) C 状态转换图(STD) D鱼骨图 4、常用的需求分析方法有:面向数据流的结构化分析方法(SA),面向对象的分析方法(OOA),下列(D)不是结构化分析方法的图形工具。 A决策树B数据流图C数据字典D快速原型 5、软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。其中,(B)和(C)用完就可以丢弃,而(A)围绕原型修改、增加。 A 进化型 B 探索型C实验型 D 以上都是 6、(D)用于描述数据的处理过程。 A 数据字典B决策树C决策表 D 数据流图

7、DFD的基本符号不包括下列哪种(A) A 数据字典 B 加工 C 外部实体 D 数据流 E 数据存储文件 8、DD的主要字典条目包括以下哪种(E) A数据流B文件 C 数据项D加工E以上都是 9、常用的动态分析方法不包括以下哪种(B) A 状态迁移图 B 层次方框图C时序图 D Petri网 10、需求分析阶段的文档包括以下哪些(E) A 软件需求规格说明书B数据要求说明书C初步的用户手册D修改、完善与确定软件开发实施计划E以上都是 11、需求验证应该从下述几个方面进行验证:(C) A 可靠性、可用性、易用性、重用性B可维护性、可移植性、可重用性、可测试性 C一致性、现实性、完整性、有效性D 功能性、非功能性 12、风险管理的要素包括哪项(D) A风险评价B风险避免C风险控制D以上都是 13、下列描述中错误的是(D) A每一个集成的需求变更必须能跟踪到一个经核准的变更请求。 B变更过程应该做成文档,尽可能简单,当然首要的是有效性。 C所有需求变更必须遵循过程,按照此过程,如果一个变更需求未被采纳,则其后过程不再予以考虑。 D可以从数据库中删除或修改变更请求的原始文档 1.需求分析最终结果是产生(C ) A.项目开发计划B.可行性分析报告C.需求规格说明书D.设计说明书

软件工程试题与答案 (6)

第一章软件工程概述 一. 填空题 1. 软件的发展过程 , , , . 2. 基于软件的工作方式,软件可以划分为 , , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境 . 4. 在计算机系统中,软件是 , 而硬件是 . 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,, . 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤 , , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型 , , , , , . 14. 软件工程面临的问题有 , , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和 . 16.基于软件的功能划分可以把软件划分为 , ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则: , ,和 , 。 20.原型模型是从需求分析开始。软件开发者和用户在一起定义,说明需求,并规划出定义的区域。然后快速设计软件中对用户/客户可见部分的表示。快速设计导致了原形的建造,原形由用户/客户评估,并进一步求精。

软件工程学概述单元测试

3.总体设计单元测试 一、填空题 1.软件模块独立性的两个定性度量标准是()和()。 2.为使用流程图描述结构和程序,限制流程图有五种基本的控制结构()、()、()、until循环、多情况型选择。 3. 软件的结构化设计(SD)方法中,一般分为总体设计和详细设计两阶段,其中总体设计主要是要建立()。 4.层次结构的上一层是下一层的(),下一层是上一层的()。 5.一个模块直接调用的模块数目称为模块的(),一个模块被多少上级模块直接调用称为模块的()。 6.软件设计方法中的Jackson方法是一种()的设计方法。 7.模块的耦合性按耦合强弱程度,由弱到强依次是:非直接耦合、()、标记耦合、控制偶合、外部耦合、公共耦合、()。 8.()内聚是指模块内各成分之间并不存在有意义的联系。 二、判断题 1. 模块越多,开发成本越小。 2. 耦合是指一个模块内各个元素彼此结合的紧密程度。 3. 内聚是指一个软件结构内各个模块之间互连程度的度量。 4. 在软件设计中应该尽量设计紧密耦合的系统。 5. 内容耦合又称为病态耦合,在很多高级程序设计语言中不允许出现任何形式的内容耦合。 6. 如果一个模块内的处理元素是彼此相关的,并且以一个特定的次序执行,则这种内聚为时间内聚。 7. 概要设计阶段完成的主要文档是概要设计说明书。 8.模块的控制域应该在作用域之内。 9.用盒图和PAD图设计出来的算法必定是结构化的。 10.一个模块执行时,必须引用另一个模块的某些数据,则这个模块的独立性不强。 三、选择题 1.用()图描述的程序结构容易实现自动生成程序 A.程序流程图 B.NS盒图 C.PAD图 D.数据流图 2.()可以作为模块。 A.过程 B.子程序 C.函数 D.宏 3.下列关于模块的描述,正确的是()。(多选)

浅谈软件工程技术现状和发展趋势

浅谈软件工程技术现状和发展趋势 发表时间:2019-08-15T15:07:31.650Z 来源:《信息技术时代》2018年11期作者:董庆森[导读] 随着科学技术的不断发展,信息产业已经逐渐成为了现代化产业中不可或缺的重要一环,信息产业在发展的过程中不断与传统行业进行交互与发展,促进了传统行业的变革与发展也为当前的经济发展注入了新的活力。(郑州工商学院工学院,河南省郑州市 450000) 摘要:随着科学技术的不断发展,信息产业已经逐渐成为了现代化产业中不可或缺的重要一环,信息产业在发展的过程中不断与传统行业进行交互与发展,促进了传统行业的变革与发展也为当前的经济发展注入了新的活力。软件工程作为信息产业的重要支柱学科,其随着信息产业的发展也迎来了发展的黄金时期,软件工程凭借其在数字信息时代的重要意义,也成为了当前信息产业中不可缺少的重要学科。本文将对软件工程技术的发展现状进行分析就技术未来的发展趋势进行简要的判断。关键词:软件工程技术现状;发展趋势 一、引言 信息产业的发展极大的改变了传统行业的发展面貌也使得现代化产业呈现出新的发展局面,软件工程作为信息产业中的重要基础学科,其在计算机学科领域有着十分重要的作用。随着经济社会的不断发展,信息产业还有着广泛的发展前景,软件工程顺应着信息产业的发展趋势也将迎来进一步的创新和提升,因此对于软件工程技术的发展现状和发展趋势进行分析判断有着十分重要的价值和意义。 二、软件工程概述 软件工程作为一门利用工程建设的手段来对软件进行分析维护的学科,其在学科内容上包括有软件的开发工具、程序设计语言以及数据库的内容,随着信息技术在人们生活中应用的越来越广泛,软件工程也在诸多领域得到了施展和应用,随着计算机学科领域的不断丰富与拓展软件工程也逐渐转变为计算机领域的一门重要独立学科。软件在种类和内容上十分丰富其一般包括有操作系统、数据库、社交软件以及游戏软件等,这些软件被广泛应用于传统工业、金融行业以及人们的日常生活当中,软件的不断丰富与拓展极大的改变了人们的日常生活,为人们的工作学习提供了诸多便利,对促进社会经济的发展与进步,改善人们的生活质量有着十分积极的影响。通常对软件质量的评价标准上往往会根据软件自身的实用性、安全性以及功能性等作为质量评判的重要依据。 三、软件工程技术发展现状 从20世纪末开始我国软件行业就呈现出良好的发展态势,自21世纪以来我国软件业务盈利更是以超过10%的增长速度逐年递增,而软件外包营收更是一度超过了80%的增长速度。软件产业有着良好的市场发展前景和广阔的市场空间,国家方面更是出台了一系列的政策来鼓励软件工程技术的发展。就目前而言,软件工程技术良好的发展前景具体表现为:软件工程技术人员有着良好的就业环境和就业形势。随着信息行业发展的不断增速,越来越多的互联网信息产业开始呈现出跨越式的扩增态势,随着信息产业发展规模都不断扩大,对于软件工程专业人才的需求也在逐年提升。同时相比传统行业,软件工程技术人员有着较为良好的工作环境和薪资待遇。 软件工程技术人员有着较为广泛的就业方向。软件工程学科对于从业人员有着较为严格的专业技能水平要求,这是由于软件工程在技术上包括了软件研发、测试以及应用等一系列内容,正是由于软件工程的复杂性和高要求性也使得软件工程的专业性人才有着较为广泛的就业渠道,随着信息化时代的到来,无论是互联网企业还是金融企业和政府部门都急需软件工程领域的专业性人才,软件开发和性能维护已经成为了当前现代化企业经营发展的必然趋势,因此一旦掌握了软件工程专业知识技能就能够拥有十分广阔的就业方向。 软件工程技术人员待遇丰厚。近年来随着软件技术人才的短缺,使得软件工程技术人员更容易受到企业的青睐和追求,在这样的发展背景下软件工程从业者往往能够获取更高的薪资待遇水平。 四、软件工程技术发展趋势 软件工程技术全球化。随着经济全球化进程的不断加快,软件工程技术全球化已成为了未来发展的重要趋势,软件工程凭借其专业技能上的广泛性和共通性,期待工程技术上的发展不仅仅局限于某一个地区或者国家,而是需要结合全球软件发展交互的共同性逐渐促使软件工程发展更为成熟。全球化的软件工程发展趋势符合当前经济发展的重要趋势,各国之间通过实践软件系统框架网络的建设,实现全球软件交互和通力协作,在全球化的软件工程概念下,软件工程的发展能够吸取不同地区和国家的先进经验,从而构建出更加符合人们需求的软件产品。 软件工程技术开放性。开放计算式当前软件工程技术发展的必然趋势和未来方向,通过开放计算能够提升企业之间软件开发研究的效率,通过实现企业软件的交互应用,能够简化未来软件工程在软件开发上的投资消耗,提升软件工程开发的灵活性和简易程度。在软件工程技术开放性的发展过程中需要个国家最先进的软件开发技术经验实现共享,以此来作为后续软件开发和投资的重要关键技术保障。 软件工程技术模板化。随着信息化时代的到来软件市场的竞争也不断加剧,面对日益复杂的软件开发和维护环境,为了能够在激烈的市场竞争中占得先机提升软件开发和维护的效率,企业需要加强其在业务能力上的灵活性通过以模板化的思维来提升企业在软件开发运用上的效率。模板化思维在企业经营发展中的应用能够有效的帮助企业对现有的软件实行分解组装,结合当前的软件系统根据不同的软件资源需求针对企业的业务来进行更加灵活的变动,使得软件工程技术的发展更加符合企业的利益。 五、结语 计算机技术的迅速发展也使得软件工程技术得到了进一步的提升,软件工程技术在发展的过程中不断向全球化、开放性以及模板化迈进,在这一过程中必须严格恪守软件开发所需要遵循的相关规律,结合软件工程技术的发展特征不断深入研究,共同促进我国软件工程技术的发展与提升。 参考文献 [1]刘宇洋.浅析软件工程的发展趋势[J].科学技术创新,2017(1):180-180. [2]施少杰.浅析软件工程技术的发展[J].明日风尚,2017(14):299-299. [3]冯勃达.浅谈软件工程标准化的现状[J].中国新通信,2017(20):52.

软件工程需求分析文档.doc

软件工程 需求分析文档 项目名称:人事工资管理系统 概述(背景简介): 随着我国市场经济的快速发展,人事工资管理系统在企业的日常管理中发挥着越来越重要的作用。人事工资管理系统可以进行档案管理、奖罚管理和工资管理等,方便处理企业内部员工的相关工资信息。另外,为了更方便地查看员工工资信息,还可以通过水晶报表对工资信息进行打印。 系统分析(需求分析): 通过调查,要求本系统具有以下功能。

●良好的人机界面。 ●方便的添加和修改数据功能。 ●方便的数据查询。 ●方便的数据打印功能。 ●在相应的窗体中,可方便地删除数据。 ●数据计算自动完成,尽量减少人工干预。 总体设计: 项目规划 人事工资管理系统主要由人事管理、工资管理、用户管理和退出系统等模块组成,具体规划如下。 ●人事管理模块。该模块主要用于实现档案管理、 奖罚管理、调动管理和考评管理的功能。 ●工资管理。该模块主要用于实现考勤津贴和工资 总结的功能。

●系统管理。该模块主要用于实现部门管理和数据 备份的功能。 ●用户管理。该模块主要用于实现操作员管理,修 改口令和更改操作员的功能。 ●退出系统。该模块主要用于实现系统推出的功 能。 系统业务流程分析: 人事工资管理系统的业务流程图如下。

系统功能结构: 人事工资管理系统功能结构图如下。 系统设计: 设计目标 本系统属于中小型的数据库管理系统,可以对中小型企业人事工资进行有效管理。通过本系统可以实现一下目标: 灵活地录入数据,使信息传递更快捷;

●系统采用人机交互方式,界面美观友好,信息查询 灵活,数据存储安全可靠; ●实现员工奖罚信息管理; ●实现员工工资自动计算; ●实现员工考评调动管理; ●对用户输入的数据,进行严格的数据检验,尽可能 避免人为错误; ●系统最大限度地实现了易维护性和易操作性。 开发及运行环境 ●系统开发平台:Microsoft Visual Studio2005。 ●系统开发语言:C#。 ●数据库管理系统软件:SQL Server 2000。 ●运行平台:Windows XP(SP2)/ Windows 2000 (SP4)。 ●运行环境:https://www.doczj.com/doc/c116904971.html, Framework SDK v2.0。 ●分辨率:最佳效果1024*768像素。

软件工程发展史

软件工程发展史及发展趋势 一:软件工程定义 软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作和生活效率 二:软件工程的发展历史 随着人类的发展,计算机作为第三次科技革命的主要代表产品,极大的推动了人类社会发展。与此同时,软件作为现代计算机的重要支撑部分,伴随着计算机的发展不断发展。 早在20世纪50年代,有关软件的编程语言就已经出现,但是关于软件工程这个概念却要远远晚于软件发展。据资料显示,软件工程这个概念最早出现在20世纪60年代末期。在软件工程发展的半个多世纪内,软件工程所使用的程序语言不断发展,而且有关于软件四六七零零四零二二号码论文写作工程的模型不断发展,从最早的瀑布模型到现在光为人所知的云计算,软件工程几乎每隔5-10年就会获得一次突破性发展,而且有关软件语言从最早的面向程序结构转向为面向对象,极大的提升了软件编程的效率。目前,软件工程经过50多年的发展,已经深入到社会生活的各个层面,可以说,现代社会生活,几乎在每一个方面都涉及到软件工程。 1.软件工程开发过程 软件是由计算机程序和程序设计的概念发展演化而来的,是在程序和程序设计发展到一定规模并且逐步商品化的过程中形成的。软件开发经历了程序设计阶段、软件设计阶段和软件工程阶段的演变过程。 程序设计阶段 程序设计阶段出现在1946年~1955年。此阶段的特点是:尚无软件的概念,程序设计主要围绕硬件进行开发,规模很小,工具简单,无明确分工(开发者和用户),程序设计追求节省空间和编程技巧,无文档资料(除程序清单外),主要用于科学计算。 软件设计阶段 软件设计阶段出现在1956年~1970年。此阶段的特点是:硬件环境相对稳定,出现了“软件作坊”的开发组织形式。开始广泛使用产品软件(可购买),从而建立了软件的概念。随着计算机技术的发展和计算机应用的日益普及,软件系统的规模越来越庞大,高级编程语言层出不穷,应用领域不断拓宽,开发者和用户有了明确的分工,社会对软件的需求量剧增。但软件开发技术没有重大突破,软件产品的质量不高,生产效率低下,从而导致了“软件危机”的产生。 软件工程阶段 自1970年起,软件开发进入了软件工程阶段。由于“软件危机”的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法。从此软件产生进入了软件工程时代。此阶段的特定是:硬件已向巨型化、微型化、网络化和智能化四个方向发展,数据库技术已成熟并广泛应用,第三代、第四代语言出现;第一代软件技术:结构化程序设计在数值计算领域取得优异成绩;第二代软件技术:软件测试技术、方法、原理用于软件生产过程;第三代软件技术:处理需求定义技术用于软件需求分析和描述。 2.软件工程的各个阶段

软件需求工程

第1章 软件需求工程概述 IEEE 关于软件需求的定义 1) 用户解决问题或达到目标所需的条件或能力;(用户的角度 ) 2) 系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条 件或能力。(软件系统的角度 ) 软件需求的分类 1) 目标需求; 2) 业务需求; 3) 功能需求; 4) 性能需求; 5) 约束与限制。 6) 软件需求间的层次关系 需求规格说明 需求规格说明是软件所应满足的全部需求,并可以文档的方式完整和精确陈述这些需求。 一个好的需求规格说明应该具有的特征 1) 完整性。 2) 正确性。 3) 可行性。 4) 必要性。 5) 划分优先级。 6) 无二义性。 7) 可验证性。 第2章 软件工程与需求工程 软件开发过程模型 1) 瀑布式模型 2) 快速原型模型 3) 渐增式模型

4)螺旋式模型 5)面向对象的开发模型 所谓面向对象就是应用对象、类、继承、封装、消息、对象或类之间的关系等面向对象的概念对问题进行分析和求解的软件开发技术,或者说,是以对象(类)为数据中心、对象之间的动态行为模式作为运行机制的一种问题求解方法。 软件需求工程特点 1)有一部分分析工作必须在设计之前进行,而另外一些分析工作则需与其他部 分的设计与实现工作并行地进行,因而呈现出非线性的工作方式。 2)软件系统的表达形式在整个开发模型中都是相同的,即面向对象方法中把类 及其结构作为系统的表达单元,无论哪一个阶段都以渐增的方式不断地进化或细化这些表达单元。 3)开发模型支持软件的重用。 需求工程对软件开发的影响如下: 1)需求是制定项目计划的基础。 2)需求工程所产生的最终产物——需求规格说明——是软件设计和软件实现的 基础。 3)需求规格说明也是测试工作和用户验收软件系统的依据。 4)需求规格说明也是软件维护工作的依据。 软件需求的开发和管理过程 软件需求的开发和管理过程是由导出、确认和维护软件系统需求规格说明的一系列活动组成的。 根据需求工程开发和管理过程可大致划分需求开发和需求管理两个阶段。其中需求开发主要产生正式的需求规格说明,需求管理主要是根据需求的变化对需求规格说明的内容及版本进行管理。

软件工程复习

单选填空简答思考题 1、传统的软件瀑布生命模型包括哪六个方面? 需求、分析、设计、实现、交付后维护、退役 2、传统瀑布生命模型的中交付后维护包括哪三种? 改正性维护、适应性维护、完善性维护 3、现代维护和传统维护的观点有何不同? 1)传统维护的观点是先开发后维护。 2 )现代维护的观点是无论是在软件安装前还是安装后,只要发生改正错误或需求变化时都是对软件的维护。 4、传统范型开发一个软件时常要进行哪三类计划活动? 1 )、在项目的开始,对管理需求和分析阶段进行初步计划; 2)、一旦明确知道了将要开发什么,就制定出软件项目管理计划(SPMP); 3)、在整个项目过程中,管理者需要监督SPMP的执行情况,并且注意是否有偏离计划的情况发生。 5、维护占总成本的比例关系90年代后是多少?答:75% 6、简单描述一下以下生命模型的各自特点:编码及修补模型,快速原型开发,敏捷过程,同步稳定。 7、交付产品7个月后在使用时发现了一个错误,纠正这个错误需要花费16700USD。规格说明文档中的模糊语 句导致了这个错误。估计一下,如果在分析阶段纠正了该错误需要花费多少? 3: 200或3:68 8、统一过程有哪五个基本工作流?各自的定义及基本步骤?需求流:目标是让开发组织确定客户的需求 1)、对应用领域获得一个基本的了解 2)、商业建模 3)、确定客户的需求并从客户的角度找出存在的限制条件 4)、决定概念探究的目标 分析流:目标是分析和提取需求,以获得正确开发一个软件产品和易于维护他它所必需的需求。 1)、需要来年各个独立的工作流:需求流和分析流 2)、建立软件产品的规格说明文档 3)、当客户批准了规格说明之后要进行详细计划和评估即开始软件项目管理计划设计流:目标是细化分析流的制品,直到材料处于程序员可实现的形式 1)、模块化分解 2)、为每个模块选择响应的算法和数据结构 3)、在面向对象设计中,设计小组必需详细记录他们所做的每个设计决定实现流:目标是用选择的实现语言实现目标软件产品(就是编写程序) 1)、把要实现的的模块的详细设计交给多个程序员完成 2)、各个模块的集成 测试流:目标是真正目标是寻找bug 1)、每个软件人员对开或维护的每个软件制品进行测试或再测试 2)、一旦软件人员确信一个制品是正确的,就将他交给软件质量保证小组进行独立测试 9、项目管理计划包括哪些内容? 1)、要做的工作2)、做这个工作所用的资源3)、为此付出的金钱

软件工程技术发展思路论文

软件工程技术发展思路论文 摘要:随着科学技术的快速发展,软件工程成为一门近代新兴的现代科学技术学科。 目前,软件工程技术在计算机技术中有着应用性强,涉及面广,实用性强等特点,对其发 展有着不可或缺的推动作用。软件工程具有极为重要的地位,若没有软件工程技术的发展 壮大,就没有计算机技术的蓬勃发展。计算机技术经历了许多次的重大变革,每一次都具 有其独特的一面。软件开发从最初简单的程序编写,再到为适应人们的多样化的需求。技 术人员对软件技术的深层次的研究,使软件开发技术具有功能更全面,系统更深刻的特性。如今,计算机技术朝着信息多元化,技术科技化的方面不断发展。发展的同时,面对的是 软件开发费用的不断增长,软件的生产效率却大大降低,造成了“软件危机”现象。我们 知道,现代软件工程的理论思想是以制定一套规范而统一的开发软件为基础的。通过对软 件工程技术发展历程展开一定的探索,研究软件工程技术的应用于发展。 关键词:软件工程计算机技术程序开发 1软件工程技术的概述 1.1软件开发的本质 在一定程度上,软件开发的实质主要是从“高级层面”到“低级层面”的一次转变历程。但是这一过程十分复杂,涉及到许多方面。比如有人员、技术开发、成本问题等因素 的制约,因此软件系统的开发不易且较为艰难。所以,软件工程技术的本质我们可以将其 定义为:软件工程技术涉及到程序语言、软件开发工具、设计模式、数据库等多方面,它 是按照成本的预算和进度,并在计算机理论技术以及工程管理的相关规定下,来实现用户 对软件开发及维护的需求或者是以之为研究对象的一种科学技术。 1.2对软件开发的认识和方法 时代的不同,造就了人们对于软件产业的开发过程及软件类型、项目的不同理解和认识,从最初的瀑布式到后来的螺旋式开发模型,再到如今的敏捷开发的新兴方法。可以从 中看出,软件开发过程是以软件工程为主要思想来进行探索开发的。这一过程遵循以下三 个原则:良好的组织纪律、严密的管理,各类人员的相互配合完成工作,提高软件的生产 效率,都离不开好的软件开发技术。瀑布型、原型模型,总体数据库规划模型是经许多学 者总结得出的方法步骤,这些方法步骤在随着社会自身的迅速发展,对软件技术的需求日 益增大,要求随之提高,也会因为自身的落后性及局限性,造成“软件危机”的产生。我 们不能说一款软件已经“完美无瑕”,要以发展的眼光来看待问题。不过,令人可喜的是,新的软件开发模型,计算机辅助软件工程以及软件自动生成器等思想和方法的出现,进一 步地推动了软件工程技术的发展,使软件生产更为社会化、自动化、标准化,从根本上使 得软件生产在质量上有了巨大的飞跃。

软件工程概论课后习题答案

软件工程概论郑人杰等版 第1章软件与软件工程的概念 1.1 举出你所知道的应用软件的例子。 办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。 1.2 认为“软件就是程序,软件开发就是编程序。”这种观点是否正确?为什么? 认为“软件就是程序,软件开发就是编程序。”这种观点是错误的。 首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。 1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么? 可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。 1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现: (1)对软件开发成本和进度的估计常常很不准确。 (2)用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。

(4)软件常常是不可维护的。 (5)软件通常没有适当的文档资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用 迅速普及深入的趋势。 产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。 (2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。 (3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 (4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。 (5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。 1.5 什么是软件工程? 软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 1.6 简述软件生存期由哪些主要的阶段组成,每一阶段的主要任务是什么? (1)问题定义与可行性研究:问题定义必须回答的关键问题是:“要解决的问题是什么”。 可行性研究要回答的关键问题是:“在成本和时间的限制条件下能否解决问题?是否值

浅谈软件工程技术发展_0

浅谈软件工程技术发展 本文把互联网的问世作为基础,从发展历程、基本特征、软件工程技术的研究内容以及软件业前景这五个方面展开,简单描述了软件工程技术的开发、研究内容与前景。希望通过本文对软件工程技术发展的介绍,可以使初学者对软件工程技术有一个较为整体的了解,使人们开始重新看待这门新兴的技术,并将软件工程技术的应用范围逐步扩大。 标签:软件工程技术基本特征发展 引言 三十多年前,软件工程就开始作为一门单独的技术存在于计算机领域,经过一定程度的发展,软件工程技术得到了广泛的应用,很多高级语言在该技术下也获得了发展。然而,在计算机技术高速发展的时期,一些质量低劣的软件开始逐步被淘汰,软件市场在追求高质量的同时,也开始面临资源缺乏的难题。针对该种情况,软件工程的研究者通过分析讨论,明确了“软件工程”的定义,并对软件进行了优化设计。此后,软件工程技术就慢慢开始发展起来。 一、软件工程技术的发展历程 近些年,计算机软件工程技术慢慢开始活跃起来,其规模也已经大大超过了预期的目标。自上世纪六十年代以来,软件工程技术在许多高级语言的帮助下开发了一种结构化的编程技术,并在之后的十一年内不断帮助人们开发软件。这之后的几年中,越来越多的人开始学习计算机辅助软件开发技术,并在软件工程领域取得了很大的进步。上世纪七十年代,计算机软件工程技术进入了飞速发展的时期,到上世纪九十年代,软件工程技术已经发展到优化性能稳定的时期,人们开始考虑软件使用的对象和方法,并发明了一些多功能的复用软件,如Windows 系统软件。 任何事物的发展都有一定的规律可循,软件的发展也不例外。现代社会科学技术和文明发展的速度越快,软件工程技术的发展也会随之加快。最明显的是软件的开发消除了硬件之间的不同特性,而且随着社会经济的发展,规避硬件不同特性的操作系统的功能将会持续提高。 二、软件工程技术的研究内容及基本特征 1.软件工程技术的研究内容 软件工程技术通过研究“低层概念”与“高层概念”之间的映射关系,从而解决“低层处理逻辑”与“高级处理逻辑”之间的问题。但是对于开发一个大型软件项目来说,处理两者的关系是具有难度的,工作人员需要进行全方位、多角度考虑,如人员的优化配置,资金的支出,项目进度的调整等,才能整体把握项目的进程。

软件工程的发展历史

1.世界上第一个计算机程序员 第一个写软件的人是Ada(Augusta Ada Lovelace),在1860年代她尝试为Babbage(Charles Babbage)的机械式计算机写软件。尽管他们的努力失败了,但他们的名字永远载入了计算机发展的史册。她的父亲就是那个狂热的,不趋炎附势的激进诗人和冒险家拜伦。她本身也是一个光彩照人的人物—数学尖子和某种程度上的赌徒。她最重要的贡献来自于与发明家Charles Babbage的合作,从而设计出世界上首批大型计算机—Difference Engine和Analytical Engine。她甚至认为如果有正确的指令,Babbage的机器可以用来作曲,这是一个多么疯狂的想法,因为当时大多数人只把它看成是一个机械化算盘,而她却有渲染力和感召力来传播她的思想。 2.现代计算机软件的出现 20世纪50年代,软件伴随着第一台电子计算机的问世诞生了。以写软件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师。1960年代美国大学里开始出现授予计算机专业的学位,教人们写软件。 在计算机系统发展的初期,硬件通常用来执行一个单一的程序,而这个程序又是为一个特定的目的而编制的。早期当通用硬件成为平常事情的时候,软件的通用性却是很有限的。大多数软件是由使用该软件的个人或机构研制的,软件往往带有强烈的个人色彩。早期的软件开发也没有什么系统的方法可以遵循,软件设计是在某个人的头脑中完成的一个隐藏的过程。而且,除了源代码往往没有软件说明书等文档。 3.软件危机 从60年代中期到70年代中期是计算机系统发展的第二个时期,在这一时期软件开始作为一种产品被广泛使用,出现了“软件作坊”专职应别人的需求写软件。这一软件开发的方法基本上仍然沿用早期的个体化软件开发方式,但软件的数量急剧膨胀,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜。“软件危机”就这样开始了! “软件危机”使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确看法。早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧。现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充。 1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(software crisis)这个名词。概括来说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。 4.软件工程的提出

软件工程概述

软件工程概述 王立福 概念:应需而生 软件工程是一类工程。工程是将理论和知识应用于实践的科学。就软件工程而言,它借鉴了传统工程的原则和方法,以求高效地开发高质量软件。其中应用了计算机科学、数学和管理科学。计算机科学和数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量和成本的管理。 软件工程这一概念,主要是针对20世纪60年代“软件危机”而提出的。它首次出现在1968年NATO (北大西洋公约组织)会议上。自这一概念提出以来,围绕软件项目,开展了有关开发模型、方法以及支持工具的研究。其主要成果有:提出了瀑布模型,开发了一些结构化程序设计语言(例如PASCAL语言,Ada语言)、结构化方法等。并且围绕项目管理提出了费用估算、文档复审等方法和工具。综观60年代末至80年代初,其主要特征是,前期着重研究系统实现技术,后期开始强调开发管理和软件质量。 70年代初,自“软件工厂”这一概念提出以来,主要围绕软件过程以及软件复用,开展了有关软件生产技术和软件生产管理的研究与实践。其主要成果有:提出了应用广泛的面向对象语言以及相关的面向对象方法,大力开展了计算机辅助软件工程的研究与实践。尤其是近几年来,针对软件复用及软件生产,软件构件技术以及软件质量控制技术、质量保证技术得到了广泛的应用。目前各个软件企业都十分重视资质认证,并想通过这些工作进行企业管理和技术的提升。软件工程所涉及的要素可概括如下: 根据这一框架,可以看出:软件工程涉及了软件工程的目标、软件工程原则和软件工程活动。 目标:我的眼里只有“产品” 软件工程的主要目标是:生产具有正确性、可用性以及开销合宜的产品。正确性意指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜性是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多问题有待解决,它们形成了对过程、过程模型及工程方法选取的约束。 软件工程活动是“生产一个最终满足需求且达到工程目标的软件产品所需要的步骤”。主要包括需求、设计、实现、确认以及支持等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件体系结构,包括子系统、模块以及相关层次的说明、每一模块接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。支持活动包括修改和完善。伴随以上活动,还有管理过程、支持过程、培训过程等。 框架:四项基本原则是基石 软件工程围绕工程设计、工程支持以及工程管理,提出了以下四项基本原则: 第一,选取适宜开发范型。该原则与系统设计有关。在系统设计中,软件需求、硬件需求以及其他因素之间是相互制约、相互影响的,经常需要权衡。因此,必须认识需求定义的易变性,采用适宜的开发范型予以控制,以保证软件产品满足用户的要求。 第二,采用合适的设计方法。在软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。合适的设计方法有助于这些特征的实现,以达到软件工程的目标。 第三,提供高质量的工程支持。“工欲善其事,必先利其器”。在软件工程中,软件工具与环境对软件过程的支持颇为重要。软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。

软件需求工程(最终版)

仲恺农业工程学院 软件需求工程 题目:图书管理系统需求分析 第2小组成员:刘艺(组长)、连智贵、谭天信、 王伟坚、甘旭、彭春惠 小组成员分工情况: 刘艺(负责查询、登录、愿景、各个模块的用例规约、 综合文档) 连智贵(负责办证、补证、注销模块) 谭天信(负责需求分析、入库、出库、采购模块、总 结) 王伟坚(负责系统的概述,包括背景跟意义) 甘旭、(负责借书、续借、预约模块、总体修改) 彭春惠(负责还书、自助借书、自助还书模块、word 排版)

目录

1 概述 1.1 背景 随着人们生活水平的日益提高,人们对文化的需求也越来越大。在人们的业余生活中,越来越多的人乐于享受文字给生活带来的乐趣。而图书也是学生的学习过程中必不可少的。本系统就是为了更好的管理好图书馆信息而设计的。从而实现图书馆的信息化管理。 众所周知, 图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。 目前普遍高校现状: 管理信息系统结构不完善,图书信息管理系统一般包括6个子模块,但我国大多数的高校图书馆这些子模块并不健全,基本上只有图书馆业务子模块,其他的子模块并没有应用到,致使图书馆信息系统强大的功能不能完全发挥出来.图书

相关主题
文本预览
相关文档 最新文档