分析与设计

一、项目分工

  郭思卿201521122118    类图、原型设计

  陈凇旖201521122110    顺序图、编码规范

  林泓晖201521122107    需求分析、用例图、用例规约

二、需求分析

1.访问软件项目的真实用户

Q1:您的身份是?

  A.教师  B.学生  C.家长

Q2:您更倾向于什么难度的算术题?

  A.简单的   B.中等的   C.复杂的

Q3:您觉得,四则运算是否需要加入分数?

  A.需要  B.不需要  C.都可以

Q4:您觉得,可以评价及奖励的功能怎么样?

  A.很不错  B.不怎么样  C.没有用

Q5:您觉得,一个软件应该更注重实用性,还是更注重界面的华丽?

  A.实用性   B.界面的华丽   C.都可以

 

用户A  AABCB

用户B  ACCAA

用户C  BACBA

用户D  CCAAA

用户E  CBACB

用户F  AAAAB

用户G  ACCBA

用户H  ABBCC

用户I  BBAAB

用户J  CABCA

2.软件需求规格说明书

  四则运算

三、原型设计

   四则运算web

四、用例图、用例规约

1.用例图

2.用例规约(主要)

用例ID: tea02

用例名称: 出题

简要说明: 本用例描述已登录教师用户使用“出题”功能的过程

参与者: 教师,后台服务系统

涉众及其关注点:

----教师:手动输入题目,或者选择参数随机出题,设置开始时间、截止时间和做题时间

----后台服务系统:根据输入的参数随机出题,校对题目的合理性

前置条件: 教师用户已通过身份验证

后置条件:所出的全部题目合理,出题成功

扩展点:无

触发事件: 教师用户在功能列表页面选择“出题”功能

基本流: 

1.如果要手动出题,就在题目输入框中输入题目,每一行为一题,用换行表示间隔;如果要自动出题,就在各个参数输入框中选择输入出题参数,点击“出题”按钮,题目便显示在题目输入框中,可随意修改

2.点击“下一步”按钮

3.选择题目开始时间、截止时间和做题时间,点击“发布”按钮

4.显示“出题成功”,点击“返回”按钮就返回功能列表页面,用例结束

备选流:

*a. 在基本流的任何一步骤执行过程中用户选择“取消”操作:

         系统取消当前操作或撤销当前事务,返回功能列表页面,用例结束

*b. 在基本流的任何一步骤执行过程中用户超时(10秒):

         系统取消当前操作,返回功能列表页面,用例结束

2a. 题目无效:

         系统提示用户哪些题目是无效的,提示用户修改,页面不跳转,用例继续

3a. 时间不合理:

         系统提示用户时间设置不合理,提示用户修改,页面不跳转,用例继续

4a. 系统错误:

    1. 系统取消当前操作或撤销当前事务
    2. 系统提示用户相应的错误信息
    3. 用户选择返回,用例结束

成功场景:

    1. 出题成功:基本流
    2. 取消出题:基本流的某个步骤用户选择了“取消”操作
    3. 操作输入超时:基本流中的某个步骤客户输入超时

失败场景:

    1. 题目无效:基本流第1步骤中最后的题目不合理
    2. 时间不合理:基本流第3步骤中某个时间选项设置不合理

特殊需求:

         无

未解决问题:

         无

 

用例ID:01

用例名称: 注册

简要说明: 本用例描述未登录用户使用“注册”功能的过程

参与者: 未注册用户,后台服务系统

涉众及其关注点:

----未注册用户:输入个人信息,如果不是要注册教师用户则需要输入邀请码

----后台服务系统:验证用户输入的个人信息和邀请码,准确记录用户的个人信息

前置条件:未登录用户尚未注册账号

后置条件:用户成功注册账号,可以登陆系统

扩展点:无

触发事件: 未登录用户在登陆页面选择“注册”功能

基本流: 

1.按照提示输入个人信息,选择用户类型(教师、学生、家长),姓名和联系方式为必填,如果用户类型选择了学生或者家长,则需要输入邀请码,如果选择教师则不需要

2.点击“注册”按钮

3.显示“注册成功”,点击“返回”就返回到登陆页面,用例结束

备选流:

*a. 在基本流的任何一步骤执行过程中用户选择“取消”操作:

         系统取消当前操作或撤销当前事务,返回功能列表页面,用例结束

*b. 在基本流的任何一步骤执行过程中用户超时(10秒):

         系统取消当前操作,返回功能列表页面,用例结束

2a. 个人信息无效:

  系统提示个人信息中带有不支持的字符,或者是该个人信息已注册,提示用户修改页面不跳转,用例继续

2b. 邀请码错误:

         系统提示用户输入的邀请码错误,提示用户修改,页面不跳转,用例继续

3a. 系统错误:

1.系统取消当前操作或撤销当前事务

2.系统提示用户相应的错误信息

3.用户选择返回,用例结束

成功场景:

    1. 注册成功:基本流
    2. 取消注册:基本流的某个步骤用户选择了“取消”操作
    3. 操作输入超时:基本流中的某个步骤客户输入超时

失败场景:

    1. 个人信息无效:基本流第1步骤中输入的个人信息无效
    2. 邀请码错误:基本流第1步骤中输入的邀请码错误

特殊需求:

         无

未解决问题:

         无

 

用例ID:03

用例名称: 评价及奖励

简要说明: 本用例描述已登录教师或家长用户使用“评价及奖励”功能的过程

参与者: 教师用户或者家长用户,后台服务系统

涉众及其关注点:

----教师用户或者家长用户:输入评价,选择奖励

----后台服务系统:验证用户是否评价了或者奖励了,准确记录用户的评价及奖励

前置条件:教师用户或者家长用户身份已验证

后置条件:用户操作成功,可以返回再次查看,或者返回到某学生的已答题列表页面

扩展点:无

触发事件: 已登录教师或家长用户进入到某学生的某次作业中

基本流: 

1.在评价输入框中输入评价,选择奖励

2.点击“发布”按钮

3.显示“成功”,点击“返回”可再次查看刚才的内容以及自己的评价奖励,点击“返回列表”就返回到某学生的已答题列表页面,用例结束

备选流:

*a. 在基本流的任何一步骤执行过程中用户选择“取消”操作:

         系统取消当前操作或撤销当前事务,返回功能列表页面,用例结束

*b. 在基本流的任何一步骤执行过程中用户超时(10秒):

         系统取消当前操作,返回功能列表页面,用例结束

2a. 操作无效:

         既没有评价,也没有奖励,系统提示用户修改,页面不跳转,用例继续

3a. 系统错误:

1.系统取消当前操作或撤销当前事务

2.系统提示用户相应的错误信息

3.用户选择返回,用例结束

成功场景:

    1. 操作成功:基本流
    2. 取消操作:基本流的某个步骤用户选择了“取消”操作
    3. 操作输入超时:基本流中的某个步骤客户输入超时

失败场景:

    1. 操作无效:基本流第1步骤中既没有进行评价,也没有进行奖励

特殊需求:

  无

未解决问题:

  无

 

五、顺序图

 

六、类图

 

七、编码规范

1  缩进

  4个空格

2  行宽

  100字符

3  括号

  在复杂的条件表达式中,用括号清楚地表示逻辑优先级。

4  断行与空白的{ }行

单行:

if (condition)

                               DoSomething();

else

                               DoSomethingElse();

多行:

if ( condition)

{

                               DoSomething();

                               ...

}

else

{

                               DoSomethingElse();

                               ...

}

5  分行

不要把多行语句放在一行上。

a = 1; b = 2;           // bogus

if (fFoo) Bar();       // bogus

不要把不同的变量定义在一行上。

Foo foo1, foo2;         // bogus

6  命名

例:

function_Plus/functionPlus/funcPlus/fcPlus

7  下划线问题

  尽量不以下划线开头,融合命名长于3段则用下划线隔开

8  大小写问题

  类/类型/变量:名词或组合名词,如Member、ProductInfo等。

  函数则用动词或动宾组合词来表示,如get/set; RenderPage()。

9  注释

注释是用来解释程序做什么(What),为什么这样做(Why),以及要特别注意的地方的,如下:

//go thru the array, note the last element is at [len-1]

for (i = 0; i<len; i++)

{

                               DoSomeThing();

}

复杂的注释应该放在函数头,很多函数头的注释都是解释参数的类型等的,如果程序正文已经能够说明参数的类型in/out等,就不要重复!

注释也要随着程序的修改而不断更新,一个误导的(Misleading)注释往往比没有注释更糟糕。

另外,注释(包括所有源代码)应只用ASCII字符,不要用中文或其他特殊字符,它们会极大地影响程序的可移植性。

posted @ 2018-05-20 13:31  凛23  阅读(164)  评论(0编辑  收藏  举报