源程序、软件架构(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)网站
对于一个软件其最基本的是源程序,但一个好的软件不仅仅要有一个较为完整的源程序代码还有有着必定量的用户和需求。ui
软甲开发还分不少不一样的阶段:spa
在本章中笔者列举了四个阶段:
一、玩具阶段:该阶段制做出的程序出现的问题只会影响到自身并不会对他人形成影响。
二、业余爱好阶段:该阶段成功与否会影响到的是一我的对于编程方面得兴趣。
三、探索阶段:该阶段是前人成功和失败遗留下来的能够供后人参考的经验,同时又有着划时代的意义,表明了新的开始。
四、成熟的产业阶段:该阶段生产出的软件若是出现某些错误可能会影响到一家公司甚至一个行业的挫折与失败,进而致使不少人收到波及。
商业软件和业余爱好者程序的区别:商用软件通常考虑的较为全面,即便有万分之一的可能性都会区考虑到;而业余爱好者编程出的软件则引用了几率的问题,节省时间和成原本写出可执行的程序。
一、软件工程是把系统的、有序的、可量化的方法应用到1软件的开发、运营和维护上的过程。
二、软件工程包括如下领域:软件需求分析、软件设计、软件构建、软件测试、软件维护
三、软件工程和下列学科相关;计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计。
我的的理解就是把无序变为有序即为软件工程的核心所在。
软件有各类各样的分类方法,下面就是软件分类其中一种方法:
软件的发展会随着人类社会的发展进步而发展。
为何近年来计算机硬件能力飞速发展,而软件开发流程却没有这样的提速过程而且开发成本也没有下降:
一、复杂性(Complexit):软件能够说是人类创造的最复杂的系统类型。而对于理解这些的人的智力和记忆力并不会像电脑硬件同样飞速发展。
二、不可见性(Invisibility):软件工程师能直接看见源代码,可是源代码不是软件自己。对于工程师他们能够看到软件出现错误遗留下的痕迹,
可是没法具体明确当时到底发生了什么,这对于问题的修复能够说是一个巨大的阻碍。
三、易变性(Changeability):软件看上去很容易修改,修改软件比修改硬件容易多了。人期待软件能够去适应新的事物,可是正确修改软件使其能达到目的是一件很是困难的事情。
四、服从性(Conformity):软件不能独立存在,它老是要运行在硬件上面。,它要服从系统中其余组成部分的要求,他还要服从用户的要求,行业系统的要求。
五、非连续性(Discontinuity):人们比较容易理解连续的系统:增长输入,就能看到相应的输出的增长。可是不少软件在输入上有很小的变化,输出时会有天壤之别的差距。
就像著名的“没有银弹(No Silver Bullet)”论断所阐述的道理同样,即便网络上出现了各类各样的方便快捷的软件开发流程,又或者出现的各大论坛都不是一个万能的钥匙。
计算机科学 |
软件工程 |
发现和研究长期的、客观的真理 |
短时间的实际结果(具体的软件会过期) |
理想化的 |
对各类因素的折衷 |
肯定性,完美,通用性 |
对不肯定性和风险的管理,足够好,具体的应用 |
各个学科独立深人研究,作出成果 |
关注和应用各个相关学科的知识,解决问题 |
理论的统一 |
百花齐放的实践方法 |
强调原创性 |
最好的、成熟的实践方法 |
形式化,追求简明的公式 |
在实践中创建起来的灵感和直觉 |
正确性 |
可靠性 |
人类要生存,人类文明须要发展,离不开思考、发现、构建
生命周期:软件需求、软件设计、软件构建、软件测试、软件维护
专门领域:软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法、软件质量
理论基础:计算基础、数学基础、工程基础
用户满意度:用户在使用时发现了软件的不少问题,影响了用户使用软件的效率。
可靠性:某个软件常常崩溃,某个操做系统时不时会死机,某个网站每每最须要的时候登不上去。
软件流程的质量:软件团队和开发流程的问题太多,致使团队成员没法相互协做,按时交付软件。(软件团队最大的Bug)
可维护性:某个软件太难维护了,按下葫芦起了瓢,修复一个问题,另外一个问题又出来了。
软件工程的目标不是作到完美而是作好。
P18-2
通读本章我有以下几个问题:
一、现阶段咱们到底是去作业余爱好者仍是去作商用软件开发者亦或是二者都不是(商用软件通常考虑的较为全面,即便有万分之一的可能性都会区考虑到;
而业余爱好者编程出的软件则引用了几率的问题,节省时间和成原本写出可执行的程序。)
二、一个好的软件的开发每每离不开一整个团队的配合,做者将软件开发团队比做球队,其中每个人各司其职,可是这样的一个团队每每须要多久的磨合期,
上网去查阅资料获得的答案差距甚大,几周几个月甚至论年来算的都有。
三、对于软件工程这一行业,将来是否须要由一个技术性人才去往管理方面发展,这个问题不是在书中明确写道的,知识在读书时候忽然出现的一个想法,去查询资料
各类各样的说法也都有,有的说技术才能才是本钱,有的说一个程序工程师到了40岁就是一大关,不少人都要去往管理方面转型。
四、若是团队之中工程即将结束,这时候团队出现了问题致使工程没法继续进行这时候应该怎么作,这个问题上网查阅并无太大的收获,网上和书上都没有太仔细写这方面的内容
五、咱们究竟应该把用户想一想成为一个什么样子的人,书上第十二章说到,咱们以为用户会懂每每他们不会,可是具体有没有明确的说,到底该去怎样理解用户和他们的需求。
P18-3
我手机上的各类软件
通信软件:腾讯QQ、微信
学习软件:乐词、有道词典
音乐软件:QQ音乐、网易云音乐
购物软件:淘宝,京东,闲鱼
视频软件:BILIBILI、抖音、爱奇艺
游戏软件:王者荣耀、忍者必须死3
其余交互软件:微博,贴吧
软件总结:
这些软件让我下载的缘由:由于我我的的需求,以及其余人的要求。
目标:多数的软件都是以盈利为目的,盈利的手段有的是下载收费,有的是内置收费,有的收取广告费,而有少部分软件则以宣传为目的。并且因为目前电子现金较为发达,消费方式多以电子现金。
如何到我手上的:大部分是自行下载的,少部分是手机内置,还有一部分是经过别人推荐而后传过来的。
使用感受:不一样的时候须要的软件也不一样,用起来顺手的会留下,很差的会卸载。
处理Bug以及更新版本:经过维护而后对这个软件进行打补丁,有的是强制的有的是可让用户自行选择。
同一类软件如何竞争的:前期经过宣传吸引大批关注者,然后鼓励玩家帮助他们进行宣传,好比给出优惠或者福利,而后开始公测,经过进一步的宣传吸引大批用户。