程序设计和软件工程基础(编辑修改稿)内容摘要:

织和管理软件生产,根据某一软件从被提出并着手开始实现,直到软件完成其使命为止的全过程划分为一些阶段,并称这一全过程为软件生命周期。 通常,软件生命周期包括八个阶段: 13 问题定义、可行性研究、需求分析、系统设计、详细设计、编码、测试及运行维护。 为使各时期的任务更明确 ,将其划分为以下三个时期: ⑴ 软件定义期 ① 问题定义 这一阶段的主要目的是确定问题的性质、工程目标以及规模。 这是软件生命周期的第一阶段,应力求使软件开发人员、用户及使用部门负责人对问题的性质、工程目标及规模取得完全一致的看法,这对确保软件开发成功是非常重要的。 一旦对问题有了明确认识之后,分析员应提交书面报告给用户及使用部门负责人进行审查。 ② 可行性研究 可行性研究的目的是进一步研究上一阶段所定义的问题是否可解。 在问题定义的基础上,通过复查系统的目标和规模,并研究现在正在使用的系统,从而导出试探性的解。 这个过程可能要反复多遍,最后导出系统的高层逻辑模型,在系统的高层逻辑模型的基础上,再从各方面分析物理系统的可行性,推荐一个可行方案,供有关部门审批。 在描述物理系统时,常常采用系统流程图这一工具,系统流程图是用一些约定的图形符号对系统内部各部件进行描述。 在此特别指出,这种系统流程图是物理数据流程图,而不是程序流程图。 在这个阶段中,往往还需要对成本和效益进行分析,并且,最后还要提交必要的文档。 ③ 需求分析 在这个阶段中,根据可行性研究阶段提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要 求,即要明确系统必须作什么的问题。 这一阶段的具体问题包括:确定对系统的综合要求,即功能要求、性能要求、运行要求以及将来可能会提出的一些要求;对系统的数据要求进行分析,包括数据元素的分类和规范化,描绘实体关系图,进行事务分析及数据库模型的建立;在前面分析的基础上,推导出系统的详细逻辑模型;修正开发计划,并建立模型系统。 需求分析首先从数据流图着手,在沿数据流图回溯的过程中,更多的数据元素被划分出来,更多的算法被确定下来。 在这个过程中,将得到的有关数据元素的信息记录在数据字典中,而将对算法的简单描述记录在输入 /处理 /输出( IPO)图中,被补充的数据流、数据存储和处理添加到数据流图的适当位置上,然后提交用户复查,以便补遗。 经过反复地进行上述分析之后,分析员对系统的数据及功能就有了更深的了解,此时可通过对功能的分解将数据流图细化,即将数据流图中的比较复杂的处理功能分解成若干个简单的子功能,而这些较低层的子功能又重新组成一张数据流图。 这就是逐步细化的具体体现。 经过以上分析,就可以修正开发计划,然后写出必要的文档。 文档的内容包括:系统的功能说明,它主要由数据流图和输入 /处理 /输出图(或其它形式的算法描述记录)组成,主要 描述了目标系统的概貌及对系统的综合要求;系统对数据的要求,它主要由数据字典和描述数据结构的层次方框图组成;用户系统描述,即初步的用户手册,它主要包括对系统功能和性能的扼要描述、使用的方法和步骤等。 在转入下一阶段之前,还必须进行审查和复查,通过之后即可进入软件开发期。 ⑵ 软件开发期 14 ① 系统设计 这一阶段也称为一般设计,其任务是划分出构成系统的各物理元素(如程序、文件、数据库、人工过程或文档等)以及设计出软件的结构(如确定模块及模块之间的关系)。 设计过程通常分以下几步:提出可选择方案;选择合理方案;推荐最 佳方案;功能分解;设计软件结构;制定测试计划;提交文档。 这一阶段的最后要对结果进行严格的技术审查,然后由使用部门负责人从管理的角度进行复查。 ② 详细设计 详细设计的任务是对系统作出精确的描述,以便在编码阶段可直接将这一描述用程序设计语言编制成程序。 除了应该保证程序的可靠性外,此阶段最主要的目标是要保证将来的程序易读、易理解、易测试、易修改和易维护。 因此,结构程序设计技术就成为实现上述目的的基本保证,并且也是详细设计的逻辑基础。 作为这一阶段的最后结果,应提供详细的编码规格说明,它通常用层次图加输入 /处理/输出( HIPO)图或过程描述语言( PDL)来描述。 ③ 编码 编码是将系统设计和详细设计阶段中的结果翻译成用某种程序设计语言书写的程序。 ④ 测试 目前,软件测试仍然是保证软件可靠性的主要手段,它是软件开发过程中最艰巨最繁重的工作。 测试的目的是查找程序中的错误,但决不能证明程序中没有错误。 ⑶ 软件维护期 维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。 软件工程学的目的就在于提高软件的可维护性,同时也设法降低维护的代价。 软件维护通常有以下四类:为纠正使用中出现的错误而进行的改正性 维护 ;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。 软件的可理解性、可测试性和可修改性直接影响和决定了软件的可维护性,而且软件生存周期的各个阶段都与可维护性有关。 良好的设计、完善的文档资料以及一系列严格的复审和测试,都会使错误一旦出现就较为容易诊断和纠正;而且当用户有所要求或外部环境有变化时,软件都比较容易适应,并能减少维护所引起的副作用。 因此,在软件生存周期的各个阶段必修充分考虑维护的问题,并且为维护作好准备。 软件维护不仅包括程序代码的维 护,还包括文档的维护。 文档可以分为用户文档和系统文档两类,但无论是哪类文档,都必须和程序代码同时维护,只有和程序代码完全一致的文档才有意义和价值。 目前已有许多软件工具能帮助建立文档,这不仅有利于提高书写文档的效率和质量,还有助于文档的及时维护。 ⒋ 软件工程的目标与原则 ⑴ 软件工程的目标 软件工程的目标是在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解 15 性、可维护性、可重用性、可适应性、可移植性、可操作性且满足用户需求的产品。 软件工程需要达到的基本目标是:付出较低的开发成本;达到要求的软件功能; 取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发,及时交付使用。 基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括: ① 软件开发技术 软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。 软件开发方法学是根据不同的软件类型,按不同的观点和原则,对软件开发中应遵循的策略、原则、步骤和必须产生的文档资料都做出规定,从而使软件的开发能够进入规范化和工程化的阶段,以克服早期的手工方法生产中的随意性和非规范性做法。 ② 软件工程管理 软 件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。 软件工程管理是软件按工程化生产时的重要环节,它要求按照预先制定的计划、进度和预算执行,以实现预期的经济效益和社会效益。 软件管理学包括人员组织、进度安排、质量保证、配置管理、项目计划等。 软件工程经济学是研究软件开发中成本的估算、成本效益分析的方法和技术,用经济学的基本原理来研究软件工程开发中的经济效益问题。 软件心理学是软件工程领域具有挑战性的一个全新的研究领域,它是从个体心理、人类行为、组织行为和企业文化等角度来研究软件管理和软件工程的。 ⑵ 软件工程的原则 为了达到 软件工程目标,在软件开发过程中,必须遵循软件工程的基本原则。 这些原则适用于所有的软件项目。 这些基本原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。 ① 抽象 抽取事物最基本的特性和行为,忽略非本质细节。 采用分层次抽象,自顶向下,逐层细化的办法控制软件开发过程的复杂性。 ② 信息隐蔽 采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 ③ 模块化 模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义。 模块的大小要适中,模块过大会使 模块内部的复杂性增加,不利于对模块的理解和修改,也不利于模块的调试和重用。 模块太小会导致整个系统表示过于复杂,不利于控制系统的复杂性。 ④ 局部化 要求在一个物理模块内集中逻辑上相互关联的计算资源。 ⑤ 确定性 软件开发过程中所有概念的表达应是确定的、无歧义且规范的。 这有助于人与人的交互不会产生误解和遗漏,以保证整个开发工作的协调一致。 16 ⑥ 一致性 包括程序、数据和文档的整个软件系统的各模块应使用已知的概念、符号和术语;程序内外部接口应保持一致,系统规格说明与系统行为应保持一致。 ⑦ 完备性 软件系统不丢失 任何重要成分,完全实现系统所需的功能。 ⑧ 可验证性 开发大型软件系统需要对系统自顶向下,逐层分解。 系统分解应遵循容易检查、测评、评审的原则,以确保系统的正确性。 ⒌ 软件开发工具与软件开发环境 现代软件工程方法之所以得以实施,其重要的保证是软件开发工具和环境的保证,使软件在开发效率、工程质量等多方面得到改善。 软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。 工具和环境的使用进一步提高了软件的开发效率、维护效率和软件质量。 ⑴ 软件开发工具 早期的软件开发除了一般的程序设计语言外,尚缺少工具的支持, 致使编程工作量大,质量和进度难以保证,导致人们将很多的精力和时间花费在程序的编制和调试上,而在更重要的软件的需求和设计上反而得不到必要的精力和时间投入。 软件开发工具的完善和发展将促进软件开发方法的进步和完善,促进软件开发的高速度和高质量。 软件开发工具的发展是从单项工具的开发逐步向集成工具发展的,软件开发工具为软件工程方法提供了自动的或半自动的软件支撑环境。 ⑵ 软件开发环境 软件开发环境或称软件工程环境是全面支持开发全过程的软件工具集合。 这些软件工具按照一定的方法或模式组合起来,支持软件生命周期内的各个阶段 和各项任务的完成。 计算机辅助软件工程是当前软件开发环境中富有特色的研究工作和发展方向。 CASE将各种软件工具、开发机器和一个存放开发过程信息的中心数据库组合起来,形成软件工程环境。 结构化分析与设计方法 ⒈ 结构化分析方法 ⑴ 结构化分析方法 结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用,其目的是帮助弄清用户对软件的需求。 结构化分析就是使用数据流图( DFD)、数据字典( DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。 17 结构化分析方法的实质 是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。 结构化分析的步骤如下: ① 通过对用户的调查,以软件的需求为线索,获得当前系统的具体模型; ② 去掉具体模型中非本质因素,抽象出当前系统的逻辑模型; ③ 根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型; ④ 完善目标系统并补充细节,写出目标系统的软件需求规格说明; ⑤ 评审直到确认完全符合用户对软件的需求。 ⑵ 结构化分析的常用工具 ① 数据流图( DFD—Data Flow Diagram) 数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。 数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。 数据流图中的主要图形元素与说明如下: 加工(转换)。 输入数据经加工变换产生输出。 数据流。 沿箭头方向传送数据的通道,一般在旁边标注数据流名。 存储文件(数据源)。 表示 处理过程中存放各种数据的文件。 源。 表示系统和环境的接口,属系统之外的实体。 图 106 是描述研究生入学到毕业的业务活动的数据流图。 18 图 106 研究生业务活动数据流图 通常,数据流图由四个基本成分组成。 数据流 : 数据流相当于一条管道,并有一组数据(信息)流经它。 在数据流图中,用标有名字的箭头表示数据流。 如图 106 中的“录取通知书”、“专业要求”、“成绩”等。 加工 : 加工是对数据进行的处理,在数据流图中,加工用标有名字的圆圈表示, 其中加工名字就是对数据进行操作的名称。 指向加工的数据流表示该加工的输入数据,离开加工的数据流表示了该加工的输出数据。 文件 : 文件是暂存数据。 如图 106 中“录取名单”、“课程目录”、“课题目录”、“需要情况”,它们都是文件,在数据流图中,文件用带有下划线的名字表示。 如果加工需要读文件,则数据流方向为从文件流出;如果加工需要存入文件或修改文件,则数据流是流向文件的;如果加工既要读文件又要写文件,则数据流方向为双向的。 一般来说,对于文件的内容能见名知义,所以在数据流图中,对文件的存取箭头无说明也不会造成混淆。 数据的源点和终点 : 数据的源点和终点是软件之外的实体,它们与软件系统的设计无直接关系,一般只是为了说明数据流的来龙去脉。 在数据流图中,用标有名字的方框来表示数据的源点和终点。 如图 106 中的“研究生招办”为数据的源点,而“工作单位”为数据的终点。 在此特别要指出,数据流完全不同于一般程序流程图(即程序框图)中的控制流。 程序流程图中的控制流只是表示程序执行的次序,在其箭头上没有数据的传递。 而数据流中数据箭头表示有数据沿箭头流动,并不直接反映加工处理的先后顺序。 数据流是从数据的角度来描述一个系统。 数据流图。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。