文正学院 计算机软件基础软件工程Word格式文档下载.docx
《文正学院 计算机软件基础软件工程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《文正学院 计算机软件基础软件工程Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
优点:
1.近乎强迫式规则,每个阶段有文档需确认。
2.带反馈环。
缺点:
1生产软件仍不能完全满足需求。
2积累错误。
越早出现的错误,暴露的时间越晚,排除故障付出的代价就越高。
螺旋模型(SpiralModel)
螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:
制定计划──确定软件目标,选定实施方案,弄清项目开发的限制
风险分析──分析所选方案,考虑如何识别和消除风险
实施工程──实施软件开发
客户评估──评价开发工作,提出修正建议
6、软件开发方法
软件开发方法:
结构化软件开发方法和面向对象软件开发
结构化软件开发方法:
数据处理系统:
结构化分析,设计,Jackson方法
大型复杂系统:
SADT
实时事务处理:
FSM(有穷状态机,FiniteStateMechanism)
并发系统:
Petri网
面向对象的软件开发方法:
OOT
第二章系统分析(定制计划,可行性研究)
1、定制计划阶段目标与任务
目标:
解决的问题是什么?
(软件项目计划的第一个活动是确定范围)
任务:
确定软件范围,给出可行性分析,由用户决定“行”或“不行”。
软件范围描述了将被处理的数据和控制、功能、性能(如处理及响应时间)、约束(外部硬件,可用能存或其他已有系统对软件的限制)、接口及可靠性。
2、确定软件范围所需信息的方法
(1)软件工程师(分析员)与客户交流(会谈式):
集中于客户、总体目标及收益;
集中在客户对软件解决方案的想法;
“元问题”(集中于会谈效果)
(2)联合小组形式,其中一种方法:
便利应用规约技术FAST,如由IBM公司开发的JAD。
★★★此处有习题:
传送带分类系统(CLSS)
3、可行性研究的方面
可行性研究的四维:
1。
技术2。
财政3。
时间4。
资源
①经济可行性:
进行成本效益分析,评估项目的开发成本。
②技术可行性:
现有技术是否实现系统的功能,满足约束,风险有多大!
对系统的性能、可靠性、可维护性以及生产率等方面的信息进行评价。
③法律可行性:
系统开发可能导致的责任(合同责任、法律责任,专利、版权等)
④抉择:
对系统不同方案的对比、选择
4、可行性研究的步骤(八个步骤)
5、系统流程图
请画出由下列文字描述的系统流程图(某城市招干考试成绩统计系统)
6、成本—效益分析
①基于代码行估计(LOC:
LineofCode,单位kLoc)
如,2900行源代码,注释,测试,等200行,总工作量9人/月
生产率(ProductionRate)=源代码行/总工作量=(2900-200)/9=300Loc/PM
②基于功能点(FP:
FunctionPoint)估计
③基于过程估计
④经验估计(自动软件估计)(公式)
第三章软件需求分析
1、需求分析的任务:
“理解、分解和表达”
①理解:
通过调查分析,来定义用户的需求,以达到对用户需求的共同的理解(理解软件需求)目的:
理解问题的数据域(数据流、数据内容、数据结构)和功能域。
②分解:
通过结构化分析方法,自顶向下,逐层分析的方式对问题进行分解和不断细化。
目的:
确定系统的构成和主要成份。
③表达:
把共同的理解和结构化分析的结果用双方均能理解的方法描述出来,写入需求规格说明(SRS)
2、结构化的分析方法(SA)
①采用自顶向下,逐层分解的方法
②采用特定的描述方法:
数据流图(DFD)—数据流动
数据字典(DD)—数据定义、内容、结构
结构化英语/伪码(SE/PDL)—处理的逻辑描述
判定表(DecisionTable)、判定树(DecisionTree)
3、数据流图(DFD:
DataFlowDiagram)
①定义:
描述数据在软件系统中流动和处理的图形工具。
②数据流图中的概念
父图与子图
2。
分层图的编号
3。
局部文件
4、数据字典(DD=DataDictionary)
以准确的、无二义性的方式定义数据流图(DFD)中出现的所有被命名的图形元素,包括数据流、数据文件、数据项(条目)、加工(处理),源和汇。
②数据字典(DD=DateDictionary)_DD中定义内容:
数据流
如:
选课单=学生学号+{课程编码}
数据文件文件:
开课清单,类型:
文本,构成:
课程纪录
课程纪录=课程代码+名称+注册费用+任课教师+课时+………
数据课程代码=7位数字,如0001005
4。
加工(处理):
加工名称,流入/出数据,数据处理过程等,主要描述加工步骤
5。
源和汇:
产生数据或接受数据的部分
1、编写银行取款过程的数据流图的DD
2、采用判断表和判断树描述下列文字叙述的内容
5、系统动态分析
分析系统的动作,描述系统的行为
最常用的动态分析方法:
①状态迁移图
状态迁移图是描述系统的状态如何相应外部的信号进行推移的一种图形表示。
圆圈“○”表示可得到的系统状态
箭头“→”表示从一种状态向另一种状态的迁移。
可得到的状态=就绪,运行,等待
生成的事件=t1,t2,t3,t4
t1─中断事件t2─中断已处理
t3─分配CPUt4─用完CPU时间
②时序图
③Petri网
基本符号:
位置,转移,输入,输出函数
一组位置(place)。
“〇”表示状态(条件,要求)
转移(转换)(transition)“—”,“|”系统中的事件
转移的输入“”,事件发生的前提
转移的输出“”,事件发生的结果
某企业销售管理系统(画出分层DFD)
6、数据及数据库需求的设计方法—ER模型,范式
①有关数据库的基本概念
在软件系统中需要处理的数据是现实世界中存在的事物及其联系的反映。
人们通常将与数据处理有关的的领域分为三个世界:
现实世界、信息世界、数据世界
②关系规范化的程度,通常按属性间的依赖程度来区分,并以范式NF(NormalForm)来表达。
常用的范式分为第一范式(1NF)、第二范式(2NF)和第三范式(3NF)
③判断规范化程度的条件是:
Ⅰ关系中所有属性都是“单纯域”,即不出现“表中有表”
Ⅱ非主属性完全函数依赖于关键字
Ⅲ非主属性相互独立,即任何非主属性间不存在函数依赖。
如果一个关系连条件Ⅰ都不满足,则这个关系是非规范化的。
如果一个关系仅满足条件Ⅰ,则这个关系满足第一范式(1NF)。
如果一个关系满足条件Ⅰ、Ⅱ,但不满足Ⅲ,则这个关系满足第二范式(2NF)。
如果一个关系同时满足条件Ⅰ、Ⅱ和Ⅲ,则这个关系表满足第三范式(3NF)。
当数据模型达到3NF,一般情况下就能满足数据库应用的需要。
第4章软件设计方法
1、软件设计的目标和任务
①根据用信息域表示的软件需求,以及功能和性能需求,进行:
数据设计、系统结构设计、模块(过程)设计。
②从工程管理的角度来看,软件设计分两步完成:
概要设计;
详细设计,即模块设计,或过程设计。
2、软件设计基础
①自顶向下,逐步细化
将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。
②软件结构
软件结构包括两部分。
程序的模块结构和数据的结构
软件的体系结构通过一个划分过程来完成。
③程序结构
程序结构表明了程序各个部件(模块)的组织情况,是软件的过程表示。
④结构图(简称SC图)
结构图反映程序中模块之间的层次调用关系和联系:
它以特定的符号表示模块、模块间的调用关系和模块间信息的传递
⑤软件设计的七条基本原则
1)模块化(modularity)
2)抽象(Abstract)
3)信息隐蔽(Hiding)
4)信息局部化(localization)
5)一致性(Uniformity)
6)完整性(Completeness)
7)确定性(Confirmability)
3、模块独立性
①“模块”,又称“组件”。
它一般具有如下三个基本属性:
功能:
描述该模块实现什么功能
逻辑:
描述模块内部怎么做
状态:
该模块使用时的环境和条件
在描述一个模块时,还必须按模块的外部特性与内部特性分别描述
②模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的
例如,若一个模块只具有单一的功能且与其它模块没有太多的联系,则称此模块具有模块独立性
一般采用两个准则度量模块独立性。
即模块间耦合和模块内聚。
⒈耦合是模块之间的互相连接的紧密程度的度量。
⒉内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。
⒊模块独立性比较强的模块应是高内聚低耦合的模块。
尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。
4、结构化设计方法(SD)
⒈首先研究、分析和审查数据流图。
⒉然后根据数据流图决定问题的类型。
数据处理问题典型的类型有两种:
变换型和事务型。
针对两种不同的类型分别进行分析处理。
①变换型系统结构图:
变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。
相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。
②事务型系统结构图
它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。
在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。
各事务处理模块并列。
每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。
5、详细(过程)设计
①任务:
从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。
②在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。
表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类:
图形工具—程序流程图(ProgramFlowChart=PFC),N-S图,PAD图)表格工具—判定表(DecisionTable)语言工具—伪码(PDL)
③程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:
④N-S图也叫做盒图。
五种基本控制结构由五种图形构件表示:
⑤PAD也设置了五种基本控制结构的图式,并允许递归使用:
NS盒图及PAD图表示程序流程
第五章Jackson系统开发方法(JSD)
①JSP:
适用于小系统的开发,或详细设计阶段,用输入/输出的数据结构进行软件设计,用数据结构映射软件结构。
②Jackson图的基本画法:
③Jackson结构程序设计方法
1)步骤:
Step1确定输入/输出的数据结构,并用Jackson图表示。
Step2分析确定输入/输出数据结构的数据元素之间的对应关系
Step3利用三条基本规则从数据结构的Jackson图导出程序结构的Jackson图。
用Jackson方法设计一个打印表格程序
第七章程序编码(实现阶段)
1、程序设计风格
符号名即标识符,包括模块名、变量名、常量名、标号名、子程序名、数据区名以及缓冲区名等。
注释分为序言性注释和功能性注释。
2、程序效率
程序的效率是指程序的执行速度及程序所需占用的内存的存储空间。
在大中型计算机系统中,存储限制不再是主要问题。
在这种环境下,对内存采取基于操作系统的分页功能的虚拟存储管理。
存储效率与操作系统的分页功能直接有关。
在微型计算机系统中,存储器的容量对软件设计和编码的制约很大。
因此要选择可生成较短目标代码且存储压缩性能优良的编译程序,有时需采用汇编程序。
3、程序复杂性定性度量
①McCabe度量法(McCabe环行复杂度度量法)
McCabe度量法,又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法。
McCabe方法的步骤:
等于程序图中弧所封闭的区域数。
②Halstead的软件科学
n1=用到的不同的运算符的个数,n2=不同操作数的个数,
N1=总运算符的个数,N2=总操作数的个数。
⒈程序长度(预测的Halstead长度):
⒉Halstead度量可以用来预测程序中的错误。
预测公式为:
B为该程序的错误数。
它表明程序中可能存在的差错B应与程序量V成正比。
第八章软件测试
1、软件测试的概念
使用人工和自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的过程
2、软件动态测试方法及其复杂性
两种常用的测试方法:
黑盒测试(黑盒法)、白盒测试(白盒法)
3、白盒测试技术(结构路径测试)
①逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。
它属白盒测试。
②最少测试路径的计算:
☆☆☆例:
③基本路径测试:
4、黑盒测试技术(功能测试)
①等价类划分方法:
把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。
②因果图的基本符号:
⒈通常在因果图中用Ci表示原因,用Ei表示结果,各结点表示状态,可取值“0”或“1”。
“0”表示某状态不出现,“1”表示某状态出现。
⒉主要的原因和结果之间的关系有:
⒊表示约束条件的符号:
1、等价类划分方法,给出足够的测试用例(一个程序读入三个整数)
2、自动饮料售货机软件进行黑盒测试
5、综合测试策略
(1)用黑盒测试方法设计基本测试用例,再用白盒法补充必要用例。
(黑主,白辅)
(2)任何情况下均要使用边界值分析测试用例。
(3)如果规格说明中含有输入条件的组合,一般选用因果图法构造用例。
(4)用错误推测法补充用例。
(5)若未达到覆盖标准,应用逻辑覆盖法补充足够用例。
6、软件测试过程
测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。
7、软件调试
软件调试:
是在进行了成功的测试之后才开始的工作。
它与软件测试不同,调试的任务:
是进一步诊断和改正程序中潜在的错误。
调试活动由两部分组成:
确定程序中可疑错误的确切性质和位置(80%~95%);
对程序(设计,编码)进行修改,排除这个错误。
几种主要的调试方法:
强行排错、试探法(猜错法)、回溯法调试、对分法、归纳法调试、演绎法调试。
第11章软件维护
1、软件维护的概念
维护的类型有四种:
改正性维护、适应性维护、完善性维护、预防性维护
软件维护的定义、影响维护工作量的因素、软件维护的策略、维护成本
2、软件维护活动的特点
结构化维护和非结构化维护的对比、软件维护的工作流程(事件流)
第*章软件可靠性
MTTF---平均失效等待时间
植入故障法:
第九章面向对象技术
1、面向对象的概念
面向对象的定义:
面向对象=对象+类+继承+通信(消息)
3、对象模型例子
一家公司有许多部门,每个部门由一名经理管理,也有经理并不管理任何一个部门;
每个部门生产多种产品,而每种产品仅有一个部门生产。
该公司有多名员工,员工分经理和工人两类。
每个工人可参加多个工程项目,每个项目需要多个工人;
每位经理可以主持多个项目,每个项目仅有一人主持。