附加作业 软件工程原则的应用实例分析

此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2446

《高级软件工程》这门课已经进行三个多月了,我在这门课中学到不少软件工程的原则,接下来我将以本学期三个作业为例(词频统计、四则运算、团队开发“取件帮”小程序)简要梳理一下本学期学到并践行的原则。

一、模块化、代码复用、分而治之

模块化即将每个独立的功能或者业务划分为一个独立的模块,使用时直接调用接口。它既可以做到代码复用,也涉及到分而治之的编程思想。例如四则运算中的根据逆波兰式计算结果;小程序中对数据库的操作直接封装修改方法等等。

参见:

封装update方法

 1 let updateGoodsStatus = (id,status,getterid,cb) => {
 2   let tableId = getApp().globalData.goodsTableId,
 3     Goods = new wx.BaaS.TableObject(tableId),
 4     goods = Goods.getWithoutData(id)
 5   goods.set('status',status)
 6   goods.set('getter_id',getterid)
 7   goods.update()
 8     .then(res => cb(res))
 9     .catch(err => console.dir(err))
10 }
View Code

调用update方法

1 //帮取者取消帮取
2   cancelHelp:function(e) {
3     let getterid = '';
4     update.updateGoodsStatus(e.currentTarget.dataset.id, 0, getterid, (res) => {
5       this.onShow()
6     })
7   },
View Code

二、单元测试与效能分析

关于单元测试,我在本课程之前有所接触。之前是使用JUnit框架测试Java程序,这学期在四则运算作业中是使用NUnit框架测试C#程序。二者差别不大,使用起来也相对轻松。单元测试主要是对程序中的最小可测试单元进行检查和验证,就我个人而言单元测试是非常有用的,单元测试不通过的时候可以精准定位到是哪一环节出错,均通过时则可以顺利进展到下一步。

至于效能分析,本学期是第一次接触。词频统计作业使用的是Python语言,经查阅资料学习了profile。分析并发现程序运行的瓶颈,找到耗时所在,同时也发现了不会被执行的代码。最终实现了程序的优化,顺利完成了作业。

三、软件设计

软件设计涉及方面很广。我从团队开发项目简要分析。

  1.问卷调查(可行性分析):

问卷调查的主要目的是为了分析用户需求可行性。问卷链接参见:问卷调查

  2.典型用户定义(需求分析)

典型用户是虚构出的一个用户用来代表一个用户群,他可以比任何一个真实的个体都更有代表性。定义典型用户可以帮助开发者更好的梳理需求分析。取件帮主要定义了五类用户,基本上涵盖了日常使用本程序的人群特点,详细参见:典型用户定义

  3.E-R图(需求分析)

即实体-联系图,提供了表示实体类型、属性和联系的方法。本项目中实体主要分为快递和用户两个实体,通过发布快递与帮取快递建立联系。详细参见:E-R图

  4.原型设计(详细设计)

最初小组讨论制定数据流图(DFD),后经考虑决定设计原型来展现数据传递、逻辑功能、逻辑流向与逻辑变换过程。

原型使用墨刀设计,详细参见:原型(密码:qujianbang)

四、版本控制

版本控制主要用于源代码管理,也包含配置文件以及说明文档的变更管理。之前本科有使用过github与gitlab,本学期团队开发使用coding.net进行版本控制。使用大致无二。只不过以前是简单的commit pull push。现在学会了分支与合并,以及查询历史记录等。总的来说,版本控制在团队开发之中是非常非常有必要的。(由衷赞叹git log计算代码行太方便了)

原文地址:https://www.cnblogs.com/fuj905/p/10066035.html