《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 ...
随机推荐
- why use reverse proxy in asp.net core
开篇论点 Asp.net Core自带了Kestrel, 为什么我们还要使用诸如IIS.Apache或者Nginx来做反向代理呢? 原因分析 Kestrel用来承载Asp.net Core的动态内容是 ...
- Centos7.5 添加环境变量并生效
配置环境变量用户 jiangshan为例(base) [jiangshan@localhost ~]$ export PATH=$PATH:/usr/local/MATLAB/R2014a/bin/( ...
- [转帖]InfiniBand, RDMA, iWARP, RoCE , CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念
InfiniBand, RDMA, iWARP, RoCE , CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念 2017-12-15 15:37:00 jhzh951753 ...
- 关于wireshark的过滤器规则学习小结
关于wireshark的过滤器规则学习小结 [前言] 这两天一直在熟悉wireshark的过滤器语法规则,以前也接触过这个工具,但只是学校老师教的如何去选择一个接口进行抓取,以及如何去分析一个包的数据 ...
- TypeScript 命名空间
随着代码的不断增加,我们需要有组织的组合代码.TypeScript在1.x版本中提供了命名空间的方式进行代码组织,这也是TypeScript官方代码的组织方式.同时,TypeScript还实现了Jav ...
- Python中的动态属性与描述符
动态属性与属性描述符 属性描述符是什么? 在解释属性查找顺序之前我们需要了解Python中的属性描述符,属性描述符作为其他类对象的属性而存在,实现了特殊方法中的get.set.delete中的一种 ...
- Linux上安装pstree命令(-bash: pstree: command not found)
一.pstree命令的安装 1.在 Mac OS上 brew install pstree 2.在 Fedora/Red Hat/CentOS yum -y install psmisc 3.在 Ub ...
- java-websocket客户端 断线重连 注入Service问题
java版客户端: 使用开源项目java-websocket, github地址: https://github.com/TooTallNate/Java-WebSocket github上有很多示例 ...
- 【转载】使用Class.getResource和ClassLoader.getResource方法获取文件路径
自从转投Java阵营后,一直发下Java程序的路径读取异常麻烦,因此查阅了比较多的版本内容,整合了一份自己的学习笔记.主要使用Class及通过ClassLoader来动态获取文件路径. 查阅链接如下: ...
- 关于Windows下的访问控制模型
在探索Windows操作系统的过程中,发现很多有意思 的东西. Windows下的访问控制模型也是我在Github上浏览代码时,无意中发现的. 项目地址 https://github.com/Krut ...