软件工程导论1-3章总结汇总

软件工程导论1-3章总结汇总
软件工程导论1-3章总结汇总

生命周期方法:

生命周期法采用介于形式语言和自然语言之间的描述方式,通过一套分层的数据流程图,附以数据字典、小说明等工具来描述系统。

生命周期法的基本思想

为保证系统开发的顺利进行,生命周期法强调遵循以下几个基本原则:(一)面向用户的观点

信息系统的目的是为管理人员提供管理和决策信息,能否满足用户的信息需求,是系统成败的重要标志。实践证明,用户的参与,尤其是领导的介入,是系统成功的关键。在整个研制过程中,系统研制人员应该始终与用户保持联系,从调查研究入手,充分理解用户的信息需求和业务活动,不断地让用户了解工作进展情况,校准工作方向。

(二)严格区分工作阶段

生命周期法强调按时间顺序、工作内容,将系统开发划分为几个工作阶段,如系统规划阶段、系统分析阶段、系统设计阶段、系统实施阶段以及系统运行与维护阶段等等,各个阶段的任务是明确的,过程是循序渐进的。对于复杂的系统,要强调和加强前期工作,强调分析设计的深入细致,以避免后期返工,造成投资耗费和负社会效益。

(三)自顶向下地完成系统的研制工作

在系统分析阶段,从全局出发,对企业进行周密的调查分析,自上而下,从粗到精,由表及里,逐层、逐级进行业务过程分解,最后进行逆向综合和抽象,完成新系统模型的构造。在系统设计阶段,用划分子系统的方法,把系统逐层分解到详细模块,完成设计方案。在实施阶段,从实现系统的框架开始,自上而下实现系统功能。程序设计过程中同样采用结构化设计的方法,自顶向下,逐步求精。

(四)充分考虑变化的情况

组织的经营环境在变化,用户的信息需求也在变化,他们对信息系统的要求会自然越来越高。生命周期法充分考虑了这种变化,在系统设计中,把系统的可变更性放在了首位,运用模块结构方式来组织系统,使系统的灵活性和可变更性得以充分体现。

(五)工作成果文档化、标准化

系统开发是一项复杂的系统工程,参加人员多,经历时间长。生命周期法用文档的标准化保证开发工作的连续性,在每个开发阶段,都要用文字、图表表达该阶段的成果,资料格式标准化、格式化。这些文档资料在开发过程中是开发人员和用户交流思想的工具和媒介,在开发完成后,成为系统维护的依据。因此,要求文档资料简洁明确,无二义性,既便于研制人员阅读,又便于用户理解。生命周期法的特点

生命周期法很适合于开发大型的事务处理系统、大型的管理信息系统和可靠性要求很高的复杂应用系统。也是软件的社会化大生产的有效方法。

生命周期法具有以下特点:

1、强调计划性,排除不确定性。生命周期法通常假定系统的应用需求是预先描述清楚的,排除所有的不确定性因素。

2、强调分工,严格区分系统开发的各个阶段中的任务和要求,目的明确,任务清楚。

3.强调标准化和规范化,排除个性化和自由发挥。规范、齐全的文档,严格的审定记录和有序的过程调度。

生命周期法的缺点

生命周期法是最成熟、应用最广泛的一种工程化方法,它也有不足和局限性。(一)系统需求的不确定性:

1.在系统开发的起始阶段,用户对系统的目的和功能不了解,他们无法准确地描述自己对信息的需求。

2.系统分析人员和用户无法预测组织和系统的未来,按照目前状况描述的系统需求,可靠性可能很差。

3.用户和系统分析人员对信息需求的理解上会有偏差和错误,造成信息需求的描述不准确。

4、组织管理体制的变更,导致信息需求和工作过程发生变化。

(二)开发周期长

一个规模较大的系统,其开发过程往往需要一至三年,这样一方面使用户在较长时间内不能得到一个可实际运行的物理系统,使用户有可望而不可及的焦虑;另一方面也难以适应环境变化,因为在开发过程中,信息需求可能已经发生了变化,系统尚未开发出来可能就已经过期了。

(三)文档化工作复杂:

生命周期法在开发的各个阶段中文档很多,工作烦琐,管理费用很高。(三)缺乏灵活性:

开发中途修改方案的困难很大,涉及到的问题很复杂。

*数据流程图的画法

一般地说,画DFD应遵循“由外向内,自顶向下”原则进行。由外向内是指:先标定系统范围。这个范围就是输入输出之间的部分,该部分的细节暂不考虑。有时最外部难以表示出来全部数据流,但这不要紧,因为无法表示的内部数据流随着设计过程的深入,逐步会分解、画出并填补上去。描述系统内部数据流,一般从输入端开始向输出端推进,每当经过使数据流的组成或数值发生变化的地方,就用一个“加工”将其连接起来,这个“加工”正是实现这一数据变化的。注意,不要把相互无关的数据画成一个数据流,也不要把作为一个处理单位的数据画成两个数据流;如果牵涉到文件,则应表示出“文件”与“加工”的关系(读或写)。

画数据流程图时注意以下两点:

1、应该遵照业务处理过程(即前边的结果),将系统调查的资料和整理数据结合起来,在绘制的过程中不断地与相应的调查记录、数据记录对照,以便能及时发现诸如数据不匹配,流通渠道不畅,处理过程不合理之类的问题。

2、由于实际数据处理过程常常比较繁杂,故应该按照系统的观点,自顶向下地分层展开绘制,即先将比较繁杂的处理过程(不管有多大)当成一个整体处理块来看待(俗称“黑匣子”);然后绘出周围实体与这个整体块的数据联系过程;然后再进一步将这个块展开,如果内部还涉及到若干个比较复杂的数据处理部分的话,又将这些部分分别视为几个小“黑匣子”,同样,先不管其内部,只分析它们之间的数据联系。这样反复下去,依此类推,直至最终搞清了所有问题为止,也有人将这个过程比喻为使黑匣子逐渐变“灰”,直到“半透明”和“完全透明”的分析过程。

3、数据流程图举例

我们在前边示例中,调查分析该企业财务科数据流程、业务流程及其组织结

构图,然后根据其组织结构图(图3.9)从上至下展开, 画出各自的数据流程图。如图3.14,然后将3.14分解细化为图3.15。在图3.15的基础上,画出第一层对应的数据流程图,如图3.16(a)-(d)。图3.15的每个处理对应图3.16中的一个数据流程图。

图3.13 结构化分析方法的示意图

图3.14 会计核算顶层图

图3.15 会计核算零层图

结构化分析示例 4.一层图(1)

部门资料

图3.16(a)材料核算

结构化分析示例 4.一层图(2)

考核标准

图3.16(b)工资核算

结构化分析示例 4.一层图(3)

燃料汇总表

3.16(c)成本核算

结构化分析示例 4.一层图(4)

成本历史文件

财务标准文件

3.16(d)综合分析

*画数据流程图的注意事项

1.数据守恒

数据守恒是指输入数据与输出数据匹配。数据不守恒有两种情况。一种是某个处理过程用以产生输出的数据,没有输入给这个处理过程,这肯定是遗漏了某些数据流。另一种是某些输入在处理过程中没有被使用。

2.父子平衡

逐步扩展数据流程图,是对上层图(父图)中某些处理框加以分解,下层图(子图)是上层图中某个处理框的“放大”。父图中某一处理框的输入,输出数据流必须出现在相应的子图中,否则就会出现父图与子图的不平衡,父图与子图的关系,类似于全国地图与各省地图的关系。在全国地图上标出的主要的铁路、河流,在各省地图上则标得更详细,除了有全国地图上与该省相关的铁路、河流之外,还有一些次要的铁路、公路、河流等,如在上图3.15零层图中的材料核算共有三个入口,表现在图3.16(a)只有三个入口,上下表示是一致的。

3.均匀分解

如果在一张数据流程图中,某些处理已是基本加工,而另一些却还要进一步分解三四层,这样的分解就不均匀。不均匀的分解不易被理解,因为其中某些部分描述的是细节,而其他部分描述的是较高层的功能。遇到这种情况,应重新考虑分解,努力避免特别不均匀的分解。

4.适当命名

数据流程图中各种成分的命名与易解性有直接关系,所以应注意命名适当。特别是处理框的命名应能准确地表达其功能,理想的命名由一个具体的动词加一个具体的名词组成,在下层尤其应该如此,例如“工资计算”、“材料分配”等。

画出数据流程图,要验证其正确性。对一个大型系统不可能一开始就十全十美的,要经过逐步去粗取精,去伪存真的改进过程。

(四)汇总数据流程图

通过对数据流程分析,揭示出现行系统具有四个主要处理:成本核算、材料核算、工资核算和综合分析。我们从上至下对数据流程图进行汇总,确定该系统的逻辑模型如图3.17。

在数据流程图中显示出系统当前使用的数据存储有:部门资料、考核标准、产品明细表、工时比例标准、工资文件、其它计算标准、成本历史文件、财务标准文件。这些数据存储文件的内涵应在数据字典中进行详细描述。

三、数据字典

DFD表达了数据与处理的关系,数据字典(data dictionary,,DD)则是对系统中的数据的详尽描述,它提供对数据库数据描述的集中管理,目的是对收集到的数据进行标准化、统一化,有统一的名称、格式和含义。数据字典除保存数据名、类型、长度、精度等有关信息外,还包括数据流向的描述和加工的描述,显然数据字典可供设计者和用户双方参照使用,它为系统设计人员提供了一个有力的工具。

单独的DFD和单独DD都没有任何意义,只有两者结合在一起,加上必要的说明才能构成“系统说明书”。DD产生于数据流图,是对数据流图中的数据流、数据项、文件和加工等描述的产物。

(一)概述

系统分析中所使用的数据字典,主要用来描述数据流程图中的数据流、数据存储、处理过程和外部实体。数据字典把数据的最小组成单位看成是数据项(数据元素),若干个数据项可以组成一个数据结构(组合数据项)。数据结构是一个递归概念,即数据结构的成分也可以是数据结构。数据字典通过数据项和数据结构来描写数据流,数据的存储的属性,它们之间的关系如3.18所示

图3.18数据结构与数据项

数据项组成数据结构,数据结构组成数据流和数据存储。

建立数据字典的工作量很大,相当繁琐,但这是一项必不可少的工作。数据字典在系统开发中具有十分重要的意义,不仅在系统分析阶段,而且在整个研制过程中以及今后系统运行中都要使用它。

数据字典可以用人工方式建立,事先印好表格,填好后接一定顺序排列,就是一本字典。也可以结合手工的整理,存贮在计算机内,这样使用、维护都比较方便。

(二)数据字典的内容与示例

数据字典中所包括的项目有六类:数据项、数据结构、数据流、处理逻辑(加工)、数据存储文件、外部实体。不同类型的项目有不同的属性需要描述,现分

别说明如下:

1、数据项

数据项也称数据元素,是具有独立逻辑含义的最小数据单位,即逻辑上不可再分的数据单位,如学号、姓名等。对每个数据项的定义包括以下内容:

①数据项的名称、编号、别名和简述;

②数据项的数值范围,如“工资”从200元到500元;

③数据项的长度,如“姓名”可以用四个汉字,即八个字节组成。

为了使用方便,可将多个数据项描述在同一表格内,表3.8数据项描述在同一表格内。

表3.8 数据项定义

2、数据结构

由若干个数据项构成的数据组合称为数据结构,它描述了某些数据项之间的关系。一个数据结构可以由若干个数据项组成;也可以由若干个数据结构组成;还可以由若干个数据项和数据结构组成。

例如,“产品明细表”这个数据结构可表示为:

产品明细表=产品编号+产品名称+产品型号+产品规格+计量单位+单

在上述例子中,数据结构全部由数据项组成,称为简单的数据结构,在管理信息系统中,由于管理对象的复杂性,嵌套的数据结构是经常出现的。

例如,“销售合同”这个数据结构可表示为:

销售合同=合同编号+订货日期+用户+产品+订货数量+交货日期

在销售合同这个数据结构中,除了合同编号、订货日期、订货数量、交货日期这些数据项外,还包含了“产品”和“用户”两个数据结构。因此,我们称销售合同是一个嵌套的数据结构。在数据字典中,对数据结构的定义包括以下几项内容:

①数据结构的名称和编号;

②简述;

③数据结构的组成

如果是一个简单的数据结构,只要列出它所包含的数据项就可以了;如果是一个嵌套的数据结构,需列出它所包含的数据结构名称,因为这些数据结构同样在数据字典中有定义。例表3.9数据结构定义。

表3.9数据结构定义

3、数据流

数据流是表明系统中数据的逻辑流向,该数据可以是数据项或数据结构。数据流的定义包括以下内容:

①数据流的名称及编号;

②简述;

③数据流的来源;

④数据流的去向;

⑤数据流的组成;

⑥数据流的流通量;

⑦高峰期流通量。

例:表3.10数据流定义表3.10数据流定义

4、处理逻辑(加工)

处理逻辑的定义仅对流程图中最低层的处理逻辑加以说明,内容包括:处理逻辑名称及编号、输入数据、输出数据、处理频率、处理逻辑。

例:图3.19是图3.16(b)汇总考核部分的最低层的一个数据流程图,我们对它的处理过程描述如表3.11 。

考核标准

图3.19

表3.11处理过程描述

5、数据存储文件

数据存储文件是数据流动的暂时或永久保存的地方。在数据字典中,数据存储的内容通常由数据存储的编号、名称、简述、组成、关键字和相关的处理等组成。

例:对示例中的部分文件进行数据存储定义。

表3.12数据存储定义表

6、外部实体

在数据字典中,外部实体的定义包括:外部实体的名称、编号、简述以及相关数据流的输入和输出。

例:表3.13外部实体的定义

表3.13外部实体的定义

数据字典是系统分析阶段的重要文档,它清楚地定义和详细地解释了数据流程图上未能详细表达的内容。随着数据流程图自顶向下逐层扩展,数据字典也逐步充实与完善。数据字典在建立过程中不仅反映了数据流程图中诸元素的关联关系,同时还必须保证数据之间的一致性和完整性,即名称的统一性,编号的唯一

性,数据来源与去向的相应关系。通过数据字典,能对数据流程图中各要素的关系作合理性与统一性的检查;能有效地对资源进行控制和集中。数据字典是在需求分析阶段建立,并在系统设计过程中不断修改、充实和完善。

四、加工说明

我们知道,数据流程图是分层的,上层的数据流程图表达了系统的主要逻辑功能,随着自顶向下逐层展开,表达的功能越来越具体,直到最底层的数据流程图,系统的全部逻辑功能被详细地表达出来。因此,系统的最小功能单元就是最底层数据流程图中每个处理加工,称为基本处理(功能单元),对每个基本处理(处理逻辑)已在数据字典中作了定义,在定义中除了指出其特征外,还描述了每个加工所具有的处理功能,但是这种描述毕竟是比较粗糙的,不能充分作为系统设计员和程序员工作的依据,因而有必要采用一定的工具进行更为详细的描述。

对基本处理的描述称为“小说明“或”基本说明”,它是从另一个侧面刻划了系统的局部和细节,说明加工的触发条件,出错处理、优先级等问题,对数据流程图作了必要的补充。数据流程图,数据字典和加工说明三者构成了系统的逻辑模型。

理想的基本说明应该容易被开发者和用户理解,又要严格、精确,目前人们正在研究具有这种特点的形式语言,但还没有理想的结果,结构化方法在精确性和可理解性中间考虑了折中的方案,用结构化语言,判定表和判定树三种半形式化的方式编写基本说明。下面分别介绍这三种工具。

(一)结构化语言

与程序设计语言的结构化相似,结构化语言也只允许三种基本逻辑结构:顺序结构、选择结构和循环结构。结构化语言与程序设计语言的差别在于结构化语言没有严格的语法规定,与自然语言的最大不同是它只使用极有限的词汇和语句,简洁而明确地表达功能单元的逻辑功能。结构化语言使用的语句只允许有以下三类:

1、祈使语句

祈使语句指出要做什么事情,包括一个动词和一个宾语。动词指出要执行的功能,宾语表示动作的对象,作宾语的名词在数据字典中已经进行了定义。

例如:“计算金额”、“获得库存量”、“计算实发工资”等,祈使语句应尽量简短、明了。

2、判断语句

判断语句类似于结构程序设计中的条件语句,其一般形式是:

如果条件1

则动作A

否则(条件不成立)

动作B

判断语句中的“如果”、“否则”要成对出现;动作A和动作B可以是一组祈使语句,也可以是判断语句或循环语句,从而形成各种嵌套结构,也允许出现多重嵌套;在多重嵌套的情况下,相应层次的保留字上下对齐,层次清楚,便于阅读。

例如:本节示例中所述的公司给一次购货在100万元以上的客户以不同折扣率。如果这样的客户最近3个月无欠款,则折扣率为15‰;虽然有欠款但与公司已经有10年以上的贸易关系,则折扣率为10‰,否则折扣率为5‰,公司的折扣政策用判断语句表达如下:

如果购货额在100万元以上

则如果最近3个月无欠款

则折扣率为15‰

否则如果与公司交易10年以上

则折扣率为10‰

否则折扣率为5‰

否则无折扣

3、循环语句

循环语句是指在某种条件下连续执行相同的动作,直到这个条件不成立为止。

例如:计算每户的房租、水电费,不仅要计算每一户应交的费用,而且还要计算所有住户所交房费的总和,其循环语句如下:

对每一户

计算房租、水电费

将房租、水电费加到总计中

在上述循环语句中,“计算房租水电费”已定义。

(二)判定树

当某个动作的执行不是只依赖于一个条件,而是和若干条件相关,如果仍用结构化语言表达,可能要使用多层次判断语句,就会比较复杂,不能一目了然。在这种情况下用判断树更为合适,判断树是用来表示逻辑判断问题的一种工具。它用“树”来表达不同条件下的不同处理,比用语言的方式更为直观。

判断树的左边为树根,从左向右依次排列各种条件,左边的条件比右边的优先考虑,根据每个条件的取值不同,树可以产生很多分支,各分支的最左端(即树梢)即为不同的条件取值状态下采取的行动(也称策略)。前面提到关于折扣率的规定就涉及三个条件:购货款、最近3个月有无欠款、贸易时间是否超过10年。这个规定用判定树可表示如下:

购货款欠款交易时间折扣率

无15‰

100万元以上10年以上10‰

折扣政策不足10年5‰

不足100万元

由上可知,判断树的优点是直观和明确,可以清楚地看出各种条件下的不同取值状态下应当采取的行动,还可以看出根据条件的优先级别逐步判断、决策的过程。

(三)判断表

判断表是另外一种表达逻辑判断的工具。与结构化语言和判定树方法相比,判断表的优点是能够把所有的条件组合充分的表达出来。其缺点是判断表的建立过程较为繁杂,且表达方式不如前两者简便。

例如:对前边提到的折扣政策的例子,可用判断表3.14表达如下:

判断表分成四大部分,左上角为条件说明,左下角为行动说明,右上角为各种条件全部组合,右下角为各种条件组合下采取的行动。

判断表要反映出所有的条件组合,若有Q1、Q2……共N个条件,每个条件分别可取W1、W2……Wn个值,则全部条件组合有W1×W2×……×Wn个。

本例中由于各条件均取两个值,所以共有2×2×2=8个条件组合,每个条件组合及相应行动见表3.14。

Y—表示成立N—表示条件不成立V—表示采取此行动。

表3.14 折扣政策条件判断表

这是一张完整的判断表。表中列出了三个条件所有可能的组合情况,因此不会有遗漏。如表中反映出交易额大于100万元,最近3个月无拖款,而交易时间虽然不足10年,照样应折扣15‰。

以上我们介绍的三种表达逻辑处理的工具各有千秋,使用时可根据系统各自的特点选择合适的工具进行基本功能的说明。

软件工程导论总结报告

软件工程总结报告 序言 本期软件工程专业导论课程结束后,为圆满完结本期此课程的学习,特此总结个人学习所得以求些许回报先生无私教导。 主体 第一节课主要讲述了软件工程各领域之间的联系以及贯穿始终 的基础为何。其中较为基础并相当重要使的应该是算法。对于算法重要性与基础性的理解,我个人有比较切身的体验。比如前不久的 ACM 竞赛,在比赛中我所在的小组以及当场几乎所有小组都遇到这样一个 问题:超时—这无非就是个人设计的算法的效率不够高,这也证明我 们对算法理论知识的匮乏(不清楚优化个人算法的方法)。我对软件 工程这一专业有了一个较为全面的把握,对我个人未来进取方向而言 也起到了一定的指导作用。 第二节课老师带来了三位本专业的前辈向我们传授大学生活应 如何度过以及对我等一些问题作出解答。其中我个人印象深刻的是其 中一位学姐 PPt 中引用李开复的那部分内容。即试着记录下自己一整天做的所有事以及其所花费的时间,再仔细研究自己在哪些事上浪费 了时间,应该如何整改。我个人认为这方法可能有一定直观性,因为 直观的数据更能深刻的反映真实和刺激一个人整改,但此法实施起来又太古板,中觉得生活有些教条化、章程化,缺乏新意与自由。求上进,珍惜时间也无需以丧失人生情趣为代价。还有就是学长再提潘老师曾讲过的那些重要、紧急优先次序。他提到的个人的学习生活情况

倒没什么深刻感,但我认为他引用的一番话较有道理,大概意思是比 起个人兴趣更为优先的应该是谋生的本领,尤其是当自己感兴趣的正 好是冷门时。当掌握了一些实实在在有能保证自身良好发展前景后,再 去做一些自己感兴趣的事也来得及。于我而言,一个人尚不能独善其身,何求其兼济天下。成己方成人就是如此道理。 第三节课主要讲解了大学学习生活中应着重的基础课以传递重 基础的要旨。据个人体会,其中英语科目实是基础中的基础,主要是 为辨认单词(即代码变量以及注释)意义以达到理解他人算法并顺利 接手他人接下来的工作。企业和公司出于其本身利益主张雇方市场 -- 讲究项目的可接手性,而不希望对现有人员的过分依赖。离散数学则应该是为之后学习其他编程专业知识做理论知识的铺垫。概率统计更多应是对统计有关算法及理论的学习(个人认为现实生活中许多问题都可以运用概率统计的方法加以解决,因此应是很重要的基础知识)。C/C++(Java)语言是作为编程的工具使用,无疑是基础(现今水平下的 我们主要用 C 编代码)。数据结构则应是提供特定的解决问题的结构 思想以便进行数据处理方面工作。算法的重要性以及基础性的个人体 会已包含在第一节课中。计算机体系结构与汇编课程与操作系统原理 课程主要在于理解计算机系统运行原理能加深对代码运行原理的理 解,对于现今水平的我也能更深层次的理解 c 语言的指针操作等方面知识。汇编语言能够直接对硬件进行操作,生成的程序与其他的语言相 比具有更高的运行速度,占用更小的内存,因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应

软件工程导论重点内容

第一章软件工程概述 重点掌握的容:软件和软件工程的基本概念 一.什么是软件? 1.满足功能要求和性能的指令或计算机程序集合; 2.处理信息的数据结构; 3.描述程序功能以及程序如操作和使用所要求的文档; 软件的特点: 软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。 软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的 在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题 软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工的开发式 软件的开发费用越来越高,成本相当昂贵。 二.软件危机以及产生软件危机的原因? 1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。软件产品“供不应求”。 2.软件成本在计算机系统总成本中所占的比例逐年上升。 3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。 4.软件产品的质量不容易保证。 5.软件产品常常是不可维护的。 6.软件产品的重用性差,同样的软件多次重复开发。

7.软件通常没有适当的文档资料。 产生软件危机的原因可归结为两个重要的面: 软件生产本身存在的复杂性; 软件开发所使用的法和技术。 三、软件危机 1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列重问题。 2、软件危机的两个主要问题:如开发软件,以满足对软件日益增长的需求; 如维护数量不断膨胀的已有软件。 3、软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。 (2) 用户对“已完成的”软件系统不满意的现象经常发生。 (3) 软件产品的质量往往靠不住。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。 (6) 软件成本在计算机系统总成本中所占的比例逐年上升。 (7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 软件工程 1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程准则可以概括为7条基本原则:

《软件工程导论》实验报告

2011-2012(2)《软件工程导论》实验报告 学院:计算机学院 班级:软件工程114 姓名:黄芳恺 学号:119074258 目录 实验1:项目计划、分析和设计 实验2;编码 实验3:代码复查、编译 实验4:项目测试总结

软件工程导论实验一:项目计划、分析和设计 [ 实验日期 ] 2012 年 4 月 20 日 [ 实验目的 ] 初步了解结构化分析、设计方法的原理、步骤以及各阶段的文档,练习撰写简要的需求文档、设计文档。 [ 实验内容 ] 贪吃蛇程序:贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物则表示食物被蛇吃掉,这时蛇的身体长一节,同时计1分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体,游戏结束。根据编写贪吃蛇的游戏规则,我们利用c语言来进行编辑具体步骤,从而使游戏能够运行,根据编写贪吃蛇程序,掌握软件工程思想及要领,进一步巩固编程思想和掌握画图函数底层,依据项目可行性研究的结果,进行需求分析和设计,编写简要的需求规格说明书,绘制程序流程图。 [ 实验原理和步骤] 当前的建模方法主要有传统的结构化分析、设计方法(SA/D)和面向对象分析、设计方法(OOA/D)两种。 分析阶段: 结构化分析(SA)是一种建模技术,它通过一定方法帮助开发人员定义系统需要什么功能,系统需要存储和使用哪些数据,以及为完成这些功能,系统需要什么样的输入和输出以及如何把这些功能结合在一起来完成任务。 设计阶段: 分总体设计和详细设计两阶段。总体设计阶段的任务主要是确定系统由哪些模块组成,以及这些模块之间的相互关系;详细设计阶段的任务主要是设计每个模块的处理过程。常用的结构化设计(SD)方法有面向数据流分析(DFA)的设计方法和面向数据的设计方法。DFA设计技术实施的通用步骤:(1)复查并精化DFD;(2)确定DFD类型; (3)把DFD映射到系统模块结构,设计出模块结构的上层;(4)基于DFD逐步分解高层模 块,设计出下层模块〈初步结构〉;(5)根据模块独立性原理,精化模块结构,得到更为合理的软件结构;(6)模块接口描述;(7)修改和补充数据词典;(8)制定测试计划。 详细设计阶段的任务主要是确定每个模块的处理过程,包括(1)确定每个模块的算法。(2)确定每一个模块的数据组织。(3)为每个模块设计一组测试用例。(4)编写详细设计说明书。详细设计阶段采用的方法是结构化程序设计(SP),与SA,SD方法衔接。目标是给出可以直接用以编码的程序逻辑结构,强调清晰第一。 设计思路: 这个程序的关键点是表示蛇的图形以及蛇的移动。用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不

软件工程导论复习知识点

一、软件: 软件定义: 软件=程序+文档+数据 软件特点: 1、具有抽象性 2、没有明显的制造过程 3、软件的维护比硬件的维护要复杂得多 4、对计算机系统有着不同程度的依赖性 5、尚未完全摆脱手工艺的开发方式 6、软件本身是复杂的 7、软件成本相当昂贵 8、相当多的软件工作涉及到社会因素软件的发展: 程序设计、程序系统、软件工程 软件危机: 软件危机指的是软件开发和维护过程中遇到的一系列严重问题。 软件危机的问题: 如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。 软件危机表现: 1.开发成本难以控制,进度不可预计; 2.软件系统的质量和可靠性很差,难以满意; 3.软件文档相当缺乏,软件系统不可维护; 4.软件开发生产率很低,软件产品供不应求。 5.软件产品成本十分昂贵。

软件危机产生原因: 1、软件本身的特点 2、对软件开发与维护存在许多错误认识和做法 3、软件开发与维护的方法不正确 解决软件危机途径: 1、将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。 2、研究和推广成功的软件开发技术和方法。 3、开发和使用好的软件工具。 软件生命周期: 软件所经历的定义、开发、使用和维护直到废弃所经历的时期。 程序设计环境: 源程序编辑,编译或解释,链接,调试和运行工具的集合 软件工程环境: 软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合 二、软件工程: 软件工程定义: 研究如何应用一些科学理论和工程上的技术来指导软件的开发,用较少的投资获得高质量的软件的一门学科。 软件工程性质: 涉及计算机科学、工程科学、管理科学、数学等领域,着重于如何建造一个软件系统。用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。用管

软件工程导论实验报告

<<软件工程概论>> 实验报告 姓名:李治 学号:100511210 班级:网工1001 指导教师:桂兵祥 实验一“图书馆系统”结构化需求分析

上机任务: 用结构化需求分析方法完成下列任务: (1)对“图书馆系统”问题进行描述; (2)对该系统进行功能分析; (3)建立数据流图; (4)建立实体 - 关系图; (5)建立数据字典; 一、图书馆系统的问题描述: ① 一个图书馆藏有图书和期刊杂志两大类书籍,每种图书/杂志可以有多册。 ② 图书馆可以维护(注册、更新和删除)图书资料。 ③ 图书馆管理员负责与借书者打交道。 ④ 借书者可以预约目前借不到的书或杂志。 ⑤ 所有人员都可以浏览图书馆的图书信息和各种告示。 ⑥ 系统能在流行的技术环境下运行,有一个良好的图形交互界面。 ⑦ 系统应具有良好的可扩展性。 二、图书馆系统功能分析: ① 浏览功能:所有人员都可以浏览图书馆的图书信息。 ② 借还功能:借书者可以借/续借、还、预约图书。 ③ 图书管理功能:图书管理人员可以做录入、更新和销毁等图书信息维护工作。④ 借书者管理:系统管理人员可进行注册、更改、注销借书者信息等维护工作。 三、建立数据流图: 1、图书馆系统的基本逻辑模型: 浏览图书 浏览者 图书信息 浏览信息 2、借/还功能数据流图: (1)借/还功能(第一步)DFD : 借书还书 续借预约 书目号和借书 证号 书目号 书目号 标题号和借书 证号 管理员 借书者 借书者 显示信息 (2)借/还功能(修改)DFD :

借书还书续借预约 书目号和借书 证号 书目号 书目号 标题号和借书 证号 管理员 借书者 3、维护功能数据流图: (1)维护功能(第一步)DFD : 更改借者注销借书者 录入新书更新图书管理员 注册借书者销毁图书处理罚金 管理员 (2)维护功能(修改) DFD : 录入标题修改标题删除标题录入新书管理员 销毁书目修改书目 标题信息 标题号 标题号 书目信息 书目号 书目号 4、借书功能细化的数据流图:

《软件工程导论》第六版期末复习总结要点

软件工程 一、名词解释与问答 1、S A——结构化分析方法 2、画数据流图应注意什么事项? (1)数据流名称只能是名词或是名词短语; (2)每个加工至少有一个输入数据和一个输出数据流,反映出此加工数据的来 源与加工的结果; (3)编号:某个加工分解成一张数据流图时,上层图为父类,下层图为子类; 父图与子图的平衡:子图的输入输出数据流同父类相应的输入输出数据流必须一致; (4)注意数据流图的易理解性; 3、什么是软件生存周期?它有那几个活动? 一个软件从提出开发要求开始直到该软件报废为止的整个时期。 包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。 4、什么是数据流图?作用是什么?其中的基本符号表示什么含义?以图的方式描述数据在系统中流动和处理的过程,只反映系统必须完成的逻辑功能,是一种功能模型。 箭头,表示数据流数据流是数据在系统内传播的路径,由一组成分固定的数据项组成; 圆或椭圆,表示加工对数据进行某些操作或变换,每个加工要有名字,通常是动词短语,描述完成的加工; 双杆,表示数据存储指暂时保存的数据;方框,数据源点或终点软件系统外部环境的实体,为帮助理解系统接口界面引入,只出现在顶层图中; 什么是数据字典简述数据字典与数据流图的关系答案:数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与 说明,是数据流程图的补充工具.(2分)数据流图和数据字典共同构成系统的逻辑模型没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用?数据流图和对数据

流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明.(3分)简述编码风格的重要性? 答案:阅读程序是软件开发和维护过程中的一个重要组成部分,程序实际上也是一种供 人阅读的文章?应当在编写程序时讲求程序的风格,这将大量地减少人们读程序的时间? 良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定 着程序的质量. 简述软件测试的任务、目的与类型。 答:软件测试是一个为了寻找软件错误而运行程序的过程。 目的就是为了发现软件中的错误。一个好的测试用例是指很可能找到迄今为止尚未发 现 的错误的用例。一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。软件测 试 主要分为白盒测试和黑盒测试两大类。 可行性分析的目的和主要任务是什么? 答:可行性分析的目的不是解决问题,而是确定问题是否值得去解决。 主要任务是从下面几方面研究每种解法的可行性:技术可行性,经济可行性,操作可行 性,社会可行性,抉择可行性。 需求分析的目的和主要任务是什么? 答:进行需求分析是为了准确地回答“系统必须做什么”这个问题,决定可以做什么不做什么。需求分析的主要任务是描述系统的功能需求、性能需求、数据需求、可靠性/可用性需求、出错处理需求、接口需求、约束条件、其他需求。 软件维护的目的和主要任务是什么?维护的类型有哪些? 答:软件维护是软件生命周期中最后一个、持续时间最长的阶段。 主要任务是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件,目的是提高软件的可靠性、可用性,延长软件的寿命。维护的类型有:改正性(错误)、适应性(环境)、完善性(功能)、预防性(新产品)什么是耦合?模块的耦合包括哪些类型?答:耦合是对一个软件结构内不同模块之间互连程度的度量。 模块的耦合包括以下几种类型:数据耦合,控制耦合,特征耦合,公共环境耦合,内容耦合,标记耦合,无耦合/非直接耦合 什么是内聚?模块的内聚包括哪些类型?

“软件工程导论”重点、难点

“软件工程导论”的授课内容重点、难点 --供期末考试(教考分离)命题参考 一、教材:软件工程—原理、方法与应用(第3版),史济民等编著,高等教育出版社 二、任课教师: 陈征、于海雯 三、授课内容及重点、难点 第1章绪论 重点:软件的基本概念,软件危机,软件工程学的范畴,传统软件工程和面向对象软件工程的比较。 第2章软件生存周期与软件过程 重点:软件生存周期的基本概念,传统软件开发模型(瀑布模型、快速原型模型、增量模型、螺旋模型)的特点,可行性研究的内容,风险分析的3项活动。 第3章结构化分析与设计 重点:结构化分析的任务和步骤,数据流图的组成符号,画分层的数据流图,数据字典的条目,加工逻辑的描述工具(判定表和判定树等),结构化设计的任务和步骤,面向数据流的设计方法(变换映射和事务映射),模块划分的原则,详细设计的目的与任务,常用的详细设计工具(程序流程图和N-S图等)。 难点:画分层的数据流图,画判定表和判定树,变换映射和事务映射。 第4章面向对象与UML 重点:面向对象的基本概念,UML中的9种图(4种静态图、5种动态图)的基本结构,类与类之间的4种关系(关联、聚集、泛化、依赖)的含义,类图的画法。 难点:类图的画法。 第7章7.1 软件设计概述 重点:软件设计的基本概念(模块化、抽象与细化、信息隐藏、模块独立性),内聚性(7种类型)和耦合性(7种类型)的含义。 第8章编码与测试 重点:编码的风格,编码语言的选择,测试的目的,黑盒测试和白盒测试的测试用例设计方法,多模块程序的测试策略(单元测试、集成测试、确认测试和系统测试)。 难点:黑盒测试和白盒测试的测试用例设计。

软件工程导论(第6版)知识点总结、复习课_图文.

复习课 --------酷爱YC 第一章 1、什么是软件危机,什么是软件工程 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:(1如何开发软件,以满足对软件日益增长的需求;(2如何维护数量不断膨胀的已有软件。 软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件,并有效地维护它。 2、完整的软件配置由哪些内容组成 软件配置主要包括程序,文档和数据等成分。 3、软件生命周期分为哪3个时期和8个阶段,每个阶段的任务(工作分别是什么,重要性如何

概括地说,软件生命周期由软件定义、软件开发和运行维护3个时期组成 1、软件定义(系统分析。 软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。 (1 问题定义,确定系统要解决的问题是什么。成果:关于问题性质、工程目标和工程规模的报告。 (2 可行性研究,确定问题是否有可用的、能行得通的解(包括:技术、经济、操作、社会等方面的可行性。这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。成果:可行性研究报告。 (3 需求分析,确定软件系统的必须实现的功能、必须达到的性能、必须满足的运行环境要求。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。成果:软件需求规格说明书(SRS,内容包括:系统的逻辑模型;系统(子系统的名称、功能描述、接口、基本数据结构、性能、设计需求、开发标准、验收原则等。 2、软件开发。 开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。 (1 总体设计(概要设计,回答“怎样实现目标系统”。

大连理工大学城市学院软件工程导论期末考试复习重点

软件工程导论重点 第一章重点: 软件的概念:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。 软件危机概念:软件危机暴发于上个世纪六十年代末。 主要表现为:软件的发展速度远远滞后于硬件的发展速度,不能满足社会日益增长的软件需求。软件开发周期长、成本高、质量差、维护困难。 软件工程概念: 概括地说,软件工程是指导计算机软件开发和维护的工程学科。 采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程的目标: 软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。 基本目标: 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发工作,及时交付使用 软件生存期概念和包含内容: 软件也有一个孕育、诞生、成长、成熟和衰亡的生存过程,我们称这个过程为软件生命周期或软件生存期。 软件生存期分为三个时期 软件定义 软件开发 运行维护

软件工程的方法: 软件工程包含技术和管理两方面的内容,是技术和管理紧密结合所形成的工程学科。 通常将软件开发全过程中使用的一整套技术方法的集合称为方法学(methedology),也称为范型(paradigm)。 目前使用最广泛的软件工程方法学:传统方法学(结构化方法学),面向对象方法学。 软件工程三要素: 三要素:方法、工具和过程。 第二章重点: 生存期模型有哪些: ?瀑布模型 ?快速原型模型 ?增量模型 ?螺旋模型 ?喷泉模型 ?统一过程 ?基于构件的开发模型 ?敏捷过程 前四种面向过程后四种面向对象 给一个模型,判断出是哪一模型的 第三章重点: 结构化分析方法的概念: 传统的分析建模方法称为结构化分析(structured analysis,SA)方法。 三大建模:(未完待续!!!) 功能建模: 功能建模的思想就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。功能模型

软件工程导论课程教学大纲

《软件工程导论》课程教学大纲 一、课程性质、地位和作用 《软件工程导论》是是软件工程专业的专业基础课程,属必修课。 本课程主要讲述建造软件系统的基本方法、技术、流程、工具及规范等。通过学习可以使学生了解软件工程的基本概念、基本原理、实用的开发方法和技术;了解软件工程各领域的基本内容和发展动向;学习用工程化的方法开发软件项目,初步掌握开发过程中应遵循的流程、准则、标准和规范。本门课程为将来从事软件开发学生的软件工程师之路奠定坚实的基础。 二、课程教学对象、目的和要求 本课程适用于软件工程、计算机应用等从事软件开发的本科专业。课程教学目的、要求: (一)从教学内容上,应使学生了解软件工程的基本概念,主要包括软件与软件开发的基本过程,软件危机与软件工程。掌握个人软件开发过程的基本内容和方法,了解软件开发模型及结构化软件设计方法,以及软件质量保证基本内容。(二)从能力方面,应使学生通过对软件工程基本概念和方法的学习和课后练习,培养学生养成规范化个人开发的良好习惯,培养学生按照软件工程的基本过程和方法来设计和开发软件。 (三)从教学方法上,在课堂理论教学中,采用学生可以理解的软件开发素材,通过一边实践一边讲解的方法,讲解软件过程的基本思想和方法,通过学生完成与实践结合的作业,调动学生的积极性,使软件工程的基本思想逐步植根于学生头脑中。 三、相关课程及关系 本课程的先修课程是“C语言程序设计”和“数据结构”等程序设计课程,学习应在学生具有一定的编程能力基础上进行。本课程为后续的“软件制造工程”和“软件设计工程”等课程打下了必要的理论基础。 四、课程内容及学时分配 总学时:32学时 (一)绪论1学时 1、软件工程及其重要性 2、软件开发需要软件工程 3、软件工程课程体系架构(需要什么软件工程) 、课堂的组织、学习方法、章节安排与考核4. 要求学生了解软件工程的起源,软件工程在软件开发中的作用,了解软件工程课程体系。 (二)软件与软件工程4学时 1、软件及软件分类 2、软件工程的由来及概念 3、软件生命周期 4、软件开发与软件开发方法 5、软件工程工具和环境 6、软件开发项目管理介绍

软件工程导论实验报告 白盒测试 黑盒测试

《软件工程导论》实验报告 学生姓名: 学号: 班级: 指导老师: 专业: 实验日期:

白盒测试 一、实验目的 通过简单程序白盒测试,熟悉测试过程,对软件测试形成初步了解,并养成良好的测试习惯。熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。 二、实验内容: 1、被测试程序功能:求解系数为整数的方程ax2+bx+c=0 2、程序定义:键盘输入3个数字a,b,c,求解方程ax2+bx+c=0 3、测试环境:Windows 8.1、Eclipse 4、说明:本次测试采用插桩测试法,由于程序比较简单,手动输入测试用例。 四、实验步骤 1、程序流程图

2、代码: import java.util.Scanner; public class test { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入3个整数a,b,c:"); String as; String bs; String cs; int a=0; int b=0; int c=0; double x, x1, x2; as=sc.nextLine(); bs=sc.nextLine(); cs=sc.nextLine(); try{ a=Integer.parseInt(as); b=Integer.parseInt(bs); c=Integer.parseInt(cs); }catch(Exception e){ System.out.println("输入错误"); System.exit(0); } if (a == 0) { if (b == 0) { if (c == 0) System.out.println("无穷多解" ); else

软件工程导论最全复习总结

1、软件危机是指在计算机开发过程中的开发和维护过程中所遇到的一系列的 严重问题。 2、软件是程序、数据及相关文档的完整集合,程序是能够完成预定功能和性能的可执行的 程序序列;数据是是使程序能够适当的处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。 3、软件工程学包含3个要素:方法、工具、过程。 4、目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。 5、软件工程方法学的软件过程基本上可以用瀑布模型来描述。 6、瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。 7、Rup把软件生命周期划为:初始、精化、构建、移交阶段。 8、可行性研究的三方面:技术可行性、经济可行性、操作可行性。 9、数据流图(DFD是一种图形化技术,他描绘信息流和数据从输入移动到输出的过程中 所经受的变化。 10、数据字典是关于数据信息的集合,也就是对数据流程图中所包含的所有元素的定义 的集合。 11、数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据如就不严格, 没有流程图,数据字典也难以发挥作用。

12、需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准 确的描述软件需求。 13、9、结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 14、ER图中包含了实体、关系和属性,矩形代表实体,菱形表示关系,椭圆或圆角矩 形表示属性,用直线把实体和其属性连接。 15、验证软件需求的正确性:一致性、完整性、现实性、有效性。 总体设计又称 16、总体设计的基本目的是回答“概括地说,系统应该如何实现?”, 为 概要设或初步设计。 17、模块的独立程度可以有两个定性标量度量:内聚和耦合。 18、软件测试的目标:(1测试是为了发现程序中的错误而执行程序的过程;(2好的 测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3成功的测试是发现可至今为止尚未发现的错误的测试。 19、软件测试步骤:模块测试、子系统测试、系统测试、验收测试、平行运 行。 20、软件可靠性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。

软件工程导论第五版复习重点(必考题)

(最后部分为每年必考题) 第一章 1. .软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的. 2. 软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。 3. 产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 4. 面向对象方法学的四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件2.把所有对象都划分成类3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。4.对象彼此间仅能通过发送消息互相联系。 5. 软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要) 6. 瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。 7. 微软过程把软件生命周期划分为成5个阶段:规划阶段,设计阶段,开发阶段,稳定阶段,发布阶段。 第二章 1.可行性包括:技术可行性,经济可行性,操作可行性。 2. 系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形势描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。4. 书库流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示。 5. 用系统流程图描绘一个系统时,系统的功能和实现每个功能的具体方案是混在一起的。有数据元素组成的数据的方式只有下述3种基本类型:顺序(即以确定次序连接两个或多个分量)。选择即从两个或多个可能的元素中选取一个重复即把指定的分量重复零次或多次

软件工程导论复习重点总结很全(第六版)(精)

第1章软件工程学概述 1.1 软件危机 1.1.1 软件危机的介绍 软件危机(软件萧条、软件困扰:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 软件危机包含下述两方面的问题: 如何开发软件,满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。 软件危机的典型表现: (1对软件开发成本和进度的估计常常很不准确; (2用户对“已完成的”软件系统不满意的现象经常发生; (3软件产品的质量往往靠不住; (4软件常常是不可维护的; (5软件通常没有适当的文档资料; (6软件成本在计算机系统总成本中所占的比例逐年上升; (7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 1.1.2 产生软件危机的原因 (1与软件本身的特点有关 (2与软件开发与维护的方法不正确有关

1.1.3 消除软件危机的途径 对计算机软件有正确的认识。 认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。 应该开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施(方法和工具,又要有必要的组织管理措施。 1.2 1.2.1 软件工程的介绍 软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。(期中考 软件工程的本质特性: 软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐地合作是开发软件的关键 软件必须有效地支持它的用户

软件工程导论实验报告

目录 第一章可行性分析报告 (7) 1.1 引言 (7) 1.2 可行性研究的前提 (8) 1.3技术可行性分析 (9) 1.3.1系统简要描述 (9) 1.3.2处理流程和数据流程 (9) 1.4操作可行性分析 (9) 1.5经济可行性分析 (10) 1.5.1支出 (10) 1.5.2效益 (10) 1.5.3收益/投资比 (11) 1.5.4投资回收周期 (11) 1.5.5敏感性分析 (11) 1.6法律可行性 (11) 1.7结论 (11) 第二章需求分析报告 (12) 2.1引言 (12) 2.1.1 编写目的 (12) 2.1.2 项目背景 (12) 2.1.3 定义 (12)

2.2任务概述 (13) 2.2.1 目标 (13) 2.2.2 假定和约束 (12) 2.2.3 人力、资金、时间的约束 (12) 2.2.4技术发展规律的约束 (13) 2.3需求规定 (8) 2.3.1对功能的规定 (8) 2.3.2对性能的规定 (8) 2.3.3精度 (8) 2.3.4时间特性要求 (15) 2.3.5旅客信息 (15) 2.4数据描述 (15) 2.4.1数据特征 (15) 2.4.2系统数据流图 (15) 2.5 运行环境规定 (11) 2.5.1服务器端子系统运行要求 (11) 2.5.2客户端子系统运行要求 (11) 第三章概要设计 (18) 3.1引言 (18) 3.1.1编写目的 (18) 3.1.1项目背景 (18)

3.2任务概述 (19) 3.2.1目标 (18) 3.2.2运行环境 (18) 3.2.3需求概述 (18) 3.3总体设计 (20) 3.3.1处理流程 (20) 3.3.2客户机程序流程 (20) 3.3.3总体结构设计 (20) 3.3.4功能分配 (20) 3.4 接口设计 (20) 3.4.1外部接口 (24) 3.4.2软件接口 (24) 3.4.3硬件接口 (24) 3.4.4内部接口 (24) 3.5 数据结构设计 (27) 3.5.1 数据库数据结构设计 (27) 3.5.2物理结构设计 (27) 3.5.3 数据结构与程序关系 (27) 3.6 运行设计 (27) 3.6.1 运行模块的组合 (27) 3.6.2 运行控制 (27)

软件工程导论知识点概要

1.1软件危机 软件危机的表现 软件危机是指在计算机软件的开发、使用和维护过程中遇到的一系列严重问题。 1)成本难以估计、成本高。 2)软件开发进度估计不准确,项目延期比比皆是。 3)软件质量得不到保证(功能和性能)。 4)用户对“已完成的”软件系统不满意的现象经常发生。 5)维护非常困难(多样性、复杂性、副作用)。 6)软件通常没有适当的文档。 7)软件产品供不应求,跟不上计算机普及速度。 产生软件危机的原因 (1)及软件本身的特点有关(逻辑复杂,成本高,风险大,难于维护)。 (2)及软件开发及维护的方法不正确有关: 软件≠程序(软件是程序、数据及相关文档的完整集合)急于求成=拔苗助长(软件从定义、开发、使用和维护、废弃要经历一个漫长的生命周期) 各自为阵无方法学(应要组织良好、管理严密、各类人员协作共同完成的工程项目) 1.2软件工程定义 软件工程是应用计算机科学、数学、心理学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量、降低成本和提高效率为目的。 软件工程包括技术和管理两方面的内容,是技术及管理紧密结合所形成的工程学科。 软件工程的特性: 1. 软件工程关注于大型程序的构造 (传统的程序设计技术和工具是支持小型程序设计的)

2. 软件工程的中心课题是控制复杂性(问题分解) 3. 软件经常变化(考虑将来要发生的变化) 4. 开发软件的效率非常重要(寻求更好、更有效的工具) 5. 和谐地合作是开发软件的关键(运用标准和规程) 6. 软件必须有效地支持它的用户(软件要服务于用户) 7. 在软件工程领域中通常是由具有一种文化背景的人替具有另一种文化背景的人创造产品 软件工程的7条基本原理 1.用分阶段的生命周期计划严格管理 2.坚持进行阶段评审 3.实行严格的产品控制 4.采用现代程序设计技术 5.结果应能清楚地审查 6.开发小组的人员应该少而精 7.承认不断改进软件工程实践的必要性 软件工程方法学 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。 目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。 软件工程方法学包含3个要素:方法、工具和过程。 1.3软件生命周期 每阶段的基本任务: 1. 问题定义 2. 可行性研究 3. 需求分析 4. 总体设计 5. 详细设计 6. 编码和单元测试 7. 综合测试 8. 软件维护

太原理工大学软件工程导论实验报告机票预定.

本科实验报告 课程名称:软件工程导论 实验项目:机票预订系统 实验地点:行勉楼A306 专业班级:软件6666班学号:2014006666 学生姓名:6666 指导教师:王会青 2016年5 月15 日

太原理工大学学生实验报告 专业班级学号姓名 实验日期2016.04.14 实验地点行勉A306成绩 课程名称软件工程导论实验题目软件工程的网上资源与常用的CASE 工具一.实验目的 1)通过Internet搜索与浏览,了解网络环境中主流的软件工程技术网站,掌握通过专业网站不断丰富软件工程最新知识的学习方法,尝试通过专业网站的辅导与支持来开展软件工程应用实践。 2)通过Internet搜索与浏览,了解主流的软件工具和软件开发环境产品及发展和应用情况。 二.工具/准备工作 需要准备一台带有浏览器、能够访问因特网的计算机。 三.实验内容与步骤 1)上网搜索和浏览,了解软件工程的国家标准 了解软件工程技术的应用情况,看看哪些网站在做着软件工程的技术支持工作?请记录搜索结果。 火龙果软件技术支持中心https://www.360docs.net/doc/a44459396.html, (火龙果软件) 北京的https://www.360docs.net/doc/a44459396.html, (开源论坛) 杭州下沙的https://www.360docs.net/doc/a44459396.html, (做网站的论坛) 以及国外的https://www.360docs.net/doc/a44459396.html, (免费的创建网站和BLOG的软件网站) https://www.360docs.net/doc/a44459396.html, (Google 提供的代码开发网站) https://www.360docs.net/doc/a44459396.html, (免费开源软件网站) 国内在于理论性质的网站https://www.360docs.net/doc/a44459396.html, (软件测试) 软件工程专业网站实验记录 网址内容描述 https://www.360docs.net/doc/a44459396.html,/ https://www.360docs.net/doc/a44459396.html,(以下简称CU)是一个以讨论Linux/Unix类操 作系统应用技术、自由软件开发应用技术、网络应用技术为 主的开源社区网站 https://www.360docs.net/doc/a44459396.html,/ 帮助广大企业充分利用互联网优秀资源来为全球竞争做好准 备,提高中国企业的互联网应用能力和网络竞争力。 https://www.360docs.net/doc/a44459396.html,/ https://www.360docs.net/doc/a44459396.html,是目前国内人气最旺的软件测试门户网站,其 为软件测试人员免费提供社区交流、人才服务、沙龙聚会、 个人博客、电子杂志、资料下载等全方位信息服务。 https://www.360docs.net/doc/a44459396.html,/ CSDN面向IT专业技术人员,提供专业、集成化的内容服务, 包括最大的技术论坛,最有影响力的BLOG,最权威的技术 杂志《程序员》,IT专业搜索服务等。 https://www.360docs.net/doc/a44459396.html,/ 网站目前拥有新闻中心、文档中心、下载中心、源码中心、 刻盘服务、网友作品、电子杂志、编程论坛等众多栏目,基 本可以涵盖大部分关于编程开发的内容。 当前,软件工程专业网站当前的技术(如培训内容)“热点”是(参考):

软件工程导论复习要点

软件工程导论复习要点 第一章 1.软件的定义: 软件是计算机程序、数据以及运行计算机系统可能需要的相关文档。 (1)程序:程序是计算任务的处理对象和处理规则的描述。(软件!=程序) (2)数据:使程序能正常操纵信息的数据结构(即数据的组织形式)。 (3)文档:文档是为了便于了解程序所需的阐明性资料。 2.软件工程的定义: 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究上面提到的途径。 3.软件工程三要素: 过程:开发软件产品的一组活动及其结果。 方法:为软件开发过程提供“如何做”的技术。 工具:为软件开发方法提供自动的或半自动的软件支撑环境。4.软件过程的四个基本活动: 规格说明:定义软件功能以及对其使用的限制。 软件开发:设计和实现满足规格说明的软件。 软件确认:验证软件足以保证能够满足客户的要求。

软件演化:改进软件以适应不断变化的需求。 5.两种主要的开发方法: 结构化(面向过程)的方法、面向对象的方法。 第二章 1.软件工程发展历史: (1)第一阶段:软件危机——是指计算机软件的开发和维护过程所遇到的一系列严重问题 主要表现:软件开发费用和进度失控;软件的可靠性差;生产出来的软件难以维护;软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的需要。(1968年10 月软件工程大会在德国由北约出资举办) (2)第二阶段:传统软件工程——一是从管理的角度,希望实现软件开发过程的工程化(软件生命周期模型;确定了一些重要文档格式的标准);二是侧重于对软件开发过程中、分析设计的方法的研究(结构化)。 (3)第三阶段:现代软件工程——从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。 发展趋势:模块化;开放计算;合理的开发治理;全球化软件协作交付。

软件工程导论知识点

软件是程序、数据及相关文档的完整集合。其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。 开发软件时,对于提高软件开发人员工作效率至关重要的是开发程序人员数量。 软件工程中描述软件生存周期的瀑布类型一般包括计划、需求分析、设计、编码、测试、维护等几个阶段。其中,设计阶段在管理上可以依次分成概要设计和详细设计两个步骤。 在结构化的分析方法中,用以表达系统内数据的运行情况的工具有数据流图。 在结构化的分析方法中,用实体关系图表达系统中的对象及其发展,在实体关系图中,表达对象和实体关系之间的关联有三种类型:一对一联系,一对多联系,多对多联系。 软件需求分析的任务,不应包括结构化程序设计,进行需求分析可使用多种工具,但判定表是不适用的,在需求分析中,分析员要从用户那里解决的最重要的问题是要让软件做什么。规格说明书的内容不应当包括对算法详细功能性描述,该文档在开发中具有重要的作用,但其作用不应包括软件可行性分析的依据。 原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于需求不确定性高的系统,它从用户界面的开发入手,首先形成系统界面原型,用户运行用户界面原型,并就同意什么和不同意什么提出意见。 一个模块的多个下属模块在系统结构图中所处的左右位置是无关紧要的。 一组语句在程序中多处出现,为了节省内存空间,把这些语句放在一个模块中,该模块的内聚性是偶然内聚的。 将几个逻辑上相似的成份,放在同一个模块中,通过模块入口的一个判断决定执行哪一个功能,该模块的内聚性是逻辑内聚的。 模块中所有成份引用共同的数据,该模块的内聚性是通信内聚的。 模块内的某成份的输出是另一些成份的输入,该模块的内聚性是顺序内聚的。 模块中所有成份结合起来完成一项任务,该模块的内聚是功能内聚。 模块化程序设计:1.便于由多人分工编制大型程序。2.软件功能易于扩充。3.易于理解,也便与排错。4.只要模块之间的接口关系不变,模块内部实现细节的修改将不会影响别的模块。 5.模块间的单向调用关系叫做模块的层次结构。 程序设计风格指导原则:1.嵌套的重数应加以限制。2.尽量少使用全局变量。3.使用有意义的变量名。4.把常见的局部优化工作留给编译程序去做。5.程序的格式应有助于读者理解程序。6.尽量少使用goto语句。 测试过程需要三类输入:软件配置,测试配置,测试工具。 测试的费用已超过软件开发费用的30%以上,高产的测试是指用少量的测试用例运行程序发现被测试程序尽可能多的错误,单元测试是在实现阶段完成的,集成测试的计划是在概要设计阶段制定的,确认测试的计划是在需求分析阶段制定的。 软件测试的目的是发现软件的错误,为了提高测试效率,应该选择发现错误的可能性大的数据作为测试数据。使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和制定的附带标准。与设计测试无关的文档是项目开发计划。软件的集成测试工作最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的结果。 软件调试的目的是找出错误所在,并改正之。 结构化设计是一种应用最广泛的系统设计方法,是以数据流图为基础,自顶向下,求精和模块化的过程。 概要设计的结构是提供一份模块说明书。 需求分析是由分析员了解用户的要求,认真细致地调研、分析,最终应建立目标系统的逻辑模型并写出软件规格说明书。

相关文档
最新文档