软件项目系统设计
系统设计的主要内容包括新系统总体结构设计、代码设计、输出设计、输入设计、处理过程设计、数据存储设计、用户界面设计和安全控制设计等。
常用的设计方法有:面向数据流的结构化设计方法(SD)、面向对象的分析方法(OOD)。
系统设计包括两个基本的步骤:概要设计、详细设计。
概要设计概要设计主要包括:(1)设计软件系统总体结构;(2)数据结构及数据库设计;(3)编写概要设计文档(概要设计说明书、数据库设计说明书、用户手册及修订测试计划)(4)评审。详细设计详细设计主要包括:
(1)对每个模块进行详细设计;
(2)对模块内部的数据结构设计;
(3)对数据库进行物理设计,即确定数据库的物理结构;
(4)其他设计(代码设计、输入/输出设计、用户界面设计);
(5)编写详细设计说明书;
(6)评审;
软件项目系统测试
是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。这种测试可以发现系统分析和设计中的错误。
1、系统测试与调试
信息系统测试包括软件测试、硬件测试、网络测试。测试目的是以最少的人力和时间发现潜在各种错误和缺陷。
测试应遵循的基本原创:
(1)应尽早并不断的进行测试;
(2)测试工作应避免原先开发软件人员或小组参与;
(3)设计测试方案时要确定输入数据,还要根据系统功能确定预期输出结果;
(4)设计测试用例时要设计合理、有效的输入条件,还要包含不合理、失效的输入条件。人们测试时通常忽略了对异常、不合理、意想不到的情况进行测试,这可能就是隐患;
(5)在测试时要检查程序是否做了该做、不该做的事,多余的工作会影响程序的效率;
(6)严格按照测试计划进行测试;
(7)妥善保存测试计划、测试用例;
(8)要精心设计测试用例。
测试的过程包括:
(1)制定测试计划;
(2)编制测试大纲;
(3)根据测试大纲设计和生产测试用例;
(4)事实测试;
(5)生成测试报告;
2、传统软件的测试策略
(1)单元测试
也称模块测试,在模块编写完成且编译无误后进行。侧重于模块中的内部处理逻辑和数据结构。
(2)集成测试
集成测试通常有两种方法:
非增量集成:分别测试各个模块,再将这些模块组合起来进行整理测试;增量集成:以小增量的方式逐步进行构造和测试。
常用的增量集成策略包括:自顶向下集成测试、自底向上集成测试、回归测试、冒烟测试等。
(3)确认测试
确认测试始于集成测试的结束,那时已测试完单个构件,软件已经组装成完整的软件包,且接口错误已被发现和改正。
(4)系统测试
系统测试是将已经确认的软件、硬件、外设、网络等其他因素结合在一起,进行各种集成测试和确认测试,主要有:恢复测试、安全性测试、压力测试、性能测试部署测试。
3、测试方法
软件测试分为静态测试和动态测试;
静态测试:指被测程序不在机器上运行,采用人工检测和计算机辅助静态分析的手段对程序进行测试,包括人工检测、计算机辅助静态分析。
动态测试:指通过运行程序发现错误,一般采用黑盒测试和白盒测试。
黑盒测试:也称功能测试,在不考虑软件内部结构和特性的情况下,测试软件外部特性。
白盒测试:也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。
4、调试
目前常用的调试方法有:
(1)试探法:调试人员分析错误的症状,猜测问题所在的位置,一步步试探和分析问题所在。该方法效率低,适用于结构比较简单的程序;
(2)回溯法:调试人员从发现错误症状的位置开始,人工沿着程序的控制流程往回追踪代码,直到找出问题根源为止。该方法使用与小型程序;
(3)对分查找法:该方法主要用来缩小错误范围,直到把故障范围缩小到比较容易诊断为止;
(4)归纳法:从测试所暴露的问题出发,收集所有正确、不正确的数据,并分析它们之间关系,提出假想的错误原因,用这些数据证明或反驳,从而查出错误所在;
(5)演绎法:根据测试结果,列出可能的错误原因,分析已有的数据,排除不可能和彼此矛盾的原因,若有多个错误同时存在,要重新分析,提出新的假设,直到发现错误为止。
软件项目管理
项目管理涉及的范围有效的软件项目管理集中在以下4点:(1)人员:参与项目的人员类型分为:项目管理人员;高级管理人员;开发人员;客户;最终用户。(2)产品:开展项目计划之前,应先进行项目定义,即定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术、管理约束等。(3)过程:对于软件项目来说,强调的是对其进行过程控制,通常将项目分解为任务、子任务等。(4)项目:Reel提出了包含如下5个常识的软件项目办法:明确目标及过程、保持动力、跟踪进展、做出明智的决策、进行事后分析。项目估算常用的估算方法有3种:(1)基于已经完成类似项目进行估算;(2)基于分解技术进行估算;(3)基于经验估算模型的估算。成本估算方法常用的成本估算方法有:自顶向下估算方法、自底向上估算方法、差别估算方法、其他估算方法(例如专家估算、类推估算、算式估算)进度管理(1)进度管理基本原则:1、划分:项目必须要被划分成若干可以管理的活动和任务;2、相互依赖性:划分后的个活动之间的依赖关系必须是明确的,例如有些任务必须按顺序完成,有的任务可以并发进行,有的任务只能在其他活动完成后才能开展,有的则可以独立进行;3、时间分配:必须为每个任务规定开始和结束时间;4、工作量确认:每个项目都有预定的人员参与,项目管理者必须在任何时间节点中所分配的人员数量不能超过项目团队的总人数;5、确定责任:为每个任务指定特定的团队成员进行负责;6、明确输出结果:即每个任务都要有一个明确的输出结果,例如一个可交付的工作产品;7、确定里程碑:每个任务或任务组都应该与一个项目里程碑相关联,当一个或多个工作产品经过质量评审并且得到认可时,标志着一个里程碑的完成。(2)进度安排为了监控项目的进度计划和实际进展情况,表示各项任务之间进度的相互依赖关系,我们需要采用图示的方法。常用的方法有:甘特图(Gantt图)、项目计划评审技术图(PERT)
4.软件项目的组织
开发组织采用什么形式组织,不仅要考虑到项目的特点,还要考虑参与人员的素质。软件项目组织的原则有:
(1)尽早落实责任;
(2)减少交流接口;
(3)责权均衡。
组织结构的模式,根据项目的分解和过程的分解,软件项目有以下组织形式;
(4)按项目划分的模式:将开发人员组织成项目组,项目组成员共同完成项目的所有任务,例如项目的定义、需求分析、设计、编码、测试、评审等,甚至还包括项目的维护。
(5)按职能划分的模式:按软件过程中所反映的各种职能,将项目参与者组织成相应的专业组,如开发组、测试组、质量保证组、维护组等。
(6)矩阵模式:该模式是上述两种模式的组合,它既按职能来组织相应的专业组,又按项目来组织项目组。
软件质量管理
(1)软件质量管理
在ISO/IEC中,软件质量模型由3个层次组成,第一层为质量特性,第二层为质量子特性,第三层为度量指标。
McCall软件质量模型给出了一个3层模型框架,第一层为质量特性,第二层为评价准则。
(2)软件质量保证
在软件质量方面强调3个要点:
1、软件必须满足用户规定的需求;
2、软件应遵循规定标准所定义的一系列开发准则;
3、软件还应满足某些隐含的需求;
软件质量保证包括7个主要活动相关的各种任务:
1、应用技术方法;
2、进行正式的技术评审;
3、测试软件;
4、便准的实施;
5、控制变更;
6、度量;
7、记录保存和报告。
(3)软件评审
软件评审的内容:
1、设计质量的评审包括:评审软件的规格说明书是否符合用户的要求;评审可靠性;评审保密措施实施情况;评审操作特性实施情况;评审性能;评审软件是否具有可修改性、可扩充性、可互换性和可移植性;评审软件可测试性;评审软件可复用性;
2、程序质量的评审:从开发者的角度进行评审,与开发技术直接相关,着眼于软件本身的结构与运行环境的接口以及变更带来的影响而进行的评审活动;
3、与运行环境的接口:运行环境包括硬件、其他软件和用户,主要检查项目有与硬件的接口、与用户的接口。
(4)软件容错技术
提高软件质量和可靠性的技术大致分为两类,避开错误和容错技术。实现容错的主要手段是冗余,常见的冗余技术有:
1、结构冗余:又分为静态、动态和混合冗余;
2、信息冗余:为检测或纠正信息正在运算或传输中的错误需外加一部分信息;
3、时间冗余:指以重复执行指令或程序来消除瞬时错误带来的影响;
4、冗余附加技术:指为实现上述冗余技术所需要的资源和技术,包括程序、指令、数据、存放和调动它们的空间和通道等。