陈明娟
湖北工业大学,湖北武汉 430068
打开电脑,各种软件的更新提示窗口不断闪烁,刺激着每一个软件开发人员的神经。这就要求开发员不断地更新自己的知识库。要做好软件开发的事情,是一个长时间的过程,要不断积累学习工作经验,在实践中成长。知识面要宽,还要能够不断补充自己的知识和完善知识结构,更难得的是要有耐心,上帝只垂青刻苦的人。
开发前还要做好准备工作。一般软件项目在开发前都有系统任务书,系统的目标、任务、结构、功能、规模、进度要求及人员计划、经费等都要包括在内的,这只是基本要求。针对具体情况,软件开发人员和需求分析人员还要联合对软件项目的细节进行具体分析,必要时还要进行实地调研,然后共同商讨写出系统的需求分析,包括各方面实现的可行性、必要性和分析原系统(工作环境)现状,描述待开发系统的功能需求,使用范围,业务流程,用户界面,输出要求,故障处理以及对使用环境的要求,包括网络环境,硬件环境,软件环境,与其他系统的关系,安全与保密。提供用户和开发人员之间沟通的基础,提供项目设计的基本信息。给出结论和意见。
件开发过程可以包括以下几个阶段:
软件设计可分为概要设计阶段和详细设计阶段。事实上,软件设计的主要任务是软件模块分解,模块,以及模块的设计。概要设计是结构设计,其主要目标是让软件的模块结构用软件结构图表示。详细设计的主要任务是设计模块的程序流程,数据结构与算法,次要任务是设计一个数据库。
软件编码是指软件设计成一个计算机可以接受的程序。在当前软件开发中除特殊场合,已很少使用在第二十世纪80年代的高级语言,取代它的是面向对象的开发语言。面向对象的编程语言和开发环境完美融合,大大提高了发展的速度。
以较小的代价发现尽可能多的错误是软件测试的目的。要实现这个目标,设计一套出色的测试用例(测试用例是由测试数据和预期的输出结果组成)是关键所在。而用例设计的关键则是以较少的用例覆盖尽可能多的内部程序逻辑结果。
维护就是根据软件运行的情况,对软件进行适当修改,以适应新的要求,并纠正在运行过程中发现的错误操作完成软件问题报告,软件修改报告。在这段时间里,研制阶段所遇到的各种问题都几乎得到解决,而且还解决了一些维修工作本身特有的问题,可以使它扩展功能,提高性能,从而带来明显的经济效益。不幸的是,软件维护工作的关注程度往往远不如对软件开发工作的。
典型的开发模型有:1)瀑布模型(waterfall model);2)边做边改模型(Build-and-Fix Model);3)增量模型(Incremental Model);4)螺旋模型(spiral model);5)喷泉模型(fountain model,(面向对象的生存期模型, OO模型));6)智能模型(intelligent model)
1970年Winston Royce提出了著名的“瀑布模型”,将软件生命周期划分,规定了它们自上而下、相互衔接的固定次序,如同高山流水,逐级下落,它一直是80年代早期唯一被广泛采用的软件开发模型。但是,这种被人们习惯了的线性思维却不再适合现在的开发模式,几乎被抛弃。
在这种模型中,没有套路也没有经过设计,软件随着客户的需要一次又一次地不断被修改。“边做边改”模型开发了很多的软件产品。但它对编写几百行的小程序来说还不错,但对任何规模的开发来说都是无法实现的。
与盖房子相同,软件也是一砖一瓦建造起来的。在增量模型中,第一个增量往往是实现基本需求的核心产品,先给他用户使用之后再根据需求形成下一个增量计划。再经过集成和测试,多种相互作用的模块所形成的提供特定功能的代码片段构成每一个构件。它也有弊端,比如每一个模块软件必需具备开放式的体系结构,但是由于它的自由度比较高也容易使软件过程的控制失去整体性。
1988年,Barry Boehm正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。它沿着螺线进行若干次迭代 :1) 制定计划 ;2) 风险分析 ;3) 实施工程 ;4) 客户评估。螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型适用范围比较小,对开发人员素质要求很高。
喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。
智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。但这种方法需要四代语言(4GL)的支持。
自己的开发思路要懂得坚持,别人的思想要懂得理解与吸收,和而不同。不论是开发能力上的还是开发经验上要向你周围的人谦虚学习,学会总结,站在巨人的肩膀上才能看得远。
[1]Geoffery James.编程之道[M].郭海,等译.北京:清华大学出版社,1999.
[2]张海潘著.软件工程导论[M].3版.北京:清华大学出版社,1998.
[3]郑人杰,殷人昆,陶永雷著.实用软件工程[M].北京:清华大学出版社,1997.
[4]周之英.现代软件工程基本方法篇[M].北京:科技出版社,2000.
[5]郝克刚.软件设计研究[M].西安:西北大学出版社,1992.[6]陈明编著.实用软件工程基础[M].北京:清华大学出版社,2002.
[7]张友生等编著.软件体系结构[M].北京:清华大学出版社,2006.