软件工程第一次作业
一、关注《构建之法》的作者邹欣老师的博客
二、花20分钟写一个能自动生成小学四则运算题目的“软件”,要求:除了整数以外,还要支持真分数的四则运算。将代码上传至coding.net,并将地址发布至自己的博客
三、在一周之内快速看完《构建之法》,列出你不懂的5-10个问题
1、如何写及写好单元测试?
2、在新进入一个团队时,在校学生或没有职场经验的人如何快速的读懂别人的代码并熟悉团队流程?
3、在集成测试的时候,已经对一些子系统进行了功能测试、性能测试等等,那么在系统测试时能否跳过相同的内容?在测试中如何处理概率性问题?
4、如何进行软件质量管理的工作,如何写质量报告?
5、如何创新?
四、软件有很多种:包装在盒子里的软件、基于网页的软件、企业或学校或某组织内部的软件、游戏、手机应用、操作系统、工具软件,选取三种软件,请分析它们各自的特点。
- 1)这些软件开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户现金么么?还是别的?
- 2)这些软件是如何到你手里的(邮购,下载,互相拷贝)
- 3)这些软件是如何处理Bug的?又是如何更新新的版本的?
- 4) 同一类型的软件之间是如何竞争的?
基于网页的软件:如96微信编辑器
1、基于对微信公众号图文排版的需求,主动成为他们的用户。他们对有更高需求的用户有盈利目标,比如可选择升级为VIP;其目标也有与其他平台合作,如易速推等。
2、自己搜寻。
3、尚不明确
4、提高跨平台跨浏览器的兼容性,像96微信编辑器在360浏览器、百度及谷歌等上使用比较流畅,不会出现乱版;丰富素材库并提供更多免费的素材;精准定位用户需求合作其它平台,提供更多合适的免费资源等。
手机应用:如唯品会
1、我被吸引于他们的广告、界面及物流的统一色调、核心特性——正品,及对正品的保证;其目标是赚取现金。
2、下载。
3、在产品发布之前,会在Dev自测,同伴复审,源代码同步/合并/构建等环节中发现BUG,在自动测试、功能全面测试新建BUG,然后开发人员分析BUG,看BUG是否可以修复,如可修复,再进行详细设计、实现设计及测试等流程,如不可修复,则重审Spec,设计、更新Spec及相关文档、详细设计、实现设计及测试等。产品发布后,会根 据用户的用户体验而对已发布的产品不断的维护,推出对BUG修复后的最新版本。(上述内容来自对开发人员工作流程图的理解,可能并不准确)
4、唯品会的核心竞争力是只卖折扣的正品(注意有两点,折扣、正品),其次我能很强烈的感受到他们对用户体验至上的追求,比如他们很清楚目标用户而有了用户分类里的标签的应用,很清楚用户的使用时间而有了早8晚10的上新时间及其他会员俱乐部的开展和退换货上门取件等,虽然不及其它同类网站完善,但是已有的功能已相当精致。我觉得很多东西不在于多,而在于精,所以可能这是唯品会相对于其它同类型平台更核心的竞争力。
工具软件:如WPS
1、因其对空间极小的占用而主动成为其用户。不完全以盈利为目标。
2、下载
3、如在使用中自动退出后,再次进入时会询问我们类似是否将发生的错误反馈于后台等方式中积累用户体验,然后退出修复后版本等。
4、提升用户体验,如WPS16版仅为60多M,但运行速度快,兼容了多平台且免费,这可能就会大大提升它在同类软件中的竞争力。
- 列举你在使用上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特性么?
软件=程序+软件工程,程序=数据结构+算法,所以软件是为了实现某种设计的计算机数据和指令的集合,是没有物理形态的。为实现某种设计,这就体现了软件的功能性;发现BUG并不断修复BUG,体现了软件的可靠性和可维护性;代码的复用及交付普通用户的使用,体现了其易用性。相比于软件,硬件是具有物理形态的,而且硬件产品在设计成型后可批量生产,且其存在老化和磨损问题,而软件如果可以,可以一直使用。