2013年软件设计师考试知识结构(四)

第四章 系统开发和运行知识

软件工程基础知识

软件工程师指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产效率、提高软件质量、降低软件成本.

软件工程概述

软件的生存周期:

         可行性分析与项目开发计划:确定软件的开发目标及其可行性.要进行问题定义、可行性分析、定制项目开发计划;参与人员有用户、项目负责人和系统分析师;产生的文档有可行性分析报告和项目开发计划

         需求分析:确定软件系统的功能、性能、数据和界面等要求,从而确定系统的逻辑模型;参与人员有用户、项目负责人和系统分析师;产生的文档有软件需求说明书.

         概要设计:开发人员要把确定的各项功能需求转换成需要的系统结构.概要设计就是设计软件的机构、明确软件由那些模块组成,这些模块的层次是怎样的,这些模块的调用关系是怎样的,每个模块的功能是什么.同时还要设计系统的总体数据结构和数据库结构.参与人员有系统分析师和软件设计师.产生的文档有概要设计说明书

         详细设计:针对每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述.参与的人员有软件设计师和程序员,产生的文档有详细设计文档.

         编码:

         测试:

         维护:

软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型.

         瀑布模型(waterfall model):是将软件周期各个活动规定为依线性顺序连接的若干阶段的模型.它是以文档为驱动、适合于软件需求很明确的软件项目的模型,但缺乏灵活性,无法解决软件需求不明确或不确定的问题.

         演化模型(evolutionary model ):它可以在获取一组基本需求后,通过快速分析结构构造出该软件的一个初始可运行版本,这个初始的软件通常称为原型(Prototype),然后根据用户在使用原型过程中提出的意见和建议对原型进行改进,获取原型的新版本.其特别适用于对软件需求缺乏准确认识的情况.

        螺旋模型(spiral model):对于复杂大型软件.螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合.每个螺旋周期分为,指定计划、风险分析、实施工程、用户评估(提出修改意见,建立下一个周期的开发计划).

         喷泉模型(water fountain model):是一种以用户需求为动力,以对象作为驱动的模型,适合用户面向对象的开发方法.开发过程具有迭代性和无间性,其允许各开发活动交叉、迭代进行.

软件开发的方法:

         结构化方法:是一种面向数据流的开发方法.其指导思想是自顶向下、逐层分解,它的基本原则是功能的分解和抽象.其特别适合用于数据处理领域的问题,但不适合解决大规模的、特别复杂的项目,且难以适应需求的变化.

         Jackson方法:是一种面向数据结构的开发方法.其首先描述问题的输入、输出数据结构,分析器对应性,然后推出相应的程序结构,从而给出问题的软件过程的描述.

         原型方法:开发原型系统首先确定用户需求,开发初始原型,然后征求用户对初始原型的改进意见,并根据已将修改原型.其比较适合于用户需求不清、需求经常变化的情况,且系统规模不是很大的情况.

         面向对象方法:其基本的触发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题.统一建模语言(Unified ModelingLanguage UML)是面向对象的标准建模语言.

软件需求分析

任务:确定待开发软件的功能、性能、数据和界面的要求

         确定软件系统的综合要求:界面/功能/性能/安全、保密、可靠性/系统运行/异常处理等的要求

         分析软件系统的数据要求:基本数据元素、元素间的逻辑关系、数据量和峰值等.

         导出系统的逻辑模型;

         修正项目开发计划;

         还可开发一个原型系统.

分类:功能需求/非功能需求/设计约束

软件项目管理

其管理的对象是软件项目,包括对软件项目的工作范围、可能遇到的风险、需要的资源(人/软硬件等)、要实现的任务、经历的里程碑、花费的工作量以及进度的安排等.

成本估算方法:

         自顶向下估算法:其对系统级工作重视,估算工作量小、速度快,但忽略了低级别上的技术性问题,而这些问题将会是成本上升.

         自底向上估算法:其优缺点刚好与自顶向下的优缺点对调,估算出的成本也是偏少.

         差别估算法:是通过参照已经完成过的类似项目,并考虑待开发项目的差别造成的成本,这种方法估算出的成本比较准确,但差别不容易确定和估计成本.

此外还有专家估算法/类推法和算式估算法.

成本估算模型:有Putnam模型和COCOMO模型.其中Putnam模型是一种动态多变量模型.结构性成本估算模型COCOMO是最精确、最易于使用的估算模型之一,包括基本/中级和详细COCOMO模型.

风险分析:风险识别,风险预测,风险评估,风险控制(风险避免/控制和管理及意外事件计划).

进度管理:进度安排的常用图形描述方法有Gantt图(甘特图)和项目计划评审技术(Program Evaluation & Review Technique ,PERT)图.

         Gantt图,能清晰地描述每个任务开始时间和结束时间,进展情况及任务间的并行性,但不能反映出任务间的依赖关系,难以去顶整个项目的关键所在,也不能反映计划中的潜力部分.

         PERT图,可以给出每个任务的开始、结束时间和完成该任务所需的时间,还给出了任务之间的关系,但不能反映出任务间的并行关系.

软件配置管理

软件工具与软件开发环境

软件过程管理

软件能力成熟度模型:是对软件组织进化阶段的描述,随着软件组织定义、实施、测量、控制盒改进其软件过程,软件组织的能力进过这些阶段逐步前进.

软件过程能力成熟度模型将软件过程能力划分为5个等级:初始阶段/可重复阶段/已定义阶段/已管理阶段/优化阶段.

能力成熟度集成模型(CapacityMaturity Model Integrated,CMMI):其有两种表述方式,一种是连续表述,主要关注某特定域的过程改进和能力评估;另一种是阶段式,主要衡量一个企业的成熟度,而不把单个过程是否完成作为重点.

         基于连续表述方式的CMMI有5个成熟度等级:初始级/已管理级/已定义级/量化管理级和优化级;

         基于阶段式表述方式的CMMI有6个成熟度等级:未完整级/已执行级/已管理级/已定义级/量化管理级和优化级

统一过程(UP):统一过程模型是一种”用例和风险驱动,以架构为中心,迭代并且增量”的开发过程.其定义了4个技术阶段及其制品:

         初始阶段(Inception phase):专注于项目的初创活动.

         精化阶段(elaboration phase):理解了最初的领域范围后,进行需求分析和机构演进.

         构建阶段(construction phase):关注系统结构,产生实现模型.

         移交阶段(transition phase):关注软件提交方面的工作,产生如见增量.

每个迭代中又5个核心工作流:捕获系统应该做什么的需求工作流,精化和结构化需求的分析工作流,在系统架构内实现需求的设计工作流,构建软件的实现工作流,验证实现是否如期望那样工作的测试工作流.

         4个工作阶段的里程碑:

                   初始阶段-----生命周期目标

                   精化阶段-----生命周期架构

                   构建阶段-----初始运作功能

                   移交阶段-----产品发布.

统一过程的典型代表是RUP(RationalUnified Process).RUP是up的商业扩展.

敏捷方法:其总体的目标是通过”尽可能早地、持续地对又价值的软件的交付”使客户满意.通过在软件开发过程中加入灵活性,敏捷方法可以使用户能够在开发周期后期增加或改变需求.其方法有:

         极限编程(XP):它由价值观、原则、实践和行为4个部分组成.

                   4大价值观:沟通、简单性、反馈和勇气

                   5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作.

                   12个最佳实践:快速游戏、小型发布、隐喻(找到适合的比喻传达信息)、简单设计、测试先行、重构、结队编程、集体代码所有制、持续集成、每周工作40个小时、现场客户和编码标准.

         另外还有水晶法(Crystal)/并列争求法(Scrum)/自适应软件开发(ASD).

软件质量管理与质量保证

软件质量反映软件系统或软件产品满足规定或隐含需求的能力的特征和特性全体.

软件质量特性:使用ISO/IEC 9126软件质量模型和Mc Call软件质量模型等来描述

         ISO/IEC9126软件质量模型:其由质量特性、质量子特性和度量指标三层组成.

                   功能性:适应性、准确性、互用性、依从性(依从标准、规约、法规等)、安全性;

                   可靠性:成熟性(失效的频度)、容错性、易恢复性;

                   易使用性:易理解性、易学性、易操作性;

                   效率:时间特性和资源特性;

                   可维护性:易分析性(判错/判待修改)、易改变性、稳定性(修改风险)、易测试性;

                   可移植性:适应性、易安装性、一致性(与规约/标准一致)、易替换性;

         McCall软件质量模型:其从软件产品的运行、修正和转移三个方面确定了11个质量特性,其由质量特性、评价准则和度量指标三层组成.

软件质量保证:其包括满足需求、遵循规定标准的开发准则和满足隐含需求

软件复杂性:其参数有规模、难度、结构和智能度;其衡量程序复杂性的方法主要有代码行度量法和McCabe度量法(环路度量,V(G)=m-n-2p);

软件评审:包括评审设计质量(是否符合用户需求、可靠性、保密性、操作性、性能、可维护性、可测试性和复用性等)和程序质量(功能结构、功能通用性、模块层次、模块结构和处理过程的结构);另外还有与运行环境的接口,包括硬件的接口和用户的接口.

软件容错技术:包括避开错误和容错技术等.容错的一般方法有结构冗余、信息冗余、时间冗余和冗余附加技术.

系统分析基础知识

系统分析概述

系统分析的主要任务是对现行系统进一步详细调查,将调查中所得到的文档资料集中,对组织内部整体管理状况和信息处理过程进行分析,为系统开发提供所需资料,并提交系统方案说明书.系统分析侧重于从业务全过程的角度进行分析,主要内容有业务和数据的流程是否通畅,是否合理;数据、业务过程和组织管理之间的关系;原系统管理模式改革和新系统管理方法的实现是否具有可行性.确定的分析结果包括开发者对于现有组织管理状况的了解,用户对信息系统功能的需求,数据和业务流程,管理功能和管理数据指标体系以及新系统拟改动和新增的管理模型等.最后,提出信息系统的各种设想和方案,并对所有的设想和方案进行分析、研究、比较、判断和选择,获得一个最优的新系统的逻辑模型,并在用户理解计算机的工作流程和处理方式的情况下,将它明确地表达成书面资料(系统分析报告,即系统方案说明书).主要步骤有获得当前系统的物理模型,再经抽象得到现有系统的逻辑模型,再经分析优化出目标系统的逻辑模型,最后建立出目标系统的物理模型.

结构化分析方法

结构化分析(StructuredAnalysis ,SA)方法是一种面向数据流的需求分析方法,适用于分析大型数据处理系统,其基本思想是自顶向下逐层分解;其分析结果由一套分层的数据流图、一本数据词典、一组小说明和补充材料组成.

         数据流图(Data Flow Diagram,DFD):画数据流图需要注意以下问题:

                   适当的为数据流、加工、数据存储和外部实体命名,且名称有实际含义;

                   画数据流而不要画控制流;

                   每条数据流的输入或输出是加工;

                   一个加工的输出数据流不应与数据流同名,即使它们的组成分成相同;

                   允许一个加工有多条数据流流向另外一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工;

                   保持父子图平衡;

                   保持数据守恒;

                   每个加工必须既有输入数据流,又有输出数据流;

                   在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流,但在某张子图中可能只有读没有写或反之;

         数据字典(DD):数据流、数据项、数据存储和基本加工

         加工逻辑的描述:结构化语言、判定表和判定树.

系统分析报告

系统分析报告中,数据流图、数据字典和加工说明是必不可少的组成部分;系统分析报告必须简明扼要、抓住本质,反映出目标系统的全貌和开发人员的设想;其作用有作为开发人员进行系统设计和实施的基础,作为用户和开发人员之间的协议或合同,作为目标系统验收和评价的依据;其主要内容有组织情况概述,现行系统概述,系统逻辑模型,新系统在各个业务处理环节拟采用的管理方法、算法或模型,与新系统配套的管理制度和运行体制的建立,系统设计与实施的初步计划,用户领导审批意见.

系统设计基础知识

系统设计的内容和步骤

在系统分析阶段,已经搞清楚了软件”做什么”的问题,进入设计阶段,要把软件”做什么”转换成”怎么做”的物理模型.

其主要目的是为系统控制制定蓝图,其内容包括新系统的总体结构设计、代码设计、输出设计、输入设计、处理过程设计、数据存储设计、用户界面设计和安全控制设计等.

其设计的基本任务大体上可以分为概要设计和详细设计.

         概要设计的基本任务:设计软件系统的总体结构、设计软件系统的数据结构及数据库、编写概要设计文档和评审;

         详细设计的基本任务:对每个模块进行详细的算法设计、对模块内的数据结构设计、对数据库进行物理设计、其他设计(代码设计、输入输出格式设计、用户界面设计)、编写详细设计说明书和评审;

系统设计的基本原理

抽象、模块化(目的是使程序的结构清晰,容易阅读、理解、测试和修改)、信息隐蔽(提高软件的可修改性、可测试性和可移植性)、模块独立(耦合性和内聚性)

         耦合性:模块间联系的紧密度,五直接耦合、数据耦合、标记耦合、控制耦合、公共耦合、内容耦合;

         内聚性:模块内部各元素间联系的紧密度,偶然内聚、逻辑内聚、时间内聚、顺序内聚和功能内聚.

系统总体结构设计

是根据系统分析的要求和组织的实际情况来对新系统的总体结构形式和可利用的资源进行大致设计,这是一种宏观、总体上的设计和规则.

         设计原则:分解—协调原则、自顶向下的原则、信息隐蔽和抽象的原则、一致性原则(与标准一致)、明确性原则、高内聚地耦合原则、模块的扇入和扇出系数要合理,模块的规模适当.

         划分子系统的原则:子系统要具有相对独立性、子系统间数据的依赖性尽量小、数据冗余小、考虑今后管理发展的需要、便于系统分阶段实现、使各类资源充分利用;

         系统模块设计:模块是组成系统的基本单位,它的特点是可以组合、分解和更换;其应具备输入和输出、处理功能、内部数据和程序代码四个要素;模块结构设计应尽量高内聚低耦合、模块间只能存在上下调用关系,而不能有同级之间的横向联系、整个系统应该呈树状结构,而非网状结构或交叉调用.

         数据存储设计:数据结构组织和数据库或文件设计,就是要根据数据的不同用途、使用要求、统计渠道和安全保密性等,来决定数据的整体组织形式、表或文件的形式,以及决定数据的结构、类别、载体、组织方式、保密级别等一系列的问题.

结构化设计方法

结构化设计(Structured Design,SD)方法是一种面向数据流的设计方法,它可以与SA方法衔接;其基本思想是将系统设计成由相对独立、功能单一的模块组成的结构.

DFD的信息流分为交换流(输入到加工再到输出)和事务流(各活动流以事务中心为起点呈辐射状流出.)

变换分析:确定输入流和输出流,分离出交换中心;第一级分解;第二级分解;事务分析;

SD方法的设计步骤:复查并精化数据流图;确定DFD的信息流类型;分别实施交换分析或事务分析;优化程序结构图.

面向数据结构的设计方法

面向数据结构的设计方法以数据结构作为设计的基础,它根据输入输出数据结构导出程序的结构,适用于规模不大的数据处理系统.Jackson方法是一种典型的面向数据结构的设计方法.

系统详细设计

输出设计:确定输出内容;选择输出设备与介质;确定输出格式.

输入设计:应遵循最小量原则、简单性原则、早检验原则和少转换原则;输入设计的内容有确定输入数据内容、输入方式设计、输入格式设计和校对方式设计.

处理过程设计:要确定每个模块的内部特征,包括数据组织、控制流、每一步的具体加工要求及种种实施细节.其关键是用一种合适的表达方式来描述每个模块的执行过程,

         流程图:直观、形象、容易理解,但只能描述执行过程而不能描述有关数据.

         盒图(NS图):每个处理步骤用一个盒子表示,盒子可以嵌套,盒子只能从上头进入,从下头走出.

         形式语言:其外层语法是确定的,而内层语法不确定.

         决策树/决策表:适合于描述加工中具有多个策略且每个策略和若干条件有关的逻辑功能.

用户界面设计:菜单方式、会话管理方式、提示方式与权限管理.

安全控制设计:影响系统安全的因素有环境因素和数据处理因素等.

系统实施知识

系统实施概述

系统实施是软件开发工作的最后一个阶段.所谓实施,指的是将系统设计阶段的结果在计算机上实现,将原来纸面上的、类似于设计图式的新系统转换成可执行的应用软件系统.其主要任务有按总体设计方案购置和安装计算机网络系统;软件准备;培训;数据准备;投入转换和试运行;其步骤有购置和安装计算机网络、建立数据库系统、程序设计、收集有关数据并录入后进行系统测试、人员培训、系统转换盒试运行.

程序设计

程序设计的方法大多按照结构化方法、原型方法和面向对象的方法进行.其目的是为了实现开发者在系统分析和系统设计中提出的管理方法和处理构想.

程序设计基本模块:控制模块、输入模块、输入数据校验模块、输出模块和处理模块.

系统测试与调试

系统测试时为了发现错误而执行程序的过程,成功的测试时发现了至今尚未发现的错误的测试.测试的目的就是希望以最少的人力和时间发现潜在的各种错误和缺陷.在进行信息系统测试时应遵循以下基本原则:尽早并不断地进行测试;避免由原开发软件的人或小组测试;测试方案的设计需要涉及输入的数据和预期的结果;测试用例的设计需要同时包含正确的输入和无效的输入;在测试程序时,需要检验程序是否做了该做的事,还需要检测程序是否做了不该做的事;按照测试计划来进行;妥善保存测试计划和测试用例;测试例子都是精心设计出来的,可以为重新测试或追加测试提供方便.

一个规范化的测试过程通常包括:指定测试计划、编制测试大纲、根据测试大纲设计和生成测试用例并产生测试设计说明文档、实施测试、生成测试报告等基本的测试活动.

测试策略和测试方法

软件测试策略将软件测试用例的设计方法集成到一系列经过周密计划的步骤中去,从而使软件构造成功地完成.

有效的软件测试分为4步进行:

         单元测试:主要检查模块结构、局部数据结构、重要执行路径、出错处理和边界条件5个特性.

         集成测试:把模块按系统设计说明书的求组合起来测试,分为增量式集成和非增量式集成.

         确认测试:进一步检查软件的功能和性能是否与用户要求的一样;分为有效性测试、软件配置审查和验收测试.

         系统测试:是将已经确认的软件、计算机硬件、外设和网络的其他因素结合在一起,进行信息系统的各种集成测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方.包括恢复测试、安全性测试、压力测试、性能测试、可靠性可用性可维护性测试和安装测试.

测试方法:分为动态测试和静态测试

         黑盒测试(功能测试):在完全不考虑软件内部结构和特性的情况下,测试软件的外部特性;主要为发现程序是否有错误的功能或遗漏的功能、界面是否有误或输入是否正确接收或输出是否正确、是否有数据结构或外部数据库访问错误、性能是否能够接收、是否有初始化或终止性错误;常用的黑盒测试技术有:等价类划分、边值分析、错误猜测和因果图等.

         白盒测试(结构测试):根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试;常用的白盒测试技术有逻辑覆盖(语句覆盖/判断覆盖/条件覆盖/判断条件覆盖/条件组合覆盖/路径覆盖)、循环覆盖和基本路径测试.

调试

根据测试时发现的错误,找出原因和具体的位置,进行改正.调试常用的方法有试探法、回溯法、对分查找法、归纳法和演绎法.

系统文档

用户与系统分析人员通过可行性分析报告、总体规划报告、系统开发合同和系统方案说明书等进行沟通;

系统开发人员与项目管理人员通过系统开发计划、系统开发月报以及系统开发总结报告等项目管理文件进行沟通;

系统测试人员与系统开发人员通过系统方案说明书、系统开发合同、系统设计说明书和测试计划等文档进行沟通;

系统开发人员与用户在系统运行期间通过用户手册和操作指南进行沟通;

系统开发人员与系统维护人员通过系统设计说明书和系统开发总结报告进行沟通;

用户与维护人员在运行维护期间通过系统运行报告和维护修改建议进行沟通.

系统转换

新旧系统的转换:直接转换、并行转换和分段转换.

系统运行和维护知识

系统可维护性的评价指标有可理解性、可测试性、可修改性等.

系统维护主要包括硬件维护、软件维护(正确性维护、适应性维护、完善性维护和预防性维护)、数据维护.

系统维护概述

系统评价
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛_snail

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值