• 2.60 MB
  • 89页

sht 3901-1994工程设计计算机软件开发及文档编制规范

  • 89页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'UDC狐中华人民共和国行业标准PSH/T3901一1994工程设计计算机软件开发及文档编制规范Procedureforcomputersoftwaredevelopmentanddocumentation1994-02-22发布1994-08-01实施中国石油化工总公司发布 中华人民共和国行业标准工程设计计算机软件开发及文档编制规范ProcedureforcomputersoftwaredevelopmentanddocumentationSH/T3901-1994主编单位:中国石化北京设计院批准部门:中国石油化工总公司1994北京 中国石油化工总公司文件中石化(1994)建字78号关于发布行业标准《工程设计计算机软件开发及文档编制规范》的通知各有关单位:由中国石化北京设计院主编的《工程设计计算机软件开发及文档编制规范》已审查定稿.现批准《工程设计计算机软件开发及文档编制规范》SH/T3901一1994为石油化工行业推荐性标准,自一九九四年八月一日起实施.本标准的具体解释工作,由中国石化北京设计院负责.中国石油化工总公司工程建设部一九九四年二月二十四日 目次1总则···········“··················”··”·······“·“·······“···””·”·”····“一”··”·⋯12软件开发期工作阶段的划分及其文档“············”······““·“·······”·”···“·‘⋯z3项目开发计划······“·························“·······················”··················⋯⋯44需求分析·.......................................................................................”一55概要设计·······”·······”·“····”“······一”············“··““··““·······”········⋯⋯75.1用户界面设计”·········”.·····.···············”··········”·················⋯⋯75:2算法设计······”·····”·“······“··“········“··············一”“········”······⋯⋯85.3结构设计·”······································⋯⋯:··········”·················⋯⋯96详细设计(模块设计)·······························································”····一11了编程·········“···························,.··“··············”·····”·“·“················⋯⋯128调试..................................................................................................139测试与验收“·················”·”····”“·················””····”···········“·······“··⋯⋯14附录A用词说明··············”········”···“············”·······”···““·············⋯⋯15附加说明·············”··”·································”···························⋯⋯16附条文说明·..............................................................................................17 总则1.0.1为使石油化工工程设计计算机应用软件的开发工作概念统一、格式一致、文档资料清晰完整;使软件开发工作规范化、系统化、工程化:提高软件开发效率和软件产品质量:促进软件的商品化:特制订本规范。1.0.2本规范适用于一般开发难度的中型(兼顾大、小型)石油化工工程设计计算机应用软件的开发及文档编制工作。特殊软件项目可参照执行。1.o.3开发石油化工工程设计计算机应用软件,除执行本规范外,尚应符合现行国家的有关标准、规范的规定。 2软件开发期工作阶段的划分及其文档2.1软件开发期工作阶段的划分2.1.1软件开发期一般可划分为项目开发计划、需求分析、概要设计(包括用户界面设计、算法设计、结构设计)、详细设计、编程、调试、测试与验收等七个工作阶段。如表2.1.1所示。2.1.2软件开发期工作阶段的划分不是绝对的。复杂的大、中型软件,可根据其特点和需要,对上述划分的各工作阶段进行再分解。2.2软件开发期的文档2.2.1软件规模的划分小型软件:源程序少于5000行或存储量小于1m.中型软件:源程序5000^-30000行或存储量1^-50M;大型软件:源程序多于30000行或存储量大于50M.2.2.2在软件开发期的每个工作阶段,软件开发人员必须编写出相应的文档.不同规模软件文档的组成见表2.1.1.2.2.3文档编写的详略程度应随着软件的开发难度、复杂程度、重要性、开发风险等的提高而增加。必要时可在各工作阶段的文档中增设需要的条目和内容。2.2.4文档的内容应完整、统一;定义应严格、准确:叙述应简练、逻辑性强;所提的要求和指标应具体、可验证;使用的技术用语、图例、符号等,应符合有关专业技术和软件技术的标准、规范、规定的要求,并在所有文档中保持一致.2.2.5用户手册的编写除应符合2.2.4条要求外,尚应适合工程技术人员的使用习惯和要求.2.2.6软件开发过程中的文档修改,应在严格管理下按以下不同情况分别对待:2.2.6.1凡不涉及文档内容的修改,可仅仅修改源程序。2.2.6.2涉及文档内容的一般性修改,应将源程序和文档同步修改。2.2.6.3凡涉及软件的或模块的功能、性能、软件结构、数据结构、算法、接口等 文档,建立本次修改的文档,并以新文档取代原文档.软件开发期的工作阶段划分及其文档设置表2.1.1大型软件中型软件,小型软件工作阶段文档设里工作阶段文档设兰工作阶段文档设呈项目开发项目开发计项目开发项目开发项目开发计划计划划书计划计划书项目开发计划与软件需求说雷求分析软件需求说需求分析软件需求与需求分析明书明书说明书用户界面用户界面设计用户界面用户界面设计设计说明书设计说明书概算法设计算法设计算法设计算法设计说明要说明书书软件设计说明设结构设计结构设计结构设计结构设计说明软件设计书计说明书书(模块开发卷J缝1‘,宜.dJ上尸些,宗和调试例题+M7rr},"Z-不集可酌情取详细设计详细设计模块开发卷宗舍)用户手开、用编程户指南、操作编程用户手册用户手册安装手册实现调试软件调试例题调试软件调试例题集集项目开发总结项目开发总结.软件测试报告软件测试报告项目开发总结文档资料脸收文档资料验收测试与验收报告测试与验收报告测试与验收用户试用报告用户试用报告验收会审报告验收会审报告 3项目开发计划3.1任务3.1.1对开发该软件项目应完成的主要工作、需要的条件、开发的产品、参加的人员、任务的分配、开发的进度、经费的使用等做出计划:提出应制定的各项专题计划并说明其编写要点:编写项目开发计划书等。3.2实施步软和要求3.2.1根据软件项目的可行性研究报告、开发合同书或经核准的计划任务书、上级部门的批文,明确软件开发目标、软件的基本功能和性能以及开发工作应完成的主要工作。对未进行可行性研究的开发项目,应对可行性研究报告中的内容进行补充论证和说明.3.2.2提出开发工作应具备的计算机环境和开发条件.3.2.3确定开发工作应遵循的标准、规范、规定等开发依据。3.2.4列出完成软件开发工作后,开发单位应提交的软件产品的清单.3.2.5提出开发工作组织计划.说明开发组的组成单位及分工:规定项目负责人、每个工作阶段(或某一专项开发内容、分项目)的负责人、主要开发人员等在开发管理和开发技术方面的职责关系等。提出参加各工作阶段开发人员的数量及素质要求。3.2.6提出完成各工作阶段开发任务(包括调研、培训、工作评审等)的进度计划。3.2,7列出各工作阶段的经费支出计划.说明计算机及其辅助设备和各种技术资料的购置、人员培训、消耗性材料、动力、运输等各种费用。3.2.8根据开发项目的规模、复杂和难易程度。提出需要制定的各项专题计划,并分别说明其编写要点。专题计划的设置及其内容详略程度的要求,应随着软件的规模、复杂程度及开发难度的提高而增加。在软件开发期内.专题计划包括质量保证计划、软件调试计划、软件测试计划、配置管理计划、安全保密计划、系统安装计划、用户培训计划、开发人员培训计划等。3.2.9编写项目开发计划书。 4需求分析4.1任务4.1.1在调查用户需求的基础上,进行软件需求定义和软件系统分析工作.确定详细的软件开发目标、功能、性能、内部及外部的接口、开发依据和条件、开发及运行的计算机环境:修订项目开发计划书;编写软件需求说明书等。4.2实施步骤和要求4.2.1成立包括用户单位、开发单位、委托单位和软件管理部门人员的需求分析小组.需求分析小组的成员应具有较高的技术水平。4.2.2调查、分析用户的需求,进行软件的需求定义。4.2.2.1明确软件开发目标,详细定义软件的各项功能及其应用范围、适用的条件和限制、使用的计算方法等。4.2.2.2定义软件的性能。确定软件的数据精度、时间特性、运行效率、对运行环境的适应能力等性能.4.2.2.3定义软件的属性。提出在提高软件的可使用性、可维护性、可移植性,使用诊错及容错技术以及软件在安全保密等方面的设计要求。4.2.2.4确定开发依据.明确开发工作遵循的各级标准、规范、规定或科技论文、技术会议的决策等其他开发依据。4.2.2.5定义软件的开发和运行的计算机环境.明确使用的主机和联机运行的辅助设备的名称、型号、内存和外存容盘、配置及其有关的技术指标;使用的操作系统、数学软件包、数据库、编译器、图形软件、通迅、网络、联机运行的应用软件等所有支持性及工具性软件的名称、缩写词、版本号、助记号、规格说明号及来源等.4.2.2.6需求定义部分文字说明的初稿,也可以由有经验的用户提出,由需求分析小组进行确认或修改。4.2.2.7在技术能力、计算机环境、开发经费和开发周期等条件允许时.需求定义的内容应尽量满足用户的需求。4.2.2.R在进行软件需求定义的工作中,一般情况下应避免涉及软件的实现方案、验证、项目管理细节等内容,以免为后继的软件设计工作造成不合理的约束。42.3进行软件的系统分析. 精化、修改、确认软件需求定义内容,定义软件主要成分及各成分间的和软件外部接口的数据需求。4.2.3.1绘制软件的IPO图,定义软件的外部接口,对软件进行总体表现。4.2.3.2绘制软件的系统分解图,确定并标注软件外部接口及各软件成分间的接口数据并对软件成分的功能、算法和要求、接口数据编写说明。4.2.3.3为使系统分析成果是合理和正确的,在完成甸次(部分或整体)的分解后,应对其进行综合评价。以期发现、改进分解的缺陷与不足。提高系统分析质量。综合评价内容如F.(1)分解是否违反了功能分类和算法常规;(2)上、一F层分解图中数据流是否平衡:(3)分解层次是否均衡;(4)每个软件成分的功能及各软件成分间接口数据的定义是否明确、具体。4.2.4编写软件需求说明书。4.2.5修改、完善项目开发计划书。4.2.6进行需求分析阶段工作成果的评审。鉴于软件需求说明书在软件开发期中的重要作用,在编写完成软件需求说明书后,开始后继开发工作之前,邀请适当人选,成立专门小组对软件需求说明书的内容进行严格、全面的评审。评审工作主要有以下几方面的内容:4.2.6.1需求定义部分的内容是否完整、准确,是否满足了用户的全部需求;4.2.6.2软件系统分析成果和需求定义内容是否一致;4.2.6.3开发依据是否充分;4.2.6,4输入、输出内容的详细规格可否被确认:各接门数据是否己玻描述:4.2.6.5设计约束是否己被实现;4.2.6.6采用的开发技术是否可行,是否有风险及应对措施;4.2.6.7各种图示和文字说明的内容是否准确、完整、清晰;4.2.6.8项目开发计划是否可行。任务分配、开发进度、经费支出等是否合理。4.2.7软件需求说明书通过评审后,若对其进行修改,须在征得用户单位、开发单位、委托单位、软件管理部门同意后进行。 5概要设计5.0.1软件设计工件包括概要设计和详细设计两部分内容。概要设计也称总体设计,包括用户界面设计、算法设计和结构设计三部分内容。5.1用户界面设计5.1.1任务设计软件输入和输出的形式、内容和格式;设计软件安装、运行操作的方式和命令格式:编写用户界面设计说明书和用户手册初稿。5.1.2实施步骤和要求用户界面设计应符合用户的习惯和要求,易于理解,便于使用,附加信息量少,辅助性图象、提示性数据、说明和引导性文字使用得当。5.1.2.1输入界面设计(1)对所有输入信息进行定义和分析,建立输入数据序列。确定输入界面的形式。(2)详细设计输入界面①设计工作效率高的输入界面输入数据应简捷而无逻辑上和意义上的重复,充分利用数据间的内在关系和技术手段,通过数据加工(通常需要使用合适的算法)用较少的数据描述较复杂的问题。使用可视化技术,通过屏幕图形或图象,充分利用计算机的能力和环境资源,尽`t-提高输入界面的智能性,简化输入过程,减少输入工作量,最大限度的提高输入工作效率。②设计能提高软件可靠性的输入界面确定输入界面中使用诊错、容错技术的部位,设计其实现方法、使用的算法以及屏幕显示的提示性、警登性信息等。以提高软件使用的效率和可靠性。③设计对用户友好的输入界面界面的功能齐全、使用方便,除具有数据加工、诊错、容错等功能外,还应具有编辑、说明、提示、引导等辅助功能。5.1.2.2输出界面设计。(1)设计文字输出的形式,指定输出介质。(2)设计各种图表、表格(函数曲线图表、各种表格、计算结果等)的输出形式,子污定输出介质(加"ai-N形(施厂图图形、屏幕显示的图形和图象等)的输出形式,说明遵循灼;衬佳、内容、7旧.深度、图形的组合、输出条件和限制、使用的输出介质(4)对各种勺齐的棍合输出,设计输出前的编;4,说叫编>a的奥件A!i=(2;1s"l*,、 5.1.2.3设计软件安装、初始化及运行过程的操作.(1)确定软件储存形式,软件安装与初始化过程的操作内容和命令,表明安装工作完成的测试以及安装过程中使用的软件工具等;(2少对批处理运行方式设计启动点、检查点等及命令格式;(3)出现非正常运行(故障、错误等)后的提示信息、处理步骤和命令格式:(4)列出各种运行情况下的操作命令序列。5.1.2.4编写用户界面设计说明书。5.1.2.5编写用户丰册初稿。5.2算法设计5.2.1任务算法设计工作,包括算法结构设计和算法过程设计两部分内容。算法结构设计是选择或构造能实现软件功能需求集合的(包括数据管理、数据加工算法)、恰当的计算方法、计算公式,形成软件的算法结构;算法过程设计是针对每个计算方法设计其有效的算法过程:编写算法设计说明书等。5.2.2实施步骤和要求5.2.2」为了降低算法设计的复杂性,进行算法设计时,应根据软件需求说明书有关内容的要求,将各个相对独立的算法或功能组合,分为若干个子系统、分程序、大的功能模块分别进行。5.2.2.2调查、收集需要的算法或计算公式,对收集到的算法或计算公式进行性能评价。性能评价包括以下几方面的内容:(1)正确性。指该算法理论、数学物理模型的正确性;(2)适用性。指该算法对软件中问题集合的综合适用程度;(3)计算精度与计算速度的可接受性;(4)收敛性。即计算结果的精度随算法的近似指标或迭代次数变化的规律;(5)存储量。对于算法最适宜的数据结构,算法所要求的存储量的精确表示或存储量随问题规模变化的规律;(6)计算量.即计算量的精确表示或计算量随问题规模变化的规律;(7)稳定性。指计算过程的稳定性,即计算结果的精度对原始数据误差和计算精度的依赖性,特别是这种依赖性随问题规模变化的规律:(8)复杂性。指算法结构的复杂程度。5.2.2.3在算法性能评价的基础上,选用或自行构造出满足工程技术要求的、能实现软件各项功能、性能需求的计算方法、计算公式、数据加工或转换的算法.进行算法选择时,必须注意算法的成熟性和正确性,以确保软件的可靠性。对重要软件的算法选择,除应进行可靠的理论分析和算法性能评价外,还可以使用数值试脸的方法,进一步做出性能评价。8 5.2.2.4根据软件需求说明书和用户界面设计说明书的要求.使用选取的或自行构造的计算方法,设计最接近于输入端和输出端的内部数据结构。5.2.2.5针对选取的或自行构造的计算方法,设计其有效的算法过程。5.2.2.6按软件功能、性能的组合要求,使用自顶向下及自下而上相结合的分析和构造方法,合并(连接)使用的各个算法,形成支持软件总体需求的总体(复合)算法。5.2.2.7在总体算法结构的基础上,完善、补充设计各个算法连接部的数据转换、加工以及诊错等算法。5.2.2.8运用自顶向下和自下而上相结合的综合评价方法,对各个算法和总体算法进行综合复审和评价。修改、完善各个算法和总体算法。5.2.2.9编写算法设计说明书。5.3结构设计5.3.1任务设计符合软件需求说明书、用户界面设计说明书、算法设计说明书要求的软件结构和数据结构;详细的定义全部模块及其功能、算法、模块间的控制关系和信息传递的方式、介质、接口数据结构:设计数据库(图形库、知识库、模型库):编写结构设计说明书等。5.3.2实施步骤和要求5.3.2.1构造软件的初始结构图。(1)根据软件需求说明书、用户界面设计说明书、算法设计说明书的要求,通过对软件系统的分析,使用功能分解法或数据流分解法,确定软件的层次结构以及每个层次的成分。即先分解、确定出软件各个子系统、分程序、功能控制模块等,下层的问题暂时搁置.然后反复使用分层、渐进的方法进行分解,每次分解、变化不宜太大,直至各个功能单一的基层模块。定义各软件成分之间的接口数据,绘制出软件的初始结构图。(2)在对软件进行分解。确定模块功能时,应同时确定模块接口数据的内容、顺序和类型、格式和传递方式等。两者不宜分开进行。(3)对模块、程序体、数据库(图形库、知识库、模型库)、某些数据结构的命名应制定统一规则。以保证命名的唯一性,并反映其功能特点或在软件中的相应位置等。5.3.2.2改进、完善软件的初始结构及其数据结构。(1)对各接口数据进行分析,逐层、逐个的改进、完善、确认软件的数据管理和各接口的数据结构(内容、数量、属性、传递要求等)并设计其相应的算法。①软件的数据结构设计,是软件设计的核心内容之一。设计目标是简化算法的实现,节省占用的空间、提高操作的效率。②进行接口数据分析和数据结构设计。应考虑以下因素:<1>一项基本加工或一个功能块所隐含的算法对数据结构的要求:<2>用户对外部数据结构的要求:9 <3>存储空间的存储介质对数据量和数据结构的限制;<4>程序设计语言对复杂数据结构的适应能力。(2)在初始结构图上增加软件内部诊错的设计:(3)补充与计算机环境、操作方式、故障补救和处理等有关的设计:(4)合并相同(或近似)功能的模块形成公用模块:(5)在数据分析的基础上,进行精细的数据管理设计.5.3.2.3设计需要的数据库(图形库、知识库、模型库)。5.3.2.4进一步调整、修改软件的初始结构,形成经精化的、良态的软件结构设计。5.3-2.5编写结构设计说明书。5.3.2.6进行软件概要设计工作成果的评审。成立专门的概要设计成果评审小组,对该设计是否满足软件需求说明书的要求:设计方案的可行性、合理性、先进性:文档资料的完备性和编写深度是否符合要求进行评审,并提出评审意见。概要设计成果评审包括以下内容:(1)完整性。概要设计是否实现了软件需求说明书中定义的软件的功能、性能和外部接口的要求,设计成果是否是可追踪的:(2)合理性。软件结构设计是否合理、可行,功能的设置和组合、系统的分割和联接是否合理、齐全,软件运行的控制设计是否清晰、准确:(3)可行性。设计方案中所涉及的开发技术是否成熟,是否超出了当前软件技术的能力;(4)正确性。是否可以证明设计的输入和输出之间的关系是正确的;(5)一致性。设计方案中的各组成部分之间是否存在矛盾和冲突;(6)严密性。各条数据流线的起点、止点以及数据流线上的每个加工环节的数据内容和加工要求是否明确,软件的内、外部各接口是否已被严格定义;(7)使用的算法是否经过比较和优选。优选的依据是否合理、充分:(8)数据库(图形库、知识库、模型库)的设计能否满足软件的需求:库结构的合理性、库管理的有效性是否得到体现。(9)用户界面的功能设置是否齐全:对用户问题的描述是否简捷;辅助信息的使用是否得当:操作的方便、灵活、易于控制、易学易用等要求是否得到体现。 6详细设计(模块设计)6.1任务6.1.1进行模块内部的过程设计。精化模块的算法步骤:设计模块的数据结构;进行模块的程序逻辑设计;编写模块设计说明。6.2实施步骤和要求6.2.1根据软件需求说明书和概要设计阶段文档中的有关内容,按模块的功能、性能、输入和输出接口的要求以及设计的限制,使用结构化程序设计方法,精化模块内部的功能结构、算法过程或数据加工过程,确定模块内部的数据组织并设计其数据结构。6.2.2由于计算方法或计算公式的数学表示和程序表示是完全不同的两种形态,因此在进行模块的程序逻辑设计之前,应对模块内的计算方法或计算公式,进行算法分析、程序设计性整理和算法过程设计。并在该工作中以“清晰第一,效率第二”为原则。即优先考虑程序的可读性,在此前提下努力提高软件运行效率、减少舍入误差、保证计算精度等。6.2.3在梢化模块算法过程基础上,设计具有结构化特征、可读性好、逻辑关系清晰、风格一致而规律性强的模块程序逻辑结构。6.2.4编写模块设计文档。6.2.5进行开发组内部的详细设计成果的评审。 7编程7.1任务7.1.1使用选定的程序设计语言或数据库语言,依据模块设计说明表和编程规则编写源程序,并对源程序进行严格的静态检查和完善。7.2实施步骤和要求7.2.1选择、确定编程使用的程序设计语言。为了使软件具有较好的可移植性,除应选用符合国际标准或国家标准的程序设计语言外,还应考虑以下因素:7.2.1.1对软件类型和特点的适应能力;7.2.1.2对计算机环境以及与其他语言连接运行的适应能力;7.2.1.3对描述、管理复杂的数据结构的适应能力;7.2.1.4对实现复杂的计算方法的适应能力;7.2.1.5开发人员对该语言的熟悉程度。7.2.2根据模块设计表和编程规则,进行各模块的编程工作。7.2.2.1编程工作应在软件概要设计、详细设计工作完成后进行;7.2.2.2模块的编码,应真实、正确的与模块设计说明表保持一致:7.2.2.3编程工作应按照编程规则进行,使源程序具备良好的可读性及统一的程序风格。为后继的软件调试和维护工作创造条件。7.2.3完成模块编码后,应进行认真、严格的静态检查,改正发现的各种错误。静态检查的具体内容是:7.2.3.1算法或计算公式的实现正确否;7.2.3.2源程序和相应的程序逻辑结构是否一致:7.2.3.3接口数据的引用关系是否正确;7.2.3.4有无违反程序设计语法规则的错误;7.2.3.5注释行的使用是否恰当;7.2.3.6全程静态模拟程序的执行过程. 8调试8.1任务8.1.1进行模块调试和软件的组装调试(联调):发现并排除源程序中的缺陷与错误;生成全面达到软件设计要求的软件产品;编辑、编写软件调试文档。8.2实施步琦和要求8.2.1复杂的大、中型软件项目,成立包括软件设计和编程等人员在内的调试小组,按调试计划共同完成软件的模块调试和各子系统、分程序以及整个软件的组装调试工作.简单的中、小型软件.确定调试工作的方法和步骤。8.2.2检查调试环境,使之符合软件需求说明书的要求。8.2.3选择或设计用于模块调试和组装调试的数据和例题.8.2.3.1调试数据和例题应具有代表性,包括各种类型和不同规模的数据和例题。8.2.3.2调试数据和例题应具有针对性,每组数据或每个例题的作用应是很明确的。8.2.4进行软件的调试工作。观察、记录运行状态,分析运行结果,对发现的错误和缺陷予以改正。反复进行该步骤,直至软件需求说明书和软件设计中提出的各项要求得到圆满实现,软件的正确性、可用性、可靠性得到确认。8.2.4.1进行模块调试。记录运行状态,收集运行结果,确认以下模块特性是否己被正确实现:(1)外部接口;(2)算法或计算公式:(3)存储、计算精度以及时间特性的限制;(4)正常运行的结束方式:(5)对接口数据出错的处理。8.2.4.2进行软件组装调试,记录运行状态、收集运行结果,确认各接口间数据传递的正确性以及各软件成分间控制和调用关系的正确性和有效性。8.2.5在完成一个或一组相关模块调试后,编写模块调试文档。8.2.6在完成全部模块调试后,编辑模块开发卷宗。模块开发卷宗由模块说明表、模块设计表、模块调试表、模块源程序、模块调试驱动程序及桩模块等资料组成.8.2.7完成软件系统的组装调试后,整理、编辑软件的调试例题(考题)集。8.2.8修订、完善用户用册,编辑应用例题集。8.2.9进行软件调试成果的内部评市。8.2.10编写项目开发总结。8.2.11进行软件的试用。13 9测试与验收9.1任务9.1.1对软件产品的功能和性能等诸方面进行全面的、确认性的外部考核,对软件配置和文档进行全面的检查,对达到要求的软件产品进行验收。9.2实施步骤和要求9.2.1进行测试与验收工作的软件,应具备以下条件:9.2.1.1调试工作已全部完成。软件产品的各个方面均已达到软件需求说明书的各项要求,经过充分的试运行考核和用户的试用。9.2.1.2软件文档齐备,并符合软件配置计划及有关标准、规范、规定的要求。9.2.1.3具备进行软件测试的计算机环境。9.2.1.4软件管理部门同意进行测试与验收工作。9.2.2对复杂或重要的大、中型软件项目,邀请适当人选组成专门小组.实施测试与验收工作。简单的中、小型软件可邀请或指派专人进行测试与验收工作。参加测试与验收工作的人员,应具有较高的技术水平。9.2.3复杂或重要的大、中型软件项目的测试工作,由软件侧试组按照软件测试计划进行。简单的中、小型软件,确定侧试工作的安排和步骤。9.2.3.1选择或设计测试例题。9.2.3.2按测试计划或对测试工作的安排,对软件进行测试,记录软件运行状态,收集测试结果.9.2.3.3测试组根据测试运行状况和测试结果,编写每项测试的及整个软件产品的侧试文档。9.2.4复杂或重要的大、中型软件项目,由成立的专门小组,实施软件配置和文档的验收工作,写出验收报告,并进行签署。9.2.5软件管理部门根据软件开发工作是否达到预期的目标,以及测试报告、软件配置和文档验收报告、用户试用报告等材料决定是否进行软件验收.必要时进行验收会审,或由开发组进一步对软件做完善或提高工作。 附录A用词说明A.1为便于在执行本规范时区别对待.对于要求严格程度不同的用词说明如下:A.1.1表示很严格,非这样做不可的:正面词采用“必须”:反面词采用“严禁’,。A.1.2表示严格,在正常情况下均应这样做的:正面词采用“应”:反面词采用“不应”或“不得”。A.1.3表示允许稍有选择,在条件许可时首先应这样做的:正面词采用“宜”或“可”;反面词采用“不宜,’.A.2条文中指明必须按其它有关标准执行的写法为“应按⋯执行”或“应符合二的要求(或规定)”。非必须按所规定的标准执行的写法为“可参照一的要求(或规定)气 附加说明本规范主编单位、参加单位和主要起草人名单主编单位参编单位中国石化北京设计院中国石化工程建设公司主要起草人史延聚 中华人民共和国行业标准工程设计计算机软件开发及文档编制规范SH/T3901-1994条文及其说明1994北京 制定说明本规范是根据中因石抽化工总公司中石化(1990)建标宇48号文的通知由我院主编的。在编制过程中,进行了比较广泛的调查研究,总结了多年石油化工工程设计计算机应用软件开发及文档编制工作的经验,并征求了各工程设计单位从事工程设计计算机应用软件开发工作人员的意见,对其中的主要问题,进行了多次讨论,最后经审查定稿。在本规范施行过程中,如发现需要修改或补充之处,请将意见和有关资料提供给我院,以便今后修订时参考。中国石化北京设计院一九九四年八月一日 次1总m211男n乙软件开发期工作阶段的划分及其文档”·”·”···············“·················⋯⋯22q目项目开发计划“··“···”············“······“··················“,.··················⋯⋯26月,需求分析···········································”·····“··“····”·····················⋯⋯29一n概要设计··················“······················““·“·“···············“··“·“····”⋯⋯415.1用户界面设计··········”·········”·”·”···”·····“·““·······”··”·········⋯⋯415.2算法设计··“··················“································“·····””····⋯⋯475.3结构设计·········“··”··,····”·······························”··········“···”·⋯⋯51内0详细设计(模块设计)··········“·”···”·”·················“·····”·。······⋯⋯”·’63,.编程········”·············””·························“················“·“·······”⋯⋯71Q︺调试·”················“·”············································“·················⋯⋯75口﹄测试与验收·“··········”·············“····”···”··················”···················⋯⋯81 总则1.0.1为使石油化工工程设计计算机应用软件的开发工作概念统一、格式一致、文档资料清晰完整:使软件开发工作规范化、系统化、工程化:提高软件开发效率和软件产品质量;促进软件的商品化:特制订本规范。1.0.1说明(1)本规范向软件开发人员提供一套行之有效的软件开发方法和准则.并对软件开发期每个工作阶段的任务、实施步骤和要求、编写的文档资料,做了具体的规定和详细的叙述.从而使软件开发工作的阶段清晰、任务具体、要求明确.(2)实施本规范,可取得以下效果:①提高软件产品质量.即提高软件产品的可使用性、可移植性和可维护性,使软件产品具备良好的可继承性;②提高软件产品及其开发过程的能见度.便于软件开发工作的管理以及对软件产品的质量拉制,从而达到提高软件产品质量、提高软件开发效率、缩短开发周期、降低开发和维护成本的目的;③统一软件开发工作概念和软件用语,完善软件产品的文档体系,形成良好的软件风格及内、外部交流的基拙,以利于软件产品的推广和应用,并为软件产品的商品化创造条件.(3)本规范为石化工程设计计算机应用软件的开发工作,提供一个职业培训的基准。1.0.2本规范适用于一般开发难度的中型(兼顾大、小型)石油化工工程设计计算机应用软件的开发及文档编制工作。特殊的软件项目可参照执行。1.0.3开发石油化工工程设计计算机应用软件,除执行本规范外,尚应符合现行国家的有关标准、规范的规定。1.0.3说明本规范以现行的软件开发及文档编制的国家规范为编制依据.为了使本规范具有较好的针对性和实用性,其内容力求反映工程设计应用软件的特点和要求;对文档的要求即保持其内容上的完整又尽量减少不必要的重复和冗余. 2软件开发期工作阶段的划分及其文档2.1软件开发期工作阶段的划分2.1.1软件开发期一般可划分为项目开发计划、需求分析、概要设计(包括用户界面设计、算法设计、结构设计)、详细设计、编程、调试、测试与验收等七个工作阶段。如表2.1.1所示。2.1.1说明(1)由项目开发计划至01试与验收阶段称为软件的开发期.软件开发期内划分的各工作阶段,是相对独立又紧密联系、互为依据的.各工作阶段的主要任务是:①项目开发计划在开发合同书或开发任务书生效后,对开发软件项目应完成的工作、需要的条件、开发的产品、参加的人员、任务的分配、开发的进度、资金的使用等做出计划;提出应制定的各项专题计划;编写项目开发计划书等;②需求分析进行软件需求定义和软件系统分析工作.确定软件的功能、性能、软件内部及外部接口、开发依据、计算机环境;修仃项目开发计划书;编写软件需求说明书等;③概要设计<1)用户界面设计设计软件愉入和扮出的形式、内容、格式;软件安装、初始化、运行操作的方式和命令格式;编写用户界面设计说明书和用户手册中相应部分的初稿等;<2>算法设计选择或构造实现软件功能、性能雷求的理论框架以及实现数据管理和数据加工的计葬方法;编写算法设计说明书等.<3>结构设计设计满足软件雷求说明书、用户界面设计说明书、界法设计说明书要求的模块化的软件结构、数据结构、拉制结构;定义软件内、外部各接口;设计需要的数据库、图形库、知识库、模型库;编写结构设计说明书等;④详细设计(模块设计)进行模块内部的过程设计、数据结构设计、程序逻辑设计;编写模块设计说明等;⑤编程按照模块设计说明和编程规则,编写各个模块的编码;⑥调试进行模决调试和软件的组装调试.发现并排除程序中的错误和缺陷,生成全面达到22 软件设计要求的软件产品;编写调试文档等;⑦测试与验收对软件产品进行全面的外部浏试,写出软件浏试报告;对软件配里和文档资料进行检查验收,写出软件配里和文档资料的检查验收报告;必要时进行脸收会市,写出脸收会审意见(或称结论、报告等)(2)在以上各开发阶段中:对软件总律品质影响最大的是雷求分析、概要设计和详细设计阶段.特别是需求分析和概要设计阶段,而不是编程阶段.重视编程前的分析、定义和设计工作,是克服低级开发方式下经常出现的盲目性、成功率低、软件结构上的松散和混乱、可靠性低、维护困难等现象的有效措施.是提高软件总体能力和水平的关健所在.软件开发人员和软件管理人员都应有所认识.2.1.2软件开发期工作阶段的划分不是绝对的.复杂的大、中型软件,可根据其特点和需要,对上述划分的各工作阶段进行再分解。2.1.2说明随着软件的规模、复杂程度、开发的难易程度及软件特珠性的增加,工作阶段的划分应越细.如在开发难度、复杂程度较高的大型软件项目中,可根据项目特点,由概要设计阶段中再分解出数据序设计阶段等.2.2软件开发期的文档2.2.1软件规摸的划分小型软件:源程序少于5000行或存储量小于1M:中型软件:源程序5000^-30000行或存储量1-50m;大型软件:源程序多于30000行或存储量大于50M.2.2.2在软件开发期的每个工作阶段,软件开发人员必须编写出相应的文档.不同规模软件文档的组成见表2.1.1.2.2.2说明文档是软件产品不可缺少的组成部分;是软件质量保障的一个方面;是各开发阶段工作中技术信息的记录和工作的成果;是后继开发工作的依据;它使不可见的软件产品透明化,是软件开发管理人员了解和掌握开发进度和开发质量的根据;是软件产品的使用、维护、培训和交流以及协调软件管理、开发和维护工作的基拙.文档的编写质量也是表现开发人员素质和水平的一个方面.完成文档的编写并经过评审,是完成各阶段开发工作的标志之一2.2.3文档编写的详略程度应随着软件的开发难度、复杂程度、重要性、开发风险等的提高而增加。必要时可在各工作阶段的文档中增设需要的条目和内容。2.2.3说明若因文档的内容多、篇幅大,而将各开发阶段的文档单独编拆成册时,每册资料的正文前均应增设一节“概述”,简要说明软件项目的开发背景软件功能和性能等基础23 性内容,以保持每册资料内容上的完整.软件开发期的工作阶段划分及其文档设置表2.1.1大型软件中型软件小型软件工作阶段文档设置工作阶段文档设里工作阶段文档设五项目开发项目开发项目开发项目开发项目开发计划计划计划书计划计划书项目开发计划与软件需求说需求分析软件需求禽求分析软件需求与需求分析明书说明书说明书用户界面用户界面设计用户界面用户界面设计设计说明书设计说明书概算法设计算法设计葬法设计算法设计说明要说明书书软件设计说明设结构设计结构设计结构设计结构设计说明软件设计书计说明书书(模块开发卷J士七卫占吧LdJ日亡也.宗和调试例通刁头矛尺万及替示集可的情取详细设计详细设计模块开发卷宗舍)用户手册、用编程户指南、操作编程用户手册安装手册用户手册实现调试软件调试例题调试软件调试例题集集项目开发总结项目开发总结软件浏试报告软件浏试报告项目开发总结文档资料验收文档资料验收测试与验收报告测试与脸收报告测试与验收用户试用报告用户试用报告验收会审报告验收会审报告 2.2.4文档的内容应完整、统一;定义应严格、准确;叙述应简练、逻辑性强;所提的要求和指标应具体、可验证:使用的技术用语、图例、符号等,应符合有关专业技术和软件技术的标准、规范、规定的要求,并在所有文档中保持一致.2.2.4说明软件文档是在软件生存期各阶段工作中,由不同开发人、维护人逐步编写、不断修改、完善而成的.因此,应对软件文档加以周密的管理和严格的拉制,避免产生顾此失彼,各组成部分之间不统一甚至相互矛盾等现象,并保持程序编码和文档内容的一致,2.2.5用户手册的编写除应符合2.2.4条要求外,尚应适合工程技术人员的使用习惯和要求。2.2.5说明编写用户手册(或用户指南、安装手册、操作手册)应使用工程技术人员习惯的语言和表达方式,通俗易懂,便于使用,它是文档中唯一与用户见面的资料。2.2.6软件开发过程中的文档修改,应在严格管理下按以下不同情况分别对待:2.2.6.1凡不涉及文档内容的修改,可仅仅修改源程序。2.2.6.2涉及文档内容的一般性修改,应将源程序和文档同步修改。2.2.6.3凡涉及软件的或模块的功能、性能、软件结构、数据结构、算法、接口等软件基本特征的修改,应按以下步骤进行:(1)提议:软件开发人员向项目负责人提出书面修改建议,说明修改理由、修改内容、修改方案以及需要修改的文档及其部位;(2)审核:由项目负责人对该项修改建议进行审核,并制定修改实施计划;(3)批准:一般情况下,批准权属于开发部门负责人;(4)实施:项目负责人按批准的修改计划,安排人员实施修改工作,修改相关的文档,建立本次修改的文档,并以新文档取代原文档. 3项目开发计划3.1任务3.1.1对开发该软件项目应完成的主要工作、需要的条件、开发的产品、参加的人员、任务的分配、开发的进度、经费的使用等做出计划;提出应制定的各项专题计划并说明其编写要点;编写项目开发计划书等。3.1.1说明(1)项目开发计划书由项目负责人编写,开发单位负责人批准.(2)在编写项目开发计划书时、对各工作阶段开发工作量的估计应充分、实事求是;对开发工作在组织上、技术上、条件上存在问题的认识私分析应客观、详细;提出的措施和各项要求应具体、有根据;项目开发计划书的内容应充实、能体现软件开发工作的特点和要求.3.2实施步骤和要求3.2.1根据软件项目的可行性研究报告、开发合同书或经核准的计划任务书、上级部门的批文,明确软件开发目标、软件的基本功能和性能以及开发工作应完成的主要工作。对未进行可行性研究的开发项目,应对可行性研究报告中的内容进行补充论证和说明。3.2.1说明补充论证可行性研究工作中的有关内容,包括时软件的理论依据和葬法、开发技术和方案模型、开发人员、开发资金等方面的可能性,以及开发工作中的技术难点及采取的技术措施、开发风险及其应对措施、软件产品预期的应用效益等进行说明.3.2.2提出开发工作应具备的计算机环境和开发条件。3.2.2说明开发工作应具备的计算机环境,包括硬件和软件坏境.分别说明开发工作需要的、开发单位已具备的、尚雷进一步配备的计算机设备和各种软件.并说明负责配备上述环挽的单位及时间.开发工作应具备的开发条件,指开发工作依赖的基础数据或技术资杆等.分别说明开发工作需要的、开发单位已具备的、尚需获得的开发条件.并说明负责提供上述条件的单位及时间.3.2.3确定开发工作应遵循的标准、规范、规定等开发依据。3.2.4列出完成软件开发工作后,开发单位应提交的软件产品的清单。3.2.4说明软件产品包括各种版本的源程序、运行程序及有关的软件;各种文档资料及附属资26 料等.并与软件&-I计划相协调.3.2.5提出开发工作组织计划。说明开发组的组成单位及分工:规定项目负责人、每个工作阶段(或某一专项开发内容、分项目)的负责人、主要开发人员等在开发管理和开发技术方面的职责关系等。提出参加各工作阶段开发人员的数量及素质要求。3.2.6提出完成各工作阶段开发任务(包括调研、培训、工作评审等)的进度计划。3.2.7列出各工作阶段的经费支出计划.说明计算机及其辅助设备和各种技术资料的购置、人员培训、消耗性材料、动力、运输等各种费用。3.2.8根据开发项目的规模、复杂和难易程度,提出需要制定的各项专题计划,并分别说明其编写要点。专题计划的设置及其内容详略程度的要求,应随着软件的规模、复杂程度及开发难度的提高而增加。在软件开发期内,专题计划包括质量保证计划、软件调试计划、软件测试计划、配置管理计划、安全保密计划、系统安装计划、用户培训计划、开发人员培训计划等。3.2.8说明专题计划是用于指导开发工作中某一阶段或某一方面工作的实施计划.软件开发项目规模越大、越复杂、难度越高,制定的专题计划应越全面、越详细.专题计划的内容要求及编写要点见有关标准、规范、规定等.3.2.9编写项目开发计划书。3.2.9说明项目开发计划书包括以下内容:(1)引言①开发背景<1)列出该开发项目的来源、主管部门、委托单位、开发单位及用户单位.<2》说明与该开发项目有关的应用软件系统,并说明两者间的关系.②参考资料该项目的开发合同书或经核准的计划任务书、上级部门的批文.<3)列出本文档中引用的资料名称、作者、编号、发表日期、出版单位.(2)项目概述①目的和功能说明在该项目的开发工作中应完成的各项工作、软件的主要功能和性能等.若该开发项目未编制可行性研究报告,应按3.2.1条的要求,对可行性研究工作中的有关内容进行补充说明②开发条件27 说明为完成该项目开发工作应具备的、开发单位已具备的、需进一步获得的开发条件。并分别列出开发单位、用户单位、外协单位、上级部i7等分别负责提供有关开发条件的名称和时间.③计算机环境<1、硬件环境:分别列出进行该项目的开发工作需要的、开发单位已具备的、尚需进一步配备的计算机设备.并说明负责配备上述设备的单位及时间.<2i软件环瑰:分别列出进行该项目的开发工作需要的、开发单位已具备的、尚需进一步配置的各种计算机软件.并说明负责配里上述软件的单位及时间。④开发依据列出开发工作应遵循的各级标准、规范、规定以及其他技术资料的名称、编号、作者、实施日期,出版单位等.⑤软件产品<1>程序列出完成该项目开发工作后,开发单位应提交的源程序、运行程序及有关软件的清单.<2>文档列出完成该项目的开发工作后,开发单位应提交的各种文档及其附属资料的清单.⑧服务列出开发单位向用户提供的服务项目.如培训、安装、维护、咨询和其他支持等.⑦验收标准说明开发单位提交的软件产品及月民务项目的脸收标准.(3)实施计划①开发人员及任务分配列出参加开发工作的单位和分工;规定项目负责人、每个工作阶段(或某一专项开发内容、分项目)的负责人、主要开发人员在开发管理和开发技术方面的职责和权力;提出参加各工作阶段开发人员的数童及素质要求等.②进度列出完成各工作阶段的开发工作(包括调研、培训、阶段工作评审等)的时间表.③预算详细列出各工作阶段的经费支出计划.说明计算机及其外围设备和各种技术资料的购里、调研、人员培训、常用材料和动力的消耗、运输等各种费用.④特殊说明列出完成该项开发工作中存在的主要问题,技术难点和风险以及采取的措施.(4)各项专题计划提出应制定的各项专题计划,并分别说明其编写要点. 4需求分析4.1任务4.1.1在调查用户需求的基础上,进行软件需求定义和软件系统分析工作。确定详细的软件开发目标、功能、性能、内部及外部的接口、开发依据和条件、开发及运行的计算机环境:修订项目开发计划书;编写软件需求说明书等。4.11说明软件需求分析阶段的工作,主要是软件需求定义和软件系统分析两项内容.(1)".k求定义工作,是根据开发合同书、经核准的计划任务书及其相关文件的要求,调查、分析用户需求;并以此为依据精化软件的作用范围,确定软件的开发的目标,详细定义软件的全部功能、性能,确定开发条件和依据、开发和运行的计算机环境等软件的需求.(2)软件系统分析工作,是通过分析软件的基本构成及主要成分问的接口,精化软件需求定义内容,形成各项可市的软件功能、性能,为后继的软件设计工作莫定了基础.(3)以上两部分工作,难以严格分开进行,通常需要交叉、反复进行才能达到要求.42实施步骤和要求4.2.1成立包括用户单位、开发单位、季托单位和软件管理部门人员的需求分析小组。需求分析小组的成员应具有较高的技术水平。4.2.1说明需求分析小组的成员,不仅应精于该专业的基本理论,并有丰富的工程设计经脸;熟知有关工程技术、软件技术的标准、规范、规定;了解该项技术国内、外先进水平和发展方向;对计算机硬件、软件有渊博的知识和开发应用软件的经验等.需求分析小组的组长一般由开发单位的人员担任.4.2.2调查、分析用户需求,进行软件的需求定义。4.2.2说明进行软件需求定义工作,一般包括以下三个步骤:(1)明确软件的用户范围,对用户的禽求进行深入、细致、全面的调查;(2)运用“归纳”、“推理”和“比较”等方法,对用户雷求进行分析,有时需要伴随以软件系统分析,明确软件的作用范围和总体特征,定义软件的功能、性能.生成软件需求定义部分文字说明的初稿.反复征求用户意见,修改和完善初稿,直至使用户满意.归纳,是对用户各项具体需求的抽象、综合、分解与精化.使用工程和软件语言把29 用户各项具体需求按问题的性质和实现条件等,确切、严格、简练的定义出来.推理,是指从用户当前、具体的禽求出发,考虑技术进步等因素,对用户未来雷求的抽象预浏.以便在软件设计中采取措施,提高软件的可维护性.比较,是对用户的某些相互矛质或难以实现的需求,通过比较决定取舍.(3)完善雷求定义娜分的文字说明,它是软件需求说明书的重要组成部分.4.2.2.1明确软件开发目标,详细定义软件的各项功能及其应用范围、适用的条件和限制、使用的计算方法等。4.2.2.2定义软件的性能.确定软件的数据精度、时间特性、运行效率、对运行环境的适应能力等性能。4.2.2.2说明(1)确切的定义软件的计算精度及计葬结果的数据特度,依输于对软件使用的计算方法或数据加工过程透彻、全面的了解.确定软件时数据精度的要求,应区分一般要求和软件中某些局部(如实现某计算方法或数据加工过程)对数据精入、愉出、加工(计算)、传粉等精度的特殊要求.(2)用户对软件在运行过程中对命令的响应、屏幕的显示、数据的传衡、检索、转换等以及完成某运葬过程在时间方面的特珠要求,构成了软件的时间特性.(3)软件的运行效率是一个练合指标,软件和硬件对其均有影响.因此,软件整体或某部分的运行效率指标,都是相对指标.(4)软件的适应性是说明在计算机坏垅、操作方式、数据精度等方面变化时,软件的适应能力.4.2.2.3定义软件的属性。提出在提高软件的可使用性、可维护性、可移植性,使用诊错及容错技术以及软件在安全保密等方面的设计要求。4.2.2.3说明(1)提出为使软件具有较好的可维护性及可移植性,软件的结构设计、接口设计、数据结构设计、编租等工作应采取的措施.(2)说明在软件中使用诊错及容错技术的原Al、部位和应达到的祖度.(3)叙述该软件对安全、保密方面的要求.4.2.2.4确定开发依据。明确开发工作遵循的各级标准、规范、规定或科技论文、技术会议的决策等其他开发依据。4.2.2.5定义软件的开发和运行的计算机环境。明确使用的主机和联机运行的辅助设备的名称、型号、内存和外存容量、配置及其有关的技术指标:使用的操作系统、数学软件包、数据库、编译器、图形软件、通迅、网络、联机运行的应用软件等所有支持性及工具性软件的名称、缩写词、版本号、助记号、规格说明号及来源等。30 4.2.2.6需求定义部分文字说明的初稿,也可以由有经验的用户提出,由需求分析小组进行确认或修改。4.2.2.7在技术能力、计算机环境、开发经费和开发周期等条件允许时.需求定义的内容应尽量满足用户的需求。4.2.2.8在进行软件需求定义的工作中,一般倩况下应避免涉及软件的实现方案、验证、项目管理细节等内容,以免为后继的软件设计工作造成不合理的约束。4.2.3进行软件的系统分析。精化、修改、确认软件需求定义内容,定义软件主要成分及各成分间的和软件外部接口的数据需求。4.2.3说明(1)对软件系统进行分析的过程,是对软件塞本构成由模栩到清晰、由概念到具体、逐步求精的认识过程.其目的不是进行软件结构设计,而在于精化软件雷求定义内容,形成可木的软件功能和性能,为后继的软件设计工作莫定巷础:(2)进行软件系统分析,首先画出软件的IPO图,对软件进行总体表现.然后采用自顶向下、逐层分解并伴以综合评价的方法,进行系统分析工作.使用这一方法可以有效的拉制并降低系统分析工作的复杂性.4.2.3.1绘制软件的IPO图,定义软件的外部接口,对软件进行总体表现。4.2.3.1说明软件的[PO图由愉入、加工、愉出三部分内容组成.图中应表示出全部扮入和拾出内容,并编写必要的文字说明.随着软件的规模、开发的难易程度及软件的复杂程度的增加.丈字说明的内容应越详细。IPO图画法及其说明,以PEFES软件为例,如困4.2.3.1所示。几何数据说明(1)PEFES是一个在很机上运行的一般平面弹性问题有限元分析软件..⋯(2)扮入数据:几何数据.⋯(3)输出数据: 位移计算结果.⋯图4.2.3.1PEFES软件的IPO图及说明4.2.3.2绘制软件的系统分解图,确定并标注软件外部接口及各软件成分间的接口数据并对软件成分的功能、算法和要求、接口数据编写说明。4.2.3.2说明(1)所谓分解,就是将处于模糊状态的、概念性的软件设想,按其功能分类、算法分类或数据传递的规律,设里(即分解)成若干个软件成分,如干系统、分租序、大的功能模块等,并在分解同时确定其接口数据.若本次分解尚未展现出软件的总体特征,则按同样原则和方法,对已分解出的软件成分进行下一个层次的分解.如此逐层分解,直至软件的基本功能、性能被清晰、具体的显现出来,各软件成分的功能、性能及其接口数据能够被定义,软件雷求定义的全部内容被满足.(2)常用的分解方法,有功能分解和数据流分解法.工程设计应用软件的分解,主要使用功能分解法,对较复杂的数据加工、转换部分,使用数据流分解法进行分解.在分解一个复杂或比较复杂的软件系统时,通常将这两种方法结合起来使用,这样可以使分解结果更加符合人们的思维过程和其法特征,并和用户求解问题的过租保特一致.分解时,先确定被分解部分适用的分解方法,此时可不顾及其他部分使用的分解方法,然后进行具体分解工作.做法如下:①分析软件系统(或某软件成分)的功能和葬法特征,以及主要愉入、愉出数据的属性和构成.②根据以上分析,确定分解方法并进行分解工作.<1>如果扮入与扮出数据成分存在明显的对应关系,或其功能和算法存在明显的分类关系时,使用功能分解法.<2>如果愉入与愉出数据成分不存在明显的对应关系,或其功能表现为对输入内容进行一系列加工、转换后即成为愉出形式,则使用数据流分解法.<3)对需要进行分解的功能块或数据加工过程,重复执行上述步骤,直至达到要求为止.(3)功能分解法没有十分明确的方法和步骤.有效的使用这一方法,需要对软件的功能和使用的葬法有深刻的理解,并有成熟的软件开发经脸.有经验的系统分析人员很容易理解这一方法.因此被广泛运用于工程设计计算机应用软件的开发工作中.进行功能分解的步骤知下:①综合分析软件的外部功能(软件功能、性能及外部接口等),依据其独立性、相关性和相似性,将它们分成若干个功能类(包括CAD内容).并把实现外部功能的算法特征或CAD软件中对图形的描述过程考虑在内.然后再由各功能类中分解出各项具体功能.②依据软件各项功能间的拉制关系、数值计算的特点以及对图形的描述过程,或32 参考相似的软件,进行较下层次的分解.在CAD软件中,对依抽计葬结果或与其关系v密的加工琦殊的猫途,应和分析娜分分开进行.否则,可以和分析部分A步进行、有时将上述两种处理方法结合使用,总体猫递同步进行,局部稿递分开划亏.③模拟问题的求解过程或描述过租,按该过租的处理顺序进行相关的功能分解.④绘制各层、各软件成分的分解图,标注软件成分名称、编号、数据接口,写出说明.分解图画法及说明内容,仍以PEFES软件为例,第一层分解如图4.2.3.2-1.田4.2.3.2-2为第二层中FEMA软件成分的分解,其它成分及其以下的分解从略。0UI以INDA《本田未画全)说明<1>软件成分的功能、算法和要求:[1)PEFESC软件的总体控制部分(于系统、分程序、模块等).[2)INPRO精入、编拜、加工部分(于系统、分程序、模块等).[3)GEFEM生成有限元问题模型部分(于系统、分程序、模块等).[4)FEMA有限元方法分析部分(于系统、分程序、模块等).a功能:按照有限元葬法过租,翰入并使用有限元模型数据FEDA,通过有限元方法分析,得到广义节点位移数据GUVDA.b算法描述:(a)使用单元信息、节点座标、材抖特性数据,生成各单元刚度距阵.根据荷载数据,生成等效于均布荷载的等效节点荷载.(b)迭加各单元刚度矩阵,生成总体刚度矩阵。这加各单元的等效节点荷载和集中荷载,生成总体荷载.〔。)根据约束信息,时有限元方程组进行约束处理,获得可供求解的方程组. (d)求解有限元方程组,获得广义节点位移.C设计要求:软件设计应使其具有求解4000阶有限元方程组的能力,并保持较高的计算效率.[53CHECK应力计算及精度检验部分(子系统、分程序、模块等).[63OPRO图形及数据表愉出部分(子系统、分程序、模块等)。⋯<2>接口数据:[13INDA用户愉入的数据..一[23ORDA[33FEDA有限元模型数据..⋯[43GUVDA广义位移数据..一[53STREN[63OUTDA图4.2.3.2-1PEFES软件第一层分解及其说明GDVDAFEDA--L,一一一一~~一~~曰~~~~~~司‘----一一-j‘本困未画全)说明<1>软件成分的功能、算法和要求[11FEMAC有限元方法分析拉制模块户,,...自J‘ELAN形成单元刚度矩阵及等效荷载模块呼弓,!.d.‘JASFEE组装有限元方程模块卜﹄A1,.‘‘1RESP约束条件处理模块34 r卜互,.J.LJSOLV求解有限元方程组模块Jq、J自了接口数据ELADAFEEDIFEED2图4.2.3.2-2FEMA软件成分的分解及其说明(4)数据流分解法是一个比较完善的系统分析和设计方法.它适用于各类软件项目的开发工作,是开发信息加工和事务管理型软件常用分析方法.使用这一方法分析工程设计应用软件中比较复杂的数据加工部分。模拟软件的构成,可以使分析的结果更加符合软件的实际,具体做法是:①自顶向下逐层分解、毕讲青.绘制数据流分解DID(DATAFLOWDIAGRAM)图.②定义每个数据流和数据流上每个加工环节的功能、属性、数据给构、数贡、传递方式等.③常见的数据流类型有变换型和事物基元中心型两种.分解前应先对数据流进行分析、利断,确定其类型后再进行具体的分解工作.<1>若数据流为变换型(具有较明显的拾入、加工变换和愉出的界限),选择出主数据流线,沿主数据流线按数据加工性质和顺序,将其分为愉入、变换(加工)、精出三部分.参考用户时数据的加工过程,对各分解部分设五中间变量或中间数据流进行自顶向下,逐层、逐级的分解求精,画出数据流分解图,写出有关说明.如图4.2.3.2-3所示。信息外部表示信息内部表示趁据加互滚度图4.2.3.2-3变换型数据流的分解<2>若数据流为事务基元中心型(存在一个发射多条信.息路径的起点),确定该中心的位置和它发射的信息分支.分辫每个分支的类型,参照用户对数据的加工过程,对各分解部4`ik豆中间的变童或中间教据流进行自顶向下,逐层、逐级的分解求精,画出35 数据流分解图,写出有关说明.如图4.2.3.2-4所示.(5)绘制数据流分解图的原则,是由外向里、自上而下模拟问题的求解过程,通过一系列的分解,逐步精细地确定并表现出分解的全部内容.其注意事项如下:①分解应自然、合理、概念上清晰.使每次分解生成的数据流和加工环节都容易的、确切的被命名.否则,说明分解欠合理;②分解过程中只考虑稳态,哲时忽略其它方面的细节,如内部诊错等;事务基元中心图4.2.3.2-4事务基元中心型数据流分解③进行逐层分解时,应尽量使各部分的分解保持相时均衡,避免某部分的分解过快或过反.即不要使一次分解太多或太少,太多会使复杂性增大,太少会使层次增多,都将增加综合评价的工作量.一般上层分解可快些,下层分解应慢些.避免在一层中即有塞本加工成分,又有须再分解若千次的成分.(6)软件的外部接口包括用户接口(即用户界面,包括输入、输出、操作界面)、硬件接口、软件接口、通迅接口等.软件的外部接口表示了该软件与计算机环境问的关系和联系,也表示了该软件与用户间的关系‘①用户接口<1)分析该软件输入内容的特点,提出输入界面型式、界面应具备的功能及其设计浓度和要求;明确输入介质和各输入项的名称、含义、格式等.参见5卜1节有关要求(2)提出软件的安装、初始化、操柞及运行方式、功能键设置等方面的设计要求.<3>明确文字、表格、图形等输出内容的表现形式并说明其设计要求,如计算结果(计算书)、函数曲线图表、各类表格、技术说明文字,施工图图形等.说明输出介质以及各输出项的含义、格式、表示深度、内容范围、连循的技术标准、图形组合关系、输出前的编辑和图面布五等.参见5.1节有关要求.②硬件接口明确该软件与硬件之间各接口的接口约定及其逻辑特点等.③软件接口明确该软件与有关软件(如数据管理系统、数学软件包、工具性软件、与其联机运36 行的计算机应用软件等)之间的关系及接口约定等.④通迅接口明确各个通迅接口及网络协议等.4.2.3.3为使系统分析成果是合理和正确的,在完成每次(部分或整体)的分解后,应对其进行综合评价。以期发现、改进分解的缺陷与不足,提高系统分析质量。综合评价内容如下:(1)分解是否违反了功能分类和算法常规;(2)上、下层分解图中数据流是否平衡;(3)分解层次是否均衡;(4)每个软件成分的功能及各软件成分间接口数据的定义是否明确、具体。4.2.3.3说明综合评价常引起对分解成果的调整和修改,因此,系统分析这一工作过程,可能要反复多次才能完成.当软件系统分析人员面对的是一个未曾接触过的、没有可借鉴经验的软件时,更是如此.4.2.4编写软件需求说明书。4.2.4说明软件需求说明书包括以下内容:(1)引言①开发背景说明该项开发任务的来源.列出开始合同书或经核准的计划任务书、上级部门的批文;软件主管部门、用户单位、开发单位及外协单位等.②软件概述叙述软件开发意图或开发目标、软件的作用范围;说明该软件在工程设计工作中的作用和应用频度;问题的复杂程度和开发工作的难易程度;开发工作应达到的目标或解决问题的能为;并对与该软件相关的计葬机应用软件进行简要介绍,并说明两者的关系.对分期开发的大型软件,应说明每个开发分期实现的需求内容及开发深度.并详细规定本次开发中实现的需求内容及其有关的要求.③开发依据列出开发工作遵循的国家、行业、单位的标准、规范、规定的名称、编号.若以科技论文为开发依据,则应列出论文的名称及所在刊物或书籍的名称、作者、出版单位和时间.若各级标准、规范、规定不涉及或不能提供开发依据,而通过召开专家会议时开发工作做出依据性决策时,应说明会议名称、级别、主要技术决策人和参加人的性名和职称,以及会议时间.④参考资料列出资料的名称及刊物的名称、作者、出版单位和日期.37 ⑤术语、词汇标准必要时编写在本项目全套文档中使用的、含义上容易混淆的、一词多义的专用术语及词汇的定义、原文和缩写词。(2)软件功能需求逐条、逐项详细列出并说明软件的各项功能、适用范围、适用条件和限制、使用的计算方法等内容.必要时使用图表或图形进行说明.(3)软件系统分析①软件的IPO图及其说明画出软件的IPO图,详细表示出软件输入、精出的内容,标注软件名称,写出文字说明。②软件或各软件成分的分解图及说明根据用户需求、软件的功能分类、葬法分类及数据传递规律,使用功能分解法或数据流分解法,对软件设想实施自顶向下的,逐层、逐项的,由蛛合、抽象、大功能的到具体功能的软件成分的分解.画出软件的分解图,对各软件成分进行命名、编号,表示各软件成分间的数据接口,写出有关说明.详见4.2.3条.(4)软件数据需求①静态数据<1)列出程序中用于拉制运行流向的拉制性数据,用于诊错中的拉制性数据,参考性和提示性数据,并说明其含义和作用.<2>说明需要设五的数据库(图形序、知识库、模型库)的名称、内容、用途、使用频率、存取能力、数据保存要求等.<3)说明在网络中支持的终端数、并行操作的用户数、可处理的文卷和记录数等.②动态数据<1>输入数据列出所有输入的内容,数据元索.说明其含义和类型.<2>输出数据列出所有输出数据元素.说明其含义和类型.<3>中间数据列出在软件中起重要作用的、用户关心的(计算结果和图形的)中间数据和文件,说明这些中间数据文件的名称、结构以及文件中数据的含义、类型和格式等.(5)软件性能需求①精度说明软件时数据精度的一般要求以及软件各组成部分对数据的愉入、传愉、计算、输出精度的特殊要求。②时间特性说明软件对命令的响应,以及对运算、处理、显示、数据的传输、检索、转换等在38 响应时间方面的特殊要求③适应性说明在计算机环境、操作方式、数据精度等方面变化时。软件适应能力上的要求.(6)软件属性①说明为提高软件的可使用性,对软件中的检查点、恢复点以及重新启动点的设呈等方面的要求.②说明软件中使用诊错及容错技术的原则、部位和应达到的程度.③为使软件具有较好的可维护性、可扩充性和可移植性,对软件设计和编程等工作的特殊要求.④叙述软件在安全、保密方面的要求.(7)外部接口①用户界面<1>说明输入界面型式、界面应具备的功能及其设计深度和要求;特珠的墉入方式应说明其技术条件和要求;说明使用辅助性图象、提示性数据、说明性或引导性文字、Help、诊错、容错等技术要求和限制;说明各拾入项的名称、含义、格式;并指定输入介质等.<2>时软件的安装、初始化、操作及运行方式、功能健设五等提出设计要求.<3)分别列出文字、表格、图形等扮出内容的表现形式,说明其设计要求.如计算结果〔计算书)、函数曲线图表、各类表格、技术说明文字、施工图图形等.并说明各输出项的含义、愉出形式和表示深度、范围、遵循的技术标准、图形组合关系、输出前的编辑和图面布五,并指定愉出介质等.②硬件接口说明软件与计算机硬件环境的接口约定及其逻辑特点等.③软件接口说明软件与有关软件《如数据管理系统、数学软件包、工具性软件、其它应用软件等)之间的接口约定等.④通迅接口说明各个通迅接口及网络协议等.(8)计算机环境①设备列出主机和辅助设备的名称、型号、内外存容童、配置及其有关的技术指标等.逗,支持性及工具性软件列出操作系统、编译器、图形软件、通迅、网络及显示等联机运行软件的名称、版本号助记号、规格说明号及来源等.③其他应用软件列出需要联机F行的其他应用软件的名称、版本号、来源等. (9)各项专题计划按项目开发计划书的要求分项编写.4.2.5修改、完善项目开发计划书。4.2.6进行需求分析阶段工作成果的评审。鉴于软件需求说明书在软件开发期中的重要作用,在编写完成软件需求说明书后,开始后继开发工作之前,邀请适当人选,成立专门小组对软件需求说明书的内容进行严格、全面的评审。评审工作主要有以下几方面的内容:4.2.6.1需求定义部分的内容是否完整、准确、是否满足了用户的全部需求;4.2.6.2软件系统分析成果和需求定义内容是否一致;4.2.6.3开发依据是否充分;4.2.6.4输入、输出内容的详细规格可否被确认;各接口数据是否已被描述;4.2.6.5设计约束是否已被实现;4.2.6.6采用的开发技术是否可行,是否有风险及应对措施;4.2.6.7各种图示和文字说明的内容是否准确、完整、清晰;4.2.6.8项目开发计划是否可行。任务分配、开发进度、经费支出等是否合理。4.2.6说明(1)软件需求说明书相当于开发合同书详细、具体的技术文本;是软件开发工作的基础和依据;是时软件进行确认、评价和验收的塞准;所以,软件雷求说明书在软件开发期中的作用是至关重要的.(2)需求分析阶段工作的评审组,应由工程技术和软件技术方面的专家以及软件管理部门、委托单位、用户单位的人员组成.4.2.7软件需求说明书通过评审后,若对其进行修改,须在征得用户单位、开发单位、委托单位、软件管理部门同意后进行。 5概要设计5.0.1软件设计工作包括概要设计和详细设计两部分内容。概要设计也称总体设计,包括用户界面设计、算法设计和结构设计三部分内容。5.0.1说明(1)软件设计工作的主要任务是依据软件需求说明书的要求,运用系统分析的方法和设计者的经验,详细设计满足软件需求定义集合要求的用户界面(输入、输出、安装和操作等);选择或构造实现软件功能、性能、数据加工的计算方法并设计其算法过程;设计模块化的软件结构、数据结构、数据库(图形库、知识库、模型序)、定义各个接口的数据结构及传递方式;进行模块内部的算法过程设计及数据组织;编写软件设计文档等;(2)软件设计工作是关系到软件能否具有良好的可靠性和正确性的关键步骤,它是后继的编码、调试等工作的依据;(3)开发单位应成立专门的设计小组进行软件的概要设计工作.中型软件以三人左右为宜,大、小型软件的情增减;其组长应具有一定的软件设计工作经验;设计组中应包括参加过需求分析阶段工作的人员;模块设计应指派专人完成。5.1用户界面设计51.1任务设计软件输入和输出的形式、内容和格式;设计软件安装、运行操作的方式和命令格式:编写用户界面设计说明书和用户手册初稿。5.1.1说明软件的用户界面部分,包括输入界面、输出界面和操柞界面三部分内容.它即是软件实体的一部分,也是软件的外观,又是软件和用户间的联系通道.它直接影响着用户能否准确、有效的使用软件,能否得到需要的、满意的结果,是软件设计的重要环节.5.1.2实施步骤和要求用户界面设计应符合用户的习惯和要求,易于理解,便于使用,附加信息量少,辅助性图象、提示性数据、说明和引导性文字使用得当。5.1.2.1输入界面设计(1)对所有输入信息进行定义和分析,建立输入数据序列,确定输入界面的形式。5.1.2.1一1说明①在理解软件需求说明书中有关要求的基础上,对所有输入信息进行定义,包括使用的标识符、数据类型、精度、格式等.41 ②根据数据问的从属关系,拉制关系、顺序关系、逻拼关系以及用户对问题描述的习惯和要求,建立愉入数据序列(线状、树状、表状等),指定输入介质.③根据输入数据序列的特点,确定愉入方式.<1>莱单愉入方式适用于交互方式运行的接口设计,其操作简单、意义明确,但不适于描述童大而多变的输入数据序列.<2>表格输入方式适用于描述量大而规律性强的数据序列。其操作简单、附加信息量少,但可理解性比莱单方式差,不适于描述多变的输入数据序列<3>描述复杂多变的输入数据序列,可以使用功能更强的描述形式.如使用面向问题语言POL(ProblemOrientedLanguage)。其形式上比较完善,易学易用,可理解性强,可以和操作命令融为一体,即适用于交互作业方式也适用于批处理作业方式,但这种描述方式需要的附加信息量较大。(朴常用的输入界面多是几种输入方式的组合形式.(2)详细设计输入界面①设计工作效率高的输入界面输入数据应简捷而无逻辑上和意义上的重复,充分利用数据间的内在关系和技术手段,通过数据加工(通常需要使用合适的算法)用较少的数据描述较复杂的问题。使用可视化技术,通过屏幕图形或图象,充分利用计算机的能力和环境资源,尽量提高输入界面的智能性,简化输入过程,减少输入工作量,最大限度的提高输入工作效率。5.1.2.1-2.1说明<1>使用莱单方式时,首先进行运行进程的分刽,设计每个运行进程使用的菜单选项.综合所有选项,按逻辑和顺序关系进行分层分类,形成莱单体系.画出莱单的分层选项图表,并对每个选项进行说明.<2>使用表格方式时,应设计出表格序列,并对各表项进行说明.<3)使用数据文件进行输入时,应设计输入文件的结构.如数据的分段、顺序、格式及精度说明数据的含义及使用的条件和限制等.<4>设计并洋细表示、说明每个屏幕画面的形式、内容和格式等有关工程技术的辅助性图象、提示性数据、说明性文字,有关引导运行操作的文字的显示时间要及时,屏幕位置要恰当.并说明该显示屏和数据库(图形库、知识库、模型库)的关系.<5)使用特殊的输入方式时,应详细叙迷其输入过程、使用的技术以及对愉入对象的要求.②设计能提高软件可靠性的输入界面确定输入界面中使用诊错、容错技术的部位,设计其实现方法、使用的算法以及屏幕显示的提示性、警告性信息等。以提高软件使用的效率和可靠性。③设计对用户友好的输入界面界面的功能齐全、使用方便,除具有数据加工、诊错、容错等功能外,还应具有编辑、说明、提示、引导等辅助功能。42 5.1.2.1-2.3说明<1>设计拾入界面中的工作状态(如愉入、编辑等),各种工作状态的功能(如编牌状态用于用户对检入内容的查阅、修改等)、工作状态间的转换、各种工作状态使用约限制和条件等.<2)设计各显示屏中辅助性图象、提示性数据、说明性或引导性文字的显示内容及洛式,并说明和数据库(图形库、知识库、模型库)的关系.若使用Help.应列出其全部内容,并说明和每一显示屏的关系;<3>拾入界面的操作应共有较大的灵活性,便于用户随时运用他掌握的工程设计知识和经验,进行有意义的、合乎逻辑的操作.<4>对配备有多种算法并可选择运行路径的大型、复杂功能的软件系统,应在拾入界面中设计进行软件运行路径和算法选择的功能.<5>一个对用户友好的界面,应是实用、简捷、功能齐全、方便灵活、图文并茂而不是繁琐、华而不实的,为此,设计者除应熟练的掌握界面设计技术、技巧外,更重要的是对界面中描述的工程设计问题有深刻的理解和丰富而符合实际的构想,年重用户的要求和习惯.克服以设计者的思维方式和习惯为中心的思想障碍,并以此做为用户界面没计的基本出发点.[1]设计者不宜在界面内时软件中的工程技术问题不分巨细的进行定义,而应在界面中的某些部位,请用户对一些复杂的工程技术的应用,做出决策性的干预.这样做虽然使界面的拉制结构和数据结构复杂了些,也增加了界面设计工作量,但提高了用户的参与感,有利于发挥用户的专业技术特长.还可进免因软件运行时间较长而引起用户的担心和逆反心理,提高界面的友好性;【幻由于工作性质和工作特点上的原因,软件设计者多习惯于进行葬法设计、符号演绎和逻辑推理等工作的抽象思维方式.经常会不自觉的把这种思维过程和方法看成是合理而严密的,并运用于具体的界面设计中,而忽视了用户的心理、要求和习惯;[31设计者应深入学习软件中的工程技术知识,不满足于一知半解,准确的使用用户习惯的专业技术用语和表达方式,克服以自我的思维方式和习惯为中心的思想障碍.5.1.2.2输出界面设计。(1)设计文字输出的形式,指定输出介质。(2)设计各种图表、表格(函数曲线图线、各种表格、计算结果等)的输出形式,指定输出介质。(3)设计图形(施工图图形、屏幕显示的图形和图象等)的输出形式.说明遵循的标准、内容、范围、深度、图形的组合、输出条件和限制、使用的输出介质。(4)对各种内容的混合输出,设计输出前的编辑,说明编辑的条件和限制等。5.1.2.3设计软件安装、初始化及运行过程的操作。(1)确定软件储存形式,软件安装与初始化过程的操作内容和命令,表明安装工作完成的测试以及安装过程中使用的软件工具等:43 (2)对批处理运行方式设计启动点、检查点等及命令格式;(3)出现非正常运行(故障、错误等)后的提示信息、处理步骤和命令格式;(4)列出各种运行情况下的操作命令序列.5.1.2.4编写用户界面设计说明书。5.1.2.4说明用户界面设计说明书包括以下内容:(1)引言列出软件需求说明书中的有关内容,说明界面设计的原则、采用的技术和形式等.(2)输入设计①说明输入界面的形式、内容及规格等.<1>使用莱单或表格输入方式[I〕画出总体的或分层表示的莱单体系图表或表格序列;【幻使用图示和文字,详细表示并说明每一显示屏的内容组成及划分.如莱单选项设置或表格划分及表项设I等:[3]说明每个输入项的标识符、含义、类型、格式、有效范围、使用的条件和限制以及与数据库(图形库、知识库、模型序)的关系等内容;[4〕说明在各显示屏中辅助性图象、提示性数据、说明性或引导性文字的显示内容及格式,并说明和数据序(图形序、知识库、模型序)的关系.<2)使用数据文件愉入时,说明数据的分段、每段数据的顺序,每个输入项的标识符、含义、类型、格式、有效范围、使用的条件和限制等内容.②若使用Help,列出其全部内容,并说明和每一显示屏的关系.③说明输入界面设计中,使用诊错、容错技术的部位、内容、条件和实现方法.④说明愉入界面中设兰的工作状态(如输入、编样等),各种状态的功能,状态间的转换关系,各种状态的显示及使用的条件和限制等.⑤详细说明在输入界面中生成的每个数据文件的标识、命名、用途、文件结构和数据结构.如数据的分段、顺序、精度、格式等.@当使用特殊的愉入方式时,应详细叙述其扮入过程、使用的技术、愉入对象的规格要求等.(3)愉出设计①列出所有文字扮出的形式和内容,指定拾出介质等.②使用表格、文字、图形,详细表示各种图表(函数曲线、种种表格、计葬结果及其辅助图形等)的形式和内容,指定愉出介质等.③使用图示和文字,表示并说明所有愉出图形的名称、表现形式、表现深度、内容范围、遴循的标准、图形间的组合关系、图面布$,输出的条件和限制、使用的检出介质等.④时各种内容的混合愉出,说明衔出前的编辑原则、适用的条件和限制等.44 (4)操作设计①说明软件储存的形式和要求;叙述软件安装与初始化过程中的系统设1和命令格式;说明完成安装工作后的测试以及在安装过程中使用的软件工具等.②说明在软件的运行操作中应注意的(特殊的)问题、功能健的设里和使用等.③说明批处理操作方式下检查点、启动点的设里和命令格式。④列出有关网络、远程终端、联机运行其他计算机应用软件的操作。⑥运行出现非正常情况(错误和故障)时,屏幕应显示的提示性或警告性信息的内容和格式,以及为实现软件再启动运行的功能,用户应遵循的恢复运行的操作过程和操作命令.各种提示性及等告性信息,应使用统一的格式,显示运行错误和故障的部位、原因和性质.列出故障,错误信息表.⑥列出各应用情况下的操作命令序列。必要时说明命令的功能、格式、参数等.5.1.2.5编写用户手册初稿。5.1.2.5说明用户手册包括以下内容:(1)引言①项目来源列出该项目的主管部门、委托单位、开发单位;列出开发合同书或经核准的计划任务书、上级部门的批文等.②软件运行环垅及存储<1)列出主机、服务器、愉入、偷出等所有联机运行的辅助设备的名称、型号及所需的各种配里.说明软件对设备内、外存空间以及网络、通迅等方面的要求.<2>列出使用的操作系统、编译器、图形软件、网络、通迅等所有支持性、工具性软件的名称和版本号以及需联机运行的计算机应用软件的名称、缩写名及版本号.<3》说明软件存储的形式、介质(软盘、磁带等)和数蚤,软件的和每张(盘)介质的标识和存储目录、存储内容、主要功能等.③软件的应用目标及适用范围说明该软件的开发意图或开发目标,软件的应用范围及解决工程设计问题的能力,软件的特点.并对于该软件相关(或联机运行)的计算机应用软件进行简要介绍,说明两者的关系.④开发依据列出开发工作所依据的国家的、行业的、单位的或国外某级别的标准、规范、规定的名称、编号.若各级标准、规范.规定不涉及或不能提供开发依据,而通过召开专家会议对开发工作做出依据性决策时,应说明会议名称、级别、主要技术决策人和参加人的性名、职称以及会议时间等.45 若以科技论文为开发依据,应说明论文的名称及所在刊物或书籍的名称、作者、出版单位和出版日期等.⑤参考资料列出参考资料的名称、作者、出版单位和日期等.(2)软件功能详细说明软件的全部功能、性能,适用条件和限制.必要时辅以图、表进行说明.(3)输入说明①说明界面的形式(莱单、表格等)、内容及规格等.<1>画出总体的或分层表示的菜单体系图或表格序列.<2》说明各莱单选项的功能、表格划分和表项设置以及佼用条件和限制等;<3>列出每个输入项的标识符,说明其含义、类型、格式、有效范围、使用条件和限制。<4>说明各显示屏中辅助性图象、提示性数据、说明性或引导性文字的内容以及使用中的注意事项.②使用数据文件输入时,说明数据的分段和顺序,列出每个输入项的标识符,说明其含义、类型、格式、有效范围、使用条件和限制等内容.③若使用Help,说明其内容组成、使用方法及注意事项.④说明扮入界面中使用诊错、容错技术的部位和内容、使用条件和使用方法,以及屏幕显示的提示性、整告性信息等.⑤说明愉入界面中设里的工作状态(如愉入、编辑等),各种状态的功能、状态间的转换关系及使用的条件、限制和方法等.⑥对愉入界面中生成的、用户关心的内部数据文件,应详细说明其用途、标识或命名,数据文件的结构和数据结构,如数据的顺序、含义、精度、格式等.⑦当使用特殊的愉入方式时,应详细叙述其偷入过程、使用的技术、对愉入对象的规格要求、使用方法、条件、限制和注意事项等.⑧对配备有多种算法并可选择运行路径的大型、复杂功能的软件系统,说明界面中提供的选择功能、使用方法、注意事项、使用条件和限制等.(4)精出说明①说明所有文字拾出的形式、榆出介质等.②说明各种表格(函数曲线图表、各种表格、计葬结果等)的愉出形式和介质、应注意的事项等.③说明愉出图形的名称、表现深度和范围、遵循的标准、榆出的条件和限制、使用的输出介质等.④对各种内容的混合输出,说明输出前编辑的原则、条件和限制等.⑤列出用户在某些情况下可能直接使用、参考或修改的中间数据文件(本项可在结构设计完成后补充)的名称和文件结构.如数据顺序、含义、类型、格式等.46 (5)操作说明①说明软件安装工作使用的软件工具、操作及完成安装后的测试,初始化工作的系统设置和操作等.②说明批处理操作方式下检查点、启动点、恢复点的使用原则和命令格式.③列出在网络上、远程终端上以及联*WE行其他计算机应用软件的操作命令和注意事项。④出现非正常运行(故障、错误等)后的提示信息、处理步骤和命令格式.C列出各种应用情况下的操作命令序列,说明命令的功能、格式、参数以及运行过程中的人工干预操作等.(6)应用实例或应用例题集(待完成软件调试工作后补充).①说明上机前的数据、图形等准备工作的内容;②画出简图,说明技术条件和要求,列出所有愉入内容并对各愉入项进行必要的说明和解释;③说明软件运行的操作步骤和命令格式,以及在运行中需进行的干预和处理等;④说明在输出前应进行的输出内容的编辑工作;⑤列出输出内容,并对输出内容进行详细说明、解释和确认.5.2算法设计5.2.1任务算法设计工作,包括算法结构设计和算法过程设计两部分内容。算法结构设计是选择或构造能实现软件功能需求集合的(包括数据管理、数据加工算法)、恰当的计算方法、计算公式,形成软件的算法结构:算法过程设计是针对每个计算方法设计其有效的算法过程:编写算法设计说明书等。5.2.1说明工程设计应用软件使用的计算方法和一般的数值计算方法不同,它必须满足工程设计专业技术的、软件功能和性能的、接口数据转换等多方面的要求.这是工程设计应用软件实现数据加工的叁本特征,也是工程设计应用软件和其他用途软件的主要区别.在选择和构造工程设计应用软件的算法时,要注意算法对上述各种要求综合的适应能力以及对问题求解过程的适应性.其法设计的内容,是软件的理论基础;算法的复杂性决定了软件的复杂性;算法设计的优劣直接影响着软件的功能、性能、可靠性和软件的运行效率.算法设计说明书是软件结构设计、详细设计的依据;是软件调试及维护工作必备的资料5.2.2实施步=}k和要求52.2.,为了降低算法设计的复杂性,进行算浩设计时,应根据软件需求说明书有关内容的要求,将各个相对独立的算法或功能组合,分为若干个子系统、分程序、大的功能摸块分别进行。 5.2.2.2调查、收集需要的算法或计算公式,对收集到的算法或计算公式进行性能评价。性能评价包括以下几方面的内容:(1)正确性。指该算法理论、数学物理模型的正确性;(2)适用性,指该算法对软件中问题集合的综合适用程度;(3)计算精度与计算速度的可接受性;“)收敛性。即计算结果的精度随算法的近似指标或迭代次数变化的规律:(5)存储量。对于算法最适宜的数据结构,算法所要求的存储量的精确表示或存储量随问题规模变化的规律:(6)计算量。即计算量的精确表示或计算量随问题规模变化的规律:(7)稳定性。指计算过程的稳定性,即计算结果的精度对原始数据误差和计算精度的依赖性,特别是这种依赖性随问题规模变化的规律;(8)复杂性。指算法结构的复杂程度。5.2.2.2说明(1)调查、收集需要的算法、计算公式时,包括收集算法理论、数学物理模型、模块或软部件等.(2)各项指标全优的算法是不存在的,进行算法性能评价应兼顾主、次要指标,综合的评定一个算法.(3)对一个算法的实际应用效果的评价,来源于实际应用的反馈信息,这种应用效果包含着软件技术、技巧和计算机环境等因素在内.实际应用效果评价的内容同上5.2.2.3在算法性能评价的基础上,选用或自行构造出满足工程技术要求的、能实现软件各项功能、性能需求的计算方法、计算公式、数据加工或转换的算法。进行算法选择时,必须注意算法的成熟性和正确性,以确保软件的可靠性。对重要软件的算法选择,除应进行可靠的理论分析和算法性能评价外,还可以使用数值试验的方法,进一步做出性能评价。5.2.2.3说明(1)进行算法选择时,既不要单纯追求其理论上的完整或新颖,也不可片面追求其简单和实用.没有经过实践检验而理论上高深的算法或过于简单、粗糙的算法,都可能影响软件的可靠性.(2)功能集成度高的、计算复杂的工程设计计算机应用软件的算法选择工作,是一项比较复杂的工作.设计人除需掌握多种计算方法,了解各种计算方法的理论、模型、计算特点、实现条件、适用条件等之外,还需对工程设计问题的求解特点和要求有充分的了解.算法设计者往往受到他所熟悉和掌握的知识的限制,有时难以由一个设计人独立并出色的来完成.对缺乏数值计算经验的设计者,将更加困难.尽管只是在已有的、成熟的算法中进行选择,但做到恰当的选择并非轻而易举。5.2.2.4根据软件需求说明书和用户界面设计说明书的要求,使用选取的或自行构造的计算方法,设计最接近于输入端和输出端的内部数据结构。48 5.2.2.5针对选取的或目仃构适的计算万状,杖计其有效的算a过程。5.2.2.5说明在算法设计阶段,不可能将软件每个模块内的算法过程全部定义出来,而仅能设计影响软件各项功能、性能、或关健部位算法的算法过程,共余部分的算法过程由于过多的依赖于模块内数据的细部组织,只好在模块设计阶段再确定.5.2.2.6按软件功能、性能的组合要求,使用自顶向下及自下而上相结合的分析和构造方法,合并(连接)使用的各个算法,形成支持软件总体需求的总体(复合)算法。5.2.2.7在总体算法结构的基础上,完善、补充设计各个算法连接部的数据转换、加工以及诊错等算法。5.2.2.8运用自顶向下和自下而上相结合的综合评价方法,对各个算法和总体算法进行综合复审和评价,修改、完善各个算法和总体算法。5.2.2.9编写算法设计说明书。5.2.2.9说明算法设计说明书包括以下内容:(1)引言①列出软件需求说明书中有关算法设计的内容,说明算法设计的基本原则.②参考资料列出资料、书刊的名称、作者、出版单位和日期.(2)软件模型叙述软件模型的理论框架和实现方法.生成该模型的依据和条件.(3)其法描述①总体(复合)算法画出总体算法结构图,说明其组成及各葬法的选择依据以及计其过程.②各算法的描述填写算法描述表,其内容如表5.2.2.8所示. 算法描述表表5.2.2.8算法名称及标识共页第页算法功能、适用范围、条件和限制:输入、输出数据:算法描述(计葬方法、计葬公式、计葬过程):数值精度:存储要求:参考资料:设计人:日期: 5.3结构设计5.3.11工务设计符合软件需求说明书、用户界面设计说明书、算法设计说明书要求的软件结构和数据结构:详细的定义全部模块及其功能、算法、模块间的控制关系和信息传递的方式、介质、接口数据结构;设计数据库(图形库、知识库、模型库);编写结构设计说明书等。5.3.1说明软件结构是软件中各种算法与加工步骤的具体体现,软件成分(模块或程序)的层次性表示。指导结构设计的基本思想是模块化、信息隐蔽和自顶向下的层次化.进行结构设计的方法是逐步细化的设计方法.结构设计不涉及模块的内部过程.5.3.2实施步骤和要求5.3.2.1构造软件的初始结构图。(1)根据软件需求说明书、用户界面设计说明书、算法设计说明书的要求,通过对软件系统的分析,使用功能分解法或数据流分解法,确定软件的层次结构以及每个层次的成分。即先分解、确定出软件各个子系统、分程序、功能控制模块等,下层的问题暂时搁置。然后反复使用分层、渐进的方法进行分解,每次分解、变化不宜太大,直至各个功能单一的基层模块。定义各软件成分之间的接口数据,绘制出软件的初始结构图。(2)在对软件进行分解,确定模块功能时,应同时确定模块接口数据的内容、顺序和类型、格式和传递方式等。两者不宜分开进行。(3)对模块、程序体、数据库(图形库、知识库、模型库)、某些数据结构的命名应制定统一规则。以保证命名的唯一性,并反映其功能特点或在软件中的相应位置等.5.3.2.1说明(1)使用功能分解法,进行初始结构的设计.①理解软件需求说明书、用户界面设计说明书和算法设计说明书的内容,并对其加以确认.若软件系统分析不够合理,或算法选择不够洽当,应按2.2.6条要求,镇重认真的进行修改和完善.以形成可索的结构设计基础.②在经确认的前期工作成果的基础上,使用自顶向下,逐层分解的方法,定义各子系统或分程序,直至各个功能单一的模块;确定模块间的控制关系和数据传递关系,必要时设五数据转换及数据管理模块;定义各模块的功能、算法、接口数据及其传递方式和介质等;③针对每个基本算法和算法过程、考虑内、外存容量和外部设备的限制,愉入、愉出的妥求,设计其最适宜的外部接口的数据结构,完善算法模块的定义;④根据相关算法模块的数据结构、数据量和内、外存限制,设计数据管理方法.如米用公t*1数据区、数据文件、数据库(图形库、知识库、模型库)等.并将实施毅据管理的功能,分别斌予各模块或设计专门的数据管理模块;51 ⑤形成并绘制出基于实现软件功能与算法结构的初始结构图.(2)使用数据流分解法,进行初始结构设计.①理解软件雷求说明书、用户界面设计说明书和算法设计说明书的内容,并时其加以确认.若软件系统分析不够合理,或算法选择不够恰当,应按2.2.6条要求,懊重认真的进行修改和完善.以形成可靠的结构设计基础;②若数据流为变换型,选择出主数据流线,沿主数据流线按数据加工的性质、顺序,分别对输入、变换、拚出各部分进行分解,形成数据流分解图;③若数据流为事务基元中心型,应根据葬法设计中选定或构造的算法及其算法过程的要求,对该中心发射的每个分支,自上而下进行分解、求精,设五中间层次和下层基本加工成分,精化每个基本加工的控制范围,形成并绘制出基于实现数据加工的数据流分解图.④为使图面统一,可将数据流分解图模决化,表示在初始结构图中,或使其单独存在.(3)在对复杂的大型工程设计应用软件项目进行软件系统分解时,往往仅使用功能分解法或仅使用数据流分解法效果都不理想。而比较多的使用功能分解法和数据流分解法的结合形式.在数据流分解中又可能是变换型和事务基元中心型的混合形式.软件结构设计者应有效地把不同的结构设计方法结合起来使用,才能设计出合理的软件结构.(4)构造复杂的大型软件的初始结构图,除使用一般的分析、构造方法外,也可以采用由关健部分开始,按软件的功能组合关系,逐渐扩展成完整的软件系统的方法.(5)软件结构设计表现方法①模块图示表示数值计算、数据加工或数据管理模块。方框内写模块名及模块编号.表示榆入模块.框内写模决名及模块编号.表示愉出模块.框内写模块名及模块编号.表示显示模决.框内写模块名及模块编号.②模块间的基本关系顺序调用A为上级模块.B.C为下级模块.上、下级模块间的联线表示调用、拉制关系. 选择性调用带有小菱形的调用线表示选择性调用关系.图中表示上级换块A根据条件1选择A1,根据条件2选择调用A2-An循环调用调用线上带弧形箭头表示循环调用关系.图中表示上级模块A在第一个循环段内循环调用A1,在另一个循环段内循环调用A2和A3.③软件结构图一项基本加工或一个功能块所隐含的算法对数据结构的要求;<2>用户对外部数据结构的要求;<3>存储空间的存储介质对数据量和数据结构的限制;<4>程序设计语言对复杂数据结构的适应能力。5.3.2.2说明常用的数据结构有静态、半动态和动态结构.他们的基本特征是:(1)静态结构形式有:①标量:②向量(一维数组):③多维数组;④定长记录.九许不同类型的数据存放在一个记录内.在存储条件允许时,应尽蚤采用这类数据结构.因为它们易于理解、操作简单.(2)半动态结构形式有:①自描述记录.存储区可以逐次分配;②钱.后进先出存取;③队列.先进先出存取;④双向队列.先进先出与后进先出存取兼有.它们的共同特点是比较简单,而且有效地提高了存储区的利用率和存储效率.(3)动态结构形式有:①链式结构.分为向前链表、循环链表、双向链表、链式栈、链式队列等;②树形结构.分为双又树状和多元树状结构.构造动态数据结构的目的,是提高存储区的利用率并缩短查寻与存取时间。根据这一原则和数据特点,结构设计人员可以设计高效率的操作算法,以实现信息的隐蔽并提高运行效率,如使用广义可变数组等结构形式.(2)在初始结构图上增加软件内部诊错的设计;(3)补充与计算机环境、操作方式、故障补救和处理等有关的设计;(4)合并相同(或近似)功能的模块形成公用模块;(5)在数据分析的基础上,进行精细的数据管理设计。5.3.2.3设计需要的数据库(图形库、知识库、模型库)e5.3.2.4进一步调整、修改软件的初始结构,形成经精化的、良态的软件结构设计。5.3.2.4说明(1)良态的软件结构是结构设计追求的目标.模块的内、外部特征,即模块的内聚性和模块问的偶合度,是软件结构优劣的重要标志.模块内、外部特征量度与良态结构设计准则如下述:①模块内、外部特征量度<1>模块的内黔胜 内聚是描述模块内部各成分之间关系的一个概念.内聚性是对各成分联系强弱的一种童度.内聚性越高表明各成分间的联系越强,常见的模块的内聚性有以下几种:共存性内聚、退辑性内聚、时态性内聚、通迅性内聚、顺序性内聚、功能性内聚.上述六种内聚性强弱不等,若概念性(不定量)的把他们标在一维数抽上,如图5.3.2.4-1所示。共存性逻辑性时态性通迅性顺序性功能性低中高图5.3.2.4-1各种内聚性强度表示<2》模块间的栩合度辐合是描述软件棋决间依抽关系的一个概念.辐合度是对模块间依教关系强弱的t度.模块间的藕合度越低,表示模块的独立性越强.常见的模块间的辐合关系有:独立辐合、数据参数栩合、标记辐合、转移标志栩合、外部翻合、公用区辐合.在上述六类辐合中,共用区机合比校复杂,特别是在多种栩合类型同时存在于多个模块之间时,会侠软件系统的复杂性大幅度上升.在进行结构设计时应进免发生这种情况。②良态姑构设计准则<1>建立低翻合度和高内聚性棋决集合[1]在初始结构图中,若块间联系较复杂,栩合度高,但每项功能又不1杂,则可将它们合并,以减少数据传递或公用区的引用.[2]通过对每次分解成果的评价.常可发现多个模块具有相同或相似的功能成分.此时,应抽取其公用成分,形成逻料上或功能上独立的共用模决.<2>进免在高扇入和高扇出的结构形式中设I多功能模块一个模块被多个模决调用称高扇入.一个模决调用多个棋块称高扇出.如果这是一个多功能模块,将使拉制给构和数据组织复杂化而留下后患.增加软件编程、调试和维护工作的难度和工作全.如果这个模块不是多功能的,则应九许其存在.<3)使一个条件利断的作用范国保特在它所在模块的拉制范田之内一个模块的控制范围是指该模块及其直接和间接调用的所有模决的集合.一个条件PI断的作用范围,是指刹断所在的模块和以各种方式受该利断影响的模块及他们控制范围内的模块。如果一个条件利断的作用范国超出其所在模块的控制范围,势必会出现拉制型参数传递到其所在模块的控制范围之外,而引起交叉拉制和失拉.给软件的编租、调试和维护工作带来不便.<4>定义单入口、单出口的模块如果一个棋块有多个入口和多个出口,,容易发生功能的病态辐合.<5>使所有模块的外部接口尽可能简单56 劝于实现数值计算方法的模块应设计其最适宜的数据接口.劝复杂的数据结构和教据管理。应设计专门的操作模块.③关于模块复杂性的量度和限制、模块复杂量度是以模块程序流程图为基础进行的.如图5.3.2.4-2中各条加工和控制线分割出了5个区域,该程序的复杂性指标即为5.一般模块,该指标应小于15.图肠.日.皿4-2模块1杂性全度④关于模块w英的建议研究和统计表明,开发的成功率与模块的;k;摸没有直接关系.高内聚性要求设1小模块,而功能完整的大模块的开发效率和成本均优于小模块.因此,模块的规模,应按前述的各种要求与开发对象的实际条件综合考虑.一般认为50-150个代码行的模块规模较合适.理由是编码工作可以在一个工作日内完成、便于调试、可以输出在一、二页打印纸上.但也有人经统计、论证后认为250行左右为宜.⑤上述的模块规模和模块复杂性限制,是预测性的和概念性的.在结构设计时,难以绝对、严格的遵循.应根据开发实际的要求和情况,尽量去做.⑥控制需要优化处理的模块个数.在结构设计过程中,设计者可能有能力预见到哪些处理步骤对软件的可靠性和运行效率产生较大影响.应将这些处理步骤集中在少数模块内,以便于集中加工或修改.⑦设五计葬机环沈(参数和设备接口等)模块.为软件移植提供方便条件.5.3.2.5编写结构设计说明书。5.32.5说明结构设计说明书包括以下内容:(1)引言①结构设计概述<1>列出软件需求说明书中有关的内容;57 模块说明表表5.3.2.5-1模块名称及编号共页第页模块功能:上级模块名:下妞摸块名:接口数据名类型作用结构数童算法:设计要求:设计人:·日期: <2>时软件结构进行总体描述.如结构的分层、每个子系统或分程序的功能、性能设豆以及与数据库(图形库、知识库、模型库)的关系;关健葬法的部位;对计算机硬件、软件环境有特殊要求的部位等有关全局性问题.②参考资料列出资并的名称、作者、出版单位和出版日期.(2)软件的总体或分层结构图可以在一页纸上表现的、结构比较简单的中、小型软件,可将全部模块绘制在总体结构图中,按级别时模块进行编号,并填写模块说明表,模块说明表见表5.3.2.5-1.对难以在一页纸上表现的结构复杂的大、中型软件,可以分层或分项表示.分别画出每个分层的或某个软件成分的结构图,并按级别对模块进行统一编号,镇写模块说明表.模块说明表的内容如表5.3.2.5-2所示.(3)软件的数据流图在结构图的基础上,画出软件的数据流图.若某个数据集合(数据文件、数据库、公用数据区、哑实结合的参数等)由一个模块传到另一个模块时,,用带箭头的实线联接这两个模块.箭头表示数据的流向.数据集合的名称标注在数据流线上.若两个模块问同方向传递多个数据集合,可将这些数据集合的名称标注在同一根数据流线上.若软件规棋较大或数据传递关系较复杂,难以在一页纸上予以表现,可用分图进行表现.若软件的结构组成和数据流都比较简单,可将软件结构图和软件数据流图合并.(4)共享的接口数据对软件中使用的会用数据区、数据文件、数据库(图形库、知识库、模型库)等复杂的、多个软件成分共享的接口数据,分别说明如下内容:①数据名称及组成特征;②数据结构:数据含意、顺序、类型、格式,图形库内容清单;③共享该组数据的模块名.描述共享的接口数据以某有名会用数据区IGFE为例,如图5.3.2.5所示.5.3.2.6进行软件概要设计工作成果的评审。成立专门的概要设计成果评审小组,对该设计是否满足软件需求说明书的要求;设计方案的可行性、合理性、先进性:文档资料的完备性和编写深度是否符合要求进行评审,并提出评审意见.概要设计成果评审包括以下内容:(1)完整性.概要设计是否实现了软件需求说明书中定义的软件的功能、性能和外部接口的要求,设计成果是否是可追踪的:(2)合理性。软件结构设计是否合理、可行,功能的设置和组合、系统的分割和联接是否合理、齐全,软件运行的控制设计是否清晰、准确:(3)可行性。设计方案中所涉及的开发技术是否成熟,是否超出了当前软件技术的能力:(4)正确性。是否可以证明设计的输入和输出之间的关系是正确的:59 模块说明表表5.3.2.5-2模决名称及编号有限元数据管理模块MFED0.3.2.1共1页第1页模块功能负责PEFES运行过程中的中间结果与文件之间的输入和输出工作.能够按上级模块的请求对指定了数据集名称、起始记录和记录个数的数据,实现内存工作数组与文件之间的输入和输出的操作接口:上级模块:INPRO,GEFEM,ELAN,AFEE,RESP,SOLV,STRE,CHECK等.接口形参名类型作用结构数量SETC数据集名称变量1IDI起始记录变量1NRI交换记录个数变量1WSD内存工作区变量1MFLAGI运行状态变量1IFLAGI交换特征变童1其中:「,要求读的W)k集尚未建立!,建立新数据集MFLAG二号2超过了数据集的容量,二;*。_J2更新或扩充已有的数据集lu份U、l“读取的数据量超出WS容量13读指定数据集中的数据l4清除指定的数据集算法:使用的算法由设计者自定,目标是有效地管理外存文件和PEFES运行过程所生成的中间结果数据集,支持PEFES运行中的内存动态分配,以克服内存不足的限制,并尽童提高交换速度.为此,需开辟一个有名公用块,专门存放受本模块管理的数据集的基本特征和状态,该公用块的数据结构为:尸教据集名称「---一-~一--一一,口-一-一一一,卜数据集记录长度ICODM劫M/MSET卜一州I!卜,一1.2’55!一一卜敬据集记录个教一一一卜毅据总长度卜文件上的记录起始号‘文件_L的记录个数设计要求:内部工作单元数不得超过2的设计人:张保径日期:1W.11.23 IGFE:有限元模型总信息组成特征:由有限元模型中的总信息和标志组成的一个整型有名共用块.数据结构:NNO节点总数N有限元方程组阶数NEL单元总数NMA材料种类数NLO荷载工况数NCL节点集中荷载数NDL边界分布荷载数NRN约束节点个数NRD约束数据总数MW自重荷载标志MI初应变荷载标志MT度荷载标志NIE单刚、自重、初应变和温升不同的单元个数享用该公用数据区的模决:GEFEM.MFED,ELAN,AFEE,RESP,SOLV,STRE.图5.3.2.5有名公用数据区IGFE的说明(5)一致性。设计方案中的各组成部分之间是否存在矛盾和冲突;(6)严密性。各条数据流线的起点、止点以及数据流线上的每个加工环节的数据内容和加工要求是否明确,软件的内、外部各接口是否已被严格定义;(7)使用的算法是否经过比较和优选。优选的依据是否合理,充分;(8)数据库(图形库、知识库、模型库)的设计能否满足软件的需求;库结构的合理性、库管理的有效性是否得到体现。(9)用户界面的功能设置是否齐全;对用户问题的描述是否简捷:辅助信息的使用是否得当:操作的方便、灵活、易于控制、易学易用等要求是否得到体现。5.3.2.6说明(1)软件结构设计及其文档编制工作的完成,标志着概要设计阶段工作的结束.至此,决定软件总体品质的功能设呈、结构组成、控制结构数据结构等均已被确定.为尽早的暴寡设计上的缺陷和不足,完善设计方案,确认概要设计成果,应进行概要设计工作成果的评审.实践证明,软件概要设计工作,很容易产生各种错误和缺陷。进行概要设计成果评审,是保证没计方案的可行性、合理性、先进性,尽早揭露设计中的错误和缺陷的有效手段.否则有可能给软件开发工作留下隐患,甚至造成严重后果,在各工作阶段的评审中纠正一个错误,要比在调试或运行阶段纠正一个错误,所花的代价和付出的劳动要61 小的多,尽管评审工作要消耗一些工时和费用.对此,软件项目管理和开发人员,应有足够的认识.(2)概要设计成果评审小组,应由软件管理部门、质量保证部门、有经验的工程技术和软件技术专家、用户代表组成.评审前应将设计方案和文档提交给评审组成员,评审人员应做好充分准备,然后进行会宙. 6详细设计(模块设计)6.1任务6.1.1进行模块内部的过程设计。精化模块的算法步骤;设计模块的数据结构:进行模块的程序逻辑设计;编写模块设计说明。6.1.1说明~在概要设计阶段,划分出了模块,确定了软件的模块结构和控制结构,定义了各模块的功能、性能和接口关系.但模块内部的功能结构、逻择关系以及数据组织等尚未确定.在模块说明表中,仅指出了每个模块应“做什么”,而进一步解决“怎么做”的问题,则是详细设计工作的内容.从而形成指导后继的编程、调试、维护工作的依据.6.2实施步骤和要求6.2.1根据软件需求说明书和概要设计阶段文档中的有关内容,按模块的功能、性能、输入和输出接口的要求以及设计的限制,使用结构化程序设计方法,精化模块内部的功能结构、算法过程或数据加工过程,确定模块内部的数据组织并设计其数据结构.6.2.1说明采用结构化程序设计方法,可以有效的使用自顶向下逐步求精的设计技术,并使不同程序员设计的产品风格趋于一致,易于理解,便于调试和维护.6.2.2由于计算方法或计算公式的数学表示和程序表示是完全不同的两种形态,因此在进行模块的程序逻辑设计之前,应对模块内的计算方法或计算公式,进行算法分析、程序设计性整理和算法过程设计。并在该工作中以“清晰第一,效率第二”为原则。即优先考虑程序的可读性,在此前提下努力提高软件运行效率、减少舍入误差、保证计算精度等。6.2.2说明(1)进行算法分析和算法过程设计的目标,是针对具体的数据结构和数据组织方式,构造、设计一组在有限计算步骤内不可能发生内部终止的、正确地进行计算或实现数据加工的葬法过程.(2)“清晰第一,效率第二”原则的具体内容包括:①先求清晰后求快;②才呆持程序简单以求快;③强调程序的可读性并非不要运行效率,而是不要为效率栖牲清晰.(3)为了实现清晰第一的程序设计,结构化程序设计应遵循以下原则:①设计具有单入口和单出口的模块.若有多入口和多出口的结构,应通过算法过63 程设计,将其改造成单入口和单出口的结构。②避免设计模糊、费解的程序结构.③遵循GOTO语句的使用原则:<1>使用昨结构化程序设计语言时,使用GOTO语句;<2>不使用GOTO语句将使程序功能模糊、程序显著加长或重复时,使用GOTO语句;<3>向前不向后:<4>GOTO的目的地若不在本结构内,应使该目的地靠近本结构的出口处;<5>使用GOTO语句提前退出循环;<6>用于出错、出现异常情况时的处理。(4)在进行算法分析与算法过程设计时,由于不同的算法和公式千差万别,故不存在通用算法分析和设计技术,常用的做法有:①算法过程必须忠实地反映计算方法中规定的计算步骤.算法中的每一步都必须有清楚、确切的定义,不能有多义性和模棱两可的解释。对某些计算方法或计其公式,必须以适当精度的近似计算过程或近似计算公式取代之.②尽可能使计算结果的精度自适应于计算机环境.当以计算结果的精度来拉制某个算法过程终止时,应使精度的拉制童仅依赖于计算字长,以保证在任何计葬机上都能使算法过程在有限次的计算内终止.否则应使用能使计算过程强行终止的条件.③通过对计算方法或计算公式进行分析、整理,设笠必要的中间变量,形成尽可能多的共享成分,减少重复的成分和数组变量;减少带下标表达式的数组变量的引用和子程序的重复调用;减少循环层次;降低运算符的级别等.④算法过程设计应在充分考虑到输入、输出数据结构和精细的内部数据组织的基础上进行,因为不同的数据组织策略会引起算法过程上的差异.⑤对复杂的数据组织方式,应设笠专门的数据操作模块.以便有效的进行数据的检索、输入和输出等操作.⑥数据的组织、应尽量减少数据段的元余.避免零散、重复的数据愉入、输出,以提高软件的运行效率.⑦由于多维数组一定会引入多下标寻址,而消耗较多的机时.故在设五数组时应尽量降低数组的维数。⑧在设计算法过程时,应简明、易读易懂,避免人为的引入复杂的逻辑结构以及过分的精雕细刻,使算法过程复杂化,不仅不能节省机时,还容易产生错误,降低了程序的可读性和算法的可理解性,并给软件的调试和维护带来不便.⑨有些算法设计技巧与计算机环瑰相关.应用时要根据实际情况而定.6.2.3在精化模块算法过程基础上,设计具有结构化特征、可读性好、逻辑关系消晰、风格一致而规律性强的模块程序逻辑结构。6.2.3说明64 (1)模块的程序,是各种功能语句按一定逻辑顺序的排列.程序的逻样结构设计应使这种逻辑排列具有结构化的特证,并使其各组成部分的关系清晰、风格一致而有规律.并为逻辑图的程序化、避免程序的冗余、表现复杂的数据结构等提供条件.(2)在进行程序逻样结构设计时,可以使用4.2.3条叙述的功能分解法及数据流分解法的分析方法.但应先对模块内的计算方法进行程序设计性的整理,以形成精练的、最少冗余的算法过程.构造模块的程序逻辑结构.应以这种精练的算法过程为塞础进行.(3)在进行程序逻辑结构设计时,若发现模块的功能太多或过于复杂,可能造成模块的规模过大时,模块设计者应按照结构设计的方法和原则,将该模块再分解成几个功能单一、独立、比较简单而且偶合度小的子模块,并完成各子模块的设计.然后将这几个子模块封装在一起,仍作为一个模块看待。这些工作仍属于详细设计工作,不需要对概要设计返回任何信息以及修改概要设计及其文档.6.2.4编写模块设计文档。6.2.4说明(1)镇写模块设计表,其内容如表6.2.4所示。(2)PAD(ProblemAnalysisDiagram)图的画法(程序逻揖表现方法):①基本图示巨口应二〕匕/一刊加五、计葬、处理精入输出等基本操作或模块厂、J"巨}、标号结束AlA2A3对人的求精自上而下执行 模块设计表表6.2.4模块名称及编号共页第页模块功能:接口数据:接口形式:接口数据名称愉入输出类型作用(也可以不使用表格而使用叙述式的描ilt)诊错设计:算法过程‘计算方法或计算公式):程序逻辑结构(PAD)图:编码要求设计人:日期: ②基本控制结构顺序操作并行处理AlA至A3选择单目选择双目选择多目单选择多目多选择循环前浏试循环后洲试循环 转向处理退出其所在的循环,把控制转向标号L处,向下执行.但只允许退出到本舟以下的地方.把拉制从其所在的地方转移到标号L处.但只允许顺向转移.停止其所在的内层循环的本次执行,从头启动该循环层的下一次操作.限制在其所在的循环层内.③在一页纸上难以绘制出复杂程序的PAD图时,可切刽出一部分完整、独立的内容,画成分图.如图6.2.3-1,2中高斯消去法求解线性方程组的PAD图所示。国6.2.3-1GAUS模块PAD主困图6.2.3-2GAUSS正消过程模块PAD子图 图6.2.3-3GAUSS回代过程模块PAD子图④PAD图基本控制结构和FORTRAN语言、C语言对应关系,见表6.2.3-5.(5)开发一个软件项目,并炸所有模块都要从头开发.对一个有经验的设计者,可能有三分之二的模块,或比较简单或可取之于现有的(包括简单改造的)软件资源,这些模块不需要做详细设计,也不需要编写模块设计说明.在新开发的软件中,须进行详细设计并编写模块设计说明的模块数量,约为软件模块总数的三分之一因为在这部分模块上,更集中的表现了软件的特点、开发工作的创造性和复杂性。6.2.5进行开发组内部的详细设计成果的评审。 PAD图基本控制结构和FORTRAN语言、C语言对应关系表6.2.3-5PAD结构FORTRAN语句C语句后LCONTINUEdo毛a}测lAL巨二K}-『口whileb试IFNOTBGOTOL循护LCONTINUE前IFBTHENwhileb测‘巨包A{A}试GOTOLENDIF环DODOLLI=M,Nfor(i=m;i<=m;语L巨N,NAAi++)LCONTINUE句aIFBTHEN双Alifb{al}ELSEelse{a2}目E:4A14IA2ENDIF选单IFBTHENAifb{a}ENDIF目[1B了A囚GOTO(LI,L2...Ln)I择多LlCONTINUEswit比(i)目国A1单GOTOLtcase11:{al}选LnCONTINUEcase11:{an}}择AnLLIL!2o"-A-A-I4o}LCONTINUE70 7编程7.1任务7.1.1使用选定的程序设计语言或数据库语言,依据模块设计说明表和编程规则编写源程序,并对源程序进行严格的静态检查和完善。7.2实施步翻和要求7.2.1选择、确定编程便用的程序做计语言。为了使软件具有较好的可移植性,除应选用符合国际标准或国家标准的程序设计语言外,还应考虑以下因素:7.2.1.1对软件类型和特点的适应能力;7.2.1.2对计算机环境以及与其他语言连接运行的适应能力;7.2.1.3对描述、管理复杂的数据结构的适应能力;7.2.1.4对实现复杂的计算方法的适应能力;7.2.1.5开发人员对该语言的熟悉程度。7.2.1说明(1)根据软件项目的特点和要求选择使用的程序设计语言的工作,实际在前期的开发阶段就已经开始.因为在软件开发的前期工作中,已经涉及软件的数据结构、数据库、数据管理等内容。而脱离程序设计语言的特点和能力来谈这些内容,是没有意义的.(2)当选定几种可以连接运行的程序设计语言进行混合编程时,编程前应对各个模块使用的语言,做出规划和安排.7.2.2根据模块设计表和编程规则,进行各模块的编程工作。7.2.2.1编程工作应在软件概要设计、详细设计工作完成后进行;7.2.2.2模块的编码,应真实、正确的与模块设计说明表保持一致;7.2.2.3编程工作应按照编程规则进行,使源程序具备良好的可读性及统一的程序风格。为后继的软件调试和维护工作创造条件。7.2.2说明(1)编程是一个连续思维的工作过程.因此,编程时不仅需要认真细致、精力集中、合理的采用数据存取技术、正确的运用程序设计语言,并尽童保持连续工作,才能编出高质量的、易于调试和被确认的源程序文本.(2)FORTRAN语言的编程规则①FORTRAN语言程序模块指PROGRAM,SUBPROGRAM,SUBROUTINE,FUNCTION,DATA和BLOCK等.71 <1>PROGRAM和SUBPROGRAM主要用于模块调用和流程控制,它不应该包含大量的加工、计算、输入和愉出等操作.最好仅由CALL.『、GOTO等语句组成.<2>程序模块规模。一般不应超过250个FORTRAN行,其复杂性指标应小于15.<3>在一个软件系统中,所有模决的命名应有规律、具有模块功能含义、反映模块在系统中的位1.通常使用英文全名的缩写.<4>SUBROUTINE和FUNCTION模块的形式参数不宜过多,形式参数的顺序为:[I]整形参数在前,实形参数次之,其他类型的参数在后;[21精入参数在前,愉出参数在后;[3]在上述前提下,按参数在程序中出现的顺序排列.②模块结构(模块中各成分的先后顺序)为:<1>模决名<2>模块描述部分时模块功能、性能、参数及运行中的关健问题做出简要的文字说明,内容要准确、具体、简练.叙述顺序如下:[1]模块的功能和性能[2]本棋块对特殊设备的依精性[3]CALLEDBY列出调用本棋块的上级模块,写出模块名及调用形式.[4)INPUT列出愉入参数的含义和类型.若有开关参数则按下述格式说明IFKGOTO(L1,L2,..⋯,LN)L1功能1,⋯⋯L2功能2,⋯⋯Ln功能n,..⋯[5]OUTPUT说明输出参教的含义和类型.aWORKSPACE共用数据区、数组和文件说明bCALL列出本模块调用的下级模块名及调用形式cERROR本模块设里的诊4翻k计和能力的说明.dSUPPLEMENT72 描述部分前后各用一行“。”或“一”等符号与其他部分隔开.<3》说明语句按下列顺序排列:INPLICITLOGICALINTEGERREALDOUBLEPRECISIONCOMPLEXCHARACTERDIMENSIONCOMMONEQUIVALENCEEXTERNAL<4>DATA语句<5>语句函数语句<6>程序体[1]尽全进免使用费解的斌值转语句和计葬IF语句,以提高租序可读性.[z〕复杂的大、中型软件应设3专门的数据骨理、毅据操作模块,进免一般模块与外部设备产生直接联系及进行愉入、扮出等操作.[3]注释行的使用a在共有独立功能的程序段之前,用一个注释行简明的说明该段的功能.b在GOTO语句后用注释行说明转移过去做什么。c使用注释性空行,把各功能段隔开,以提高租序的清晰度.[4〕为使租序的嵌套和层次关系清晰,循环语句中的循环体、IF语句中的执行语句向右退两格,如下示:DO50卜1,NBT=A(N,1)IF(M.EQ.O)THENENDIF50CONTINUEIF(K.IE.1)THEN ENDIF[5〕语句标号的设置a加工、运茸等执行语句的标号由10开始,依次为10,20,30,b读语句的格式语句标号由1000开始,依次为1000,1010,1020..,二c写语句的格式语句标号由2000开始,依次为2000,2010,2020.....[6]继续行符宜使用FORTRAN语言中不包括字符,使之和语句明显的区分开来.<7>RETURN格式语句格式语句放在RETURN(或STOP)与END行之间.其顺序按读、写语句的顺序排列.<9>END在END行之后,使用几注释空行,把模块明显的区分开.‘7.2.3完成模块编码后,应进行认真、严格的静态检查,改正发现的各种错误。静态检查的具体内容是:7.2.3,1算法或计算公式的实现正确否;7.2.3,2源程序和相应的程序逻辑结构是否一致;7.2.3.3接口数据的引用关系是否正确:7.2.3.4有无违反程序设计语法规则的错误:7.2.3.5注释行的使用是否恰当;7.2.3.6全程静杰模拟程序的执行过程。 8调试8.1任务8.1.1进行模块调试和软件的组装调试(联调);发现并排除源程序中的缺陷与错误:生成全面达到软件设计要求的软件产品:编辑、编写软件调试文档。8.1.1说明调试阶段的具体工作足:(1)进行棋块的调试与排错,续写模决调试表;(2)进行软件的组装调试与排错、局部优化,编辑软件调试例题集;(3)修订、完善用户手开,编样应用例题集;“)编抖模块开发卷宗.8.2实施步脚和要求8.2.1复杂的大、中型软件项目,成立包括软件设计和编程等人员在内的调试小组,按调试计划共同完成软件的模块调试和各子系统、分程序以及整个软件的组装调试工作。简单的中;小型软件,确定调试工作的方法和步骤。8.2.2检查调试环境,使之符合软件需求说明书的要求。8.2.3选择或设计用于模块调试和组装调试的数据和例题。8.2.3.1调试数据和例题应具有代表性,包括各种类型和不同规模的数据和例题。8.2.3.2调试数据和例题应具有针对性,每组数据或每个例题的作用应是很明确的。8.2.3说明(1)调试工作达到的深度,取决于调试数据和调试例题的完备程度.调试前应精细、全面地设计或选择调试数据和调试例题.(2)调试数据和例题应包括一般的、能执行到所有分枝的、达到设计能力极限及循环次数的调试数据和例题.一般的调试数据和例题,用于检验运行结果的正确性.极限的调试数据和例题,用于考核软件的运行效率、运行结果的精度、运行的可靠性和可处理问题的规模.(3)软件及模块的各项功能、性能以及各项功能间的组合应用,均应有相应的调试数据和例题予以考核.软件中设定的诊错、容错等功能,应该有针对性的设置调试数据用以检查其诊断、定位和处理能力.以保证软件功能和性能的圆满实现.89.4进行软件的调试工作。观察、记录运行状态,分析运行结果,对发现的错误和缺陷予以改正。反复进行该步骤,直至软件需求说明书和软件设计中提出的各项要求得到圆满实现,软件的正确性、可用性、可靠性得到确认。75 8.2.4说明进行软件调试的常用方法,有非增量调试和增爹调试两种:〔1)非结量调试是遵循先局部后全局的原则进行的即把每个模块作勺X-K立灼程序休。分别进行调试.也可以由多名调试人同时进行调试‘在完成所有权诀的调试后,再按结构设汁的组成关系进行各子系统或分程序、系统的联调显然,在单独调试每个模块时,需要设计模决的驱动程序和具有下级模块外件特龙的桩模块,这无疑增加了调试的工作量.这种调试方法的优点是,不会将模决调试或局部调试工作中的分析、判断和41工作,移至子系统或分程序、系统的组装调试中去完成.降低了调试工作的难度,有利于提高调试工作的效平.(2)增量调试则不是独立的调试每个模块,而是墓寸自顶向下,或自底向上,或由关健模块入手,从一个或几个模块开始进行调试.按照结构设计的组成关系,逐步增加与该模块相关联的模块,最终完成各子系统或分程序、整个软件系统的调试工作.采用增蚤调试可以减少或免去构造驱动程序和桩模块的工作,并把模块调试和整个软件系统的调试自然的结合在一起,逐步完成了对各接口正确性的确认.但在朝附活动中,需同时排除模块和软件系统两方面的错误,增加了排错工作的难度.对大型软件系统,由于开发人员多,使用严格的增量调试,不利于发挥每个开发人员的作用.(3)对自顶向下逐步求精的系统设计,原则上应采用自顶向下的调试过程.大型的软件项目,由于算法结构、程序结构及数据结构复杂,模块数量多,参加开发人员多,一般多采用非增量法与增童法相结合的、自上而下和自下而上相结合的调试方法.8.2.4.1进行模块调试。记录运行状态,收集运行结果,确认以下模块特性是否已被正确实现:(1)外部接口;(2)算法或计算公式;(3)存储、计算精度以及时间特性的限制;(4)正常运行的结束方式;(5)对接口数据出错的处理。8.2.4-2进行软件组装调试,记录运行状态、收集运行结果,确认各接C-问数据传递的正确性以及各软件成分间控制和调用关系的正确性和有效性。8.2.4.2说明(1)组装调试过程中,必然伴随大量的考权运行(试算或试运行)试葬是开发者时软件进行全面验证的过程,也是获得软件的正确性、可用性、’丁靠性保证的依据考核运行的最终目标,应达到开.-;者对软件的正确性、可用性、可靠性可以确认t,};程度调试过程占用机时和人工较多,并省耗相当比重的费用软件调试者应注意收集、i0可以说明软件各项功能、性能指标们兮题和有关资浮+(2)在试算中常会发现,尽管软件中某部分程序写x&q玛一长度有限,但Ti}>肖耗j人部分机时iii}P计算型软件中实现某算法的部分,使软件鑫体运行效率;6c7度一「降出76 现这种情况时,应使用优化的办法,精化葬法,更新程序.如改用效率更高的算法,或将某些模块改用执行速度更快的程序设计语言.以降低消耗比,提高软件运行效率。(3)进行软件调试的过程,是时隐蔽在程序中的各种性质、各种类型的错误和缺陷进行侦察和排除的过程.完成本阶段的工作,除可以借助于某些软件工具外,主要刁rL靠调试人员对程序逻辑的透彻理解以及对各种错误和缺陷的分析、利断能力.目前,尚无一套通用的、全能的技术能有效的诊断出隐蔽在程序中的各种错误的属性和位呈.通常使用的方法有:①冷静的分析和思考出错的征兆和信息.一位有经验的程序员,不必过分依赖计算机,通过对算法结构、程序逻辑、数据结构和关键性语句的出错信息和征兆的冷静分析和思考,即可发现和利断出大多数错误的属性和位里.②经过充分的分析和思考,仍不能利断产生错误的原因,可以把问题讲给有经验的程序员听,听者不需要做准备,他的一般性发问,可能提示你使问题得以解决.③选用调试工具进行转储、追踪或使用符合停等手段帮助思考.但经验证明,具备一定利断能力的人,使用这些工具,更能提高书附工作的效率.④通过改变程序中的某些语句进行动态调试,来确定错误的属性和位里的做法,不仅成功率不高,还可能掺加进新的招误,使调试工作复杂化.(4)揭露软件中的错误不是调试工作的目的,排除软件中的错误则是调试阶段的本质性工作.在排除4徐误、修改软件时,应注意以下事项:①修改工作应符合2.2.6条要求.②软件中的错误往拄不是孤立的,而是密集又相互联系的,在出现某个错误的地方还可能隐藏着别的4.因此,在进行修改前应进行局部的普查与全面思索.③要使修改能解释与错误征兆有关的全部信息.进免不彻底的、非本质的或不恰当的修改,并注意修改可能产生的副作用.修改工作的正确性概率不是100%.修改后的软件必须重新进行正确性确认.8.2.5在完成一个或一组相关模块调试后,编写模块调试文档.8.2.5说明完成一个或一组相关模块调试后,填写模块调试表。模块调试表的内容如表8.2.5所示.多功能模块,应按模块的不同功能和调试数据分别填写模块调试表.8.2.6在完成全部模块调试后,编辑模块开发卷宗。模块开发卷宗由模块说明表、模块设计表、模块调试表、模块源程序、模块调试驱动程序及桩模块等资料组成。8.2.7完成软件系统的组装调试后,整理、编辑软件的调试例题(考题)集。8.2.7说明在调试例题中,挑选用于考核各项功能及各项功能间不同组合的、内容完整有代表性的考题若于,分别进行编号并画出简图,说明技术条件和要求、考核目的和内容、操作步骤和命丫、输出结果的分析和确认等内容,编写目录,装仃成册.8.2.8修订、完善用户用册,编辑应用例题集。77 模块调试表衷8.2.5模块名称及编号共页第页调试目的:调试段拐:调试结果及对结果的分析和确认:调试人:日期: 8.2.8说明修改、确认用户手册初稿内容,补充应用实例或编辑应用例题集等.由软件调试例题中选择使用软件各项功能和性能的,不同类型和规模的应用例题若干,对例题量大的大型软件,编辑应用例题集;对比较简单的软件,将数量不多的应用例题编入用户手册中.以实例的形式告诉用户,软件具有的功能和性能,怎样使用该软件,怎样识别和使用愉出的结果等.8.2.9进行软件调试成果的内部评审.8.2.9说明调试成果的内部评审工作,实质上就是开发组对软件产品的内部验收工作.其工作内容是审查软件产品(包括文档)是否全面达到软件需求说明书的要求.是否达到外部测试与验收的标准.8.2.10编写项目开发总结.8.2.10说明完成调试阶段的工作,意味着软件产品已全面达到软件需求说明书的要求,至此,软件开发阶段的主要工作已告一段落.为不断丰富软件工程实践,总结、积累软件开发工作经验和教训,不断提高软件开发的效率和水平,应对本次软件开发工作做出技术性总结.项目开发总结包括以下内容:(1)引言①开发背景列出本项目的主管部门、委托单位、用户单位、开发单位,开发合同书、经核准的计划任务书、上级部门的批文以及有关的管理和开发人员.②参考资料列出本文所引用的文件、资料的标题、编号、作者、发表日期、出版单位和来源.③定义列出本文用到的、可能会引起混淆的专用术语、词汇标准定义、缩写词和原文.(2)开发成果及开发情况①软件的功能和性能列出该软件产品的功能和性能,并与软件需求说明书中各项功能和性能要求进行比较,②软件结构图画出软件总体的或分层表示的结构图,表示软件产品的基本特征.③41,件规模和存储形式(朴说明软件产品源程序总行(条)数和运行程序总体积.软件各组成部分(划分不必很细,但要和总体结构图对应)4,程序行(条)教和运行程序体积.数据库(图形岸、知识洋、模型库)的体积等.<2)软件产品的存储介质、存储形式和存储目录.79 ④软件丈档列出各项文档的名称.并说明其内容组成、编写深度等是否符合有关规范、挽定及软件配3计划的要求.⑤软件产品的版本说明本次开发共生成几个版本,各版本间的区别.⑧开发进度列出实际开发进度表.并与项目开发计划中的进度计划相比较,雷要时进行简单说明。⑦开发费用分项列出实际支出费用并与项目开发计划中费用支出计划相比较.禽要时进行简单说明.(3)对开发工作的评价①工作效率的评价按参加各开发阶段工作的人数和完成的丈字资并字数及源租序行(条)数,分别给出整个开发期的和各开发阶段的每个人月(或人年)完成的工作于.②技术性评价对在开发工作中,为提高软件产品的可用性、可金性、可移位性、可雄护性和运行效率而采用的各种技术、方法、工具和手段及取得的实际软果、达到的水平作出评价.③软件产品质黄评价说明侧试出的软件的侧误或缺陷的数圣和性质及其严重租度,并鱿实际的质全与质量保证计划相比较。④经脸与教vnl列出软件开发中的主要的成功经验和以后应吸取的教训,并对今后的软件开发工作提出建议.8.2.11进行软件的试用.8.2.11说明在完成调试阶段全部工作后,将软件的运行粗序和用户手开提文给经选择的用户.谕用户在实际的工租设计项目中试用,并根据实际应用情况,写出评价性的用户报告.交软件管理机构,它是软件脸收的依据之一 9测试与验收9.1任务9.1.1对软件产品的功能和性能等诸方面进行全面的、确认性的外部考核,对软件配置和文档进行全面的检查,对达到要求的软件产品进行脸收。9.1.1说明(1)软件产品的质童主要依索需求分析、软件设计、编租及调试等开发工作的质童来保证,软件的测试与脸收也是保证软件产品质t的一个生要环节.因此,该工作过程应是严格而真实的,否则将损害用户、开发单位和开发人的利益和信誉,软件产品应用于工租设计中,将给工程建设留下陈患、造成工租事故和经济栩失.同时也给软件的使用和维护造成困难.(2)浏试与脸收工作流程,见图,.1.1用户试用很告图9.1.1软件浏试与脸收工作流程实施步密和要求9.2.1进行测试与验收工作的软件,应具备以下条件:9.2.1.1调试工作己全部完成。软件产品的各个方面均已达到软件需求说明书的各项要求。经过充分的试运行考核和用户的试用。9.2.1.2软件文档齐备,并符合软件配置计划及有关标准、规范、规定的要求。 9.2.1.3具备进行软件测试的计算机环境。9.2.1.4软件管理部门同意进行测试与验收工作。9.2.2对复杂或重要的大、中型软件项目,邀请适当人选组成专门小组,实施测试与验收工作。简单的中、小型软件可邀请或指派专人进行测试与验收工作。参加测试与验收工作的人员,应具有较高的技术水平.9.2.2说明(1)软件测试组、软件配里和文档资料审查与验收组的成员应具备以下条件:①不仅精于该专业的基本理论,并具有丰富的工程设计实践经验.熟知有关工程技术、软件技术标准、规范.掌握计算机硬、软件和软件开发等方面的知识.②具有选择和设计测试用题、确定,ml!试策略与步骤、A1断浏试结果是否正确、是否符合工程设计有关标准、规范、规定的要求.有判断软件文档是否合格以及编写.试报告和软件配五及文档验收报告的能力.(2)软件测试组和软件配呈和文档验收组中,均不应包括软件开发组成员.开发组成员应协助测试组完成软件的测试工作.9.2.3复杂或重要的大、中型软件项目的测试工作,由软件测试组按照软件测试计划进行.简单的中、小型软件,确定测试工作的安排和步骤。9.2.3.1选择或设计测试例题。9.2.3.1说明(1)只有被确认的浏试运行状态和愉出的结果,可以证明软件的正确性、可靠性和适用性.因此,测试人员应以软件需求说明书和用户手册等资料为依据,抽心的设计和选择测试例题.这是能否做好测试工作的关健.(2)开发组应向测试组提供一批典型的、能表现软件特征的例题,供浏试组选用.测试例题也可以由测试组自行选择或设计.开发组应协助浏试组完成测试任务.(3)浏试例题应符合8.2.3条要求.9.2.3.2按测试计划或对测试工作的安排,对软件进行测试,记录软件运行状态,收集测试结果。9.2.3.2说明外部测试,一般采用黑箱式测试方法.即把被侧试软件看做一个不透明的黑箱子,仅仅依据软件需求说明书中对软件的全面要求以及用户手册中的应用介绍,通过用户界面从软件的外邵功能和性能等方面,而不顾及软件的内部结构和组织以及数据结构等内容,对软件产品进行总体的确认性浏试.9.2.3.3测试组根据测试运行状况和测试结果,编写每项测试的及整个软件产品的*1试文档9.2.3.3说明(1)完成每个测试项目后,测试组根据测试运行状况和测试结果,镇写软件测试报告表.软件测试报告表的内容见表,.2.3.3-1.在软件测试报告表中说明以下内容:82 软件测试报告表表.9.2.3.3-1测试序号共页第页联机的硬件汉哑名称、型号试条系统、工具、件应用软件名称及版本号测试内容(并说明软件雷求说明书中与该项测试有关的内容):测试运行情况:测试结果:存在问题:对本次测试的评价:测试人:日期: ①在“测试运行情况”中说明浏试中界面功能的使用、信息的屏幕显示等是否正常,对非正常运行的补救处理是否有效等内容,必要时说明运行过程是否符合软件需求说明书中有关的特殊要求,如响应时间和运行效率等。②若测试结果篇幅较大、内容较多时,可将其进行编号并加注说明后列为附件.③“存在的问题”指本次测试中暴露的、与软件需求说明书要求不符的缺陷、错误等内容.包括问题的表现(运行状况或测试结果)、问题的性质等.④在“对本次测试的评价”中说明本次测试是否实现了测试计划中规定的测试要求,输出的内容是否正确,专业技术内容实现的完备程度,是否符合有关标准、规范和规定要求,是否达到工程设计工作要求的深度.测试中暴露的软件缺陷、错误,这些缺陷、钊卜吴影响本次测试以及影响软件可使用程度等内容.(2)完成全部测试工作后,测试组根据对软件测试运行状况和测试结果的评价,填写对软件产品的测试评价表.测试评价表的内容见表9.2.3.3-2.在软件测试评价表中说明以下内容:①叙述对经浏试证实已圈满实现的、软件需求说明书中要求的软件各项功能和性能的能力的肯定或否定,并说明其实现程度或达到的深度;时软件的总体能力及可使用性做出评价;是否达到验收标准;可否推广使用等.②列出经测试证实的软件的错误、缺陷以及与软件需求说明书要求不符的问题.说明这些问题对各项功能的影响程度,以及对软件总体能力和可使用性的影响程度.(3)若可能,测试组可综合权衡各种错误和缺陷对软件总体能力、可使用性的影响程度以及修改、完善工作的难度和工作黄等因素,由完善软件系统的紧迫性和可能性出发,以建议的形式提出修改和完善软件的步骤和方法,供软件管理部门和开发者参考.9.2.4复杂或重要的大、中型软件项目,由成立的专门小组,实施软件配置和文档的验收工作,写出验收报告,并进行签署。9.2.4说明软件配置和文档验收,是在软件浏试被通过后,审查软件配置和文档是否齐全,是否符合有关标准、规范的要求,各种文档的内容组成和详略程度是否符合要求.应注意不同规模和开发难度的软件,其文档书写的详略要求是不同的.9,2.5软件管T}L部门根据软件开发工作是否达到预期的目标,以及测试报告、软件配,7和文档验收报告、用户试用报告等材料决定是否进行软件验收。必要时进行验收会审.或由开发组进一步对软件做完善或提高工作。9.2.5说明(D若软件管理部门认为,软件开发工作尚未达到预期的开发目标,开发者应针对测试报告、软件配置和文档验收报告以及用户试用报告等材料中指出的问题,进行有针对性的完善和提高工作.直至使软件产品达到要求为止.(2)若软件管理部门认为软件开发工作已达到预期目标,则可进行软件的验收二作.84 (3)若软件管理部门认为有必要进行验收会审,则邀请有关工程技术和计算机软件专家组成验收会审委员会(或会市组)实施验收会审工作,并写出会审结论或会审意见‘(4)参加验收会审的人员,Ii本着对委托单位、开发单位和用尸负责的态度,写出验收会审意见(结论或报告)该意见〔结论或报告)应是实事求是的,评价是恰当的.所提指标应该是可验证的 软件测试评价表表4.2.3.3-2软件名称及标识共页第页委托测试单位开发单位测试评价:存在问题:建议:软件测试组签名:姓名职务或职称工作单位所学专业现从事专业签名'