201771030124-温腾虎 实验一 软件工程准备—<软件工程的三个问题>

项目 内容
这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/
这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/12369881.html
作业学习目标
快速浏览邹欣老师博客或《现代软件工程—构建之法》

参照参考文章的提问模板,尝试拟定3个准备从课程学习中找到答案的问题,并以写博客形式记录下来

博客要求使用Markdown排版
本作业在哪些方面帮助我实现学习目标 学会使用Markdown排版来撰写博客,学会如何提问
作业正文 (1)学习博客园软件开发者学习社区使用技巧和经验;(2)了解Github的基本操作
作业参考文献 邹欣.构建之法:现代软件工程[M].人民邮电出版社,2014

我有关软件工程方面的三个问题及自己的拙见

- 1.我们写的demo和我们用的一些app的区别?
  在我们平常的作业交流过程中都经常会说“你那个程序敲出来了吗?”“我这个程序bug太多,我太难了!”,而对于我们用的一些app交流时又会说“这个软件好用吗?”“那个软件免费吗?”。
  在我们平常练习的过程中也会写一些小的demo,比如程序员的开山之作“Hello World”,和我们用的app比如QQ、WeChat、拼多多、淘宝又有什么区别。仅仅是实现功能的区别吗?我想,不只是!
  在邹欣老师的《构建之法》一书中给出的结论是:

软件 = 程序 + 软件工程

企业软件 = 软件 + 商业模式

  就拿书中阿超的故事来说,自己为了方便给儿子随手敲了一段代码方便出题,这个就处在初级阶段,是程序;而之后老师们也觉得好,想要一些更复杂的功能,这就需要各方面的协调,比如需要老师们提出要求,教导主任还需要生成试卷……更别说还需要测试有没有bug,这就不单是阿超一个人能搞定的了,这就需要多工种协同完成,形成一个小的系统工程,从阿超的自娱自乐变成了服务全校的软件;最后校长找过来,要阿超上线英语版本二十四小时服务全球,如果在此时阿超成立一个公司,上线多种语言版本,前期免费试用抢占市场,后期会员制度收费使用,通过一些商业行卫获利,那就从一个软件变成了企业软件。
  无论从研发还是实现的功能软件都比程序复杂得多,这种复杂不单是一方面的,而是多维度的整体的复杂。
- 2.如何避免随时出现的需求拖垮项目?
  需求拖垮项目这种例子有很多,就比如印度自研的 阿琼坦克。1974年3月,印度政府正式批准了阿琼的研制计划,并为该项目进行了第一次拨款,研发期间每次测试的都会有新的要求提出来,新的指标提出来,直到2009年5月25日印度陆军才接收16辆阿琼主战坦克。这中间横跨了35年,坦克的体积也增到了印度军方难以接受的58吨,其中还有些新老系统不兼容等一些列问题,造成了服役即退伍的状态。
  软件的研发也有可能存在这种问题,需求一部分是开始之前就有的,而一些是研发过程随时有可能提出来的,那我们应当怎样处理这样的新的需求呢?
  我认为提前做足功课很重要,一点更要考虑到未来的需求,印度阿琼坦克立项时只是提了当时的作战的指标,并没有考虑到研发的时间成本,随着研发时间的流逝,作战指标也随之提高,考到新的技术就是想往上加,这种周而复始的加需求研制,会走到一个死胡同。我认为正确的做法是,确定一个时间节点,封闭需求,或者绝不轻易增删改需求,先研发出来一个可行的版本,对于新的需求在更新的版本上添加就行,这样最起码有可用的软件,且可以与时俱进。

- 3.研发过程中是人重要还是技术重要?
  对于这个问题我认为是人和技术都很重要。作为一个伪军迷我就再拿军事装备给大家举例:
  轰-6系列是我国唯一的轰炸机平台,是20世纪50年代末中国航空工业西安飞机工业(集团)有限公司参照前苏联中型喷气轰炸机图-16研制,1969年轰-6批量投产。到现在已发展出轰-6K等十余种型号,无论我们再怎么改进,但由于底子技术太老旧,无论科研人员如何努力,都没有办法焕发一新,终将退出历史的舞台。
  印度的LCA光辉战斗机,其研制的这款战机肯定有借鉴西方发达国家战机的经验及技术,如发动机机来源于美国,雷达系统来源于以色列,气动外形设计参考的是法国阵风战机,光辉战机可以说是一款融合了很多国家技术的战机。但是由于研发团队制造团队等一些列人的问题,这款战斗机服役后迟迟没有形成战斗力(没有战备巡航)。可见,光有先进的技术研发人员没有坚定的信念,没有必胜的决心也是不能成功的。
  以上的两个例子从正反两反面分别验证了技术和人的重要性,一个成功的软件也离不开两方面的协同,只有坚定的团队拥有好的技术支持才能有好的软件的研发成功。
  但这又会引申出另一个话题,软件团队每个人个性不一,如何引导大家团结一致呢?我认为:

  • 目标一致
    大家都认同的目标,要不然人心各异,不认同的人就不会为这个目标而奋斗,队伍还没开始努力就散了,所以有共同的目标是好的开始。
  • 明确奖惩机制
    能者多劳但也要多劳多得,只有这样才能激发团队成员的斗志;但对于做的不好的成员也要惩罚,起鞭策作用。这里有个很有趣的例子

    月薪100W,公司的方向就是我活着的意义。
    月薪80W,公司就是我爹娘。
    月薪50W,我与公司共存亡。
    月薪30W,我每天思考的只有工作。
    月薪10W,我不需要下班。
    月薪8W,办公室的甲醛像冰毒一样让我着魔。
    月薪5W,996就像呼吸一样自然。
    月薪3W,老板说什么都是对的,错的一定是我。
    月薪2W,老板说啥就是啥吧,我不关心,给钱就行。
    月薪1W,老板说的有点问题,但我不说话。
    月薪8k,人在屋檐下,不得不低头。
    月薪5K,老板脑子有坑,我在背后说坏话。
    月薪2K,老板WQNMLGB。
    月薪1k,老板我是你爹。

--引用自作者:半佛仙人原回答

  • 流畅的沟通
    沟通也是团队协作的重要一环。沟通可以有效的减少矛盾,增进感情,也有助于处理工作当中的问题,比如项目之间的衔接问题。
  • 合适的团队文化
    不同的团队有不同的文化,比如华为是狼性文化,大家都像狼群一样拼命为一个目标忘我的工作。好的企业文化可以鼓舞士气,提高认同感,提升团队价值。

小结

  通过《实验一 软件工程准备》我学习了博客和GitHub的使用方法,这给我今后的学习提供了很大的方便。完成任务五我也对提出问题解决问题有了更深刻的理解,加强了我的自学能力。当然也许会了markdown排版方法,我后在之后的学习中加强这方面的练习。

猜你喜欢

转载自www.cnblogs.com/Vereda-Tropical/p/12372962.html