技术开发 频道

软件生存周期各阶段活动定义浅释

    四、 详细设计

    到了详细设计阶段,现在该把注意力从全局移到局部了,但先别着急,现在还不是编码阶段,要做的仍然是软件的逻辑设计部份,只不过现在不是设计结构了。

    详细设计就是把我们在概要设计里所划分出来的模块要实现的功能用相应的设计工具详细的描述出实现步骤来,也即是写出代码的算法,在详细设计里所有的表述无论是语言或是图表,都应做到有精确的唯一解释,绝不允许出现有“二义性”或“多义性”的表述,所谓精确的表述就是要做到无论这份文档到了那个程序员手中,他都能看得懂文档的含意而且只有一个含意,不可能再解读出第二层意思来。
  
    详细设计的任务就是为每个模块所要完成的功能进行具体而精确的描述,要根据功能描述再转化成精确的、结构化的软件过程描述,软件过程描述一般可直接对应到相应的代码,也就是以后程序员会根据这些过程描述来编写程序代码,具体如下:

    (1)为每个模块进行详细的算法设计。这是需要用相应的工具来完成的,因为自然语言通常很容易具有“二义性”,而工具能做到含义唯一性。
    (2)为模块内的数据结构进行设计。
    (3)对数据库进行物理设计。注意这不是实现数据库,而是设计出数据库的具体物理结构。
    (4)其它设计(前期特殊代码设计、I/O格式设计、界面友好设计等)。
    (5)编写详细设计说明书。
    (6)评审。

    五、编写代码

    编写代码就是真的在机器上用计算机语言实现前面所设计的软件功能了,编写代码时要做到高度对应在详细设计里所描述的算法,因为以后的“除虫”或升级等,很多时候都是以详细设计的文档资料为根据的,如代码和详细设计的描述的偏差,很容易误导以后进行维护工作的程序员,而且这种错误很能被发现,而那样会浪费掉很多不必要的人力物力。

    程序员们还要注意的就是在编码时尽可能在重点和难点的地方留下注释,这样对后来的程序员读源代码也有很大的帮助。

    六、软件测试
  
    软件测试近年来好像提到了和需求分析同一个高度,有点实力的软件公司都有相应的软件测试队伍,他们的任务就是和开发人员作对,专门和他们过不去,软件开发得好好的,他们就来故意找茬,可在软件工程看来,这样找茬是保证软件质量必不可少的。

    其实就软件这种产品的特殊性而言,没有一个软件可以做到没有BUG,从客观上讲测试是找出BUG最直接和有效的方法,当然这样的说法是相对于软件没有发行而言的,在软件工程里BUG粗劣的分法可以分为代码错误和逻辑设计错误。

    至于测试软件的方式由于侧重点不同各有不同,主要方式还是在设计测试用例的基础上检验软件的各个组成部分,逐个测试看能不能达到所期望的结果,测试亦分为单元测试、集成测试、确认测试,除此之外还有错误测试,就是故意输入不合法的数据或故意进行非法操作来测试软件。

    软件测试的方法:

    软件测试的方法一般分成两种类型:静态测试法和动态测试法,而动态测试法又根据测试用例的不同可分为白盒测试和黑盒测试两类。

    1、静态测试法
    不在计算机上进行测试而采用人工和计算机辅助分析的手段进行检测的方法称为静态测试法。

    2、动态测试法
    利用计算机来运行相关软件产品进行的测试称为动态测试法,一般而言我们说的软件测试是指动态测试,它可分为白盒测试和黑盒测试。

    (1)白盒测试:它把一个软件产品看作一个盒子,而白盒测试就是“打开这个盒子来测试”。测试人员要了解程序的内部结构和处理过程,而测试的主旨就是检查处理过程的细节有无出错。
    (2)黑盒测试:黑盒测试是最贴近用户使用角度的测试,它把软件产品看作是一个封闭的盒子,以功能为中心,测试软件的各项功能是否达到设计时的要求。

    最后要讲一点就是原则上不要让软件开发人员再作为软件测试人员,因为人一般都有点“自我”心里,自己写的代码自己来测试,一来他会用“合法”的操作和数据来测试,不会出错,而一旦别人进行操作就会出问题,二来无论他是否愿意,都会有意无意的朝证明自己正确的方向进行,这样的测试很难发现重大的错误。

    七、软件维护

    在软件工程各阶段的活动中,软件维护是时间最长的,一般意义上从软件交付使用的那一刻开始,就正式进入软件维护阶段,可能会由于软件本身写得好或其它的什么原因,持续几十年也说不定,这期间对软件的所有工作可以看作是对软件的维护(包括一般意义上的升级和除虫)。

    软件维护的任务有四种类型:校正性维护、适应性维护、完善性维护和预防性维护。(题外话:在工业生产高度自动化的今天,软件出错可能导致整个的生产活动停滞,所以有的软件公司把软件的维护工作形象的称之为“救火”,很明显这种是属于校正性维护,无论一个软件公司多么有实力,技术储备多么雄厚,都无论回避“救火”的问题,但如果已经搞到三天“救火”四次的话,那该公司就要好好的反思一下自己了。)

    软件维护的一般流程各个公司视情况会有所不同,一般通过行政手续后就可进行,记住维护工作一定要详细的记录下来,以供以后使用,因为对软件的维护一般都会对软件进行修改,而修改过的软件就和原来的软件文档不一致了,如果没有对所做的修改详细记录,以后可能会引起不必要的麻烦,而软件的维护一般的流程如下:

   1、确定维护的类型。
  2、对校正性维护要从评价错误的严重性开始。
  3、对适应性维护和完善性维护可以视业务繁忙情况而定,也有条件制定比较完善的维护计划。
  4、实施维护工作,要确保维护是必要和安全的。
  5、维护回顾,看看有没有什么地方做的不对或遗漏的。
  6、编写详细的维护日志。

    其实“救火”这活并不是一个好差事,除了要读懂以前那程序员的“天书”外,还有听取用户的述苦和牢骚,同时要面对一些不大好看的脸色,错不在你,这我们知道,可谁叫你是“消防队员”呢?

0
相关文章