第一章软件程概述.docx
- 文档编号:12156700
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:29
- 大小:581.08KB
第一章软件程概述.docx
《第一章软件程概述.docx》由会员分享,可在线阅读,更多相关《第一章软件程概述.docx(29页珍藏版)》请在冰点文库上搜索。
第一章软件程概述
第一章软件工程概述
Ø1.软件=程序+数据+文档
程序是按事先设计的功能和性能要求执行的指令序列
数据是使程序能正常操纵信息的数据结构
文档是与程序开发,维护和使用有关的图文材料
Ø了解软件危机:
原因,现象,办法(软件工程学)
原因:
与软件本身的特点有关(难于维护,逻辑复杂)
与软件开发与维护的方法不正确有关:
现象:
成本高,软件成本越来越高于硬件
软件质量得不到保证,由于软件质量问题导致失败的软件项目非常多
进度难以控制,维护非常困难
办法:
(1)从管理的角度
软件开发过程的研究、文档的标准化以及人们
的交流方式等
(2)软件开发方法的研究
结构化软件开发方法,面向对象的开发
Ø软件工程(学):
技术+管理(质,时,成本)
Ø软件工程方法学3个要素:
方法、工具和过程。
过程:
定义一系列活动:
技术方法的采用,
工程产品(模型、文档、数据)的产生,
里程碑(milestone)的建立,
质量的保证及变更的管理。
该层构成了软件项目的管理控制的基础。
方法:
提供了建造软件在技术上“如何做”。
方法覆盖了一系列任务:
需求分析、设计、编程、测试和支持(如纠错、适应、增强、预防)。
工具:
对过程和方法提供了自动或半自动的支持。
Ø软件生命周期:
定义+开发+运行维护
软件生命周期的每一阶段都有明确的任务,把规模大、结构复杂、管理复杂的软件开发变得容易控制和管理。
各个阶段的活动如何衔接,开发过程中采用什么样的策略,应遵守什么样的规定和制约,将这些活动框架(忽略不必要的细节)用一种模型表示出来,称为软件过程模型(或软件开发模型或软件生命周期模型)。
也就是说,软件过程模型是软件开发全部过程、活动和任务的结构框架。
Ø典型的软件过程模型(瀑布,喷泉)
第二章可行性研究
Ø可行性研究的任务:
技术,经济,操作,社会,抉择
可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。
”
(1)技术可行性
度量一个特定技术信息系统解决方案的实用性及技术资源的可用性
考虑的问题
(1)开发风险分析
(2)资源分析
(3)相关技术的发展(现有技术能否实现新系统,技术难点、建议采用技术的先进性)
(2)经济可行性
度量系统解决方案的性能价格比
考虑的问题
成本/效益分析(开发、运行的成本/效益)
•有形成本、效益
•无形成本、效益
价值和成本的关系
•质量与价值、成本的关系
•价值/成本的均衡
(3)操作可行性
•用户使用可能性
•时间进度可行性
•组织和文化上的可行性
(4)社会可行性(法律可行性)
(5)抉择
可行性研究过程七步骤见课本P36
Ø系统流程图:
数据在系统(人,软,硬)各部件之间流动(P38)
系统流程图是概括地描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。
Ø数据流图:
源点或终点,处理,数据存储和数据流
数据流图(DFD----DataFlowDiagram)
(1)一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
(2)在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示。
(3)设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。
数据流图四种基本符号以及几种附加符号的含义(P41)
画DFD图的例子:
学生购买教材系统
1、先找出系统的数据源点与汇点。
(它们是外部实体,由它们来确定系统与外界的接口)
第一步是画顶层图。
通常把整个系统当作一个大的加工,并标明系统的输入与输出,以及数据的源点与终点图中表明,系统从学生接受购书单,经处理后把领书单返回给学生,使学生可凭领书单到书库领书。
对脱销的教材,系统则用缺书单的形式通知给书库;新书进库后也由书库将进书通知返回给系统。
第二步画分层DFD图:
把系统分解为销售和采购两大加工。
如图所示,显然,外部项学生应与销售子系统联系,保管员应与采购子系统联系。
且两个子系统之间也存在两项数据联系:
其一是缺书登记表,由销售子系统把脱销的教材传给采购子系统;
其二是进书通知,直接由采购子系统将教材入库信息通知销售子系统。
同时,对于销售子系统来说,它还需要对教材存量表进行操作,即对售出的教材要在原存量中减去售出的数量,而对于新购的教材还要写到教材存量表中,所以该文件执行的读写操作,应用双箭头表示。
继续分解,就可以获得第三层的数据流图。
我们可以从第1层的销售子系统扩展而成:
审查有效性时,首先要核对购书单上的内容是否与学生用书表F3相符,还要通过售书登记F4检查学生已否购买过这些教材。
若发现购书单中有学生不用或买重了的教材,便发出无效书单。
只有将通过了审查的教材保留在有效构书单中。
开发票加工符号,按购书单的内容查对教材存量表(F1),把可供应的教材写入发票,在F4中登记后开领书单并发给学生。
对数量不足或全缺的教材写入暂缺书单并登记到缺书登记表(F2)中,等待接到进书通知后再补售给学生。
补售的手续及数据流图和第一次购书相同。
请大家注意,在上一层DFD中,采购是系统内部的一个加工符号,但本图却是处于销售子系统之外的一个外部实体。
从图中可以看出,该销售子系统将被分解为5个子加工,编号从1.1----1.5,涉及到4个数据文件,分别用F1—F4来表示。
采购子系统在图中被分解为3个子加工。
由销售子系统建立起来的缺书登记表,首先按书号汇总后登入待购教材表,然后再按出版社分别统计制成缺书单并送给书库保管员作为采购教材的依据。
另外,在汇总缺书要再次核查教材存量表,而且,分出版社统计时还要参阅教材一览表,从该文件中可以知道这些缺书是何处出版的。
新书入库后,要及时修改教材存量表和待购教材表中的有关教材数量,同时把进书信息通知销售子系统,使销售人员能通知缺书的学生补售教材。
从图中可以看出,该采购子系统将被分解为3个子加工,编号从2.1----2.3,涉及到4个数据文件,分别用F1,F2和F5,F6。
以上三层、4张的DFD图,一起组成了教材购销系统的分层DFD图。
从分析中大家可以得知,愈到下层,加工愈细。
第三层就有8个加工。
大都是足够简单的---基本加工,可以不用再进行分解了。
画分层DFD图的指导原则:
1.注意数据流图中成分的命名(详见P45)
1)为数据流(或数据存储)命名
2)为处理命名
2.注意父图和子图的平衡/balanceorcoherence
3.区分局部文件和局部外部项
4.掌握分解的速度:
一般来说,每一个加工每次可分为2-4个子加工,最多不得超过7个。
5.遵守加工编号规则
顶层加工不编号。
第二层的加工编号为1,2,3,…,n号。
第三层编号为1.1,1.2,1.3…n.1,n.2…等号,依此类推。
Ø成本/效益分析:
估计,ROI,货币的时间价值(P50)
第三章需求分析
Ø需求分析的任务:
Ø系统“做什么”+其他需求
(功能需求性能需求环境需求可靠性需求安全保密要求用户界面需求资源使用需求成本消耗需求开发进度需求预先估计以后系统可能达到的目标)其中:
业务需求:
反映组织机构和客户对系统、产品高层次的目标要求。
用户需求:
从用户使用的角度给出需求的描述。
系统需求:
从系统的角度描述要提供的服务以及所受到的约束。
功能性需求:
描述系统应该做什么,即为用户和其它系统完成的功能、提供的服务。
非功能性需求:
产品必须具备的属性或品质。
设计约束:
设计与实现必须遵循的标准、约束条件。
如运行平台、协议、选择的技术、编程语言和工具等。
Ø获取需求的方法:
Ø访谈、
Ø面向数据流自顶向下求精
Ø简易的应用规格说明技术
Ø快速建立软件原型。
Ø分析建模与规格说明:
(P62)
建模方法:
1)功能模型:
数据流图(DFD/CFD)
2)数据模型:
实体关系图(ERD)
3)行为模型:
Petri网、状态图
Ø数据(实体-联系图)、功能(数据流图)和行为模型(状态转换图)
第五、六章、结构化设计
Ø总体设计(概要设计)
分为两个阶段:
系统设计阶段,确定系统的具体实现方案;
结构设计阶段,确定软件结构。
典型的总体设计有9个步骤,见课本P92.
Ø总体设计(结构化)原理---模块化、抽象、逐步求精、信息隐藏与局部化、模块独立
Ø模块的独立性衡量的标准:
耦合、内聚(P98)
非直接数据标记控制外部公共内容
耦合耦合耦合耦合耦合耦合耦合
巧合逻辑时间过程通信顺序功能
内聚内聚内聚内聚内聚内聚内聚
Ø启发规则(P100)
Ø软件结构工具:
层次图,HIPO图,结构图
Ø面向数据流的(结构化)设计方法
变换分析:
DFD变换型系统结构图
事务分析:
DFD事务型系统结构图
第七章实现
Ø实现=编码+测试
Ø编码=设计结果翻译成程序语言
Ø编码风格(文档,注释,命名,…)
Ø软件测试=发现软件的错误(P150)
Ø静态测试和动态测试
静态测试方法:
基本特征是在对软件进行分析、检查和审阅,不实际运行被测试的软件。
静态测试约可找出30~70%的逻辑设计错误.
对需求规格说明书、软件设计说明书、源程序做检查和审阅
包括:
•是否符合标准和规范;
•通过结构分析、流图分析、符号执行指出软件缺陷。
人工测试方法
计算机辅助静态分析方法
动态测试方法:
通过运行软件来检验软件的动态行为和运行结果的正确性
动态测试的两个基本要素:
•被测试程序
•测试数据(测试用例)
动态测试方法:
(1)选取定义域有效值,或定义域外无效值;
(2)对已选取值决定预期的结果;
(3)用选取值执行程序;
(4)执行结果与预期的结果相比,不吻和程序有错。
白盒测试方法
黑盒测试方法
Ø第八章维护
Ø测试步骤:
1.模块测试---单元
2.子系统测试---局部
3.系统测试---集成
4.验收测试---用户参与
5.平行运行---新旧共存
Ø白盒测试和黑盒测试
如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行----称为白盒测试。
白盒测试的内容:
1.对程序模块的所有独立执行路径至少测试一次
2.对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测试一次。
3.在循环的边界和运行边界限内执行循环体测试内部数据结构的有效性。
如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用----称为黑盒测试。
黑盒测试的内容:
1.Alpha/BetaTesting
2.菜单/帮助测试
3.发行测试
4.回归测试
Ø掌握白盒测试技术中的逻辑覆盖
发现错误的能力
标准
含义
1(弱)
语句覆盖
每条语句至少执行一次
2
判定覆盖
每一判定的每个分支至少执行一次
3
条件覆盖
每一判定中的每个条件,分别按“真”、“假”至少各执行一次
4
判定/条件覆盖
同时满足判定覆盖和条件覆盖的要求
5(强)
条件组合覆盖
求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次
Ø测试的有限性:
边界分析,等价划分
等价划分:
把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集(称为等价类别或等价区间),使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同.
等价类别或等价区间是指测试相同目标或者暴露相同软件缺陷的一组测试用例
如何划分等价类?
•有效等价类(合理等价类)
•无效等价类(不合理等价类)
划分等价类的标准:
•覆盖
•不相交
•代表性
划分等价类的规则
(1)如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类。
(2)如果输入条件代表集合的某个元素,则可定义一个有效等价类和一个无效等价类。
(3)如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。
例:
输入条件说明学历可为:
专科、本科、硕士、博士四
种之一,则分别取这四个值作为四个有效等价类,
另外把四种学历之外的任何学历作为无效等价类
(4)如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
(5)如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。
用等价类划分法设计测试用例步骤:
(1)形成等价类表,每一等价类规定一个唯一的编号;
(2)设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;
(3)设计一新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖;
例:
某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。
系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。
如何用等价类划分法设计测试用例,来测试程序的日期检查功能?
例:
对招干考试系统“输入学生成绩”子模块设计测试录入准考证号的测试用例准考证号数据格式定义:
共6为数字组成,其中第一位为专业代号:
1-行政专业,2-法律专业,3-财经专业后5位为考生顺序号,编码范围为:
行政专业准考证号码为:
110001~111215
法律专业准考证号码为:
210001~212006
财经专业准考证号码为:
310001~314015
准考证号码的等价类划分
有效等价类:
(1)110001~111215
(2)210001~212006
(3)310001~314015
无效等价类:
(4)-∞~110000
(5)111216~210000
(6)212007~31000
(7)314016~+∞
2边界值分析法
边界值分析法与等价类划分法区别
(1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
(2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况
测试边界线
•测试临近边界的合法数据,以及刚超过边界的非法数据.
•越界测试通常简单地加1或很小的数
(对于最大值)和减1或很小的数(对于最小值).
第八章维护
Ø软件维护的4类活动
维护的类型有四种:
改正性维护
适应性维护
扩充与完善性维护
预防性维护
Ø决定软件可维护性的基本要素
可理解、可测试、可修改、可移植和重用量
Ø影响维护工作量的5因素:
系统大小,程序设计语言,系统年龄,数据库技术,先进的软件开发技术
Ø软件维护策略2要素:
最低总成本,开发考虑维护
第九章面向对象方法学引论
Ø面向对象方法学的要点(OCIM):
接近人类思维的恰当的解空间抽象模型.
Ø基本概念:
对象,类,继承,封装,多态
对象:
<对象>:
:
=<接口,数据,行为>
对象的基本特征:
(1)每个对象均有自己的惟一标识,从而区别于其他对象。
(2)对象之间通过消息进行通信。
(3)对象总是处于一定的状态。
(4)对象有若干种行为。
(5)对象的行为分为三类:
创建新对象、与其他对象通信、改变自身状态。
(6)对象的状态只能被自身的行为所改变。
类:
类=属性+操作
类间关系:
●继承(inheritance)
单继承
多继承
多继承使类层次复杂化
多继承容易产生配置控制方面的潜在问题
●聚合(aggregation)
●关联(relationship)
关联的含义
对象实例之间的物理或概念联结被称为链
关联是对一组语义与结构相似的链的抽象
链是关联的实例
关联vs.链:
类vs.对象
聚合vs.继承
聚合更强调对象实例之间的关系,本质上是“与关系”(ispartof,ISP)
继承更关注对象类之间的关系,本质上是“或关系”(isa,ISA)
聚合树vs.继承树
聚合vs.关联
聚合是关联的一种特殊形式
聚合与关联之间的模糊差异无关紧要
消息和事件(message&event)
消息是对象之间进行通信的构造或结构
消息分为请求消息和完成消息两种(由消息模式描述)
消息模式:
发送对象、接收对象、内容
事件指对象之间一次消息的传递
多个事件按照时间顺序可构成事件序列
消息vs.事件:
静vs.动
Ø一般化、具体化、继承等术语均是复用思想的体现
一般化和具体化是对同一个类间关系的不同角度审视
父类是子类的一般化(从父类角度出发)
子类是父类的具体化(从子类角度出发)
继承强调一般化/具体化关系中共享属性和操作的机制
Ø消息与对象
●一个对象能接收不同形式不同内容的多个消息。
●相同形式的消息可以送往不同的对象。
●对于相同形式的消息,不同对象可以有不同的解释,可以作出不同的反映。
Ø消息与方法
●对象接收到有效消息后,总会以某种行为做出适当反映。
期间,对象行为复用了类操作的代码实现(即类方法)。
●在某种程度上,消息与方法可视为同义词。
但是,必须牢记:
消息与代码无关,而方法是操作的代码实现。
Ø多态性(polymorphism)
--含义
同一个操作可以是多个不同类的行为。
不同对象接收到同一个消息后,可产生完全不同的反映。
同一个消息可调用不同的方法。
--意义
允许每个对象以自己最合适的方式去响应共同的消息,从而增强软件的灵活性和可复用性。
Ø用UML语言建立对象模型,
Ø对象模型,动态模型和功能模型之间的关系
第十章面向对象分析
Ø分析、确定问题域中的对象及对象间的关系,并建立起问题域的3个模型(利用名词解析法建对象模型)。
包括理解、表达和验证等3项工作内容。
静态结构(对象模型)
交互次序(动态模型)
数据变换(功能模型)
Ø复杂系统对象模型的5个层次:
主题层、类与对象层、结构层、属性层和服务层。
Ø分析员必须与用户及领域专家反复交流、多次磋商,及时纠正错误认识并补充缺少的信息,完善模型。
Ø分析的目标是全面深入地理解问题域,其中不应该涉及具体实现的考虑。
Ø分析的目的是用分析模型取代需求陈述,作为设计的基础.在分析与设计之间并不存在绝对的界线。
建立对象模型(P235)
1)确定类与对象
用名词解析法确定类与对象
(1)从陈述中找出所有名词,作为类和对象的初步候选者
银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事物,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问。
通信链路事务日志
(2)筛选出正确的类与对象
2)确定关联
●1.初步确定关联
需求陈述中使用的描述性动词或动词词组,通常表示关联关系。
Ø直接提取动词短语得出关联
Ø需求陈述中隐含的关联
Ø根据问题域知识得出的关联
●2.筛选(根据下述标准删除候选关联)
Ø已删去的类之间的关联
Ø与问题无关的或在实现阶段考虑的关联
Ø瞬时事件
Ø三元关联
Ø派生关联
●3.进一步完善
Ø正名、分解、补充、标明重数
3)划分主题
●在概念上把系统包含的内容分解成若干个范畴
Ø应该按问题领域而不是用功能分解的方法来确定主题
Ø不同主题内的对象相互间依赖和交互最少的原则
总行(总行和中央计算机)
ATM系统分行(分行、分行计算机、柜员终端、柜员事务、柜员和账户等)
ATM(ATM、远程事务、现金兑换卡和储户)
4)确定属性
●属性是对象的性质或特征
●注意在分析阶段不要用属性来表示对象间的关系,使用关联能够表示两个对象间的任何关系,而且把关系表示得更清晰、更醒目。
●确定属性的过程包括分析和选择两个步骤。
选择
在需求陈述中一般用名词词组表示属性
需藉助于领域知识和常识才能分析得出属性
属性对问题域的基本结构影响很小
属性的确定与问题域和目标系统的任务有关。
不要考虑那些超出所要解决的问题范围的属性。
先找最重要的属性,再逐渐把其余属性增添进去。
分析阶段不考虑那些纯粹用于实现的属性。
分析
(1)误把对象当作属性
同一个实体在不同应用领域中,到底应该作为对象还是属性,需要具体分析才能确定。
例如,储户/账户.
(2)误把关联类的属性当作对象的属性
如果某个性质依赖于某个关联链的存在,则该性质是关联类的属性,不应该把它作为一般对象的属性。
例如,带宽是体现关联的属性而不是ATM的
(3)把限定误当成属性
正确使用限定词往往可以减少关联的重数。
如果把某个属性值固定下来以后能减少关联的重数,则应该考虑把这个属性重新表述成一个限定词。
在ATM系统的例子中,“分行代码”、“账号”、“雇员号”、“站号”等都是限定词。
(4)误把内部状态当成了属性
如果某个性质是对象的非公开的内部状态,则应该从对象模型中删掉这个属性。
(5)过于细化
在分析阶段应该忽略那些对大多数操作都没有影响的属性。
(6)存在不一致的属性
类应该是简单而且一致的。
如果得出一些看起来与其他属性毫不相关的属性,则应该考虑把该类分解成两个不同的类。
e.g.轮,帆;
5)识别继承关系
建立类间的继承是为了共享其公共性质/属性。
继承也对类按层次加以组织。
继承关系反映出一定深度的领域知识,需领域专家密切配合才能完成。
继承前人的成果是提高效率的重要方法,也是复用的基础。
6)反复修改
。
。
。
。
。
。
第十一章面向对象设计
Ø了解面向对象设计准则和提高设计质量的启发式规则
Ø软件重用的重要性:
质,成本,效率;
重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用。
软件重用可分为3个层次:
(1)知识重用(例如,软件工程知识的重用)。
(2)方法和标准的重用(例如,面向对象方法或国家制定的软件开发规范的重用)。
(3)软件成分的重用。
Ø可重用构件的特征:
模块,可塑(继承),接口(封装)。
Ø类构件重用(实例,继承,多态)(P265)
Ø了解设计类中服务的方法及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一章 软件 概述