软件工程自学考试问题总结

    今天,参加了软件工程自学考试。自我感觉觉得会通过。但是,有如下几个问题需要再学习:

1、画数据流图,并将其转换为软件结构图。

    考的是一个用银行卡在自动取款机上操作流程。

    插入卡->检查卡(通过后)->接受密码(通过后)->接受钱款数量(未超支通过后)->在相应帐户上取款,更新帐户->显示清单->用户确认(通过后)->取款。

2、软件复杂性McCabe度量法:

    程序流程图转换为程序图,计算环路复杂性:V(G)=m-n+2p。

3、增量模型的增量方式分为增量提交、增量开发

4、软件结构优化准则(结构化分析各面向对象分析都适用):

    1)划分模块时,尽量做到高内聚、低耦合;

    2)一个模块的作用范围应在控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近;

    3)模块的深度、宽度、扇入、扇出要适当

    4)模块的大小要适中;

    5)模块的接口要简单、清晰、含义明确,便于理解,易于测试、实现和维护。

5、Jackson方法

软件工程的书终于草草的过了一遍

    今天到3个论坛上去发了讨论我这个网站程序运用面向对象技术分析、设计的问题,到现在为止,有1人给了回答。umlchina.com上我还不会发帖,不知是怎么样操作的。   

    明天陆续把小结写好,准备看第二遍。现在10:30分,该睡觉了,身体是革命的本钱!

第七章 软件测试

第七章  软件测试

7、1  软件测试的目的及原则

1、目的:为了发现错误,好的测试能发现至今尚未被发现的错误,成功的测试发现了至今尚未发现的错误

2、原则:由输入和输出组成,还要选择不合理的输入,还要检查程序是否做了它不该做的事,严格执行测试计划,长期保存测试用例,错误多的程序段深入测试,程序员避免测试自己的程序

********

7、2  测试方法

1、表态测试与动态测试

  1)、表态测试:人工检测,计算机辅助静态分析

  2)、动态测试:黑盒和白盒

2、黑盒测试法和白盒测试法

  1)黑盒法:发现:不正确或漏了的功能,接口上能否正确地接受输入数据和产生正确的输出信息,访问外部信息是否有错,性能是否满足要求

  2)白盒法:对程序中尽可能多的逻辑路径进行测试

7、3  测试用例的设计(简单应用)

第六章 软件编码

第六章  软件编码

6、1  程序设计语言的特性及选择

1、程序设计语言特性

  1)、心理特性:歧义性,简洁性,局部性和顺序性,传统性

  2)、工程特性:可移植性,开发工具的可利用性,软件的可重用性,可维护性

  3)、技术特性:

2、程序设计语言的选择

  1)、项目的应用领域:科学工程计算,数据处理与数据库应用,实时处理,系统软件,人工智能

  2)、软件的开发方法

  3)、软件执行的环境

  4)、算法和数据结构的复杂性

  5)、软件开发人员的知识

**********

6、2  程序设计风格

1、源程序文档化:标识符应按意取名,程序应加注释(含序言性注释和功能性注释)

2、数据说明:说明顺序应规范化,变量名按字典顺序,复杂数据结构应加注释

3、语句构造:简单直接

4、输入和输出:格式尽量简单,输入数据合法性,用数据或文件结束标志来控制输入数据,交互式输入时提供可用的选择和边界值,输入格式的一致性,输出数据表格化和图形化

5、效率:是一个性能要求,首先保证程序正确和清晰,提高程序效率的根本途径在于选择良好的设计方法和良好的数据数据结构与算法而不是靠编程时对程序语句做调整(这句话要牢记!)

第五章 软件详细设计(疑问:jsp方法?)

5、1详细设计的任务:详细算法设计,模块内数据结构设计,数据库的物理设计,其他设计(代码设计,I/0设计,人机对话设计,详细设计说明书,评审

**********

5、2结构化程序设计方法(SP)

要点:自顶向下、逐步求精,三种基本结构,主程序员制

***********

5、3  详细设计描述法(简单应用)

1、程序流程图:缺点是:流程随意,不易反映逐步求精的过程,不易表示数据结构

2、PAD图:优点是:层次清晰,逐步求精,方便,结构化,自动生成程序

3、过程设计语言(Process Design Language:PDL), 也称程序描述语言,也称伪码

  特点:关键字固定语法,处理过程无严格的语法,数据说明机制,模块定义和调用机制

  结构:顺序,选择,重复,出口,模块定义与调用,数据定义,I/0

  优点:机制比图形更全面,可作为注释嵌入在源码中作为文档,可自动生成代码

**********

5。4  Jackson方法(简单应用)

1、概述:面向数据结构:JSP(Jackson Structured Programming),JSD(Jackson System Development)

2、Jackson结构图

  3种基本结构:顺序,选择,重复

  特点:可表层次结构,形象,可表数据结构和程序结构

3、JSP设计步骤:输入和输出数据的逻辑结构,输入和输出数据结构有无对应关系,导出程序结构,列出基本操作和条件,伪码写出程序

 举例:(不懂??P68)

4、Jackson方法小结:结构冲突,主要体现在程序结构的设计并不明确地划分概要设计和详细设计,用于规模不大的数据处理系统

第四章 软件概要设计(疑问:DFD转化为软件结

4、1  软件概要设计的基本任务

1、基本任务

  1)设计软件系统结构:分模块,定模块功能,模块关系,模块接口,模块结构的质量

  2)数据结构及数据库设计:数据结构的设计,数据库的设计(含:概念设计,逻辑设计,物理设计)

  3)编写概要设计文档:概要设计说明书,数据库设计说明书,用户手册,修定测试计划

  4)评审

2、软件概要设计说明书的主要内容。

*********

4、2  软件设计的基本原理

1、模块化

  1)模块基本属性:接口,功能,逻辑,状态

2、抽象:

3、信息隐蔽

4、模块独立性

  1)耦合性:No Direct Coupling,Data Coupling,Stamp Coupling,Control Coupling,Common Coupling,Content Coupling

     降低耦合的措施:在方式上降低模块间接口的复杂性,传递信息类型上尽量用数据耦合,避免控制耦合,有控制的使用公共耦合

 2)内聚性:Coincidental Cohesion,Logical Cohesion,Temporal Cohesion,Communicational Cohesion,Sequential Cohesion,Functional Cohesion

******************

4、3  软件结构优化准则

1、软件结构图(Structure Chart,SC):模块用方框,模块的控制关系用单向箭头,信息传递用短箭头,两个附加符号,结构图的形态特征(深度,宽度,扇出,扇入),注意事项

2、优化准则:模块高内聚和低耦合,模块的作用范围在控制范围之内和判定所在的模块应与受其影响的模块在层次上尽量靠近,形态特征适当,模块大小适中,模块接口简单、清晰、含义明确。。

***********

4、4  面向数据流的设计方法

1、类型:变换型数据流图,事务型数据流图

2、设计过程:精化DFD,确定DFD类型,分解上层模块和设计中下层模块,对软件结构求精,描述模块,复查

3、变换分析设计:确定DFD的变换中心等,顶层和第一层变换结构,中、下层模块,设计优化

4、事务分析设计:DFD事务中心,顶层和第一层即事务结构,中、下层设计和优化

5、1)综合DFD的映射:整体类型,局部DFD范围,软件结构

    2)分层DFD的映射:主图是变换型而子图是事务型,主图是事务型而子图是变换型

6、实例(不懂??)

7、设计后处理:模块处理说明,接口说明,数据结构说明,设计约束或限制,概要设计评审,优化

**************

4、5基于IDEF0图的设计方法

转换成结构图:父图,单层结构图,模块接口,系统初始结构图,精化

4、6  HIPO图

1、H图:表模块关系

2、IPO图

第3章小节,问题:形式化(维也纳,VDM),IDEF方法

第3章  软件需求分析

第1节  任务

1、概念:用户需求

  1)难点:问题复杂,交流,不完备和不一致,易变

  2)分析原则:数据域和功能域,分解细化,建模

2、任务

  1)问题识别:功能,性能,环境,界面

  2)逻辑模型

  3)文档:需求规格说明书,初步用户使用手册,测试计划,开发计划

3、需求规格说明忆主要内容

****************

第2节  结构化分析方法

1、自顶向下

2、描述工具:DFD,DD,结构化语言等

3、步骤:当前物理模型,当前逻辑模型,目标系统逻辑模型,补充优化。

*****************

第3节  DFD

概念:逻辑模型

1、基本图形符号:箭头表数据流,圆表加工,双杠表存储,方框表端点

2、步骤:

  1)系统的输入输出;

  2)系统内部;

  3)注意事项:命名,数据流而非控制流,不画物质流,加工都有IO,编号,父,子图平衡,局部数据存储,提高DFD易理解性

3、实例

*******

第4节  DD

概念:各个成分的具体含义

1、内容及格式:1)、数据流  2):数据存储  3):数据项  4):加工条目

2、实现:

  1)手工:印制卡片,填内容,按图号排列,同一成分只在父图上定义,索引目录

  2)计算机辅助建立并维护:字典生成与管理程序,建数据库文件

*************

第5节  加工逻辑的描述(应用)

1、结构化语言:

  1)外层:顺序结构,选择结构,重复

  2)内层:祈使句

2、判定表:撮条件,条件取值,条件组合,提取动作,制作判定表,完善

3、判定树:

***********

第6节  IDEF方法(不懂)

概念:Integrated Computer Aided Manufacturing(ICAM)

     ICAM Definition=IDEF

分为3部分:IDEF0,功能模型;IDEF1,信息模型;IDEF2,动态模型;

1、图形表示:输入,输出,控制,机制

2、方法:范围、观点及目的;内外关系图A-0图;顶层图A0图;低层次的图形;

3、特点:图形符号;自顶向下;

********

第7节  结构化分析方法小节

适合于数据处理类型的需求分析

弱点:静态模型扩充成CFD或STD;DFD与数据库中ER结合;不适合描述人机交互;与形式化结合,形式化是软件自动化的基础(不懂);借助需求分析工具

 

   

第1,2章小节,问题:VDM,成本-效益分析的时间价

第1章第1节  软件工程的产生

1、软件的特点:

     1)逻辑产品;2)成本主要是研制;3)不会磨损;4)成本昂贵。

2、发展:

     1)程序设计时代;2)程序系统;3)软件工程。

3、软件危机:

    1)产生:供不应求

    2)危机的表现:

          1>预算常突破;2>不能满足用户要求;3>可维护性差;4>可靠性差。

    3)危机原因:

          1>规模;2>管理;3>技术;4>工具。

4、软件工程:

    1)定义:用科学知识和技术原理来定义、开发、维护软件的一门学科。

    2)性质:交叉学科;

    3)内容:开发技术,开发管理。

5、问题:

    1)费用;2)可靠性;3)维护;4)生产率;5)重用。

**************************************

第2节  软件工程过程和软件生存周期

1、过程:获取,供应,开发,操作,维护,管理,支持。

2、周期:可行性分析和开发计划,需求分析,概要设计,详细设计,编码,测试,维护

第3节  软件生存周期、方法、和工具

1、生存周期模型:瀑布,增量,螺旋,喷泉,基于知识,变换

2、开发方法:结构化,Jackson,维也纳(VDM,形式化不懂?),OOP

3、工具:

    1)重要性

    2)工具箱

    3)开发环境 

    4)CASE(computer aided software engineering)

***************************************************************

第2章  软件可行性研究与项目开发计划

第1节  可行性研究

1、任务:技术,经济,社会

2、步骤:规模目标,现有系统,新系统高层模型,评价各种方案,可行方案,可研报告

3、可研报告内容:引言,前提,现有系统分析,技术可行性,经济,社会,其他方案,结论

********

第2节  系统流程图

1、作用:物理模型

2、符号:3、例子

********

第3节  成本-效益分析

1、时间价值(不懂?)2、投资回收期  3、纯收入

*********

第4节  项目开发计划:项目概述,实施计划,人员,期限

***************************