zoukankan      html  css  js  c++  java
  • 用软件工程思想指导软件开发

    一、前言

    软件开发几乎涉及到每一个从事计算机应用或系统开发人员,因此软件开发的方法问题具有普遍的实用意义。软件开发通常理解为针对某种问题进行编写程序。软件开发者有时花费了很大功夫编成一个软件,结果却得不到用户的好评。用户感到不可靠,或不方便,或不能满足他们的要求,难以投入使用。因而要求大量修改或推倒重来。开发人员常被频繁的修改所困扰,甚至难以自拔。用户与开发人员之间时有矛盾发生,相互埋怨。软件越复杂,这类问题就越多。

    在国外,对于大型软件的开发,曾遇到系统复杂、成本高、研制效率低和周期长、可靠性难以保证、维护困难等问题,使得一些软件研制过程几乎失去了控制。这种现象被称为 “软件危机”。为了解决这类问题,一些专家深入探索了软件开发的规律,总结出一套科学的开发方法。

    软件危机问题的发生,主要在于开发工作的组织。开发人员按照各自的习惯和想法进行工作,没有一定规范,随意性很大,因而对个人因素的依赖很大,成果的可靠性和质量也就难以保证。对此,有人提出用工程化方法来安排开发工作,像处理机械、建筑等工程问题那样来处理软件开发的全过程,进行严密的组织管理,摆脱对个人因素的过份依赖。这种工程化思想经过多年发展和完善,逐渐形成了一门研究软件生产的学科一一软件工程。目前,它在理论和实践上都取得了很大进展,已被人们广泛接受。

    二、软件开发的生命周期

    按照软件工程的观点,一个软件开发的完整过程,通常要经历以下几个步骤或周期:

    1、可行性研究

    通过调查研究,摸清情况,找出需要解决的问题,明确开发的目标与功能,确定所需的人力、软硬件资源,进行成本估算,制定进度安排,深入调查研制该软件的必要性、可能性等等。写出可行性报告,供有关部门审核。这一步工作做得好,会有一个良好开端。

    2、系统分祈(需求分祈)

    根据所确定的软件功能,对用户的要求进行具体分析,明确逻辑上的实现方法,逐步细化求精,并写成需求规格说明书,作为软件设计的依据。开发人员必须强调以实用为宗旨,切实为用户着想,密切与用户合作,满足用户的需求。这一阶段的工作通常是整个软件开发的关键,成功的分析必将为成功的设计铺平道路。许多不成功的事例,多数是由于违背了这一原则而造成的。

    需求分析的主体是从信息中抽象出来的数据。分析的结果可用数据流图来概括。它表示数据在系统中的逻辑流向以及系统的逻辑功能。通常它包含四种基本成份: ①数据流,用箭头表示,指出数据流向。②数据加工,表示对数据的逻辑处理(操作)或变换功能,对应于一个程序。③数据文件,表示数据存放的地方,可以是数据库文件或普通文件。④数据的源点和终点,表示系统中数据的外部来源和去处,不受系统控制,对数据流图中各个成份的定义或说明构成了数据字典。例如对于一个数据库文件,要定义它的库结构。

    对于简单的系统,可将所有数据流画在一张图上。如下图1表示一个成本预测子功能的数据流图。

    对于一个庞大而又复杂的系统,通常采用自顶向下逐层展开的办法,画出分层数据流图, 由粗到细,逐步求精。顶层是高度概括的系统模型,最低一层表达了系统中所有的加工(功能单元),便于计算机实现处理。这种逐层展开的办法符合人的认识规律和思维规律,是一种科学方法。

    3、系统结构设计

    确定系统的模块结构,即确定系统由那些模块组成及模块之间的联系。一个模块可看作 一个暗盒,具有明确的功能。为了使系统结构清晰,便于维护和修改,以及提高程序设计的效率,系统结构设计通常也采用自顶向下逐层细化的方法。将一个模块分解成若干个从属于它的子模块, 使得子模块功能单一,容易编程。通常使一个模块的编程不超过100条语句。有了数据流图后很容易转换成模块结构图。典型的结构是顶层为一主控模块,第一层被细化为输入处理模块、中心加工模块、输出处理模块。以后再对各个模块逐层细化。图1所示的数据流图可转换成如下图2所示的模块结构图。对于结构图中各个模块需加以简要说明,(包括数学模型),作为程序设计的依据。

    系统分析和系统结构设计,统称为系统设计或软件设计。

    4、程序设计(编码)

    对系统结构图中各个模块进行具体设计。一个模块对应于一个子程序。首先要确定相应模块的实现算法和数据结构。(算法+数据结构=程序)然后给出过程细节的描述。过程细节常用程序流程(框图)表示。最后再用相应的程序设计语言编写。要注意模块之间的数据联系。应采用结构化程序设计方法,即控制结构只使 用顺序、选择和循环三种结构。图2中主控模块的程序框图如下图3所示。

    5、软件调试(测试)

    通过系统设计和程序设计编出的软件不可能一编好就能投入运行,需要对软件进行功能测试,发现错误,加以纠正。通常,先以模块为单位进行分调,然后再将各模块组合起来联调。

    软件调试通过以后, 就可进行试运行、鉴定、验收 , 最后投入正式运行。作为一个软件产品,须附有详细的文档资料。鉴定会不能流于形式,应充分重视用户和专家的意见。

    6、软件维护

    在软件调试阶段通常难以发现潜伏的错误。微小的差错,可能导致严重的后果。在投入运行后,要及时排除所发生的软件故障。只有经过一段时期的维护,才可能逐步完善。开发人员对此必须有充分的思想准备。 开发人员应对用户负责到底, 与用户之间不断交互, 不断适应用户的需求。

    三、总结

    以上笔者结合一些经验, 分析了用软件工程思想指导软件开发的基本要点。 目前, 这种开发模式已被公认为是科学而有效的方法。 经验证明, 凡违背了这些基本原则, 不管程序技巧有多高, 花费了多少心血, 开发工作必将是不顺利的, 甚至会走上歧路。 我们不能只忙于编程序, 首先要把握好方向, 注重工作方法。 这样才能保证软件的可靠性和不断提高开发水平。 软件工程思想的采用, 为软件开发带来了一系列革新,软件开发人员需要更新观念, 不断总结经验 , 以适应软件技术发展的新潮流, 避免在低水平上重复劳动。

  • 相关阅读:
    还是行列转换
    SQL实现交叉表的方法
    silverlight绘制场景的教程,讲解清晰,谁都能看懂
    简单的MEF例子
    在arcgis上根据区域显示小区
    一个不错的silverlight颜色选取框控件
    mac下制作iphone铃声
    xCode中工程相关的一些处理:一个工程包含多个Target的用途和使用方法【转】
    git 分支管理
    [转]判断ios中是否安装了某些软件
  • 原文地址:https://www.cnblogs.com/jasonboren/p/14665315.html
Copyright © 2011-2022 走看看