软件项目开发过程指南
软件开发是一个系统工程,同期他任何事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的阶段,即软件的生存周期。根据这一思想,可以得到软件生存期的几个阶段工作,既制订计划、需求分析、软件设计、程序编码、测试及运行维护。在实际的开发过程中,这几个阶段并非是自上而下的关系。每个开发阶段以前一阶段作为输入,利用这一输入完成本接段应完成的内容,对该项活动的成果进行评审,如果工作得到确认,向下一阶段输出成果;否则应向前一阶段甚至更前面的阶段返工。一个良好的软件开发过程是软件质量的有效保证。
1、制定计划
确定要开发软件系统的总目标,给出它的功能、性能、可靠性、接口等方面的要求。由项目负责人、系统分析员和用户合作,研究完成该项任务的可能性,探讨总体解决方案。对可利用的资源、成本、效益、进度作出估计,制定出完成开发任务的实施计划及可行性研究报告,提交管理部门审查。
2、需求分析
需求分析的任务是确定待开发软件的功能、性能、界面、数据等要求。参加人员有用户、项目负责人、系统分析员。需求分析阶段解决‘作什么’的问题,而‘怎么做’留给设计阶段来完成。对待开发的软件提出的需求进行分析并给出详细的定义,这是软件开发过程中重要的一步,也是决定性的一步。通过需求分析,把软件的功能和性能的总体概念描述为具体的软件需求规格说明。对需求要加以确切描述,编写出软件需求规格说明书,提交评审。
文档格式:
第一章 系统需求:
1、功能需求:列举出软件在职能上应做什么,这是最住要的需求。
2、性能需求:给出所开发软件的技术性能指标,包括响应时间、内存外存存储容量限制、运行时间限制、吞吐量限制等。
3、环境需求:对系统运行时所处环境的要求。包括软件要求、硬件要求、使用人员水平要求、使用频度要求、数据通信接口要求等。
4、可靠性需求:对运行失效回造成严重后果的软件,应当提出较高的可靠性要求,以便在软件的开发过程中采取必要的措施,使软件产品能够高度可靠地稳定运行,避免因运行事故而带来的损失。
5、异常处理需求:在运行过程中出现异常情况如临时性、永久性的资源故障,非法操作、数组越界时采取的行动和希望显示的信息。
6、安全保密需求:工作在不同的环境下的软件对安全、保密性的要求是不一样的。把着方面的需求作出恰当的规定,以便对所开发的软件给予特殊的设计。
7、用户界面需求:描述软件系统的外部特征,为用户界面细致地规定达到的要求。
8、资源使用需求:对软件开发时所需要的数据、内存及所需人力、支撑软件、、开发工具、开发设备等加以确定。
9、预先估计以后系统可能达到的目标:在开发过程中,对系统将来可能的扩充和修改做准备。一旦有需要时,就比较容易扩充和修改。
第二章 系统逻辑模型:
采用Rose工具的Case图、对象关系图描述。
第三章 数据控制分析:
数据流向、数据量、峰值分析。
第四章 流程控制分析:
对CASE图中的使用案例采用流程图的方式加以描述。
对每个案例都要划出功能性的流程图。
3、软件设计
软件设计可分为概要设计和详细设计。
概要设计的参加人员有系统分析员和高级程序员,概要设计的任务是模块分解即逻辑分层和抽象,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构的设计。功能模块的划分以模块间的耦合度越小越好。
详细设计的参加人员有高级程序员和程序员。详细设计的任务是设计每个模块的的实现细节和局部数据结构。用流程图给出模块的具体实现。
软件设计文档格式:
第一章 主程序设计:
1.1主程序名、存储位置定义。
1.2主程序的功能。如显示快闪屏幕、防止应用程序多次启动、隐藏主窗口等。
1.3主程序的流程:画出流程图,列举出用到的WINDOWS32 API函数。
第二章 主窗口单元设计
2.1单元文件名、存储位置定义。
2.2单元功能:列举出该单元的全部功能。
2.3单元常量定义:定义出该单元的全部常量。
2.4单元全局变量定义:定义单元的全局变量。
2.5引用的其它单元:列举出本单元要用到的其它单元。
软件测试项目流程2.6自定义类型、枚举常量定义:
2.7菜单功能说明:
2.8模块划分:(1)概要设计:给出模块的功能描述,入口参数,出口参数,用到的全局变量,模块间的调用关系。(2)详细设计:描述内部数据结构和流程。
其它的窗口单元设计格式同主窗口单元。按序排列,无此项,写无。
第三章 类单元设计
3.1单元文件名、存储位置定义。
3.2类名定义、派生关系、类功能概述。
3.3类型定义、枚举常量定义。
3.4类私有成员声明:按数据域、属性、方法顺序声明。下同。
3.5类保护成员声明:
3.6类共有成员声明:列出外部引用的类、方法。
3.7类方法实现:按模块化的思想划分类的方法。概要设计:给出每个方法的功能描述,入口参数,出口参数。详细设计:描述方法内部数据结构及流程。简单的私有方法只给出描述即可。共有方法列出其控制域即调用的模块(包括间接调用)。每个方法的语句行不超过50—100行为宜。类的构造、析构、属性设置、提取方法系统自动生成,可不写。
软件设计的原则:
● 抽象:软件工程从定义到开发要经历多个阶段,在这个过程中每前进一步都可以看作是对软件解法的抽象层次的一次细化。在进行模块化设计时也有多个抽象层次,最高抽象层次的模块用概括的方式表示问题的解法,较低抽象层次的模块是对较高抽象层次模块对问题解
法的细化。抽象的最低层次是实现该软件的原代码。抽象的方法主要有两种:过程抽象和数据抽象。过程抽象即功能上的抽象,也就是对外透明性。数据抽象定义了数据类型和施加于该类型的操作,即类设计。
● 模块化:模块化是指将一个待开发的软件分解成若干小的简单部分,即逐层分解的思想。模块化的目的是使软件结构清晰、易于理解、测试修改。模块的外部特征包括模块的接口(输入输出参数、引用的全局变量、调用的其它模块)和模块的功能;内部特征包括模块的局部数据和模块的程序代码。调用一个模块只要知道它的外部特征,而不必知道它的内部实现。每个模块可独立开发、测试,最后组装成完整的软件。
● 信息隐藏:定义每个模块时应尽可能少的显露其内部特征,需要隐藏的信息有:数据结构的内部连接及对其所做的操作细节、内部特征码、与硬件有关的细节。信息隐藏可以提高软件的可修改性、可测试性、可移植性。
● 模块独立:是指每个模块完成一个相对独立的特定功能并且与其它模块间的联系简单。衡量模块独立程度的标准有两个:耦合和内聚。耦合是指模块间的联系紧密程度,内聚是指模块内部元素之间的联系紧密程度。我们希望每个模块都是高内聚、低耦合的。
分解模块的原则:
● 满足信息隐蔽的原则。
● 使模块的内聚度高,模块间的耦合度低。
● 模块的大小适中,最好限定在50个语句行以内。
● 调用其它模块的深度不宜过大。
● 模块的扇入应尽可能大,扇出不宜过大。扇入是指直接调用该模块的上级模块个数,扇出是指该模块直接调用的下级模块的个数。扇入大表示模块的复用度高,扇出大表示模块的复杂度高。
● 模块的功能可以预测:相同的输入数据会产生相同的输出。
● 软件设计阶段产生的文档为软件设计说明书。
4、程序编码
编码的任务是用某种程序语言为每个模块编写程序。编码标准参见每种语言的具体规定。编码阶段的参加人员有高级程序员和程序员。编码产生的文档为程序清单。
5. 软件测试
软件测试的目的是发现软件中的错误,并加以纠正。由测试人员承担,测试的方法主要有白盒测试(编码测试)和黑盒测试(模块的接口通信测试、软件的功能性能测试。产生的文档为软件测试计划和软件测试报告。
6. 软件维护
软件开发阶段结束后,软件即可交付使用。软件的使用周期要持续几年至几十年,在使用期内,都可能因某种原因而修改软件,这就是软件维护。引起修改软件的原因主要有以下三种:
● 错误性修改:在运行过程中发现错误而修改软件。
● 适应性修改:为适应环境的变化而修改软件。
● 功能性修改:为扩充或修改原来的软件功能而修改软件。
软件维护阶段的参加人员是维护人员,该阶段产生的文档有维护计划和维护报告。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论