软件工程第一次作业要求:
一.关注《构建之法》的作者邹欣老师的博客。
二.写一个能自动生成小学四则运算题目的“软件”,要求:除了整数以外,还要支持真分数的四则运算。将代码上传至[coding.net],并将地址发布至自己的博客。
作业地址
三.在一周之内快速看完《构建之法》,列出你不懂的5-10个问题并发布在博客。
1)我在读书的过程中了解到在软件开发过程中需求分析是重中之重,软件开发人员和用户的交流同样也起着十分重要的作用,只有获取了用户的需求才能进行项目的计划和估计。也因此有了这样的疑问:疑问:开发者和用户之间的交流有哪些技巧,才能保证用户需求能够完全被体现?(第8章 需求分析)
2)我在读《构建之法》这本书的时候从第13章中读到中间部分有一个“专有名词”叫“冒烟测试(Smoke Tesk)”,通过读书知道这是一种基本验证测试,而且是根据硬件冒白烟来判断的,结果查资料后发现冒烟测试从操作上是一个随机的测试,操作对象通常是核心业务模块要是发现多数功能走不下去,那么这个冒烟测试就算是结束了。同时也就有这样的疑问:在软件测试中什么是冒烟测试?(第13章 软件测试)
3)我在读书的过程中了解到在软件测试中有许多种不同的测试方法而且代码覆盖测试是衡量测试质量的一个重要指标。进一步的划分覆盖率有好几个层次包括函数覆盖、语句覆盖、条件覆盖等几部分,我通过查找资料后知道了如果仅覆盖了代码的一小部分不能代表软件的质量,但如果测试覆盖到了软件的绝大部分代码则对质量有些信心。但是在分析代码有了这样的疑问:在软件测试的时候需要覆盖所有的代码段吗?(第2章 个人技术和流程)
4)我在读书的过程中大概知道了敏捷流程及其相应的原则,大概了解了软件开发的流程有敏捷流程、MSF、渐进交付流程等好多种,但是同时也有了这样的提问:如何正确判断一个开发流程是对当前的项目或者团队是合适的?(第6章 敏捷流程)
5)我在读《构建之法》这本书的时候知道了在软件开发过程中创新的重要性和应该注意的事项,但同时也有了这样的疑问:同样是创新如何做到软件创新?(第16章 IT行业的创新)
四.软件有很多种:包装在盒子里的软件、基于网页的软件、企业或学校或某组织内部的软件、游戏、手机应用、操作系统、工具软件,选取三种软件,请分析它们各自的特点。
1)这些软件开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户现金么么?还是别的?
2)这些软件是如何到你手里的(邮购,下载,互相拷贝)
3)这些软件是如何处理Bug的?又是如何更新新的版本的?
4)同一类型的软件之间是如何竞争的?
手机应用:如常用的QQ、淘宝
>QQ:由于人们在交流的时候比较方便进而得到广泛的传播从而使人们主动去下载使用,他们的目标不是盈利;
淘宝:一方面是方便快捷,另一方面是由于可供选择的东西多而且范围广泛从而使我主动去下载使用,他们的目标是盈利从而赚取用户现金。
>通常是通过下载所得。
>QQ、淘宝都一样,通常都是相关工作的开发人员通过用户的需求在原有的代码、功能基础上进行分析、修改、添加,然后进行设计、管理和实现等步骤,最后实现交付并且把更新的资源包发布于网页让用户实现更新。
>同一类型的软件之间功能非常相似,因此往往会在便利性方面、不定时的给用户发一些小福利如;粮票、购物券、阅读券等方面来吸引用户从而进行竞争。
操作系统:如windows、dos、linux等
>一般是去买电脑时出厂家都已经安装好windows系统,并且windows系统的兼容性好,而且适用性强,不完全为盈利目标。
>通过下载安装或者互相拷贝。
>微软每次定期会将windows平台的大型软件的新版本都会发布在各自的官网上并且向用户推送补丁等,用户只需实时关注等待自己的电脑系统更新通知,然后下载更新。
>一般通过在系统的兼容性、所支持的硬件平台等方面强或者不定期的为用户提供免费使用、试用期等进行竞争。
工具软件:如Microsoft office系列
>由于使用方便、简单而广为传播进而成为该软件的用户,不完全为盈利目标。
>通过下载安装或者互相拷贝。
>根据用户需求进行进一步的完善然后不定期的发布更新的资源,用户通过下载更新。
>通过在使用快捷性、方便性、使用效果好、价格优惠等功能提升了它在同类型软件之间的竞争。
五.列举你在使用上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特性么?
1) 硬件是看得见、摸得着的物理部件或设备,而且在研制硬件产品时,人们对于硬件往往会表现在把原材料转变成有形的物理产品。而软件产品是以程序和文档的形式存在,通过在计算机上运行来体现他的作用并且软件可以分很多模块,有些模块是可以根据人的需求进行增删改,而且软件本身是用程序语言堆砌的。
2)软件的本质其实是硬件工作的任务,软件协调并指导硬件与硬件正确地交互产生人们想要的正确结果;最重要的是软件程序能够满意的处理信息的数据结构。