软件的定义
定义:软件是用户和硬件的接口,用户主要是通过软件和计算机进行交流的
软件=程序+数据+文档
tips:
- 在编写程序的过程中,尽量不要把很多数据放在程序中,把数据放在另一个文件当中,在程序中设定好使用文件中的数据的规则,做到代码与数据相互分离
- 做一个软件并不等于码代码,它还包括软件的框架的设计(非常重要:决定了日后软件的维护难易和开发的过程),软件形象的设计(不是说一个软件的功能很好就会有很多人用,还要较好的形象来增强用户体验[用户的体验下文会提到,对软件开发也是起到了至关重要的作用])
- 数据可以保存在我们硬件中的内存中,也可以保存在上一篇文章提到的云端(感兴趣的小伙伴可以康康)
软件的分类
按软件的功能分类
- 系统软件:操作系统 支撑软件
- 应用软件
按软件的规模分类
- 微型(500行)
- 小型(1500-2000行)
- 中型(3000-30000行)
- 大型(50000-100000行)
- 超大型(1000000行)
- 极大型(1000000-10000000行)
计算机专业的小伙伴可以大概估计一下自己大学四年写了多少行代码(对应可以开发一个多大的程序)(滑稽)
按软件的工作方式分类
- 实时处理软件
- 分时软件
- 交互式软件
- 批处理软件
软件架构
软件架构的定义
定义:软件架构时有关软件整体结构与组件的抽象模式,用于主导大型软件系统各个方面的设计。(系统草图)
对于软件架构我想多说几句:
当我们要去设计一个大型复杂的软件的时候,它是不是就是一个工程了(变小程序就像我们小时候搭积木,而编写大型程序就像是盖一座摩天大楼),这也就是软件工程。要开始一个工程我们是不是要先规划好怎么建设,是不是先要设计好工程的图纸?如果没有图纸,所有人直接开干,那这座摩天大楼是怎么都不会完工的。软件也是如此。
软件架构的分层
目前的软件系统,越来越庞大、复杂,要满足设计目标越来越困难,而用分层对系统进行分而治之(这种思想经常用于软件开发)的管理是一种行之有效的方法。
操作系统
定义
操作系统是用以控制和管理计算机系统资源的软件
(其实就是应用程序和计算机硬件的中间人)
现在计算机领域主要有以下几种操作系统:DOS(磁盘操作系统)、Windows操作系统、UNIX操作系统、LINUX操作系统、Mac OS(苹果的)
接下来着重介绍一下我们使用最多的Windows操作系统
- 开发者:Microsoft公司
- 特点:
1.直观、高效的面向对象
2 用户界面统一、友好、漂亮
3 丰富的设备无关的图形操作
4 多任务(在这之前的DOS是做不到的)
5 采用双模式结构来保护操作系统本身(内核模式和用户模式)
tips:
- Linux操作系统是开源的操作系统(不知道是不是唯一的[在我所知道的当中是唯一的]),你可以随意对其源码进行修改,创造属于你自己的操作系统)
- 注意Linux使用的时候尽量不要用图形用户界面,使用命令行进行操作
- 而·苹果的Mac OS的操作全是利用图形用户界面进行使用,所以他的用户体验非常好(虽然我都没有用过。。。。)
智能手机操作系统
- Symbian(诺基亚的那个)
- Windows Phone
- iOS(把用户体验做到极致)
- Android(现属Google)
- BlackBerry(黑莓)(说实话我没有听过。。)
软件的开发
## 软件工程的产生
学科定义:软件工程是研究如何以系统性的、规范话的、可定量化的过程化方法去开发和维护软件
背景:计算机硬件的性价比不断提高且质量稳定,但是软件的开发却赶不上硬件的发展,开发成本越来越大而且质量没有保证,正确性,可靠性降低,软件日后的维护也变得越加困难。
软件开发过程
1.问题定义–要解决的问题是什么
2.可行性研究–对上一个问题所确定的问题是狗有行得通的解决办法
3.需求分析–为了解决这个问题,目标系统需要做什么
4.总体设计-概括地说,应该如何实现目标系统
5.详细设计-如何具体的实现这个系统
6.程序开发
7.软件测试
8.软件维护
tips:
- 其中所需时间最多是需求分析
- 成本最高的是软件维护
用户界面(UI)与用户体验(UE)
背景:随着计算机硬件的飞速发展,过去的软件设计已经不能适应用户的要求。用户界面和用户体验在软件开发过程中的重要性日益凸显。
用户界面设计的三大原则是:值界面于用户的控制之下,减少用户的记忆负担,以及保持界面的一致性
苹果是将用户体验放在非常重要的位置的公司
程序设计语言
定义:是一组用来定义计算机程序的语法规则
分类:机器语言、汇编语言、高级语言
机器语言:机器语言是用二进制代码表示的计算机能直接识别和执行的机器指令的集合
汇编语言:是机器语言的符号化,采用住距傅代替指令的二进制操作码
高级程序语言:一种与自然语言相近并为计算机所接受和执行的计算机语言
高级程序语言的种类:C语言、java、C++、python、html、php(拍黄片哈哈哈)、go语言等等
参考资料:
1.计算机导论 高等教育出版社(宋华珠 钟珞 主编)
2.程序设计语言百度百科:https://baike.baidu.com/item/程序设计语言
3.软件架构百度百科:https://baike.baidu.com/item/软件架构
4.苹果官网:https://www.apple.com.cn/cn/
5.微软官网:https://www.microsoftstore.com.cn/