《F4+2团队项目需求改进与系统设计》
任务一
a.分析《动态的太阳系模型项目需求规格说明书》初稿的不足。
任务概述描述的有些不具体,功能的规定不详细,在此次作业进行了修改。
b.参考《构建之法》8.5节功能的定位和优先级,给出功能分析的四个象限。
第一象限(杀手功能,必要需求):1.系统有多视角。2.太阳系是可以放大、缩小的,并且保证放大、缩小后行星照样能正确地运行。
第二象限(外围功能,必要需求):模拟系统界面逼真且美观,功能实用。
第三象限(外围功能,辅助需求):用户进入系统可以直接对系统进行操作。
第四象限(杀手功能,辅助需求):近日、远日行星的显示,放大、缩小、左、右、上、下移动功能,多视角观察太阳系概貌,行星运行、静止以及初始状态复原。

c.团队项目的WBS

d. 请以讲故事的方式介绍你们的项目中的功能,介绍一个场景,用户如何使用这项功能,解决了用户的什么问题。
l 场景:课堂教学
教师:同学们上课,这节课我们来认识一下太阳系概貌。(单用户系统所以无需输入密码及用户名等,直接打开系统,初始界面是整个太阳系静态图)
学生:请问老师,这些行星如何在太阳系中运动呢?
教师:那现在同学们请认真观看大屏幕。(先选定侧视视角,各个行星自己开始根据原先设定好的运行。教师也可以放大,缩小,左(右,上,下)移动整个太阳系,在太阳系运行过程中,可以暂停行星的运行,使太阳系处于静止状态,再次点击运行,行星会接着动起来。如果想回到最初的状态,点一下复原按钮,整个太阳系又回到了此视角下的最初始的状态。)
学生:老师,我对这些行星的运行方式还是有些不清楚,有其他角度的运行方式吗?
教师:我们现在来看一下,这些行星在俯视的时候是怎样运行的。(回到主界面,选择俯视模式,系统自己播放,教师也可与测试模式一样,实现放大、缩小、平移、静止和运行功能)
l 解决的问题
此系统,在功能方面,通过虚拟仿真技术发挥信息教学的优势,使得学生快速的认识学习了太阳系,以及各个行星的运行方式。并通过侧视与俯视两个视角,更清晰直观的观看了太阳系各行星的运行。教师在界面上进行放大,缩小,左(右,上,下)移动整个太阳系,;给学生以沉浸感,使学生能体验虚拟世界的太阳系。在界面设计方面,综合考虑了教学课堂要吸引学生注意力且调动学生积极性,尽量做到了界面的美观和功能的实用。
e. 团队成员估计各自任务所需时间
|
团队成员 |
任务 |
估计时间(天) |
|
马仲山 |
可行性研究,编码 |
18 |
|
马世芳 |
需求分析,总体设计 |
13 |
|
马婧(12) |
基于原型的项目调研,模块设计 |
9 |
|
马婧(13) |
基于原型的项目分析,原型设计 |
9 |
|
张俊逸 |
需求改进与系统设计 |
8 |
|
马邵辉 |
单元测试,综合测试 |
6 |
f. 使用WBS工具,拆分项目,创建自己的看板图和燃尽图。

燃尽图:

任务二:
总体设计的基本目标就是概要地回答系统应该如何实现。所以设计在任何工程产品或系统中,是开发阶段的第一步。设计可以定义为应用各种技术和原理,例如UML图模型,就是一个很好的实现总体设计的工具。系统的总体设计使在前面系统分析的基础上,为后期将要构造的系统实体建立一个模型。构造这样的模型就需要很多设计模型。而这些设计模型当中,,一些基本的技术和工具起到了重要的作用。才使得总体设计游刃有余。完成开发。以下为总体设计结构图:

以下为需求分析阶段的用例图:

任务三
团队项目概要设计说明书github地址:https://github.com/teammzs/project9
团队项目软件需求规格说明书github地址:https://github.com/teammzs/Demo7/tree/master
任务四
问题一:系统总体设计和需求分析的关系是什么?
答:在我认为需求分析的结果是系统总体设计的依据。因为有了需求才会有设计,通过需求分析进行系统总体设计,在软件项目的开发过程中,系统的需求分析和设计是至关重要的环节,是软件设计和编码的基础,也是项目开始实施最容易忽视的环节,需求分析的质量直接关系到项目的进度和项目的成败。
问题二:如何设计系统的总体结构?
答:首先我在上一个问题中提到的一样,需求分析使系统总体结构设计的依据和方向,所以系统结构设计还是要以需求分析开始。系统设计工作应该自顶向下地进行。首先是总体设计,分模块设计和配置方案设计,然后再进行详细设计,逐层深入进行直至进行每一个模块的设计。总体设计主要是指在需求分析的基础上,对整个系统的划分(子系统)、机器设备(包括软、硬设备)的配置、数据的存贮规律以及整个系统实现规划等方面进行合理的安排。而详细设计是在系统总体结构之下,进行详细的分支设计。
项目分工
|
分工 |
成员 |
任务量 |
|
任务一 |
张俊逸、马世芳 |
40% |
|
任务二 |
马仲山 |
30% |
|
任务三 |
大马婧、小马婧 |
20% |
|
任务四 |
马绍辉 |
10% |
项目总结:
在经过此次的软件工程团队项目,本组成员对于软件开发的流程有了详细的理解。作为一个团队,统筹规划是多么的重要;并且要想使一个团队高效地运转起来,有多么的不容易。一开始,我们都觉得,对于开发一个软件,只要在最后能够生产出一个可以使用的产品就算完成任务,而对于项目文档以及前期设计并没有太看重。但是在实际的实践操作过程中,我们发现,盲目地去编写代码,而没有一份详细的规划作为指导,会极大程度地降低我们的开发效率。所以在一开始我们组成员进行了详细的分工,明确了各自的任务以及要求,而小组成员完成的也很认真及时,最终确保了实验的顺利进行。
《F4+2团队项目需求改进与系统设计》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- php unset()函数销毁变量但没有实现内存释放
<?PHP $a = "hello";$b = &$a;unset( $b );echo $a; // 输出 helloecho $b; // 报错$b = &quo ...
- 树结构数据的展示和编辑-zTree树插件的简单使用
最近在项目当中遇到一个需求,需要以树结构的方式展示一些数据,并可对每一个树节点做内容的编辑以及树节点的添加和删除,刚好听说有zTree这个插件可以实现这样的需求,所以在项目的这个需求完成之后,在博客里 ...
- Unirest-拼装http请求发送rest接口
public static Integer getInfo(String name) { HttpResponse<Integer> httpResponse = null; try { ...
- 深入理解 Java 内存模型(一)- 内存模型介绍
深入理解 Java 内存模型(一)- 内存模型介绍 深入理解 Java 内存模型(二)- happens-before 规则 深入理解 Java 内存模型(三)- volatile 语义 深入理解 J ...
- Python tricks(3) -- list和dict的遍历和方法
每个人在使用python的过程中都会遍历list和dict. List遍历 最常用最简单的遍历list的方法 a = ["a", "b", "c&qu ...
- Java SE 基础知识(String,Array)
String 类: 1. 对于String对象的相等性判断来说,请使用equals()方法,而不是==.String的equals()是判断当前字符串与传进来的字符串的内容是否一致. 2. Strin ...
- php抛出异常
php抛出异常:throw new Exception("xxxxxx!"); 实例代码: try{ if ($mysqli->connect_errno) { sleep( ...
- OAuth : open Authorization 开发授权
OAuth : open Authorization 开发授权 用户访问慕课网,慕课网请求OAuth登陆页面,用户输入QQ号码和密码,这个页面的域名不属于慕课网是属于QQ的,随后把结果给慕课网,这个结 ...
- Django框架----render函数和redirect函数的区别
render函数和redirect函数的区别: render:只会返回页面内容,但是未发送第二次请求 redirect:发挥了第二次请求,url更新 具体实例说明 render: redirect:
- 各种语言中的可变参数(java、python、c++、javascript)
索引: java python c++ js 1.Java public class Animal { // 接受可变参数的方法 void eat(String... Objects) { for ( ...