1、序言
通过对本章《软件科学基础概论》的学习,使我懂得了软件的基本构成元素、软件的基本结构、软件中的一些特殊机制和软件的内在特性,同时让我知道了项目设计方案中所蕴含的软件结构特点,比如设计模式、软件架构风格与策略等;并知道采用不同的视图来描述项目的软件系统概念原型,比如分解视图、依赖视图、泛化视图、执行视图、实现视图、部署视图、工作分配视图等。
2、设计方案
项目介绍:工程实践项目是《商户对接小程序》,他的主要目的是让商家和用户可以直接在微信小程序里就可以相互交互,发布产品和购买产品以及查看案例、文本等信息。
设计方案概述:一个良好的软件必然是经过好的软件设计,并不断重构、迭代的,以具有好的性能和可用性。那么,怎样才是一个好的软件设计呢?软件设计从大的方面来说,有软件架构风格与策略的不同,从具体实现方面来说,有设计模式的不同,从底层来说,数据的存取以及语言的实现也不一样。只有采取最适合项目的软件设计方案,综合性能、成本、开发效益、可用性,才能获得最好的软件设计效果。
软件架构风格有很多,如分层架构、典型的MVC架构和MVVM架构、管道-过滤器、客户端-服务、P2P(如区域链)、发布订阅风格、CRUD、层次化架构等;典型的设计模式有工厂模式、单例模式、装饰模式、代理模式、外观模式、享元模式等;典型的软件架构的描述方法视图,比如分解视图、依赖视图、泛化视图、执行视图、实现视图、部署视图等。这些软件架构风格和设计模式并没有优劣之分,只有适不适合之说。因此,我们要采取最适合本项目的架构风格和设计模式,以达到收益的最大化。
设计模式选择:采用设计模式的目的就是为了软件的重用,因此采用关注点分离的思想,区分软件中变化的部分和不变的部分,在不变的部分使用设计模式,以提高软件的重用性和可维护性。
此项目采用命令模式和中介者模式,为了安全的考虑,我们在权限控制模块采取代理模式,进行用户审计,防止用户进行越权访问;采用外观模式,进一步简化浏览器的业务逻辑;采用适配器模式,来适应普通用户和管理者接口的不适配。因为管理员和店铺主会发布一些文本和案例,所以这又是观察者模式。
软件架构:本项目采用MVVM架构的方式,因为小程序本身就是类似vue的MVVM架构,而本项目是基于小程序的。MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点:1、低耦合 2、可重用性 3、独立开发 4、可测试
MVVM的一些介绍:MVVM即 Model-View-ViewModel,最早由微软提出来,借鉴了桌面应用程序的MVC模式的思想,是一种针对WPF、Silverlight、Windows Phone的设计模式,目前广泛应用于复杂的Javacript前端项目中。在前端页面中,把Model用纯JavaScript对象表示,View负责显示,两者做到了最大限度的分离。把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。
我的微信小程序就是如此,他的数据可以放在js页面的app()函数和page()函数中,以vue框架的形式也就是在js里以json数据格式存放,这样的话就可以很方便的修改数据了
3、API和视图
Api:
app(Object object):注册小程序。接受一个 Object
参数,其指定小程序的生命周期回调等。App() 必须在 app.js
中调用,必须调用且只能调用一次。不然会出现无法预期的后果。
getApp(Object object):获取到小程序全局唯一的 App
实例
Page(Object object):注册小程序中的一个页面。接受一个 Object
类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等
getCurrentPages():获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面
boolean wx.canIUse(string schema):判断小程序的API,回调,参数,组件等是否在当前版本可用
onLoad: function (options):生命周期函数--监听页面加载
onReady: function ():生命周期函数--监听页面初次渲染完成
onShow: function () :生命周期函数--监听页面显示
onHide: function ():生命周期函数--监听页面隐藏
onUnload: function ():生命周期函数--监听页面卸载
wx.navigateTo(Object object):保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。
wx.request(Object object):发起 HTTPS 网络请求
wx.setStorageSync(string key, any data):将数据存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。除非用户主动删除或因存储空间原因被系统清理,否则数据都一直可用。单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。
wx.getStorageSync(string key):从本地缓存中异步获取指定 key 的内容
wx.clearStorageSync():清理本地数据缓存
视图:软件架构模型是通过一组关键视图来描述的,同一个软件架构,由于选取的视角(Perspective)和抽象层次不同可以得到不同的视图,这样一组关键视图搭配起来可以完整地描述一个逻辑自洽的软件架构模型。一般来说,我们常用的几种视图有分解视图、依赖视图、泛化视图、执行视图、实现视图、部署视图和工作任务分配视图。
分解是构建软件架构模型的关键步骤,分解视图也是描述软件架构模型的关键视图,一般分解视图呈现为较为明晰的分解结构(breakdown structure)特点,这里采用面向特征分解。
②依赖视图:依赖视图展现了软件模块之间的依赖关系。比如一个软件模块A调用了另一个软件模块B,那么我们说软件模块A直接依赖软件模块B。如果一个软件模块依赖另一个软件模块产生的数据,那么这两个软件模块也具有一定的依赖关系。
③执行视图:执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等
④部署视图:部署视图是将执行实体和计算机资源建立映射关系。这里的执行实体的粒度要与所部署的计算机资源相匹配,这样可以清晰地呈现进程间的网络通信和部署环境的网络结构特点。部署视图有助于设计人员分析一个设计的质量属性,比如软件处理网络高并发的能力、软件对处理器的计算需求等。
⑤分配视图:工作分配视图将系统分解成可独立完成的工作任务,以便分配给各项目团队和成员。
4、数据库设计
该项目把要使用的数据从数据库中调出来后以json的格式放在js的page()和app()函数的data里面,然后以vue.js的形式被页面调用
根据此结构可以在不同的页面配置相应的数据以满足页面的需要,具体的数据的关键字如下:
5、运行环境和技术选型
在微信小程序开发工具wechat_devtools上进行开发,页面用wxml、js、wxss和json数据格式在进行编写,里面会用到WeUI组件库和微信文档中的底层框架MINA也就是微信自己的底层API。
6、概念原型的核心工作机制
①用户进入小程序,可以以游客身份观看也可以登录进入,只有登录后才可以联系客服,设置个人信息
②店铺主必须要登录进入
③首页可以看发布的文字信息和案例信息以及产品,也可以自己在搜索栏搜索相应内容
④用户可以在个人页面设置个人信息,同时个人页面也可以设置按钮,店铺主可以通过按钮来申请发布信息
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删