202209-花开富贵! 实验六 团队作业3:团队项目需求调研与原型开发

项目 内容
课程班级博客链接 详细内容请点击查看
作业要求链接 详细内容请点击查看
团队名称 花开富贵!
团队成员分工描述 王凯英:PM
王亚亚:系统开发
张萌:文档
谢宇涵:测试
团队的课程学习目标 (1)软件项目需求调研
(2)学习使用软件原型开发工具
(3)掌握软件原型开发技术
这个作业在哪些方面帮助团队实现学习目标 (1)掌握软件原型开发技术
(2)学习使用软件原型开发工具
(3)学会使用墨刀原型设计工具
(4)了解NABCD法
团队博客链接 详细内容请点击查看
团队项目Github仓库地址链接 详细内容请点击查看

一、任务1:团队协作学习《现代软件工程—构建之法》第8章需求分析,团队组长主持企业微信会议,采用NABCD法,从五个视角对实验软件项目可行性进行团队合议

1.学习《现代软件工程—构建之法》第8章

1)需求分析

1. 对产品功能性的需求
要求产品必须实现某些功能。例如,学校的选课软件只允许有学生身份的用户浏览并选择课程,同时要求学生选择某一门课时必须要满足“先修课”的要求,等等。
2. 对产品开发过程的需求
要求软件的开发流程必须满足某些约束条件,例如,开发过程必须产生某种类型的文档,必须在某个时间点达到某个状态,必须对源代码施以某种约束(安全性核查、代码版权核查、代码规范和支持文档的核查)。
3. 非功能性需求:这也叫“服务质量需求”(Quality of Service Requirement)
例如,股票交易系统必须在一定时间内返回用户查询结果(它对时间的要求要比“科技文献检索”网站要高),火车票购票系统、大学选课软件必须能支持一定数量的用户同时访问,等等。
4. 综合需求
有些需求并不是单单一个软件模块就能满足,例如,“购物网站必须在24小时内把货物发送到用户手中”,这个需求牵涉到软件系统、货物派送系统、送货部门、监控系统等不同部门的功能和执行能力。软件团队和客户代表要在需求阶段把这些问题定义清楚。

2)软件产品的利益相关者

很多人或机构都是某个软件的利益相关者,软件团队在分析软件需求时要考虑如下这些利益相关者。
1. 用户:或称最终用户(user,end-user)
是直接使用软件系统的人。取决于软件的特点,一个软件也许有多种不同的用户。(例如,一个打车软件的用户有三种:出租车司机、顾客和监管方。)
2. 顾客:或称客户(customer,client)
购买这个软件或者根据合同或规定接收软件的人。这些人不一定是软件的直接用户,但是他们的利益和软件直接相关。例如,给小孩买英语学习软件的家长;决定公司应该使用哪一款远程会议软件的主管(可能是CTO),决定本公司的出租车司机应该用哪一款打车软件的管理人员;代表委托方(甲方)向软件团队提交需求的人员
3. 市场分析师
市场部门要代表“典型用户”的需求
4. 监管机构
在一些行业,软件必须符合许多行业和政策规定(如银行、公共交通、通信、矿产资源等)
5. 软件工程师
工程师也是软件需求阶段的一个重要角色,软件的各种约束、特性会影响到他们工作的效率、开发难度和软件维护的难度。他们应积极参与到软件需求阶段中来。
软件开发不可能一次满足所有利益相关者的要求,但是我们一定要 让相关角色在这个阶段有机会提出他们的需求和意见,同时,要弄清楚“他们想从软件中得到什么”。

3)获取用户需求——用户调查

方法 内容
焦点小组 找到一群目标用户的代表,加上项目的利益相关者来讨论用户想要什么,用户对软件的评价
深入面谈 通过详细的面谈,广泛而深入地了解用户的背景、心理、需求等。这通常是一对一的采访。这种方法费时费力,效果往往取决于主持面谈的团队成员的能力。深入面谈这一方法也可以用在某一特定领域,例如软件的用户可用性和用户界面,这也可以称为软件可用性研究(Usability Study)。
卡片分类 通常,团队收集到的需求都是杂乱无章的,不同的角色从不同角度表达了希望软件能做什么,有什么特点,能解决自己的什么痛苦,或者有什么好玩的地方,等等。讨论 → 明晰定义 → 归类 → 排序
用户调查问卷 调查者一些常见的错误:
1. 问题定义不准确
2.使用含糊不清的形容词、副词描述时间、数量、频率、价格等
3. 让用户花额外的努力来回答问题
4.问题带有引导性的倾向
5.问题涉及用户隐私、用户所在公司的商业机密或细节等
用户日志研究 要求用户记录自己日常工作或生活中与所用软件相关的行为,供软件团队分析
人类学调查 可以解释为和目标用户“同吃同住同劳动”。
眼动跟踪研究 一些研究发现了F模式,用户通常浏览通栏标题,然后目光沿着左侧下行,再平行浏览下面的子标题。
快速原型调研 拿一些纸张模型,让用户去使用,得到反馈。这也是用户参与式设计(Participatory De-sign)的一个例子。
A/B测试 1. 决定试验哪两种不同的UI,以及衡量标准、数据收集流程、试验运行时间、人数.
2. 在技术上实现A/B测试(通常在5%—10%的用户上运行试验)。
3. 收集数据,分析数据,形成结论。

4)竞争性需求分析的框架 —— NABCD模型

5)功能的定位和优先级

一个公司可能有多种软件产品和服务,它们各有不同的战略意义。一个软件或服务也由很多功能组成,它们有机地结合起来,才能解决用户的问题,产生效益。
1.功能分析

  • 杀手功能:OCR文字识别技术,可以在屏幕上取词解释,拥有独家权威词典,等等
  • 外围功能:良好的界面设计,在各个平台上都能运行
  • 必要需求:单词短语释义的准确性(如果达不到这一点,用户就不会来使用)
  • 辅助需求:可以做各种皮肤(这也许能让一些用户更喜欢这个软件,但不是决定因素)
分类 外围功能 杀手功能
必要需求 建议采用“抵消”的方法快速的达到和“别人差不多”,对于大家都特别看重的功能,采用优化的办法,达到行业最佳。 建议采取“差异化”的办法,全力以赴投资到这个领域。
辅助需求 建议采取维持的办法,以最低代价维持此功能。 建议采取“维持”的办法,或者现在“不做”,等待好的时机或者小规模试验。

6)计划和估计

软件项目计划的一个重要环节就是估计项目各类工作(特别是各种功能)所需的时间
1. 概念:目标、估计和决心。
目标:表明一个希望达到的状态。例如,软件“五一”之前要投放市场!在建校一百周年之时把我校建成世界一流大学!不论这类目标如何重要,它们未必能够实现
估计:以当前了解的情况和掌握的资源,要花费多少人力物力时间才能实现某事
决心:保证在某个时间之前完成预先规定的功能和质量。例如:我们跑步前进,全民炼钢,两年超英赶美
软件时间的估计,事实上是多个估计值的乘除法(估计的需求,估计的需求复杂度,估计的技术难度,估计的人员能力)
软件工程师在长期的实践中,摸索出一套经验公式:实际时间花费主要取决于两个因素—对某件事的估计时间X,以及他做过类似开发工作的次数N。
Y = X ± X ÷ N
注:Y是实际时间花费。中间的±表明
当N等于1时,一项工作估计的实际花费范围是[0 ..2X],如果员工一直做类似的项目,他们的N值不断增加,估计变化的范围会越来越小,准确度则越来越高。当然,技术在变,市场在变,员工的心态也在变,员工是不甘于一直做雷同的项目的。
2. 项目的复杂程度决定因素:
需求的复杂程度:程序员是第几次实现类似的需求?有些外行看起来很复杂难懂的需求(如银行业务流程),如果一个程序员已经做过多次相关的银行项目,其实不像外人看的那么难
技术的复杂程度:程序员是第几次用这个技术实现?
3. 整个软件项目的时间估计
自底向上:队成员各自估计底层模块和单个功能(及单元测试)所需的时间,再加上集成及基本测试的时间,就是大概的开发时间。这还没有考虑各个模块之间的相互依赖性
回溯:队从整个项目最终交付之日往回倒推

7)分而治之

1. WBS通常从最终的产品开始,一层一层往下,把大型交付件(Deliverable)分割为小型、具体的交付件。这样的分割可以持续下去,直到WBS的使用者(开发团队、接收方)达到共识。从数据结构方面来看,WBS分割的结果是一棵树。所有子节点都最终有一个根节点。每个节点描述的是要交付的产品或文档,而不是开发团队的努力或花费(各个叶节点的成本可以作为次节点的属性展现出来)。
2 做好WBS的几个要点:

  • 保证所有子节点覆盖了全部父节点包含的内容
  • 保证各个子节点不要相互覆盖
  • 叶子节点要保证足够小,能在一个里程碑中完成。在通常的软件项目中,叶节点的成本最好不要超过两周。如果团队成员从常理出发,认为叶节点不宜再分下去,那就可以停止
  • 从结果(Outcome)出发构建WBS,而不是从团队的活动(Action)出发

2.采用NABCD法,从五个视角对实验软件项目可行性进行团队合议

(1)N(Need 需求)
在电商平台飞速发展与疫情加持的时代,优惠券的使用已经占据了生活中重要的地位。优惠券是变相降价的运营手段,一方面可以带来转化,另一方面减少了直接降价对品牌价值的伤害,具体来说有4个方面的作用:(1)激发用户购买欲望,促进购物转化,例如拼多多百亿补贴活动中,对iPhone手机的优惠策略,带给用户实打实的低价,既提升了用户流量,又改变了平台自身的品牌形象;(2)作为营销策略,建立用户心智,例如双11的”300减40“,已经形成了用户的固定认知,让没有实际购物需求的用户也会参与囤货,各大平台的促销会场,也将优惠券作为主打卖点,并在页面中给与足够高的页面坑位,希望带来更多的曝光引导转化;(3)消费门槛限制,挖掘用户潜在需求,例如满减券在用户消费到一定金额时,很容易激励用户去凑单达到满减门槛,从而带来更多的订单量,无形中也会提升客单价;(4)作为权益卖点,形成更强的价值感,例如新人专属券、沉睡用户的回归礼包等等,同样优惠券也成为了电商付费会员重要的专属权益。可见优惠券有如此多的作用,基于此,我们小组决定基于背包问题来做一个满减折扣券叠加项目,成为一个日常购物省钱渠道,帮助人们选择最优的折扣方式,减少支出。
(2)A(Approach 做法)
我们会采用Java编程实现项目代码的编写和墨刀设计实验项目软件原型
之所以采用Java进行程序编写,一方面是我们小组对于Java更加熟悉,其次java图形编程给用户提供了一个直观、易于与用户进行交互的图形界面,能给用户提供更好的观感。再者,Java编写项目具有较好的拓展性和交互性,这次的项目仅仅是一个初始的模型,在后续开发过程中可以不断改进,增加更多的功能。而墨刀是近年兴起的一款线上产品设计工具,它的功能较为符合现在互联网、移动互联网产品的设计理念。特别在设计移动端的产品时,其根据移动端封装的各种设计组件,让产品设计更加便捷,展示效果更好,极大提高了设计效率和效果。
(3)B(Benefit 好处)
本项目将模拟在购买商品时候使用的各种类型优惠券(满减、直减、折扣、n元购),这个场景几乎也是大家的一个日常购物省钱渠道,购买商品的时候都希望找一些优惠券,让购买的商品更加实惠。而且到了大促的时候就会有更多的优惠券需要计算那些商品一起购买更加优惠。
(4)C(Competitors 竞争)
其实优惠券的本质就是:价格歧视。通过价格歧视,筛选出对价格敏感和不敏感的用户,对于价格敏感的用户给于一定的优惠刺激下单,而对于价格不敏感的用户,依旧是用原价售卖,从而实现最大化收益。优惠券广泛应用于各种交易类型的产品,比如淘宝、京东、美团、滴滴、携程等等。以京东为例:有专门的领券中心,在各种活动页面上也会有优惠券,很多入口都可以领券。有些优惠券不是所有用户都可以领取的;用户领取之后,有些商品是不支持使用优惠券的,总之优惠券是一个看似简单,实则很复杂的产品形态。面向消费群体的满减折扣券叠加的计算系统,当前市面上还没有完全开发出来的项目,而我们的满减折扣券叠加项目正是要弥补这一空缺,其优势是十分可观的。
(5)D (Delivery 交付,Data 数据)
对于这个软件的需求,我们进行了一个简单的问卷调查;通过问卷调查的结果发现,大多数人都有使用优惠券的习惯,且对于一款能自动计算所有最优满减折扣券叠加的系统是十分渴求的,根据我们的市场调研发现约有77.27%的消费者认为此项目的开展很有必要,市场需求度较大。在这次项目中,我们将认真设计并做好每一个界面,做好每一个功能,做一个比较完善的软件。

二、任务2:依据任务1讨论情况,实施团队项目软件用户调研活动,并依据调研结果填写《学生“创新能力提升计划”项目申请表》

  • (1)调研真实用户;

  • (2)采用多种需求获取手段;

  • (3)收集整理用户需求调研素材,包括文献资料、需求调研成果整理文档等;

  • (4)用户需求调研活动的佐证材料(文献目录、访谈录音、问卷、调研对象名单、社交平台聊天记录等等)

问卷调查部分结果截图:

创新创业申请表截图展示:


三、任务3:团队协作学习《现代软件工程—构建之法》第10章典型用户和场景,下载并安装墨刀原型设计工具,以团队协作学习方式掌握软件操作方法

  • 以团队成员姓名命名的墨刀安装界面截图



  • 墨刀原型设计工具简介
    (1) 工具简介:
    墨刀是一款在线原型设计与协同工具,借助墨刀,产品经理、设计师、开发、销售、运营及创业者等用户群体,能够搭建为产品原型,演示项目效果。
    (2)发展历史:
    APP原型设计工具墨刀完成500万Pre A轮融资,FreeS资本领投。 此前,墨刀曾获得150万元天使轮融资。
    2017年6月,墨刀推出3.0版本, 主打团队协同方向,从3.0开始,墨刀不再是一个只给产品经理用的,用来画产品原型的工具,而是变成了-个覆盖整个产品的设计和开发流程,帮助整个产品团队最大限度的发挥协同效应的团队协同工具。
    6月12日,高保真产品原型制作及团队协同工具公司墨刀宣布推出最新3.0版本,此次发布会墨刀主打团队协同方向,未来重点打造高效团队协作工具,加速团队内部效率和流程。同期墨刀宣布与石墨文档、吆喝科技、轻芒、联创工厂等多家上下游企业达成合作,未来打通整个产品设计流程。
    2018年1月推出Sketch插件2.0版本,Sketch设计稿可以导入墨刀,进行交互设计,自动获取标注信息,推进开发进程;2019年1月,墨刀启动To B战略上线企业版,提供诸如企业项目及成员管理、基本数据统计等功能。
    (3)适用平台:
    浏览器注册使用,Windows、 Mac 桌面客户端,同时支持i0OS、Android 端预览;(5)适用范围:
    墨刀为企业级用户提供权限控制、项目管理及基础项目数据统计等功能。
    (4)功能介绍:
    ①操作简单
    简单拖拽和设置,即可将想法、创意变成产品原型。
    ②演示
    真机设备边框、沉浸感全屏、离线模式等多种演示模式,项目演示效果逼真。
    ③团队协作
    与同事共同编辑原型,效率提升; -键分享发送给别人,分享便捷;还可在原型上打点、评论,收集反馈意见,高效协作。
    ④交互简单
    简单拖拽就可实现页面跳转,还可通过交互面板实现复杂交互,多种手势和转场效果,可以实现一一个媲美真实产品体验的原型。
    ⑤自动标注及切图
    将Sketch设计稿墨刀插件.上传至墨刀,将项目链接分享给开发人员,无需登录可直接获取到每个元素宽高、间距、字体颜色等信息,支持-键下载多倍率切图。
    ⑥素材库
    内置丰富的行业素材库,也可创建自己的素材库、共享团队组件库,高频素材直接复用。
  • 线上交流

四、任务4:利用墨刀设计实验项目软件原型

  • 登录注册及功能展示
    用户登录注册界面展示

    优惠券未使用与使用情况展示

    各平台优惠攻略与领劵界面展示

    各平台选择展示

    展示

/**
 * 优惠券类型;
 * 1. 直减券
 * 2. 满减券
 * 3. 折扣券
 * 4. n元购
 */
public class CouponDiscountService {

    public double discountAmount(int type, double typeContent, double skuPrice, double typeExt) {
        // 1. 直减券
        if (1 == type) {
            return skuPrice - typeContent;
        }
        // 2. 满减券
        if (2 == type) {
            if (skuPrice < typeExt) return skuPrice;
            return skuPrice - typeContent;
        }
        // 3. 折扣券
        if (3 == type) {
            return skuPrice * typeContent;
        }
        // 4. n元购
        if (4 == type) {
            return typeContent;
        }
        return 0D;
    }

}

满减:

public class MJCouponDiscount implements ICouponDiscount<Map<String,String>>  {

    /**
     * 满减计算
     * 1. 判断满足x元后-n元,否则不减
     * 2. 最低支付金额1元
     */
    public BigDecimal discountAmount(Map<String,String> couponInfo, BigDecimal skuPrice) {
        String x = couponInfo.get("x");
        String o = couponInfo.get("n");

        // 小于商品金额条件的,直接返回商品原价
        if (skuPrice.compareTo(new BigDecimal(x)) < 0) return skuPrice;
        // 减去优惠金额判断
        BigDecimal discountAmount = skuPrice.subtract(new BigDecimal(o));
        if (discountAmount.compareTo(BigDecimal.ZERO) < 1) return BigDecimal.ONE;

        return discountAmount;
    }
}

直减

public class ZJCouponDiscount implements ICouponDiscount<Double>  {

    /**
     * 直减计算
     * 1. 使用商品价格减去优惠价格
     * 2. 最低支付金额1元
     */
    public BigDecimal discountAmount(Double couponInfo, BigDecimal skuPrice) {
        BigDecimal discountAmount = skuPrice.subtract(new BigDecimal(couponInfo));
        if (discountAmount.compareTo(BigDecimal.ZERO) < 1) return BigDecimal.ONE;
        return discountAmount;
    }

}

折扣

public class ZKCouponDiscount implements ICouponDiscount<Double> {


    /**
     * 折扣计算
     * 1. 使用商品价格乘以折扣比例,为最后支付金额
     * 2. 保留两位小数
     * 3. 最低支付金额1元
     */
    public BigDecimal discountAmount(Double couponInfo, BigDecimal skuPrice) {
        BigDecimal discountAmount = skuPrice.multiply(new BigDecimal(couponInfo)).setScale(2, BigDecimal.ROUND_HALF_UP);
        if (discountAmount.compareTo(BigDecimal.ZERO) < 1) return BigDecimal.ONE;
        return discountAmount;
    }
}

N元购

public class NYGCouponDiscount implements ICouponDiscount<Double> {

    /**
     * n元购购买
     * 1. 无论原价多少钱都固定金额购买
     */
    public BigDecimal discountAmount(Double couponInfo, BigDecimal skuPrice) {
        return new BigDecimal(couponInfo);
    }

}

代码上传仓库截图

五、任务5:完成《实验六 团队作业3:团队项目需求调研与原型开发》博文作业

预期时间与实际使用时间表:

任务 预期时间 (min) 实际时间(min)
任务一 100 110
任务二 230 200
任务三 60 70
任务四 300 350
任务五 30 20

本次作业的感受与体会:
在本次作业中我们学会了使用墨刀这款软件,使用它可以在线原型设计与协同工具,借助墨刀,产品经理、设计师、开发、销售、运营及创业者等用户群体,能够搭建为产品原型,演示项目效果。墨刀同时也是协作平台,项目成员可以协作编辑、审阅,不管是产品想法展示,还是向客户收集产品反馈,向投资人进行Demo展示,或是在团队内部协作沟通、项目管理。在本次实验中我们积极配合,学会了使用了调查问卷这一功能。在团队的配合上,我们更加有默契。但在系统具体实施这一块还是存在困难,还要进一步的提高实践的水平。

posted @ 2022-04-27 22:36  花开富贵!  阅读(62)  评论(0编辑  收藏  举报