zoukankan      html  css  js  c++  java
  • 附加作业 软件工程原则的应用实例分析

    此作业要求参见: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计算代码行太方便了)

  • 相关阅读:
    IOS之推送通知(本地推送和远程推送)
    IOS,苹果内购和添加广告
    CSS3选择器、背景、边框、文本
    CSS2D旋转、过渡、动画
    JavaScript Array、Date、String
    那些不常用却很有的CSS
    纯CSS打造兼容各种浏览器的几何图形
    安装 SQLManagementStudio_x86_CHS(SQL Server Management Studio) 老提示重启的解决办法
    关于使用Html.RenderPartial和Html.Partial显示分部视图时提示参数错误的BUG
    学习从实践开始之jQuery插件开发:对话框插件开发
  • 原文地址:https://www.cnblogs.com/fuj905/p/10066035.html
Copyright © 2011-2022 走看看