一、操作系统(OS)
操作系统(OS)是管理计算机硬件与软件资源的计算机程序,也是用户与计算机交互的桥梁,计算机上主要的流行操作系统有Windows、UNIX和Linux三种,同时它不仅只针对计算机,还有针对移动端开发的操作系统,例如Android、IOS、Harmony OS等等,其中Android是一种基于Linux的自由及开放源代码的操作系统,由低到高可分为Linux内核层、系统运行层、应用程序框架层和应用程序层;而IOS是基于Unix开发的。
以下主要介绍UNIX和Linux两种:
1、UNIX
UNIX是一个多用户、多任务操作系统的操作系统,它具有良好的安全性和网络功能,所以常用作网络操作系统,也被作为单机操作系统使用。
2、Linux
Linux是一个免费且开源(其源代码完全向用户免费公开)的类UNIX操作系统,继承UNIX的设计风格演变出来的多用户、多任务、支持多线程和多CPU的操作系统,对Linux操作系统感兴趣的可以了解博主之前的文章系列:Linux操作系统简介。
二、进程
(一)进程的状态
操作系统中的进程有三种基本的状态,分别是就绪态、运行态和阻塞态,这三种状态在一定条件下可以转换。
1、就绪态
进程等待分配处理器进程,分配好后即可进入运行态,处于就绪状态的进程很多,可以按照一个优先级来划分队列,当一个进程是由于时间片用完后进入就绪状态时,则排入低优先级队列;而当进程是由I/O操作完成后进入就绪状态时,则排入高优先级队列。
2、运行态
处于运行态的进程占用处理器的资源,在系统中有很多在后台一直处于运行态的进程。
3、阻塞态
阻塞态的基础由于要等待某种条件,例如I/O操作或进程同步,条件满足后才可转为就绪态然后再转为运行态。
(二)进程的关系
进程之间有很多关系,例如并发、并行、互斥、协作等等,并发是指有两个或两个以上的程序同时处于运行且未结束的状态;并行是指一个进程的执行可能影响其他进程的执行,即它们关系是依赖关系,进程之间共享某些资源;进程之间互相竞争某一个资源称为进程的互斥;并发进程使用共享资源称为进程的同步,操作系统使用信号量机制来保证信号的同步和互斥。
1、互斥
对于进程之间的互斥,操作系统设置一个互斥信号量S,只要将临界区置于P(S)和V(S)之间,即可实现互斥,由于这个信号量与所有的并发进程都有关,称为公用信号量。
当想访问临界资源的进程想进入设置的临界区时,需先对信号量S执行P操作,若改资源未被访问则本次P操作成功,即可进入临界区;其他进程会执行操作失败而被阻塞,从而保证了互斥。
2、同步
对于进程之间的同步,同样操作系统也会设置一个信号量,称为私有信号量,它只与制约进程和被制约的进程有关。若进程之间同步,则各并发进程设置各自的私有信号量,并将其赋初值,然后根据PV原语和私有信号量来规定各个进程的执行顺序。
另外,除以上关系外,进程之间还有死锁关系,即各个进程之间相互等待对方的资源,在得到对方资源前不会释放自己的资源,从而造成一种相互等待的现象。
三、CMM和CMMI模型
1、CMM(能力成熟度模型)是一种用于评价软件承包能力并帮助其改善软件质量的方法,它侧重于软件开发的管理及工程能力的提高与评估,且它分为以下五个等级:
(1)初始级;
(2)可重复级;
(3)可定义级;
(4)可管理级;
(5)优化级。
2、CMMI(能力成熟度模型集成)是由CMM模型的最新版本,它也分为五个等级:
(1)完成级;
(2)管理级;
(3)定义级;
(4)量化管理级;
(5)优化级。
四、软件设计和软件测试
(一)软件设计
软件设计需要遵循抽象、模块块、信息屏蔽和模块独立原则,在划分软件系统模块时,应尽量做到高内聚、低耦合。
(二)动态测试和静态测试
软件开发过程中,需对软件进行测试,软件测试简单地可以分为动态测试和静态测试,它们的区别在于是否运行程序来进行测试,这里主要介绍动态测试。
其中,动态测试根据在软件开发过程中所处阶段和作用可分为以下测试:
名称 | 含义 |
单元测试 | 对软件的基本组成单位进行测试 ,如一个模块、一个过程等等,从而验证软件基本组成单位的正确性。 |
集成测试 | 对一个应用系统各个部件的联合测试 ,验证共同工作时是否有冲突。 |
系统测试 | 在系统实际运行环境下进行测试 ,除了包括要测试的软件,还包括软件所依赖的硬件、外设、数据、支持软件以及接口等等。 |
验收测试 | 验收测试 是部署软件之前的最后一个测试,其目的是确保软件准备就绪,且让最终用户通过执行该文件实现既定功能和任务 |
1、单元测试
既然是单元,即对软件中的基本组成单位进行测试,检验其正确性,也可以说是对软件中的最小可测试单元进行检查和验证,不同编程语言编写的软件所针对的的基本单元不同。(这里可以比如像组装一台手机,要对其基本元件进行测试其功能的完整性和正确性等等)
2、集成测试
集成测试是在单元测试完成的基础上,将所有的模块按照设计要求组装成为子系统或系统进行测试,从而测试其是否冲突,即对多个单元进行组合从而进行测试。
3、系统测试
系统测试是更加系统化地进行测试,所以它不仅包括要测试的软件,还有包括软件所依赖的外设、硬件等等,即将软件与其所要依赖的环境资源进行结合从而在系统的实际运行环境下进行测试。
4、验收测试
验收测试是部署软件之前的最后一个测试操作,其目的是确保软件准备就绪,且可以让最终用户通过执行该软件实现软件的相关要求,这里用户和软件开发组织(或独立的测试小组)一起进行执行验收测试。
另外验收测试也分为以下几种策略:
名称 | 解释 |
正式验收 | 通常是系统测试的延续,不过比系统测试更加周密和详细 |
非正式验收 | 相较于正式验收不是那么严格,测试内容由各测试员决定,主观性较大 |
α测试 | 由一个用户在开发环境下的测试或在模拟实际操作环境下的测试,它最终用户或其他人员完成的测试,不能由程序员或测试员完成 |
β测试 | 由软件的用户在一个或者多个用户的实际使用环境下的测试,也是一样它不能由程序员或测试员完成 |
5、回归测试
另外还有一种测试是回归测试,它指软件经过修改后重新测试,从而来保证修改的正确性,例如确认以前出现过的错误不再出现。
例如,一个项目为了修正一个错误而进行了变更,当错误被修正后,却引起以前可以正确运行的代码出错,为了避免这种错误,所以回归测试最可能发现这一问题。
(三)黑盒测试和白盒测试
黑盒测试和白盒测试的区别在于是否能测试软件产品的内部结构和处理过程,在白盒测试中,内部是可视的,其内部结构和处理过程是主要测试的,而不侧重于关注软件产品的功能,测试的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试,其主要方法有逻辑驱动、基路测试等。
黑盒测试又称为功能测试或数据驱动测试,此时把软件看作一个不可打开的盒子,通过各种输入和对应的输出结果来测试。
五、数据库
(一)数据和数据库
数据(Data)是事物的符号表示,它可以是数字、文字、图像等等;数据库(DataBase,简称DB)是以特定的组织结构存放在计算机的存储介质中的相互关联的数据集合,这些数据集合是有组织的、可共享的、且有较高的独立性。
(二)数据库管理系统
数据库管理系统(DBMS)是位于用户和操作系统之间的一个数据管理软件,它是数据库应用系统的核心组成部分。
其中事务是DBMS的基本工作单位,它是由用户定义的一个操作序列,事务的特点又称为ACID准则,以下:
名称 | 含义 |
原子性 | 要么都做,要么都不做 |
一致性 | 初始状态和结束状态对外可见,但中间状态对外不可见 |
隔离性 | 多事务互不干扰 |
持久性 | 事务结束前所有数据改动必须保存到物理存储中 |
(三)数据库系统
数据库系统(DBS)是由数据库、操作系统、数据库管理系统、应用程序、用户、数据库管理员组成的用于存储、管理、处理和维护数据的系统,一般数据库系统分为客户-服务器模式(C/S)和三层客户-服务器模式(B/S)。
1、客户-服务器模式
C/S模式中,应用程序直接跟用户交互,而数据库管理系统不直接与用户,即此时应用程序称为前台,而数据库管理系统称为后台,其中应用程序先数据库管理系统提出服务请求,而数据库管理系统向应用程序提供服务,如下图:
2、三层客户-服务器模式
基本Web的数据库应用采用三层客户-服务器模式(B/S),其中第一层为浏览器,第二层为Web服务器,第三层为数据库服务器,如下图:
六、软件知识产权
1、⟪计算机软件保护条例⟫中规定对软件著作权的保护包括目标程序、源程序、软件文档,但不包括算法。
2、软件经过登记后,软件著作权人即享有发表权、开发者身份权、使用权、使用许可权和获取报酬权。
3、如果征得软件作品著作人的同意,因修改和改善新增加的部分,创作者应享有著作权。
4、对是职务作品的计算机软件,参与开发的人员离开原单位后,如其对原单位享有著作权的软件进行修改、提高,应经过原单位的许可,否则构成侵权。
5、公民发表权及其他权利保护期为作者终身及其死亡后50年,截止于作者死亡后第50年的12月31日;由法人或其他组织享有的职务作品,其发表权及其他权利保护期截止于作品首次发表后第50年的12月31日。
6、对职务作品的计算机软件,参与开发的人员离开原单位后,如其对原单位享有著作权的软件修改、提高,应经过原单位许可,否则构成侵权。
7、发明专利权的期限为20年,实用新型专利权、外观设计权的期限为10年,另外注册商标的有效期为10年。