实验十 团队作业6-团队项目系统设计改进与详细设计
项目 | 内容 |
---|---|
这个作业属于哪个课程 | http://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 | https://www.cnblogs.com/nwnu-daizh/p/10946673.html |
团队名称 | 坐热板凳组 |
作业学习目标 | ①掌握面向对象软件设计方法;②完善系统设计说明书,掌握面向对象详细设计内容、设计原理和技术。 |
团队博客地址 | https://www.cnblogs.com/happiers// |
项目名称 | 个人记账本(微信小程序) |
1.团队项目系统设计改进总结
我们在上一次的项目系统设计说明书中没有很好的完成软件系统结构模型的建模设计,只做了基本的系统项目原型模型,项目系统结构的整体设计不够完善。本阶段完成系统的大致设计并明确系统的数据结构与软件结构。本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌,把它加工成在程序细节上非常接近与源程序开发的软件表示。在WBS中我们加入了Leangoo的燃尽图和任务分布图,可以克显而易见的清楚,每个组员的分工。
2.团队项目github仓库地址链接
github地址. https://github.com/jessiyx/sethotchair
3.具体分工及占整个系统设计文档任务的工作量比例
项目成员 | 具体任务 | 工作比例 |
---|---|---|
朱艺璇 | 《软件系统详细设计说明书》 | 30% |
王潇 | 《软件系统设计说明书》改进 | 30% |
达星斗 | 查询资料,编写博客 | 20% |
刘振华 | WBS的编写,资料的补充 | 20% |
4.团队项目详细设计过程总结
在经过此次的软件工程团队项目,本组成员对于软件开发的流程有了详细的理解。作为一个团队,统筹规划是多么的重要;并且要想使一个团队高效地运转起来,有多么的不容易。一开始,我们都觉得,对于开发一个软件,只要在最后能够生产出一个可以使用的产品就算完成任务,而对于项目文档以及前期设计并没有太看重。但是在实际的实践操作过程中,我们发现,盲目地去编写代码,而没有一份详细的规划作为指导,会极大程度地降低我们的开发效率。所以在一开始我们组成员进行了详细的分工,明确了各自的任务以及要求,而小组成员完成的也很认真及时,最终确保了实验的顺利进行。
在编写团队项目设计书的过程中,我参考了 参考国标GB8567——88中《软件系统详细设计说明书》格式,按照这个格式编写。并且精化了类的属性和方法以及对输入项和输出项进行了描述。现在觉得我们的项目大框架差不多出来了。在一周一周的实验过程中,我们小组的越来越团结,希望在之后的项目实施过程中也能有这样的默契。
5.回答三个问题:
(1)何谓软件体系结构、软件设计模式?
答:
①软件体系结构:
软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加 工的信息,连接构件把体系结构的不同部分组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本 上得到保持。
②软件设计模式
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为 了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
主要分为三类。
第一类为创建类
创建类设计模式中,要解决的是对象的创建问题,一般面向对象的编程,是先定义好所有类,然后将类实例化为对象,可现实软件开发过程却没有这么简单。
创建类设计模式中最有名的是工厂模式,该模式要解决的一个问题是,在程序中直接实例化对象时,为避免过多的参数及控制代码,造成程序与被实例化对象过多耦合,故设计出一个工厂类,专门用来实例化所需要的对象。客户程序只需要与工厂类打交道,调用工厂类的创建方法,将其它所需要的对象创建出来。
由工厂模式,又衍生出虚拟工厂模式,与工厂模式不同的是,工厂模式只能创建出同一类对象,比如客户给不同尺寸,要求工厂生产某型号的鞋子。而虚拟工厂是一次性创建出一组对象,且这组对象之间还有一定关联关系,比如客户要求一个大工厂生产某身高尺寸的一整套衣服,包括衣服裤子和鞋子。
创建类设计模式中,还包括原型,构建者,单例这三种模式。
第二类为结构类
随着系统功能的不断扩展,功能模块间的复用也越来越多,类与对象间的结构也变得越来越复杂,设计不好,类之间关系将变得混乱,结构类设计模式,正是为了解决这类关系混乱问题的。
外观模式是一个比较典型的结构类设计模式,当有多个子系统需要被调用时,如果各个子系统接口不同,客户程序需要与各个子系统接口打交道,一来麻烦,二来耦合性也大大提高。为了解决这个问题,外观模式在所有子系统前套上一层统一接口的外观类,外部程序调用时则变得非常简单,与统一规格的外观类打交道即可。
适配器,桥接,组装,享元,代理 也都属于结构类设计模式。
第三类为行为类
行为类设计模式比较多,总共有11个。
其中观察者模式是为了解决一个对象状态变化需要同时更新到多个对象中的问题。
一般的做法,要不是由被更新的对象定时查看目标对象的状态,就是由目标对象实时直接调用被更新对象的方法。问题是前者实时性不够还浪费计算资源,后者则耦合度很高,每次需要更新的对象数量或者接口规格变化时,都需要修改目标对象的更新方法。观察者模式引入一个注册类,所有需要更新的对象类都继承注册类,拥有统一的更新接口规则,这样目标对象状态发生变化时,只需要依次调用所有注册类的实例更新方法即可,很好地解决了这个问题。
一个很典型的例子是员工离职时,停用该员工各系统的账号问题。
职责链则是为了解决任务在多个对象间传递的问题,最典型的一个例子是按金额大小审批到不同层级问题,假设每个层级的主管有不同审批额度,如果由调用程序自己来决定要送到哪几个主管审批,程序逻辑将非常复杂。职责链模式为每层主管映射一个对象,每个对象设置自己的可审批额度和自己的上一级主管,这样调用程序只需要将审批任务交给自己的直属主管即可,之后任务根据审批额度一层一层自动流转到符合额度要求的主管那里完成最终审批。
除了这两个设计模式,行为类模式还包括命令,模板,访问者,备忘录,状态,策略,中介者,迭代,解释器等9个模式。
(2)什么是C/S与B/S结构?
答:
B是英文单词“Browser”的首字母,即浏览器的意思;S是英文单词“Server”的首字母,即服务器的意思。B/S就是“Browser/Server”的缩写,即“浏览器/服务器”模式。B/S结构是随着互联网的发展,web出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。你只需要在自己电脑或手机上安装一个浏览器,就可以通过web Server与数据库进行数据交互.C是英文单词“Client”的首字母,即客户端的意思,C/S就是“Client/Server”的缩写,即“客户端/服务器”模式。C/S结构是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。比如我们手机中安装的微信、qq、王者荣耀等应用程序就是C/S结构。
再解释的深入一点就是B/S架构即浏览器和服务器架构模式。它是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构。在这种架构下,用户工作界面是通过 WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。B/S架构是WEB 兴起后的一种网络架构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了 系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、 Informix或 SQL Server等数据库。浏览器通过Web Server同数据库进行数据交互。 这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成 本和工作量,降低了用户的总体成本(TCO)。
(3)什么是MVC设计模式?
答:
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面 显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的 发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
最典型的MVC就是JSP + servlet + javabean的模式。
Model(模型)表示应用程序核心功能与数据(比如数据库记录列表)。
View(视图)负责为用户显示信息(数据库记录)。一个模型可能拥有多个视图。
Controller(控制器)处理输入(写入数据库记录)。
模型的责任
从数据库取出数据,并且赋予数据变量
负责业务逻辑实现
负责数据验证,然后将数据存入数据库
视图的责任
获取用户输入
向controller发送处理请求
接收来自Controller的反馈并将model的处理结果显示给用户
控制器的责任
接收来自客户的请求
调用model业务逻辑方法
调用View显示执行结果