天天看点

基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

  对于可用性采取的是错误预防战术,即阻止错误演变为故障;在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生可能不知道自己的用户名和密码,此时可以在界面中显示一个温馨提示,从而告知学生其首测登录系统的用户名和密码都为其学号,而防止学生在不知情的情况下根据自己的思维方式屡屡输入用户名和密码却屡屡收到系统给出的错误提示,无法进入系统进行相关的操作,而由于多次输入错误而导致系统故障;当然在登陆界面中,点击“忘记密码”超链接后,接着在跳转的界面中输入相应的登陆条件后即可对自己的信息进行检索,可以对自己的信息进行修改,密码修改后,其次登陆都得使用此密码,这是考虑到人人都会有忘记密码的时候的情形以及需要对个人信息进行修改的情形,同样的管理员模块亦是如此,如若忘记密码或需要修改个人信息时,便可以以点击超链接的形式找回密码以及对信息作出修改,从而顺利的进入系统:(2)当以各自的身份进入到相对应的页面后,便可以进行相关的操作了,对于管理员来说,可以对学生和课程的信息进行增删改查的操作,对于信息的添加,我们都知道表中的每一条记录都有一个唯一的标识符来作为它们之间差异的体现,它们被其所标识,但是毕竟一个表中主码的值是不允许重复使用的,故在此处,我的界面上会在每一条记录的主码位置设计一个按钮,目的是为了检测此时插入的主码是否与已存入表中的记录的主码重复,这就在很大程度上避免了当你已经完整的把相关信息填完后,但是由于你重复的插入了主码而导致系统报错或导致系统故障,你又得反复重新输入新的信息;对于修改信息操作,我们都知道对于每一条记录,我们不能修改其主码,但是有些人并没有注意到这个问题,一旦修改了之后可能造成主码重复等等相关问题而导致系统报错,并且从逻辑上讲人或物的标识码一般是不会变的,被修改的情况是很小的,对于这种情况,我的系统会在信息修改这个界面把相关信息都显示出来,但是主码这一栏不允许编辑,将其设置为只读状态。

  易用性方面所采用的战术是运行时战术,即一旦系统执行,就可以为用户提供关于系统正在做什么的反馈;在本系统中主要体现为以下两个方面:(1)系统涉及到两个角色:管理员和学生,以不同的身份进入的是不同的主页,进行的也是不同的操作,当你进入了主页后,我的系统会提示你是以何种身份进入的,并提示你可以做哪些操作,这其实就类似用户使用说明手册一样,告诉你系统的功能,这在很大程度上为用户无头绪的使用减轻了负担,更容易增强用户的自信度和满意度;(2)对于系统涉及到的对各个实体信息的增删改查操作而言,只要用户采取了相关行动之后,系统会在用户所要进行操作的页面上显示出对应的信息操作提示,对于“删除”操作,点击“删除”按钮后,系统会提示“是否删除当前记录?”,选择“是”后,系统会提示“当前信息删除成功”,“否”则没有删除信息;对于学生选课这个模块,当学生选完课后,还可以对课程进行“退选”操作,点击“退选”按钮后,系统会提示:“是否要退选此课程?”,选择“是”后,系统会自动提示:“已成功退选该门课程”,“否”则没有进行退选操作。

  可修改性方面所采取的战术是防止连锁反应,即模块之间应尽可能的脱耦,对此可采用信息隐藏战术来实现,即把某个实体或系统的责任分解为更小的部分,目的是将变更隔离在一个模块内,防止变更扩散;在本系统中主要体现在以下三个方面:(1)对于登录模块,虽然会以不同的身份登录系统,但登陆时所进行的操作都是一样的,都需要输入用户名和密码,当用户点击登陆按钮后系统会对提交的数据进行校验,一般是设计DAO类来对其进行校验,从理念上讲完全可以设计一个公共DAO类来分别让AdminDAO类和StudentDAO类来继承共同使用此公共父类,来对信息进行校验,但是考虑到后期的使用,可能会为各个角色在登陆时设置不同的限制行为,而不至于在后期更改时“牵一发而动全身”,故本系统是分别设计了AdminDAO类和StudentDAO类对登陆进行验证;(2)同样的,对于进入系统后对不同实体的增删改查操作而言,本来也是可以为CRUD操作提供一个公共的DAO类来作为各个实体的DAO类进行CDUD操作的父类,但是为了今后对不同实体需求变更的操作进行轻量级的修改,以此分别设计了各个实体的DAO类,很大程度上把它们之间的耦合性和内聚性都降低了;(3)本系统所采用的是SSH框架,我们知道struts负责控制Service(业务逻辑处理类),从而控制Service的生命周期,这样层与层之间的依赖很强,属于耦合。这时,使用spring框架就起到了控制Action对象(Strus中的)和Service类的作用,两者之间的关系就松散了,以此就降低了它们之间的耦合度,这样在对系统的某一业务进行修改时,就只需找到其在ApplicationContext.xml中的配置位置,并对其进行修改即可,这样修改省事又方便。

  性能方面所采用的战术是改进资源需求战术,以此可以采用提高计算效率即算法的改进战术来实现;在本系统中主要是体现在对各个实体信息进行CRUD操作时的算法上,过去在对数据进行CRUD操作时用的是SQL语句,我们都知道SQL语句很长,执行效率也相对比较低下,对提交的数据进行相应的操作时间会很慢,针对此处本系统对数据操作采用的是Hibernate机制中的HQL查询以及Hibernate对封装后的数据对应的实体的CRUD操作,这属于面向对象编程的思想,很明显可以看出直接对实体进行操作的方式要比用SQL机制来对实体进行CRUD操作的方式的效率要高很多,故以此来提高系统对用户操作的响应能力。

  安全性方面采用的是抵抗攻击战术,即对传输数据进行加密,对数据提供检验;在本系统中体现在用户的登录模块,用户在进行登陆时都要输入自己的用户名和密码,用户只要登录系统,其所输入的信息,特别是密码很容易被获取,其隐私很容易被泄露,以此为了在一定程度上对用户的隐私进行保护,本系统采取了这样一个策略:首先Database中所存取的用户密码是已经经过MD5加密算法进行加密后的密文,接下来对于用户在登陆界面的密码框中所输入的密码,系统依然采用MD5加密算法先将其进行加密成为密文,接着对其进行校验后才决定用户接下来的操作,这样用户在向系统提交隐私数据时,为了抵抗攻击,本系统相当于为用户的隐私数据加了一把锁,从而使用户的隐私信息更具有安全性。

  对于可测试性方面,采取的是管理输入/输出采取将接口与实现分离的战术;在本系统中此战术是体现在对系统中的实体进行操作时为具体的实体的操作提供了一个公共的接口,其中定义了操作的方法,而在实体的操作类中具体去实现这些方法,这就把接口与实现进行了分离,以此来增强本系统的可测试性。