软件工程整理资料

更新时间:2023-10-19 06:50:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件工程复习(总结)

题型:一、选择(1′*10=10′) 二、填空(1′*20=20′,20个空)

三、名词解释(4′*5=20′) 四、综合应用(10′*5=50′)

几个英文缩写的含义:1.SE——软件工程 5.CASE——计算机辅助软件工程 2.SA——结构化分析 6.OOA——面向对象分析 3.SD——结构化设计 7.OOD——面向对象设计 4.SP——结构化编程 8.OOP——面向对象编程

第一章:软件工程学概述

1.软件危机(概念、原因及如何消除,P1—P4)

概念(P1):软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 产生软件危机的原因(P3):(1)软件本身的特点造成;

1忽视软件需求分析;○2开发过程没(2)软件开发与维护的方法不正确。其主要表现:○

3有统一、规范的方法论指导,文档资料不齐全,认为软件开发就是写程序并使之运行;○轻视软件维护。

消除软件危机的途径(P4):

(1)正确认识软件的概念;

(2)充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合共同完成的工程项目。

(3)充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机软硬件研究和开发的经验教训。 (4)推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探索更有效的技术和方法;

(5)开发和使用更好的软件工具; (6)良好的组织管理措施。

2.生命周期(P3):一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期成为生命周期。

3.软件工程定义(P5):软件工程是指导计算机软件开发与维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和目前能够得到的最有效的技术与方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

4.软件工程方法学(三个要素和两个方法,P9、P10): 三个要素:方法、工具和过程。

两个方法:传统方法学和面向对象方法学。

传统方法学(也称生命周期方法学或结构化范型)特点: (1)采用结构化技术来完成软件,强调自顶向下;

(2)划分为若干个阶段,然后顺序地完成每个阶段的任务;每个阶段的任务相对独立,而且比较简单,降低了整个软件开发工程的困难程度;

(3)前一个阶段是后一个阶段的前提和基础,而后一阶段提出的解法更具体,细节更多; (4)每个阶段结束前必须从技术和管理两方面对这个阶段的开发成果进行严格的检查,通过之后这个阶段才算结束;保证质量,提高可维护性;

(5)当软件规模庞大,或者的需求模糊或随时间而变化时,传统方法学往往不成功;维护起来仍然很困难。

面向对象方法学特点:

(1) 把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。也就是说,用对象分解取代了传统方法的功能分解。

(2) 把所有对象都划分成类(class)。每个类都定义了一组数据和一组操作,类是对具

有相同数据和相同操作的一组相似对象的定义。 (3) 按照父类(或称之为基类)与子类(或称之为派生类)的关系,把若干个相关类组

成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为继承。

(4) 对象彼此间仅能通过发送消息互相联系。也就是说,对象的对象的所有私有信息都

被封装在该对象内,不能从外界直接访问,这就是通常所说的封装性。

5.软件生命周期(组成及每个阶段的任务, P11)

软件生命周期由软件定义、软件开发和运行维护(也成为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段,总共8个阶段。

软件定义时期的任务:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。

开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。

维护时期的主要任务是使软件持久地满足用户的需求。

(1)问题定义(系统定义)

任务:问题是什么

通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和

工程规模的书面报告。

经过讨论和必要的修改之后这份报告应该得到客户的确认。

结果:关于系统规模和目标的报告书 (2) 可行性研究

任务:有可行的解吗

系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程。

研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。

结果:系统的高层逻辑模型(数据流图、成本效益分析)

可行性论证报告(立即进行/推迟进行/不能或不值得进行) (3)需求分析

任务:必须做什么

主要是确定目标系统必须具备哪些功能。

系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。

结果:系统的逻辑模型(数据流图、数据字典、简要的算法描述)

用规格说明书准确地记录对目标系统的需求 (4) 总体设计

任务:如何解决已提出的问题

设计出实现目标系统的几种可能的方案(低、中、高成本)。

用适当的表达工具描述每种方案,分析优缺点,推荐一个最佳方案,制定出

实现最佳方案的详细计划。设计程序的体系结构。

结果:可能的解法(系统流程图、成本效益分析)

推荐的系统体系结构(层次图或结构图)

(5)详细设计

任务:怎样具体实现该系统

详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。 结果:每个模块的算法和数据结构(程序流程图、 N-S图、 PAD图等)。 (6)编码和单元测试

任务:得到正确的程序模块

选取一种适当的高级程序设计语言(必要时用汇编语言),把详细设计的结果翻译成用选定的语言书写的程序;

并且仔细测试编写出的每一个模块。

结果:代码和测试报告 (7)综合测试

任务:得到符合要求的软件

通过集成测试、验收测试、现场测试、平行运行等方法对目标系统进一步测试检验。

通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠

性的要求,也可以决定测试和调试过程什么时候可以结束。

结果:测试计划、详细测试方案以及实际测试结果

完整一致的软件配置

(8)软件维护

任务:使系统持久地满足用户的需要

改正性维护,诊断和改正在使用过程中发现的软件错误;

适应性维护,修改软件以适应环境的变化;

完善性维护,根据用户的要求改进或扩充软件;

预防性维护,修改软件为将来的维护活动做准备。

6.软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。(以下几种模型简单看一下,P14) 几种模型:瀑布模型、快速原型模型、增量模型、螺旋模型,喷泉模型

第二章:可行性研究

7.可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。也即:不是解决问题,而是确定问题是否值得去解决。

可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。(P37) 8. 系统流程图及数据流图的画法

系统流程图:是概括地描绘物理系统的传统工具。用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。

数据流图(DFD)表示方法:实线表示数据流,虚线表示控制流,圆框表示处理数据的过程,矩形框表示产生与接收数据的对象,平行线表示数据存储区。

9.数据字典定义及数据定义的方法(P47)

数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。 定义数据的方法:对数据自顶向下的分解。

10.成本效益分析的方法及如何算(P51,另外可以参照一下第二章课件) 第一步是估计开发成本、运行费用和新系统将带来的经济效益。

(1) 成本估计的方法有三种:

1代码行技术,计算方式:软件成本 = 每行代码的平均成本×估计的源代码总行○数

2任务分解技术,计算方式: ○

单独任务成本 = 任务所需人力估计值×每人每月平均工资 软件开发项目总成本估计 = 各个单独任务成本估计值之和

3自动估计成本技术:采用自动估计成本的软件。 ○

(2) 成本/效益分析涉及的4个概念:

1货币的时间价值 ○

通常用利率的形式表示货币的时间价值。

假设年利率为 i ,如果现在存入 P 元,则 n 年后可以得到的钱数为

F = P ( 1 + i ) n

反之,如果 n 年后能收入 F 元钱,那么这些钱的现在价值是 P = F / ( 1 + i ) n

2投资回收期 ○

所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。 通常用投资回收期衡量一项开发工程的价值。

例:投资回收期 = 2 + 774.88 / 1779.44 = 2.44年

3纯收入 ○

纯收入是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。

这相当于比较投资开发一个软件系统和把钱存在银行中(或贷给其他企业)这两种方案的优劣。

例:纯收入 = 9011.94 – 5000 = 4011.94元

4投资回收率 ○

用来衡量投资效益的大小,并且可以把它和年利率相比较。 P = F1/( 1 + j ) + F2/( 1 + j )2 + ?+ Fn( 1 + j )n

其中:P是现在的投资额;Fi是第i年年底的效益;n是系统的使用寿命;j是投资回收率。

例:投资回收率 = 41% ~ 42%

第三章:需求分析

11.需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。 (尽可能有准备地获取用户的需求)(P55) 12.分析建模及建立数据模型(P62):

(1)模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。

(2)需求分析过程应该建立的三种模型:数据模型、功能模型和行为模型。

13.实体-联系图,描绘数据对象及数据对象之间的关系,是用于建立数据模型的图形。 数据流图,描绘当数据在软件系统中移动时被变换的逻辑过程,是建立功能模型的基础。 状态转换图,描绘了系统的各种状态和在不同状态间转换的方式,是行为建模的基础。 14.实体-联系图如何构建(如何画)

ER图中包含了实体(即数据对象)、关系和属性等3种基本成分,通常用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。

第四章:形式化说明技术

15.按照形式化的程度,可以把软件工程使用的方法划分为非形式化、半形式化及形式化3类。(P75)

(1)非形式化,用自然语言描述需求规格说明;

(2)半形式化,用数据流图或实体-联系图建立模型;

(3)形式化,是描述系统性质的基于数学的技术,也就是说,如果一种方法有坚实的数学基础,那么它就是形式化的。 16.非形式化的缺点(P75):

用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。

(1)矛盾性:在需求规格说明书中对同一问题前后存在不同的描述。

(2)二义性:需求规格说明书的读者对其中同一问题的描述存在不同的理解。如:“操作员标识由操作员姓名和密码组成,密码由6位数字构成,当操作员登陆系统时它被存储在注册文件中。”

(3)含糊性:需求规格说明书中对某一问题的描述不清晰、不可理解、不知如何实现、不具可操作性。

(4)不完整性:需求规格说明书中对某一问题的描述不完整。只说明了局部,没有说明整体;或者只说明了概要,未说明细节。因此不具可操作性。

(5)抽象层次混乱:在不同层次的抽象模型中内容混乱,如在高层模型中混有底层细节,造成读者不能理解系统的整体功能和下级功能。

17.形式化方法的优点(P76):

(1)可严谨地描述软件需求中的问题:可简介、准确描述物理现象、对象或动作的结果

本文来源:https://www.bwwdw.com/article/2jof.html

Top