第一章
计算机专业术语:
软件=程序+软件工程
程序=算法+数据结构
源程序:按照一定的程序设计语法编辑出来的文本,是一系列的人类可读的计算机语言。
软件架构:大型工程的总体规划设计(利用cc和link命令)。
源代码管理(亦称配置管理):保证软件在修改的过程中质量不断提高,为某个需求写一些特殊的功能。
软件测试:开发出的软件进行质量验证的过程。
程序理解:软件团队中新人对已有程序的的了解。
软件维护(或称服务运营):给软件进行维护,团队的队员进行修复的各种各样的问题。
用户体验:使用者对该软件的体验感。
软件的生命周期:对软件进行维护的过程。
软件项目的管理:软件维护的管理人员。
软件的国际化和本地化:不同语言,不同地区用户对界面和功能的不同需求。
计算机科学领域分类(如下图所示):
(1)偏理论领域:
计算理论
信息和编码理论
算法和数据结构
形式化方法
程序设计语言
(2)偏实践领域:
计算机体系结构
并行计算和分布式系统
实时系统和嵌入式系统
操作系统
计算机网络
科学计算
安全和密码学
人工智能(模式识别、机器学习、数据挖掘、信息提取等)
计算机图形学、计算机视觉、多媒体
数据库和大规模数据处理
万维网
自然语言处理和语音
人机交互
软件工程
计算机科学领域分类
软件工程目标:
符合用户需求
在预计时间内发布“足够好”的软件
后续的维护和继续发展
软件的特殊性:
复杂性:极其复杂的大型系统(如:操作系统、办公软件、搜索引擎),代码超过百万行。
不可见性:软件工程师可直接看见源代码,但源代码非软件本身,软件执行不可见。
易变性:软件的修改比硬件修改容易(a.让软件做新的事情;b.让软件适应新硬件)
服从性:软件不能脱离硬件单独存在。
非连续性:软件系统在输入变化极小的情况下可能会导致输出的极大变化。
阅读教材问题:
(1)p26,看了问和答的话,无法正确理解和区分“极限编程测试”和“单元测试”的正确的含义。
(2)p36,工程师和大学生在做软件时,工程师在测试时所使用的时间比大学生在做测试时多,为何不在软件发布之后进行软件更新。
(3)p169,软件项目计划中有一个对项目的估计,如果在大型的软件项目中(如微软的办公系统开发)如何进行时间估计,如何进行大规模的安排规划,是一步步研发还是安排总 的时间,在总时间之前研发完成。
(4)p225,图形建模,属于抽象建模还是理论建模,那应当如何进行建模。
(5)p274,黑白箱测试设计中,我们该如何进行黑白箱设计,如何进行测试。
软件分类:
手机应用(mobile app):微信、QQ、高德地图、铁路12306、哔哩哔哩(简称B站)
游戏(game):英雄联盟、刺激战场
工具软件(tools):谷歌翻译、海词词典,GitHub博客
其中以B站和英雄联盟为例作特点分析:
1.其中B站作为现目前中国使用人数做多的学习软件之一(B站的原作用为看动漫视频的播放器,后来开发者在其中添加了大量的学习视频以及大量的非收费的视频),在加入了大量的学习视频之后,人气持续上升,超过了网易的慕课网使用人数。其中以流量、广告、出售商品获取利润。有一部分是通过网银进行交易。主要以流量为主。 英雄联盟作为现目前中国最受欢迎的大型网络游戏之一,属于塔防式游戏,类似于刀塔。不似现目前市面上以游戏装备贩卖、升级、充钱类的游戏,英雄联盟充钱并不能解决 装备和角色升级的问题。英雄联盟主要以流量(下载量,更新量)、皮肤销售、广告为主要的盈利手段。有一部分赚取现金(皮肤售卖)。
2. 大二在网上进行视频学习的时候下载B站,B站非常适合学习,主要是里面大量的学习视频不需要花钱购买。不会玩英雄联盟,但知道这个游戏,不论从运营还是制作相当成功的一个游戏,特别是英雄联盟的运营,腾讯做得非常到位。
3. 当出现了bug时进行更新,英雄联盟强制更新,B站由用户自己决定。
4. B站集合了各种视频(动漫、游戏、学习、直播等)并且大量视频不需要收费,视频无广告,用户体验感相对较强。腾讯对英雄联盟的宣传主要以英雄联盟国际比赛(春季 赛、夏季赛等)以及各大主播平台大量主播的播放宣传为主。