第3章 系统分析
面对即将开发的系统,进行提前的分析是必要的。这也是开发流程中必须有的环节。通常分析系统期间,主要涉及的内容包括系统开发可行性问题,对系统功能和性能的分析等问题。
3.1 可行性分析
在正式对需要建设的项目进行投资前,有一个比较关键的步骤是不能缺少的,那就是可行性分析。它主要从当前技术,经济等角度去评估系统的可行性,在投资决策中常常采用这种科学的方法来论证项目。
3.1.1 技术可行性
当前,系统开发的技术已经发展成熟,而且通过计算机网络可以获取开发工具的使用方法,以及规范化编写的模块化代码,这些知识可以帮助开发者顺利完成本系统的编码工作。
3.1.2 经济可行性
本系统开发期间需要配置的软件环境,可以免费通过开发类官网下载安装,需要配置的硬件设备也不需要具备很高的性能,通常网吧电脑,或学校计算机机房的电脑都符合要求。因此,从经济方面考虑,学生宿舍管理系统开发可行。
3.1.3 操作可行性
学生宿舍管理系统根据用户使用习惯进行开发,设计的界面具有统一性,并具备优秀的导航功能。所以,只要会简单操作电脑的人员,可以无压力操作学生宿舍管理系统。
总之,从上述的论证来看,本系统可以开发。
3.2 系统流程
流程图这样的工具可以直观反映出系统内部的操作逻辑,可以帮助用户更好的理解系统。
3.2.1 操作流程
进入本系统需要访问者提供验证信息。验证合格的访问者才能获取访问资格。其具体的操作流程见下图。访问者根据登录界面设置的信息项如实填写,待信息通过验证后,访问者可以进入指定的页面享受本系统提供的服务和阅读本系统的相关信息。
图3.1 操作流程图
3.2.2 登录流程
本系统的登录模块,其内部的流程见下图。主要对访问本系统的人员提供的验证信息进行逐个判断,系统面对录入错误的信息会给出提示,比如,提示账号不对,或提示密码不匹配等提示信息。总之,在登录页面填写的所有信息都符合要求,访问者就登录成功了。
图3.2 登录流程图
3.2.3 删除信息流程
本系统在经常性的使用后,会产生很多失去价值的信息,因此就需要及时清理数据,腾出系统的空间。对这些数据进行清理时,其对应的流程见下图。先选中要清理的数据,通过反复确认需要清理的数据,避免操作人员误删。已经删除的数据就不会出现在系统里面。
图3.3 删除信息流程图
3.2.4 添加信息流程
本系统主要用于显示信息,提供服务,其中,数据添加功能就是其中的服务之一,具体流程见下图。让操作者在信息添加的页面录入数据,待这些数据被提交检验合格后,就会在系统指定页面显示出来。
图3.4 添加信息流程图
3.3 性能需求
进行需求分析,包括了根据用户实际需求制定功能,也涵盖了对即将设计的系统进行性能上的需求分析。所以一般分析系统时,一方面要分析系统功能,另一方面也要分析系统的性能。毕竟设计开发出一个好性能的系统可以确保系统的质量可靠。
接下来分析系统的性能,还要从界面友好性,系统的时间特性,系统的可靠性等方面来分析说明。
(1)系统的容量要求:对本系统完成数据处理的容量最大化进行确定。也就是确定系统处理数据的容量临界值,超过这个临界值,可能系统就运行不正常了。
(2)系统精度的要求:确定数据传输需要达到的精度值,也包括了数值计算的精度值,数据的精度值的设置等。
(3)时间特性要求:系统处理数据都有时间要求,这也是系统的时间特性。通常都会把数据处理的时间进行分析,也会设置用户请求的响应时间,还有系统在满负荷运行时可以偏离的范围数值等都需要提前分析确定。
(4)适应性要求:系统在面对系统环境的改变时,其自身适应这种变化的能力,也需要通过参数信息体现。比如说,在面对变化的需求,系统就要去适应这种变化,通过指出需要设计的过程或者是需要设计的软件来体现系统的适应性。
(5)界面友好性:除了功能上需要考虑用户需求外,在人机交互界面的设计上,也需要考虑用户的使用习惯,包括界面的布局,界面基调选择以及颜色搭配等。尽量做到用户在接受简单的培训之后,可以对系统进行独立操作。
(6)系统可靠性:对于初学者而言,很容易出现一个问题,就是设计开发的系统,因为人为的误操作出现崩溃,有些也会导致电脑死机。这样的现象也说明这种容错能力低下的系统是不可靠的。完全不能作为生活中处理信息的系统。当下,系统开发要保证可靠性,设计时,把模块化和结构化的设计理念也考虑进来。如果遇到对时效性要求比较严格的系统,也需要采取其它的措施,比如双机系统,还有磁盘阵列等方式。还有就是一个可靠性的系统,对设备的供电能力也有要求。
运行在计算机上的系统大都担负着信息处理的任务,对于它们而言,其性能要求有:完成信息查询,需要的响应时间;对终端设备的连接数量的确定;对存储数据的容量的安排;以及存储数据的可扩充的容量的设置,比如说系统存放近几个月,或者存放近几年的数据;完成报表打印数量的设置,也包括报表打印种类的设置等。
3.4 功能需求
不同的系统提供的服务也不相同,其对应的功能也不相同,所以,系统开工前,需要明确其用途,确定其功能。由此,才可以进行各个任务的开展。
学生宿舍管理系统经过分析,确定了其需要设置管理员的角色,其操作的功能通过用例图展示(见下图)。管理员管理宿管员,管理学生,修改密码,维护个人信息。
图3.5 管理员用例图
学生宿舍管理系统经过分析,确定了其需要设置宿管员的角色,其操作的功能通过用例图展示(见下图)。宿管员管理公寓资产,缴费信息,公共场所清理信息,日常事务信息,审核学生床位安排信息。
图3.6 宿管员用例图
学生宿舍管理系统经过分析,确定了其需要设置学生的角色,其操作的功能通过用例图展示(见下图)。学生查看公共场所清理信息,日常事务,缴费信息,在线申请床位,查看床位安排。
图3.7 学生用例图
第6章 系统测试
进入这个环节就代表着系统已经结束了编码实现功能阶段,接下来要做的事情,就是对该系统进行检测,也就是系统测试,这个环节是很有必要进行的,原因是开发本系统的人员,其自身具备的开发技术以及开发思维是有限的,在面对具有复杂性操作逻辑的系统,都会出现大大小小的错误,并且这样的错误还都是不可避免的。通过及时的测试,可以尽早排除程序中的错误,这样也可以减少实际运行中产生的问题,从而真正避免在后期使用中为修复这些问题所付出的高昂代价。及时测试,及时发现问题并解决,也是提高开发过程的效率的一种表现形式。总而言之,在软件开发生命周期的每个阶段都需要加以重视,并做好每个阶段需要做的任务,从开始到结尾都需要保证开发软件的质量。
6.1 测试的任务
在系统编码完成之后,完成对本系统的测试工作,其主要的任务还是找出本系统可能出现的错误,而且是发现的错误越多越好,因为每发现一个程序错误,都需要进行文档记载,然后根据这些记载程序错误的文档,采取各种措施去解决这些程序问题,逐渐完善程序。所以,测试并不是去证明开发的系统是正确的,而是通过各种各样的方式去寻找系统中的缺陷,并针对性的完善系统。这样才能保证系统在实际运行中,可以保质保量的进行工作。
6.2 测试的目标
通过对系统的测试,才可以发现系统的问题。通常测试就是对大部分程序容易出错的位置进行检测,或者是针对系统复杂的部分进行检测,其目的就是发现系统中尽可能多的错误。尽管系统开发时,采用的开发方式,或者是开发技术都是比较成熟的,但这并不能证明系统是没有缺陷和错误的。尤其是随着现在软件开发技术的升级,市场上大部分软件都具有规模大,复杂性高的特点,所以这更加难以保证开发的系统不会出现错误。对此,进行系统的测试,并做好测试工作,是十分有益的。
6.3 测试方案
系统进入测试阶段,就要确定测试方案,毕竟这部分内容非常关键。测试时,要对前面设计的系统功能进行检测,看刚刚完成编码的系统是否在功能上符合用户需求,同时还要在各个功能模块里面进行测试数据的输入,并查看预期的结果与系统实际反馈的结果是否一致,另外,为了检测系统各个模块的错误,也要设计输入一些不符合操作规范的数据,检测系统能不能正常应对或者显示报错提示。截止目前,常用的两种测试方法即:黑盒和白盒测试,它们分别用于不同的测试内容。以下就对这两种方法进行了描述。
黑盒测试方法:这个测试主要还是运用在程序的各个接口测试,使用这个方法主要还是检查程序实现的功能是否跟功能需求文档匹配,它关注的主要还是功能实现,而忽视了程序的内部运行原理,以及程序在操作逻辑上的处理过程。通常进行黑盒测试,大部分都没有让用户参与。常见的除了功能测试外,它也会涉及到其它的测试,比如系统的安全性测试,恢复性测试,容量和负载性测试,以及稳定性和可靠性测试等。
白盒测试方法:这个测试主要还是注重程序内部的逻辑,包括检测程序是如何工作的,是否跟预期设定的操作逻辑一致,同时白盒测试对程序代码的检测比较彻底,可以及时把代码层面隐藏的错误给找出来,因为程序代码的每条路径都要经过检测,所以这样的方式对于代码优化也有好处。
本节针对本系统的检测也设置了相应的测试步骤,首先是模块测试,然后是集成测试,最后是验收测试。
模块测试:这个测试环节的操作员,一般都是编写程序的人员,他们会划分系统的功能模块,然后把每个功能模块都当成一个单元进行测试,因此单元测试也是模块测试的别称。这部分测试通常就是验证程序各个功能可以运行,以及发现一些来源于编码和程序设计的问题。对于模块测试,常见的错误主要有下面5个。
第一个常见错误:则是单元接口;
第二个常见错误:则是局部数据结构;
第三个常见错误:则是独立路径;
第四个常见错误:则是出错处理通路;
第五个常见错误:则是跟上述错误相关的边界条件;
总之,模块测试也是基于白盒测试,在对各模块内部的检测中,发现可能存在的错误。
集成测试:进行这个环节的测试的前提是,模块测试已经完成,然后把系统的各个模块进行组合并开始测试,测试时,主要还是检查系统各个模块连接的接口是否正确。当模块测试通过之后,把它们进行组合时,也会出现一些问题,所以在模块组合时,也进行整体性的测试,也非常重要。
集成测试常用的方法则是渐增式方法,相比非渐增式来说,渐增式用得比较多,也比较受欢迎,其中的原因有以下4点。
第一点:同样是测试,采用渐增式方法可以节约成本,开销不高;
第二点:采用渐增式方法可以短时间内暴露模块间接口的错误问题;
第三点:采用渐增式方法可以更容易对错误的位置进行判断;
第四点:采用渐增式方法可以更彻底地测试系统;
通过上面的比较分析,选用渐增式方式测试本系统,但是主要是运用渐增式里面的混合法进行集成测试。用自上而下的方式测试程序结构的较上层;对程序结构的较下层,则是采用自下而上的方式,这两种方式搭配使用完成本系统的集成测试。
验收测试:这个步骤就需要未来使用程序的人进行参与了,主要还是检测程序是否可以按照用户预定的方式进行工作,此部分测试主要还是在功能检测上,参考标准就是提前设计的功能需求文档,所以,采用黑盒测试法比较符合要求。一般来说,进行到验收测试这个环节,都会产生两种结果。一种是程序提供的功能跟用户之前要求的功能保持一致;这个就是未来使用程序的用户想要达到的效果。还有一种是程序提供的功能跟用户预定的功能需求有差距;总的来说,这个阶段主要还是验证程序跟需求文档之间的差距问题。
6.4 功能测试
通过设计一些数据检验学生宿舍管理系统的功能是否根据预定进行数据输出,以此检验系统功能是否合格。接下来就选取部分功能进行检测。
6.4.1 登录功能测试
学生宿舍管理系统提供的服务是给规定的用户使用的,其他无关用户是无法进入的,登录功能就是检验访问者是否是符合要求的用户,及时将不符合要求的用户拒之门外。以此保证系统安全。这里以管理员身份进行检测,测试的内容见下表。
表6.1 登录功能测试表
账号 密码 身份 结果
guanliyuan guanliyuan 管理员 提示成功,进入系统后台
user guanliyuan 管理员 提示失败,停留在登录页面
guanliyuan user 管理员 提示失败,停留在登录页面
6.4.2 修改密码功能测试
这个功能的设置也是出于对系统的保护,让操作人员的密码可以一直变化,减少泄露的几率。测试的数据见下表。通过验证旧密码,确认操作者是本人,然后开始对新密码进行登记。一般修改完密码后,需要再次登录。
表6.2 修改密码功能测试表
旧密码 新密码 密码修改结果
guanliyuan gly 成功
user gly 失败
guanliyuan 失败
6.5 测试结果
经过测试,从学生宿舍管理系统功能的角度来看,本系统各个功能在符合用户要求的情况下,也能保持运行正常。从学生宿舍管理系统性能的角度来看,本系统可以保持24小时不间断运行,而且面对用户的误操作行为,有提前设置的错误反馈机制应对,另外,本系统界面布局考虑用户阅读习惯,可以让用户短时间内获取需要的内容。总之,本系统可以投入生产,帮助用户解决实际问题,发挥其应用价值。