一授一、、 授课课的的主主要要内内容容 11.. 基基本本概概念念
((11)) 有有关关““软软件件工工程程””的的基基本本概概念念
11))软软件件工工程程的的诞诞生生::
1968年„„
22))软软件件危危机机
计算机软件开发和维护过程中所遇到的一系列严重问题统称为
“软件危机”。概括地说,软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。 (
软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含两方面问题:一是如何开发软件,以满足对软件日益增长的需求;二是如何维护数量不断膨胀的已有软件。
软件危机的表现:1.对软件开发成本和进度的估计常常很不准确。 2.用户对已完成的软件系统不满意的现象经常发生。 3.软件产品的质量往往靠不住。 4.软件常常是不可维护的。
5.软件通常没有适当的文档资料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度常跟不上计算机应用迅速普及深入的趋势。
软件危机的原因:一方面与软件本身的特点有关;另一方面也和软件开发与维护的方法不正确有关。 目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。
)
33))软软件件
(a)ISO定义:
包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件(计算机)。
文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。
(b)软件的描述性定义:
软软件件由由计计算算机机程程序序,,数数据据结结构构和和文文档档组组成成。。
计算机程序执行特定的功能;数据结构是程序运行所需的数据;
文档是描述程序开发、使用和维护的资料。
44)) 软软件件工工程程的的概概念念
采用“工程学”的原理来管理和从事软件的开发和维护,称为软件工程。(工程学:系统化、规范化、数量化)
(
软件工程的目标:经济地开发出高质量的软件。
IEEE定义软件工程:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,即是把工程应用于软件。
)
55))软软件件质质量量的的基基本本概概念念
(a)软件质量的定义
与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体。
具体来说:1)软件产品中能满足给定需求的性质和特性的总体; 2)软件具有所期望的各种属性的组合程度。
(b)软件质量特性
(1)功能性:当软件在指定条件下使用时,软件产品提供满足
明确和隐含要求的功能的能力。
(2)可靠性:在指定条件下使用时,软件产品维持规定的性能
级别的能力。
(3)易用性:在指定条件下使用时,软件产品被理解、学习、
使用和吸引用户的能力。
(4)效 率:在规定条件下,相对于所用资源的数量,软件产
品可提供适当性能的能力。
(5)维护性:软件产品可被修改的能力。修改可能包括纠正、
改进或软件对环境、需求和功能规格说明变化的适应。
(6)可移植性:软件产品从一种环境迁移到另外一种环境的能
力。
66))软软件件工工程程方方法法学学((软软件件开开发发方方法法学学))
软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。
(
软件工程方法学包含3个要素:方法、工具和过程。其中,方法-->
是完成软件开发的各项任务的技术方法,回答怎样做的问题;工具-->为运用方法而提供的自动的或半自动的软件工程支撑环境;过程-->为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
目前使用的最广泛的软件工程方法学为:传统方法学、面向对象方法学 每一个阶段结束之前都必须进行正式的技术审查和管理复审。
)
目前各种所谓的软件开发方法学不外乎三种(类):
77))软软件件工工程程工工具具和和环环境境
用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具。
[CASE]在软件工程渐进发展的过程当中,也逐步出现了一批软件工具来辅助软件工程的实施,因此,软件工具也称为CASE(Computer Aided Software Engineering)。
[SE2]方法和工具相结合,再加上配套的软、硬件集成机制的
支持就称为软件工程环境(Software Engineering Environment)。
88))软软件件生生存存周周期期
软件生存周期是指“软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。”
[软件生存周期模型] 可以归纳为两大类:“瀑布模型”和“原型模型”。其核心都是将软件开发划分为:分析、设计、编码、测试和维护。
99))软软件件生生存存周周期期过过程程
软件工程过程是指软件生存周期中各个可能的过程,这些
过程可进一步划分成为了提供或获得软件产品或服务,或是为了完成软件工程项目需要完成的有关软件工程活动,每一项活动又可分解为一些软件工程任务。
《GB/T 8566-2007信息技术:软件生存周期过程》阐述了应用于获得、供应、开发、运行和维护软件的软件生存周期的过程、活动和任务。标准定义了21个过程分属三类:基本过程、支持过程和组织过程。
(
软件生命周期由软件定义、软件开发、运行维护3个时期组成。 软件定义时期任务:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完
成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
软件开发时期:总体设计、详细设计、编码和单元测试、综合测试
软件维护时期:使软件持久的满足用户的需要。
软件生命周期每个阶段的基本任务:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。
综合测试中用到的基本测试:集成测试、验收测试。集成测试-->根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。验收测试-->按照规格说明书的规定,由用户对目标系统进行验收。 软件维护包括4类维护活动:改正性维护、适应性维护、完善性维护、预防性维护。 )
供各主要参与方在软件生存周期期间使用。 支持其它过程,以便取得软件项目的成功 并提高软件项目的质量。 用于建立和实现与过程相关的基础结构, 甚至人事组织制度,并使其不断得到改进。
1100))软软件件工工程程管管理理
目的:为了按照进度及预算完成软件计划,实现预期的经
济和社会效益。 内容:成本估算、进度安排、人员组织、质量保证、配置
管理等等。
((22)) 有有关关软软件件结结构构设设计计的的基基本本概概念念
11))模模块块化化
具有四种属性的一组程序语句称为一个模块,这四种属性分别是:输入和输出、逻辑功能、运行程序、内部数据。
模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
模块间的通讯分两种类型:1)数据通讯 2)控制通讯
[注]
(1)输入和输出:输入来源和输出去处都是同一个调用者,也就是一个模块从调用者那里获得输入,然后再把产生的输出返回给调用者;
(2)逻辑功能:逻辑功能是指它能够做什么事情,表达了它把输入转换成输出的功能;
(3)运行程序:运行程序是指它如何用程序设计语言(PDL)实现这种逻辑功能的;
(4)内部数据:内部数据是指属于该模块自己的数据。 (5)输入和输出、逻辑功能是模块的外部属性;运行程序、内部数据是模块的内部属性。在“总体设计”阶段仅完成模块的外部属性设计,下一阶段“详细设计”才完成模块的内部属性设计。
22))模模块块
开发具有功能而且和其它模块之间没有过多相互作用的模块。
联结(耦合)是对一个软件结构内不同模块之间互连程度的度量
(或指两个
之间的相互依赖关系)。
模块
如果两个模块之间的通讯信息仅仅是一个个数据元素,那么这种联结称为数据联结。
如果两个模块都与同一个数据结构有关,那么这种联结称为特征联结。
如果模块
A向模块B所传递的信息控制了模块B的内部逻辑,那么模块A
和模块B之间的联结称为控制联结。
如果两个模块都和同一个公用数据域有关,那么这两个模
块之间的联结称为公共联结。
如果一个模块和另一个模块的内部属性有关,那么这种联结称为
内容联结(也称病态联结)。
[注]Coupling设计原则:
1)应以数据联结为主,特征联结为辅,必要时才建立控制联结和公共联结,完全不用内容联结;
2)在建立模块间的数据联结时,要消除“游离数据”;在建立模块间的特征联结时,要严禁“捆绑”;在建立模块间的控制联结时,要避免使用控制性标志,而使用描述性标志;
3)尽量少用混合形式。
组合(内聚)是指一个模块内各个元素彼此结合的紧密程度。
(1) 功能组合--
如果一个模块内部所有组成部分全部为执行同一功能而存在,并且只执行一个功能,那么这种组合称为功能组合
(2) 顺序组合 ——受同一个数据流支配,执行顺序重要
如果一个模块内部所有组成部分执行的几个功能有这样
的特征,前一个功能所产生的输出数据是下一个功能的输入数据,那么这种组合称为顺序组合。
(3) 通讯组合——受同一个数据流支配,执行顺序不重
要
如果一个模块内部所有组成部分都使用相同的输入数据
或产生相同的输出数据,那么这种组合称为顺序组合。
(4) 过程组合——受同一个控制流支配,执行顺序重要
如果一个模块内部的若干个功能各不相同,彼此也没有什么关系,但它们都受同一个控制流支配来决定它们的执行次序,那么这种组合称为过程组合。
(5)时间组合——受同一个控制流支配,执行顺序不重要
如果一个模块内部的若干个处理动作必须在同一时间段
内执行完成,那么这种组合称为时间组合。
(6)逻辑组合
如果一个模块内部的若干个处理动作在逻辑上相似,但功
能却彼此不同或无关,那么这种组合称为逻辑组合。
(7)偶然组合
如果一个模块内部的若干个处理动作彼此没有任何关系,那么这种组合称为偶然组合。
33))模模块块的的分分解解
高内聚低耦合是我们设计软件结构的指路明灯。求降低耦合提高内聚。
(1) 模块分解的作用:1)模块太大; 2)使模块容易理解;
3)避免产生相同功能的模块; 4)提供通用性强的模块; 5)简化程序设计。
(2) 模块分解的原则:按功能分解直到无法作出明确的功能定
义为止。
(3) 经验分解数据:一个模块内包含的语句条数在 30条左右,
不应超过60条。
44))模模块块的的扇扇入入和和扇扇出出
模块的扇出是指一个模块拥有的直接下级模块的个数。 模块的扇入是指一个模块的直接上级模块的个数。 [注]尽可能的加大模块的扇入系数 55))模模块块的的控控制制域域和和作作用用域域
(1)模块的控制域(控制范围):是指这个模块本身以及所有直接或间接从属于它的模块的集合。
(2)模块的作用域(判断作用范围):是指受该模块内一个判断影响的所有模块的集合。(也就是该模块内存在着判断调用语句,而所有受到该判断逻辑影响的模块,就是该模块的作用域。)
((33))面面向向对对象象的的方方法法
用面向对象方法开发软件,通常需要建立三种形式的模型: 对象模型:描述系统数据结构 动态模型:描述系统控制结构 功能模型:描述系统功能 什么是对象模型
对象模型表示静态的、结构化的系统的“数据”性质。
对象模型是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。 什么是动态模型
动态模型表示瞬时的、行为化的系统的“控制”性质,规定了对象模型中对象的合法变化序列。即对象的动态行为。
用状态图来描绘对象的状态、触发状态转换的事件、以及对象的行为(对事件的响应)。
每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。
什么是功能模型
功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,故更直接反映了用户对目标系统的需求。 表示方法
功能模型也通常由一组数据流程图表示。
在面向对象方法中,数据流程图没有在结构化分析中重要,有时可以省略
22..软软件件开开发发过过程程
可行性研究、需求分析、总体设计、详细设计、编码、测试六个阶段,各阶段的:
1)任务和目的; 2)过程和步骤; 3)技术和工具。
[注]包括OO方法 11))可可行行性性研研究究
任任务务和和目目的的::目目的的---->> 用最小的代价在尽可能短的时间内确定问题是否
能够在一一定定规规模模之之内内解决。任务-->确定任务是否值得去解决。首先分析和澄清问题定义;然后从系统逻辑模型触发,搜索若干种可供选择的主要解法;再对每种解法从技术可行性、经济可行性、操作可行性上进行分析。
过过程程和和步步骤骤::
确定系统规模和目标 研究现行系统 建立新系统的高层逻辑模型 评价新系统 建立新系统的物理模型 研究可行性 给出建议性建议 草拟项目开发计划 书写文档
复查系统规模和目标--》研究目前正在使用的系统--》导出新系统的高层逻辑模型--》进一步定义问题--》导出和评价供选择的解法--》推荐行动方针--》草拟开发计划--》书写文档提交审查。
技技术术和和工工具具::DFD(Data Flow Diagram) 22))需需求求分分析析
任务和目的;精确地定义系统必须做什么,也就是对目标系统提出完整、准确、清晰、具体的要求。。————为目标系统提出精确的逻辑模型。任务--》确定对系统的综合要求(功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求);分析系统的数据要求;导出系统的逻辑模型;修正系统开发计划。
过程和步骤;制定及修改需求开发计划、开展需求调查以及分析、需求验证、需求规则说明制作、需求确认。
技术和工具:DFD+DD(DataDictionary)、功能分析工具 33))总总体体设设计计
任务和目的; 确定系统怎么做,也就是确定系统应该由哪些部份组成,它们是如何联结在一起的。 过程和步骤;
设想供选择的方案 选取合理的方案 推荐最佳的方案 进入“软件结构”设计:设计出组成这个系统的所有程序、文件和数据库,以及它们之间的联系。 软件结构:由模块组成的层次系统。 模块:数据说明、可执行语句等程序对象的集合。例:过程,函数,宏等 功能分解 设计软件结构 数据库设计 制定组装测试计划 计划成本 书写文档 审查和复审
技术和工具:系统流程图、SC(Structure Chart) 44))详详细细设设计计
任务和目的: 为SC(结构图)中每个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出详细清晰的过程描述。 过程和步骤:
技术和工具:图形工具,表格工具和语言工具(描述程序处理过程的工具称为详细设计工具)、程序设计语言(PDL)
注:要想改善程序的清晰度,必须从改善每个(模块的)控制结构入手,(这就是结构程序设计的思想,也是详细设计阶段指导模块逻辑设计应遵循的原则。) 55))编编码码
任务和目的;产生能在计算机上执行的程序; 使用选定的
程序编码语言,把模块的详细过程性描述翻译成为用该语言书写的源程序(或源代码)。
过程和步骤;
技术和工具:程序编码语言(PL) 66))软软件件测测试试
任务和目的;测试是为了发现错误而执行程序的过程。测试的目的是
发现程序中的错误,是为了证明程序有错,而不是证明程序无错。 现在我们干脆把Myers的:“程序测试是为了发现错误而执行程序的过程。”作为软件测试的定义。 过程和步骤;
按照软件工程的观点。软件测试依次由以下四个层次的测试组成:
(1) 单元测试:在编码阶段完成;以模块为单位,包括代码复
审、动态测试;确定测试用例时,可综合运用白盒和黑盒两类测试技术;
(2) 综合测试:以软件的设计信息为依据,采纳一定的“测试
策略”进行测试;主要用黑盒测试技术确定测试用例;
(3) 确认测试:以软件的需求信息为依据,采纳一定的“测试
策略”进行测试;主要用黑盒测试技术确定测试用例;
(4) 系统测试:指整个计算机系统(包括软件与硬件)的测试,
可与系统的安装和验收结合进行。
技术和工具: 77))面面向向对对象象分分析析
任务和目的; 面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。
过程和步骤; (1)确定类和对象 (2)确定关联 (3)划分主题 (4)定义属性 (5)确定继承关系 (6)建立动态模型 (7)建立功能模型 (8)定义服务
需要注意地是在这里我们根本不强调顺序,更不是谈什么步骤。
技术和工具: 88))面面向向对对象象设设计计 任务和目的;
OOD分为“系统设计”和“对象设计”,系统设计是确定系统的实现策略和目标系统的高层结构;对象设计则是确定解空间中的类、关联、接口形式、及实现服务的算法 过程和步骤; 技术和工具:
二参二、、 参考考教教材材的的重重点点
1) 张张海海藩藩::第1章——第12章(除第4章之外); 2) 有关Rose:
3) 有关PPoowweerrBBuuiillddeerr::
三期三、、 期末末考考试试主主要要题题型型或或内内容容 11..填填空空题题
22..选选择择题题((选选择择填填空空题题)) 33..测测试试用用例例设设计计((第第七七章章)) 44..详详细细设设计计工工具具((第第五五章章))
5用类数(5..用用用例例图图、、类图图、、数据据流流图图等等进进行行分分析析和和设设计计(第第九九章章))
[[注注]]所所有有答答题题均均要要写写在在““答答题题纸纸””上上。。
1. 选择正确答案:
(1) 在软件生存周期中, A 维护 阶段所占的工作量最大;
(2) 结构化分析方法产生的软件需求说明书由一套分层的 B 数据流图 、数据字典和补充说明材料组成;
(3) 软件的 可靠性 C 一般可用平均无故障时间和故障平均修复时间来度量; (4) 采用 高级语言 D 编写程序可提高程序的可移植性;
(5) 仅根据规格说明书描述的程序功能来设计测试用例的方法称为 黑盒测试 E 。 A ① 分析 ② 设计 ③ 编码 ④ 测试 ⑤ 维护 B ① 因果图 ② 数据流图 ③ PAD图 ④ 流程图 C ① 易维护性 ② 可靠性 ③ 效率 ④ 易理解性 D ① 机器语言 ② 宏指令 ③ 汇编语言 ④ 高级语言
E ① 白盒方法 ② 静态分析法 ③ 黑盒方法 ④ 人工分析法
2. 需求分析的主要任务是建立新系统的 逻辑模型A ;总体设计的主要任务是设计出新系统
的 软件结构B ;详细设计的主要任务是完成模块的 过程设计 C ;编码的主要任务是写出各模块的 源程序 D 。
A: ① 系统结构 ② 逻辑模型 ③ 软件结构 ④ 系统流程 B: ① 软件结构 ② 模块结构 ③ 逻辑模型 ④ 数据流程
C: ① 输入输出设计 ② 逻辑功能设计 ③ 过程设计 ④ 结构设计 D: ① PAD ② PDL ③ 源程序 ④ 过程性描述
3. 软件设计将涉及到软件的结构、过程和模块的设计,其中软件过程设计是指描述
软件层次结构 。
① 模块间的关系 ② 模块的操作细节 ③ 软件层次结构 ④ 软件开发过程
4. 模块是软件模块化所提出的要求,衡量模块的度量标准是模块的 高内聚低耦合 。 ① 抽象和信息隐蔽 ② 局部化和封装
③ 高内聚和低耦合 ④ 激活机制和控制方法
5. 在结构化分析和设计技术(SADT)中,数据流图是用于描述系统的 逻辑模型 A 的主要工具,
数据字典是定义 数据流图 B 中关于数据的描述工具。
A ① 详细设计 ② 需求分析 ③ 总体设计 ④ 逻辑模型 B ① 数据流图 ② 系统流程图 ③ 程序流程图 ④ 软件结构图
6. 人们在使用高级语言编码时,首先可通过编译程序发现源程序中的全部 符号错误A 和部
分语法错误 ,然后可采用 测试 B 来发现程序中的运行错误并采用纠错来确定错误的性质,设计错误是泛指用户在验收中发现的结果与需求不符的错误。 A的选项:
① 符号错误 ② 逻辑错误 ③ 通路错误 ④语义错误 B的选项:
① 诊断 ② 测试 ③ 检验 ④ 排错 ⑤ 纠错 ⑥ 试探
7. 用面向对象方法开发软件时,人们通常从三个侧面建立三种不同的模型:一是描述系统静态结构的
对象模型 A ;二是描述系统控制结构的 动态模型 B ;三是描述系统计算结构的 功能模型 C 。其中 对象模型 A 是最基本、最核心、最重要的。在整个开发过程中,这三种模型一直都在发展和完善,在面向对象分析中,构造出完全于实现的应用域模型;在面向对象设计中,把求解域的结构逐渐加入到模型中;在实现阶段,把应用域和求解域的结构都编写成 源程序D 并进行严格的测试。目前 UML E 是基于面向对象技术的建模语言,已成为事实上的工业标准。 ABC的选项:
① 逻辑模型 ② 动态模型 ③ 功能模型 ④ 对象模型 ⑤ 系统模型 D的选项:
① 类图 ② PDL ③ 源代码 ④ 用例图 ⑤ 状态图 E的选项:
① C++ ② PDL ③ UML ④ ISO
8. A 单元测试 在实现阶段进行,它所依据的模块功能描述和内部细节以及测试方案应在
B 详细设计 阶段完成,目的是发现编码错误。
C 综合测试 所依据的模块说明书和测试方案应在 总体设计 D 阶段完成,它能发现设计错误。
E 确认测试 测试计划应在软件需求分析阶段完成。
供选择的答案:
A. ①用户界面测试 ②输入/输出测试 ③综合测试 ④单元测试 B. ①需求分析 ②详细设计 ③总体设计 ④结构设计 C. ①可靠性测试 D. ①编码 E. ①过程测试
四、、 重重点点
11..22..33.. ②综合测试 ③性能测试 ④强度测试 ②总体设计 ③维护 ④详细设计 ②函数测试 ③逻辑测试 ④确认测试
精精通通一一、、二二种种实实现现机机制制
像像::PPoowweerrBBuuiillddeerr 、、CC++++ 、、JJaavvaa;;
像像::SSyybbaassee 、、OOrraaccllee 、、MMSS SSQQLL SSeerrvveerr 、、DDBB22;; 找找到到适适合合自自己己的的软软件件工工程程过过程程,,包包括括软软件件工工具具,,
像像::MMSS PPrroojjeecctt 、、TTFFSS((TTeeaamm FFoouunnddaattiioonn SSeerrvveerr))、、VVSSTTSS((VViissuuaall SSttuuddiioo TTeeaamm SSyysstteemm)) RRoossee;; 用用好好互互联联网网。。
四
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务