一、花20分钟写一个能自动生成小学四则运算题目的“软件”,要求:除了整数以外,还要支持真分数的四则运算。

这次作业对于我可以说是一个挑战,题目中的20分钟我花了整整3天时间才做完,期间翻书,百度,问同学N次,才完成了整数类型的自动出题运算。

整个程序以 C++在VS2017平台上完成。

在做这个小程序的时候还没有看书,对PSP一无所知,做时先想的是如何计算四则算式,想到的就是逆波兰式计算,于是就先做了转换逆波兰式的函数和计算逆波兰式的函数。

然后难点就出在如何自动出题了,首先想到的方法是直接输出一个随机数和随机运算符然后将它们连接起来。分别写了函数输出随机数和随机运算符。然后发现整数不能直接和字符连接,就写了将数字转换成字符串的函数。

代码地址:https://git.coding.net/zL752246091/Mixed_operation.git

• 在一周之内快速看完《构建之法》,列出你不懂的5-10个问题,发布在自己的博客。

        看完整本书感触良多,可以说是有种豁然开朗的感觉。在3.3 软件工程师的职业发展(P55) 将人们对职业的态度分为5个等级,其中第一级的人们处于低动力,低技能的状态;也不知道自己要投身什么,书中告诉我只要认真探究就会领悟该领域的神韵。我佷尴尬正处于低动力,低技能的状态。我发现认真学习当完成这个作业时有种小小的满足感。或许我会一直追求这满足感吧。

一、在P60页中,讲技能的反面,其中将问题分为舒适区,学习区,恐慌区。我理解是这三个区不停的转换,学习区缓慢向恐慌区扩展,舒适区向学习区扩展。那么精通技能我们是需要将恐慌区全部转化为舒适区吗?

二、在P75页中,有这样一句,“只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto。”在上课时老师说在程序比较简单是用goto语句是比较灵活,但是当程序比较复杂时很容易造成程序流程的混乱,以后别人看程序会很难理解,调试程序的过程也会变得很困难。所以建议直接不使用goto语句。那么以后究竟应不应该使用goto语句呢?

三、在P85页中讲结对编程,从85页-90页我看出了结对编程的很多优点。但如果长时间进行结对编程会不会产生依赖性,使独自编程时降低警惕性。需不需要在结对编程后加强一下自身的独自编程能力。

四、在P205页中讲到应对风险要六种手段。其中接受这个手段。我觉得并不可取。人事变动,就直接不管了,是不是有点不负责任。

五、P212页中讲到我们要找到用户语言和行动背后的动机。这会不会有点过了。

本书讲法新奇,比较与其它类书籍有种文言文和白话文般的区别。能让像我这种小白也能理解软件工程的“生平”是真的不错。

• 软件有很多种:包装在盒子里的软件、基于网页的软件、企业或学校或某组织内部的软件、游戏、手机应用、操作系统、工具软件,选取三种软件,请分析它们各自的特点。

1)这些软件开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户现金么么?还是别的?

        游戏:主要是被游戏厂商的广告引起好奇心,试用时被游戏剧情,操作方式和游戏可玩性所吸引而成为该游戏的用户。他们的目标基本都是盈利,大部分是直接赚取用户现金。将游戏本身或游戏中的虚拟产品出售给玩家以赚取现金。也有小部分可玩性高的小游戏是出于分享给大家的目的制作的。

        手机应用:能满足我的需求加上广告宣传。他们的目的大都是盈利。他们的目标不都是赚取用户现金,大部分是通过软件的使用人数接取广告从用户身上实现间接盈利。小部分如手机基本软件(相机,相册等等)是直接卖给用户,直接赚取现金。而如12306,                    CCTV直播等软件目的是服务大众,盈利是附带产品。

        操作系统:稳定性,兼容性强,广告宣传开发布会。他们的目的大都是盈利。如微软公司的系统是直接卖给用户赚取现金。而如优麒麟等系统目的是想让更多的人使用甚至让一些用户加入研发为目的发行的。

2)这些软件是如何到你手里的(邮购,下载,互相拷贝)

游戏:购买(线上,线下),下载,互相拷贝

手机应用:下载

操作系统:购买,下载,互相拷贝。

3)这些软件是如何处理Bug的?又是如何更新新的版本的?

游戏:时常更新补丁来处理BUG,出现重大BUG时会停止运行修复后在重新运行;有时添加一个数据包更新,有时直接重新下载整个游戏更新。

手机应用:通常是先处理完BUG然后再更新版本中一起发出。出现大BUG时,会加急修复发布补丁。

操作系统:通常是先处理完BUG然后再更新版本中一起发出。出现大BUG时,会加急修复发布补丁。

4) 同一类型的软件之间是如何竞争的?

游戏:在同种类型的游戏中,都在丰富游戏的剧情,简化游戏的操作方式,提高游戏的知名度,增强游戏的画面,可玩性以及降低游戏的运行标准和游玩收费来竞争。

手机应用:首先是宣传,人们几乎都是以下载量下软件。但重要是用户体验,如B站以绝不放广告而拥有的大量忠实用户。

操作系统:稳定性和流行程度。

列举你在使用上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特性么?

    硬件是存在于现实世界的,我们可以看见,摸着。而软件是以硬件为基础的,存在于虚拟世界之中。想使用软件,我们必须拥有相应的硬件。
    所以我觉得软件是无形的,没有物理形态,只能通过在硬件上运行状况来了解功能、特性、和质量
    软件不会像硬件一样有物理上的损伤,但存在缺陷维护和技术更新
    软件可以从这个硬件到另一个硬件,它可以被移植。

团队:
  1600802002 成凯(组长)

  1600802004 党康

  1600802034 赵乐