软件工程第一次作业
软件工程第一次作业
- 花20分钟写一个能自动生成小学四则运算题目的“软件”,要求:除了整数以外,还要支持真分数的四则运算。将代码上传至coding.net,并将地址发布至自己的博客。
- 在一周之内快速看完《构建之法》,列出你不懂的5-10个问题,发布在自己的博客。
- 1.个人能力水平在团队中是否占据主导地位?
- 2.做软件测试时必须要有哪些的知识储备?
- 3.单元测试是如何做的?如何确定单元测试的覆盖面?
- 4.一款优秀的软件需要哪些要素?优秀的软件在功利性和公益性上的偏向如何选择?
- 5.如何确定软件开发的模式,软件开发流程对开发过程有什么优势?
- 软件有很多种:包装在盒子里的软件、基于网页的软件、企业或学校或某组织内部的软件、游戏、手机应用、操作系统、工具软件,选取三种软件,请分析它们各自的特点。
1)这些软件开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户现金么么?还是别的?
2)这些软件是如何到你手里的(邮购,下载,互相拷贝)
3)这些软件是如何处理Bug的?又是如何更新新的版本的?
- 同一类型的软件之间是如何竞争的?
- 手机应用:
- QQ,微信,淘宝,学堂在线,饿了么,WPS等都是手机应用,由于它们的功能强大,适用于用户需求,方便用户学习、生活,所以用户会主动使用它们。
- 这些手机应用主要目的是为用户服务,再此基础上会衍生出更高效、方便的功能,但是这些功能一般都需要付费使用,开发者通过这些功能盈利,并对软件进行进一步的优化。此外,在用户注册这些手机应用时,开发者会获取用户信息用作其他用途,或通过用户反馈的信息优化软件。
- 手机应用一般通过手机自带的软件商店、百度或应用宝等下载而来。
- 一般都是通过打补丁的方式,将更新的资源包发送给用户,让用户去安装更新。
- 同一类型的软件之间的竞争主要依靠取长补短,向用户宣传它的优点,将付费的功能免费向用户开放,来吸引用户。
- 操作系统:
- 像windows, UNIX ,linux ,android ,ios 等操作系统,分别应用于移动端和pc端。
- 开发者会将这些系统软件安装于买到的手机或计算机中,让用户使用,用户在购买手机或计算机的时候,就相当于给这些操作系统间接付款。
- 让客户通过操作系统使用这些智能工具,真正实现工具的价值。正版的操作系统一般都需要付费购买,这些都被算在手机或计算机的价值之内。
- 可以通过网上下载,相互拷贝,或者在买智能工具的时候直接安装。
- 操作系统作为一个很大型的软件,与硬件直接接触,肯定会存在Bug,或者会有组成部分进行更新,正版的操作系统会收到更新通知,然后自动下载,或者可以自己去官网上下载安装。
- 一般操作系统的竞争主要是通过良好的界面,方便人机交互,让计算机系统所有资源最大限度地发挥作用,让用户获得更好的使用体验以及尽量少的Bug。
- 工具软件:
- 杀毒软件、备份软件等都属于工具软件,这些软件功能较为单一,但都是针对用户需求设计,有些在用户购买电脑时直接安装,有些则是用户在需要时会主动去网上下载安装。
- 大部分工具软件都是免费使用。开发者通过用户反馈的信息优化软件。
- 几乎所有的工具软件都可以在网络上直接下载使用。
- 去官网下载安装包,或在接收更新提醒时直接更新。
- 同一类型的软件之间的竞争主要依靠软件质量决定,让用户获得更好的使用体验以及尽量少的Bug。
- 列举你在使用上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特性么?
- 软件就是程序,存在于硬件中,调动硬件的执行,是硬件的头脑和灵魂。
- 硬件产品设计定型后可以批量生产,产品质量通过质量检测体系可以得到保障。但是生产、加工过程一旦失误,硬件产品可能就会因为质量问题而报废。而软件生产是“定制”的,只能针对特定问题进行设计或实现。一旦实现后,其生产过程只是复制而已,而复制生产出来的软件质量是相同的。设计出来的软件即使出现质量问题,产品也不会报废,通过修改、测试,还可以将“报废”的软件“修复”,投入正常运行。可见软件的质量保证机制比硬件具有更大的灵活性。
- 软件五花八门,实现同一种功能会有很多不同的软件,但是同一种器件,组装它的硬件却不会有很多种。
- 硬件产品存在老化和折旧问题。当一个硬件部件磨损时可以用一个新部件去替换他。硬件会因为主要部件的磨损而最终被淘汰。对于软件而言,不存在折旧和磨损问题,如果需要的话可以永远使用下去。但是软件故障的排除要比硬件故障的排除复杂得多。软件故障主要是因为软件设计或编码的错误所致,必须重新设计和编码才能解决问题。