《BUG创造队》第六次作业:团队项目系统设计改进与详细设计

项目 内容
这个作业属于哪个课程 2016级软件工程
这个作业的要求在哪里 实验十 团队作业6:团队项目系统设计改进与详细设计
团队名称 BUG创造队
作业学习目标 1.编写完整《软件系统设计说明书》;2.完成团队项目《软件系统详细设计说明书》;3.掌握面向对象软件设计方法,深入学习UML图的绘制

任务一:团队项目系统设计改进

1.更新Github仓库《软件系统设计说明书》

        分析《社区物业管理系统项目软件系统设计说明书》初稿不足,已修改并上传。

2.团队项目系统设计改进总结

首先,我们根据老师上节课对我们UML图的评价,对UML图进行了改进,改进结果如下:

1.类图

2.E-R图

3.用例图

4.活动图

        通过本次系统设计改进,我们小组成员对UML图的绘制有了更深入的理解,纠正了我们之前对UML图的错误理解,并重新绘制了UML图。并且对项目设计的数据逻辑模块进行了详细的设计。最后,进行了更深入的需求调查,利用周末的时间去学校周围的小区进行调研,使我们的需求更加真实。

任务2:团队项目系统详细设计

1.Github仓库上传《软件系统详细设计说明书》

        已将《社区物业管理系统项目软件系统详细设计说明书》上传GitHub。

2.团队项目详细设计过程总结

        我们小组在面向对象设计阶段,通过UML图进一步细化分析系统设计模型,例如对项目的每个模块画出了详细的活动图;并且精化了类的属性和操作,详细定义类中服务参数和具体实现逻辑,对系统中各个模块的类进行了更加细致的区分;依据软件开发环境调整类的层次关系和关联关系,使项目的层次关系更加清晰;最后定义了软件数据库表结构,为实现社区物业管理系统进行铺垫。在本次团队项目系统详细设计的过程中,我们每个人都有参与讨论,并且提出了自己的见解,最后由仇素龙同学根据大家讨论的内容编写完成了《软件系统详细设计说明书》。

任务三:团队分工

1. 团队成员估计完成本次博客的任务分工

姓名 分工 完成的百分比
闫雪 博客的撰写,活动图的改进 30%
李蓉 博客的完善,用例图的改进 20%
后新莉 改进《软件系统设计说明书》,E-R图的改进 20%
仇素龙 编写《软件系统详细设计说明书》,类图的改进 30%

2. 团队成员估计完成本次博客各自任务所需时间

姓名 预计完成时间(min) 实际所用时间(min)
闫雪 80 100
李蓉 70 85
后新莉 70 75
仇素龙 90 95

本次心得:

        在本次的作业完成的过程中,我们团队的四个人各自明确了自己的任务,根据老师上课的点评,改进了我们的UML图;并且在周末到学校周围的小区进行了需求分析的实地调查。之后由后新莉同学将《软件系统设计说明书》的不足重新编写。其次,我们小组对软件系统的设计进行了更加详细的讨论,并由仇素龙同学完成《软件系统详细设计说明书》的编写。最后,由我和李蓉同学共同编写博客。在本次任务中,我们对UML图有了更加深入的理解,并且在大家各自分工明确的情况下共同完成了这次作业。

任务四:问题解答

1.何谓软件体系结构、软件设计模式?

      a.软件体系结构:
        虽然软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对软件体系结构进行了刻画,较为典型的定义有:
(1)Mary Shaw和David Garlan认为软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等
(2)Kruchten指出,软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。
(3)Hayes Roth则认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。
(4)David Garlan和Dewne Perry于1995年在IEEE软件工程学报上又采用如下的定义:软件体系结构是一个程序/系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。
(5)Barry Boehm和他的学生提出,一个软件体系结构包括一个软件和系统构件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一构件,互联和约束能够满足系统需求。
(6)1997年,Bass,Ctements和Kazman在《使用软件体系结构》一书中给出如下的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,"软件外部的可见特性"是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。
     b.软件设计模式:
       软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
常见23种模式概述:
1) 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
2) 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。
3) 桥梁模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
4) 建造模式(Builder):将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。
5) 责任链模式(Chain of Responsibility):为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
6) 命令模式(Command):将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
7) 合成模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。
8) 装饰模式(Decorator):动态地给一个对象添加一些额外的职责。就扩展功能而言,它能生成子类的方式更为灵活。
9) 门面模式(Facade):为子系统中的一组接口提供一个一致的界面,门面模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
10) 工厂方法(Factory Method):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method 使一个类的实例化延迟到其子类。
11) 享元模式(Flyweight):运用共享技术以有效地支持大量细粒度的对象。
12) 解释器模式(Interpreter):给定一个语言,定义它的语法的一种表示,并定义一个解释器,该解释器使用该表示解释语言中的句子。
13) 迭代子模式(Iterator):提供一种方法顺序访问一个聚合对象中的各个元素,而又不需暴露该对象的内部表示。
14) 调停者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的内部表示。
15) 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。
16) 观察者模式(Observer):定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
17) 原始模型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这个原型创建新的对象。
18) 代理模式(Proxy):为其他对象提供一个代理以控制对这个对象的访问。
19) 单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
20) 状态模式(State):允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
21) 策略模式(Strategy):定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
22) 模板模式(Template Method):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
23) 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作。该模式可以实现在不改变各元素的类的前提下定义作用于这些元素的新操作。

2.什么是C/S与B/S结构?

       B/S(Browser/Server):又称浏览器/服务器模式。是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。
       C/S(Client/Server)::称客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sql Server等。客户端需要安装专用的客户端软件。
       C/S 与 B/S 区别:Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的,但并不是说B/S结构不能在局域网上使用,如智赢IPOWER,在单机,局限网,广域网均能使用。
1.硬件环境不同:
C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
2.对安全要求不同
C/S 对服务端、客户端都安全都要考虑。
B/S 因没有客户端,所以只注重服务端安全即可。
3.对程序架构不同
C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000
等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 例如智赢IPOWER,采用AJAX和数据存储优化技术,相比一般B/S架构软件速度提高
30%至99%。
4.软件重用不同
C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
5.系统维护不同
系统维护是软件生存周期中,开销大, -------重要
C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.
6.处理问题不同
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.
7.用户接口不同
C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
B/S 建立在浏览器上, 通过WEB服务或其他公共可识别描述语言可跨平台,使用更灵活。不仅可应用在Window平台上,还可应用于unix/Linux等平台。
8.信息流不同
C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心。

3.什么是MVC设计模式?

       MVC设计模式:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。MVC模式作为软件工程中的一种软件架构模式,把软件系统分为三个模块:模型(Model)、视图(View)和控制器(Controller)。
       模型(Model):我更愿意将这个模块叫做数据模块,其中存储的是软件中的数据。用户可以通过操作视图进行输入,来间接地更改模型中的值。模型中的值也会间接地呈现在视图上。
Model 中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此 Model 的 View 必须事先在此 Model 上注册,从而,View 可以了解在数据 Model 上发生的改变。(比如:观察者模式(软件设计模式))
       视图(View):与用户交互的界面,通过视图,用户能够进行输入并获得输出反馈
       控制器(Controller):链接模型与视图的桥梁,在此定义函数或算法以实现对不同用户输入所执行的不同操作。

猜你喜欢

转载自www.cnblogs.com/bugczdui/p/10953458.html