《3+1团队》第七次作业:团队项目设计完善&编码
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 任课教师博客主页链接 |
| 这个作业的要求在哪里 | 作业链接地址 |
| 团队名称 | 3+1团队 |
| 团队博客地址 | https://home.cnblogs.com/u/3-1group |
| 项目名称 | 一起种水果 |
1.团队项目github仓库地址链接
https://github.com/HaiYou667/3-1Growingfruits
(1)Github仓库上传《软件设计方案说明书》
(2)Github仓库上传《软件编码规范说明书》
(3)Github仓库上传项目已完成源码
2.项目技术设计方案软件设计准则
●抽象:
在定义一个类的时候,实际上就是把一类事物的公有的属性和行为提取出来,形成一个物理模型,这种研究问题的方法称为抽象。
接口和抽象类实际就是抽象的体现,以系统的用户类为例,定义了用户注册、查询等接口,在后期如果用户有新的需求,可以进行扩充。
接口

实现

(1)强内聚/弱耦合/模块化
本系统划分了三大模块、会员管理、买家管理、管理员管理。我们组的设计采用三层架构将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL),区分层次的目的即为了“高内聚,低耦合”的思想。
内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系;
耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。

(2)信息隐藏和封装:
封装是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
●良好的封装能够减少耦合。
● 类内部的结构可以自由修改。
●可以对成员变量进行更精确的控制。
●隐藏信息,实现细节。类结构分离了接口与实现,从而支持了信息隐藏
在我们的系统中,以Admin实体为例,把Admin的属性封装,private仅能自己访问。

(3)界面和实现的分离:
本系统采用三层架构,三层架构将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。
●表现层(UI):就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
●业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
●数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。MVC主要用于表现层,3层主要用于体系架构,3层一般是表现层、中间层、数据层,其中表现层又可以分成M、V、C,(Model View Controller)模型-视图-控制器。三层架构模式与MVC模式就很好的体现了系统界面和功能实现的分离。

(4)错误情况处理
java有两种错误情况,如下图所示:

本系统采用java的异常处理机制(try…catch…finally),代码区如果有错误,就会返回所写异常的处理。e.printStackTrace();在命令行打印异常信息在程序中出错的位置及原因。

(5)程序模块对于运行环境、关联模板、输入输出参数有什么假设
运行环境:
JDK:1.8
Tomcat :9.0
Eclipse:4.6.3
数据库:Oracle
(6)设计方案对于应对变化的灵活性
在系统设计时我们定义了各种接口,便于系统功能的扩充,也体现了面向对象的思想。
(7)设计方案的软件重用情况
软件成分的重用课划分为三个级别:【代码重用】【设计结果重用】【分析结果重用】。
典型的可重用软件成分有项目计划、成本估计、体系结构、需求模型和规格说明、设计、源代码、用户文档和技术文档、用户界面、数据、测试用例。
我们系听中的重用部分有源代码、用户界面。源代码的重用体现在登录注册功能,采用了以往写过的登录注册的代码。用户界面我们模仿了京东的界面。
(8)设计中采用的启发式规则
启发式规则是一种经验规律,对该经设计和提高软件质量具有重要的参考价值,在我们的系统中,设计结果十分的清晰易懂,用词一致且定义明确。均设计了简单的类,并且没有包含太多的属性。
3.作业总结
(1)团队分工及所占比例
| 团队成员 | 分工 | 工作量比例 | 完成时间 |
|---|---|---|---|
| 王雯涵 | 编码、编写博客,编写《软件设计方案说明书》 | 30% | 10h |
| 郭佳 | 编码、编写《软件编码规范说明书》,编写《软件设计方案说明书》 | 30% | 10h |
| 麻存滔 | 编码,燃尽图 | 20% | 6h |
| 邹立源 | 编码,燃尽图 | 20% | 6h |

(2)本系统燃尽图

(3)每位成员结合任务分工总结本次实验心得,最后由项目组长进行总结陈述。
本次实验我们更加深了面向对象分析与设计的思想,面向对象的分析设计方法是致力于解决传统软件研发过程中由于软件模块化结构化程度不够高带来的软件重用行差、软件可维护性差、开发出的软件不能满足用户需要等方面的问题。面向对象包括对象、对象的状态和行为、类、类的结构、消息和方法。对象包含对象的唯一性、抽象性、继承性多态性的重要特征。面向对象的要素包含抽象、封装、共享三方面。
在系统设计过程中,我们坚持面向对象软件设计原则,有已调配是单一职责原则,所以我们尽可能的去分解了这些职责,用不同的类去承担不同的职责。
OOA与OOD之间没有明显的界限。OOA与OOD的不可分割性正好说明了OO思想的强大,即软件过程阶段的无缝连接,在交流与沟通中不会产生很大的鸿沟,这也正是相对于结构化的优点之一,因为从功能模块到模块详细控制逻辑设计两者之间的联系十分紧密,需要分析人员的再沟通。
本次实验让我们对面向对象的理念,以及相关方法、设计模式有了更深刻的理解与掌握。慢慢认识到面向对象分析设计的学习就是培养思想的一种过程,这种思维方式还是要大量的时间才能灵活的运用。目前的阶段是能说是知到有这样一种设计思想,有这种解决问题的房按,至于在何时使用、应该怎么使用就需要在今后的经验中去积累了。
《3+1团队》第七次作业:团队项目设计完善&编码的更多相关文章
- 《你说对就队》第七次作业:团队项目设计完善&编码
<你说对就队>第七次作业:团队项目设计完善&编码 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 <你说对就队> ...
- 《毛毛虫团队》第七次作业:团队项目设计完善&编码
一:实验名称:团队项目设计完善&编码 二:实验目的与要求 掌握软件编码实现的工程要求. 三:实验步骤 任务一:团队软件项目设计完善: 任务二:团队软件项目编码实现: 任务三:在团队博客发布博文 ...
- 《快活帮》第七次作业:团队项目设计完善&编码
项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十一 团队作业7-团队项目设计完善&编码 团队名称 快活帮 作业学习目标 掌握 ...
- 《逆袭团队》第七次作业:团队项目设计完善&编码
实验十一 团队作业7:团队项目设计完善&编码 内容 项目 软件工程 任课教师博客主页链接 作业链接地址 团队作业7:团队项目设计完善&编码 团队名称 逆袭团队 具体目标 (1)完善团队 ...
- 《hello-world团队》第七次作业:团队项目设计完善&编码
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十一 团队作业7:团队项目设计完善&编码 团队名称 <hello--w ...
- 《奋斗吧!菜鸟》 第七次作业:团队项目设计完善&编码
项目 内容 这个作业属于哪个课程 任课教师链接 作业要求 https://www.cnblogs.com/nwnu-daizh/p/10980707.html 团队名称 奋斗吧!菜鸟 作业学习目标 团 ...
- 实验十一 团队作业7:团队项目设计完善&编码
实验十一 团队作业7:团队项目设计完善&编码 实验时间 2019-6-6 Deadline: 2019-6-12 10:00,以团队随笔博文提交至班级博客的时间为准. 评分标准: 按时交 – ...
- 实验十一 团队作业7—团队项目设计完善&编码测试
实验十一 团队作业7—团队项目设计完善&编码测试 实验时间 2018-6-8 Deadline: 2018-6-20 10:00,以团队随笔博文提交至班级博客的时间为准. 评分标准: 按时交 ...
- 《ABCD组》实验十一 团队作业7:团队项目设计完善&编码
<ABCD组>实验十一 团队作业7:团队项目设计完善&编码 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...
- Spring_Four -- 团队项目设计完善&编码测试
团队项目设计完善&编码测试 1.文档<软件设计方案说明书>github地址:https://github.com/gzyt/SRS 2.项目集成开发环境 数据库:Mysql 5.0 ...
随机推荐
- 原生xgboost中如何输出feature_importance
网上教程基本都是清一色的使用sklearn版本,此时的XGBClassifier有自带属性feature_importances_,而特征名称可以通过model._Booster.feature_na ...
- qt model--view-delegate模式的界面设计概念,ListView用法
最经典的界面设计模式,必须知道. 作为 一种经典到 不能 再 经典 的 架构 模式, qt的model--view-delegate大 行其 道 有其 必然 的 道理. 通过 把 职责. 性质相近的 ...
- webpack to package typescript & scss
Demo2操作手册 本Demo演示如何配合各种loader进行稍复杂的使用 准备环境 初始化环境, cd到demo目录之后, 执行如下命令: npm init -y npm install webpa ...
- CodeForces-1159B-Expansion coefficient of the array
B. Expansion coefficient of the array time limit per test:1 second memory limit per test:256 megabyt ...
- Django开发常用方法及面试题
目录 1.对Django的认识? 2.Django .Flask.Tornado的对比 3.什么是wsgi,uwsgi,uWSGI? 4. django请求的生命周期? 5. 简述什么是FBV和CBV ...
- input的小技巧 清除自动记录
input 消除自动记忆功能 在html里就可以直接清除了<input type="text" autocomplete="off"> input ...
- PAT(B) 1039 到底买不买(Java)字符串
题目链接:1039 到底买不买 (20 point(s)) 题目描述 小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串 ...
- babel tsc webpack
我要用啥?js的话:babel编译+webpack模块打包ts的话:tsc编译成js+babel编译+webpack模块打包浏览器情况:如果您的浏览器支持es6所有语法那么就可以只用webpack来处 ...
- jacascript Ajax 学习之 JQuery-Ajax
jQuery 对 ajax 操作进行了封装,在 jQuery 中 $.ajax() 属性最底层的方法,第2层是 load().$.get() 和 $.post() 方法,第3层是 $.getScrip ...
- 怎样在python中写注释
python中的注释是以井号: # 开头, 一般会在#后加一个空格. # This is a comment print("Hello, World!") 多行注释的语法是三引号: ...