实验二 软件工程个人项目
Deadline:2018-3-21 10:00,以博客发表日期为准
评分标准:
- 按时交 - 有分(满分30分,代码和博客各15分),检查项目包括:
- 未提交项目源码到Github上,代码部分不得分;未提交博客到班级博客上,博客部分不得分;
- 根据项目完成质量累计加分,完成基本功能原则上不超过满分15分,完成软件的附加功能,给予加分
- 博文规范(行文清晰流畅,如果行文中涉及代码,请使用博客园自带的代码控件,或使用MarkDown的语法块)
1、实验目的与要求
(1)掌握软件项目个人开发流程。
(2)掌握Github上发布软件项目的操作方法。
2、实验内容和步骤
任务1:
软件基本功能要求如下:
- 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
- 当程序接收的参数为4时,以下为输出文件示例。
软件附加功能要求如下:(请有余力的同学完成)
- 支持有括号的运算式,包括出题与求解正确答案。注意,算式中存在的括号必须大于2个,且不得超过运算符的个数。(5分)
任务2:
- 将包含任务1源码的完整工程文件提交到你注册Github账号下的项目仓库中。
- 从助教提供的地址克隆演示示例,你的工程应该与演示示例的目录及主要文件名保持一致。
- 将包含任务1源码的完整工程文件提交到你注册 Coding.net 账号下的项目仓库中。
Github如何托管项目?
参考文章:http://www.cnblogs.com/edisonchou/p/5990875.html
学习视频:https://www.bilibili.com/video/av10475153/
测试须知
测试机为Windows环境,所有提交到Github上的项目必须包含src文件夹,在src文件夹中必须包含名为Main.java文件,且Main.java中包含 public static void main(String[] args) 方法。同时请注意以下三点:
- 生成文件时请使用相对路径(也就是说,不要带任何C:\ 这样的路径),生成的 results.txt 文件需在项目的根目录下。如何自测:在windows系统中打开命令行界面(Linux/Mac 使打开终端,后续操作一致),进入项目所在根目录下,使用 javac src/Main.java,然后再使用 java src/Main 1,生成的results.txt在当前目录下。
- 本次项目较为简单,故不得使用除限定版本jdk与jre外的额外依赖包。
一个示例项目目录如下所示:
助教在测试学生提交代码时,将以命令行运行脚本的方式进行测试,参数及其约定如下:
值得一提的是,测试数据中有可能出现错误的参数,比如出现java Main abc 这样的命令,你的程序需要自行处理错误情况,并给出合适的错误提示信息。
任务3:完成个人项目报告博文作业
博文名称要求:学号+小学四则运算练习软件项目报告;
博文中要有任务1源码在Github的仓库主页链接地址;
博文作为个人项目实施过程的文字资料,请完整包含下面7个部分:
- 需求分析:即使老师已经给出了题目,也要对题目的需求做分析。
- 功能设计:题目的需求,以及从真实调研里获得的需求后,要对程序做功能设计,有同学会问:“不就是出题嘛,有啥好设计的?”,其实,题目要求的只是项目基本的功能要求,自己思考和调研会有超出题目要求的需求,甚至你有天才的设计,作出特色的功能。因此,功能会有:基本功能 扩展功能。
- 设计实现:设计包括你会有哪些类,这些类分别负责什么功能,他们7之间的关系怎样?你会设计哪些重要的函数,关键的函数是否需要画出流程图?函数之间的逻辑关系如何?
- 测试运行:你的程序必须是可运行的,请展示程序的运行截图,包括题目要求实现功能对应的运行截图。这些截图说明你的程序确实完成了项目需求,如果程序实现了扩展需求,也请大方秀出来。
- 核心代码:粘贴自己觉得比较独特的或满意的代码片段,用博客园正确的代码控件来显示。(提示:要有必要的注释说明,提示:不要贴所有代码!不符合规定的要倒扣分)
- 总结:你设计的程序如何实现软件设计的'模块化'原则。
- 展示PSP,这个环节重要的是让自己看到自己的估计和实际消耗时间,哪个环节耗时最多,哪个环节估计和实践相差巨大?为什么?
PSP参考:http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html
PSP2.1
|
任务内容
|
计划完成需要的时间(min)
|
实际完成需要的时间(min)
|
Planning
|
计划
|
8
|
6
|
· Estimate
|
· 估计这个任务需要多少时间,并规划大致工作步骤
|
8
|
6
|
Development
|
开发
|
82
|
88
|
·· Analysis
|
需求分析 (包括学习新技术)
|
6
|
10
|
· Design Spec
|
· 生成设计文档
|
5
|
6
|
· Design Review
|
· 设计复审 (和同事审核设计文档)
|
4
|
6
|
· Coding Standard
|
代码规范 (为目前的开发制定合适的规范)
|
3
|
3
|
· Design
|
具体设计
|
10
|
12
|
· Coding
|
具体编码
|
36
|
21
|
· Code Review
|
· 代码复审
|
7
|
9
|
· Test
|
· 测试(自我测试,修改代码,提交修改)
|
13
|
21
|
Reporting
|
报告
|
9
|
6
|
·· Test Report
|
· 测试报告
|
3
|
2
|
· Size Measurement
|
计算工作量
|
2
|
1
|
· Postmortem & Process Improvement Plan
|
· 事后总结 ,并提出过程改进计划
|
3
|
3
|
如果所有的环节你都认真做了,那么,此处你应该会有很多经验愿意与大家分享。