2019本科se第一次作业-20194608王嘉悦

1.1软件=程序+软件工程

  本章中出现的计算机专业术语:

  源程序、软件架构(Software Architecture)、软件设计与实现(Software Design,Implementation and Debug)

  源代码管理(Source Code Control)、配置管理(Software Configuration Management)

  质量保障(Quality Assurance)、软件测试(Test)

  需求分析(Requirement Analysis)、程序理解(Program Comprehension)

  软件维护(Software Maintenance)、服务运营(Service Operation)

  软件的生命周期(Software Life Cycle, SLC)

  软件项目的管理(Project Management)、用户体验(User Experience)

  国际化与本地化(Globalization & Localization)

  对于一个软件其最基本的是源程序,但一个好的软件不单单要有一个较为完整的源程序代码还有有着一定量的用户和需求。

  软甲开发还分很多不同的阶段:

  在本章中笔者列举了四个阶段:

  1、玩具阶段:该阶段制作出的程序出现的问题只会影响到自身并不会对他人造成影响。

  2、业余爱好阶段:该阶段成功与否会影响到的是一个人对于编程方面得兴趣。

  3、探索阶段:该阶段是前人成功和失败遗留下来的可以供后人参考的经验,同时又有着划时代的意义,代表了新的开始。

  4、成熟的产业阶段:该阶段生产出的软件如果出现某些错误可能会影响到一家公司甚至一个行业的挫折与失败,进而导致很多人收到波及。

  商业软件和业余爱好者程序的区别:商用软件一般考虑的较为全面,即使有万分之一的可能性都会区考虑到;而业余爱好者编程出的软件则引用了概率的问题,节省时间和成本来写出可执行的程序。

1.2软件工程是什么

  1、软件工程是把系统的、有序的、可量化的方法应用到1软件的开发、运营和维护上的过程。

  2、软件工程包括以下领域:软件需求分析、软件设计、软件构建、软件测试、软件维护

  3、软件工程和下列学科相关;计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计。

  个人的理解就是把无序变为有序即为软件工程的核心所在。

1.2.1软件的特殊性

  软件有各种各样的分类方法,下面就是软件分类其中一种方法:

  • 系统软件:操作系统、设备驱动程序、工具软件等
  • 应用软件:用户使用它们来完成工作,从管理核电厂到写文章,或者是通信、游戏、浏览网页、播放视频等
  • 恶意软件:软件病毒等

  软件的发展会随着人类社会的发展进步而发展。

  为什么近年来计算机硬件能力飞速发展,而软件开发流程却没有这样的提速过程并且开发成本也没有降低:

  1、复杂性(Complexit):软件可以说是人类创造的最复杂的系统类型。而对于理解这些的人的智力和记忆力并不会像电脑硬件一样飞速发展。

  2、不可见性(Invisibility):软件工程师能直接看见源代码,但是源代码不是软件本身。对于工程师他们可以看到软件出现错误遗留下的痕迹,

  但是无法具体明确当时到底发生了什么,这对于问题的修复可以说是一个巨大的阻碍。

  3、易变性(Changeability):软件看上去很容易修改,修改软件比修改硬件容易多了。人期待软件可以去适应新的事物,但是正确修改软件使其能达到目的是一件非常困难的事情。

  4、服从性(Conformity):软件不能独立存在,它总是要运行在硬件上面。,它要服从系统中其他组成部分的要求,他还要服从用户的要求,行业系统的要求。

  5、非连续性(Discontinuity):人们比较容易理解连续的系统:增加输入,就能看到相应的输出的增加。但是很多软件在输入上有很小的变化,输出时会有天壤之别的差距。

  就像著名的“没有银弹(No Silver Bullet)”论断所阐述的道理一样,即使网络上出现了各种各样的方便快捷的软件开发流程,又或者出现的各大论坛都不是一个万能的钥匙。 

1.2.2软件工程与计算机科学的关系

计算机科学

软件工程

发现和研究长期的、客观的真理

短期的实际结果(具体的软件会过时)

理想化的

对各种因素的折衷

确定性,完美,通用性

对不确定性和风险的管理,足够好,具体的应用

各个学科独立深人研究,做出成果

关注和应用各个相关学科的知识,解决问题

理论的统一

百花齐放的实践方法

强调原创性

最好的、成熟的实践方法

形式化,追求简明的公式

在实践中建立起来的灵感和直觉

正确性

可靠性

   人类要生存,人类文明需要发展,离不开思考、发现、构建

  • Build To Learn : 开发软件,构建系统的目的是做进一 步的试验,试图发现客观规律或探求某方法的优劣。这些项目经常是科研论文的基础工作。
  • Build To Show:为了突出地展现某个技术的作用,开发一些以演示为目的的软件,这些项目很吸引眼球,经常获得新闻报道,但是功能未必全面或实用。
  • Build To Serve:为了服务-定范围的目标用户而构建的工具等,有时以公开SDK的形式发布,让别的研发人员使用。
  • Build To Win:以在市场上赢得用户为目标而构建的软件。这也是种种科学发现、技术突破最好的试金石。这是我做得最多的项目类型,也是这本书的英文名字。

1.2.3软件工程的知识领域

  生命周期:软件需求、软件设计、软件构建、软件测试、软件维护

  专门领域:软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法、软件质量

  理论基础:计算基础、数学基础、工程基础

1.2.4软件工程的目标——创造“足够好”的软件

  用户满意度:用户在使用时发现了软件的很多问题,影响了用户使用软件的效率。

  可靠性:某个软件经常崩溃,某个操作系统时不时会死机,某个网站往往最需要的时候登不上去。

  软件流程的质量:软件团队和开发流程的问题太多,导致团队成员无法相互协作,按时交付软件。(软件团队最大的Bug)

  可维护性:某个软件太难维护了,按下葫芦起了瓢,修复一个问题,另一个问题又出来了。

  软件工程的目标不是做到完美而是做好。

1.3练习讨论

  P18-2

  通读本章我有如下几个问题:

  1、现阶段我们究竟是去做业余爱好者还是去做商用软件开发者亦或是两者都不是(商用软件一般考虑的较为全面,即使有万分之一的可能性都会区考虑到;

  而业余爱好者编程出的软件则引用了概率的问题,节省时间和成本来写出可执行的程序。)

  2、一个好的软件的开发往往离不开一整个团队的配合,作者将软件开发团队比作球队,其中每一个人各司其职,但是这样的一个团队往往需要多久的磨合期,

  上网去查阅资料得到的答案差距甚大,几周几个月甚至论年来算的都有。

  3、对于软件工程这一行业,未来是否需要由一个技术性人才去往管理方面发展,这个问题不是在书中明确写道的,知识在读书时候突然出现的一个想法,去查询资料

  各种各样的说法也都有,有的说技术才能才是本钱,有的说一个程序工程师到了40岁就是一大关,很多人都要去往管理方面转型。

  4、如果团队之中工程即将结束,这时候团队出现了问题导致工程无法继续进行这时候应该怎么做,这个问题上网查阅并没有太大的收获,网上和书上都没有太仔细写这方面的内容

  5、我们究竟应该把用户想想成为一个什么样子的人,书上第十二章说到,我们觉得用户会懂往往他们不会,但是具体有没有明确的说,到底该去怎样理解用户和他们的需求。

  P18-3

  我手机上的各种软件

  通讯软件:腾讯QQ、微信

  学习软件:乐词、有道词典

  音乐软件:QQ音乐、网易云音乐

  购物软件:淘宝,京东,闲鱼

  视频软件:BILIBILI、抖音、爱奇艺

  游戏软件:王者荣耀、忍者必须死3

  其他交互软件:微博,贴吧

  软件总结:

  这些软件让我下载的原因:因为我个人的需求,以及其他人的要求。

  目标:多数的软件都是以盈利为目的,盈利的手段有的是下载收费,有的是内置收费,有的收取广告费,而有少部分软件则以宣传为目的。而且由于目前电子现金较为发达,消费方式多以电子现金。

  如何到我手上的:大部分是自行下载的,少部分是手机内置,还有一部分是通过别人推荐然后传过来的。

  使用感觉:不同的时候需要的软件也不同,用起来顺手的会留下,不好的会卸载。

  处理Bug以及更新版本:通过维护然后对这个软件进行打补丁,有的是强制的有的是可以让用户自行选择。

  同一类软件如何竞争的:前期通过宣传吸引大批关注者,而后鼓励玩家帮助他们进行宣传,比如给出优惠或者福利,然后开始公测,通过进一步的宣传吸引大批用户。

猜你喜欢

转载自www.cnblogs.com/www981210/p/11518133.html
今日推荐