软件开发过程

  • 格式:docx
  • 大小:37.77 KB
  • 文档页数:15

下载文档原格式

  / 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件开发过程

现代社会正变得越来越复杂,随之出现的问题也变得复杂了,这样解决问题就成一种生活方式。比如固体废料处理、全球变暖、国际金融、污染、核扩散等问题就是出现时间不长的新问题,该如何解决这些问题是对人类技术和能力的挑战。

大多数问题的解决方案要求考虑周全的计划,并需要预先考虑解决方案是否适当的和有效的。对于大多数程序设计的问题,需要考虑的因素也是如此。例如,通过反复试验为移动电话网络编写软件或者为百货公司创建管理程序的过程就

是如此。这样一个解决方案最好的结果是费用昂贵但效果良好,最坏的情况是损失惨重,脱离现实。

每一个研究领域都有器用于设计这些问题的解决方案所使用的系统方法的

命名规则。在科学界,这种方法称为科学方法,而在工程学科中,这种方法称为系统方法。为了理解需要解决的问题和为建立一个有效的且适当的软件解决方案,专业软件开发人员使用一种称为软件开发过程的方法。这个过程由下列四个阶段组成。

阶段1:确定程序的要求

阶段2:设计和开发

步骤1:分析问题

步骤2;选择一个完整的解决方案算法

步骤3:编写程序

步骤4:测试和修正程序

阶段3:文档编制

阶段4:维护

前三个阶段经常改进并相互影响,直到最终设计和程序被开发出来为止。而且在设计和开发阶段,你可能会发现问题没有被完全明确或分析,需要在初期的步骤做进一步的工作,以完成程序。每一个都将在下面的段落中讨论。

阶段1:确定程序的要求

这个阶段以问题的陈述或对程序的特定要求开始,称为程序的要求。你的任务是确保程序的要求被明确的陈述,而且要理解期望达到的目标是什么。例如,假设你收到一封来自主管的简短邮件,邮件内容是说我们需要提供一个关于圆的信息的程序。

这不是一个定义清楚的要求,他没有明确说明一个良好定义的问题,因为它没有准确地告诉我们要求什么信息。立即开始编写程序去解决这个缺少明确表达的问题将是一个严重的错误。为了弄清楚和定义这个问题的陈述,需要做的第一步是向主管咨询准确的定义要产生的信息是什么以及能够提供的数据是什么。

假设你咨询了主管,并且知道升级想要的是计算和显示一个给定半径时求圆的周长的程序。只有在你了解了什么是一个清楚的陈述时,才可以进行下一步。

阶段2:设计和开发

一旦程序的详细说明已完成,形成程序设计过程核心的设计和开发阶段就可以开始了。这个阶段由下列四个步骤组成。

步骤1:分析问题。这个步骤要求确保问题事实上已经被清楚地说明和理解,并且已经为选择这个问题的算法提供了必要的信息。只有在你理解了下列内容时,这个问题才能被清楚的定义。

1.必须产生的输出

2.产生预期的输出所要求的输入数据

3.体现输入与输出之间的联系的公式

分析完成时,这三项中的每一项都必须清楚的定义。

在执行分析阶段,许新程序员喜欢首先确定数据,而在以后确定想要的输出,专业程序员则倾向于相反的工作方式。忽略输入而首先思考输出似乎对你来说有些奇怪,但输出是构造一个程序的首要的全部目的。知道了这个目的并将它牢记在心,能使你将精力集中于程序的重要方面。但是,如果你觉得一开始就确定输入数据会更轻松些,也可以这样做。

步骤2:选择一个完整的解决方案算法。这一步是确定和选择一个解决问题的算法。有时候确定完整的解决方案的算法相当容易,有时候它可能是复杂的。例如,确定某人口袋里零钱的数量或者确定一个矩形的面积的程序相当简单。但是,制造业公司的库存跟踪和控制系统的设计就比较复杂。在那些更完整的例子中,最初的解决方案的算法典型的被改进和被细化,直到这个算法极为详细地指明全部的解决方案为止。这个细化的例子稍后将在本节中提及。

在最普通的形式中,一个可应用于大多数C语言程序的完全的解决方案算法是:

获得问题的输入

计算期望的输出

报告计算的结果

这三个任务几乎是每个问题的主要责任,我们把这个算法称为问题解算机算法。例如,假设要求你用一个已给定的半径计算圆的周长,这个问题的解算

机算法就变成:

设置半径值r

使用公式C=6.28r,计算周长C

显示C的计算值

对于只需执行一个或几个计算的小的应用,通常这个问题解算机算法本身就足够了。对于较大的程序,则必须将它组编成较小的算法,以使这些较小的算法能相互连接并能明确地细化最初的算法。下面将描述细化的完成过程。

细化算法。对于较大的应用,最初的解决方案算法典型地从问题解算机算法开始,必须细化并组织成较小的算法,以指明这些小算法相互之间是如何衔接的。要达到这个目的,解决方案的描述必须从最高级要求开始,并向下逐步细化到必须被构造的部分。为了便于理解,假设有一个要求跟踪库存零件数量的计算机程序。这个程序所要求的输出是描述库存的全部零件和每种零件的数量,输入是每种零件最初的存货总量、已销售的量、退回的量和新采购的量。

程序设计者最初可能把这个程序的全部解决方案算法组编为如图1.18下半部分所示的三个问题解算机算法部分。这称为算法的一级结构图,因为它表示了最初的、还不够足够详细的、用于一个解决方案算法的结构的首次尝试。

一旦开发了一个最初的算法结构,你就能把它细化,直到这些方框中表示的任务完全被定义为止。例如,图1.18中的数据输入部分应该进一步细化到指定的输入数据的规定。由于为不可预见性的和人为的错误做规划是系

统设计人员的责任,因此还必须为修改已经输入的不正确的数据和删除前面输入的数值定义某些规定。报表部分的细化也类似。

图1.19表示的是进一步细化了的库存跟踪系统的二级结构图。

图1.18 一级结构图

注意这种设计将产生一种树形结构,当我们从这个结构的顶部移动到底部时,这些级的分支就体现出来了。当设计完成时,在较低的方框中所设计的任务典型的代表了一些简单算法,这些简单算法被结构中较高的算法所使用。这种类型的算法开发方法称为自顶向下的算法开发,它从顶端开始,在它向下达到最后一组算法的过程中,会开发出来越来越多的详细算法。

步骤3:编写程序。这个步骤是将选定的解决方案算法翻译为C语言计算机程序。这个过程也称为编码算法。

图1.19 二级细化结构图

如果分析和解决方案步骤已经正确完成,编写程序的过程本质上就有些