导图社区 计算机科学概论
计算机科学概论,涉及计算机网络、算法与数据结构、软件工程、数据库系统、操作系统等计算机科学重要领域,是计算机科学入门者的重要参考。
编辑于2022-10-16 19:15:31 北京市一步步教你构建一个股票模糊搜索框,涉及JavaScript学习、前端设计与编程、股票数据处理、Django网站搭建等各个方面的知识。强烈推荐计算机编程初学者参考尝试,有助于快速提高编程能力。
来自名牌大学博士生的书单推荐。涉及计算机科学、数学、复杂性科学、心理学、社会心理、生物学等等各个学科,帮助大家拓宽眼界,开拓视野,积累知识,走向成功人生。
本模板介绍了计算机学科学术论文检索与阅读的方法,非常适合希望提高学术能力的本科生和研究生学习。模板介绍了论文的相关名词解释、搜索工具、基本结构、阅读方法和原则等内容,有助于提高学生的学术科研能力。
社区模板帮助中心,点此进入>>
一步步教你构建一个股票模糊搜索框,涉及JavaScript学习、前端设计与编程、股票数据处理、Django网站搭建等各个方面的知识。强烈推荐计算机编程初学者参考尝试,有助于快速提高编程能力。
来自名牌大学博士生的书单推荐。涉及计算机科学、数学、复杂性科学、心理学、社会心理、生物学等等各个学科,帮助大家拓宽眼界,开拓视野,积累知识,走向成功人生。
本模板介绍了计算机学科学术论文检索与阅读的方法,非常适合希望提高学术能力的本科生和研究生学习。模板介绍了论文的相关名词解释、搜索工具、基本结构、阅读方法和原则等内容,有助于提高学生的学术科研能力。
计算机科学概论
数据存储
位和位存储
位
二进制数字
布尔运算
与
或
异或
同0异1
非
门和触发器
门
做布尔运算的设备
齿轮,继电器,光学设备,电子电路
触发器
存储器基本部件
产生0或1输出值并保持不变,直至下一个脉冲
应用
超大规模集成技术
十六进制
位模式
位串
流
长位串
简化表示
十六进制计数法
一个符号表示4位
主存储器
定义
包含大量电路,每个电路存储一个位的位存储器
结构单位
存储单元
容量
8位(1字节)
排成一行
左端
高位端
最左一位最高有效位
右端
低位端
最右一位最低有效位
地址
排成一行,从零编号
随机存取存储器RAM
将位存储为快速消散电荷
动态存储器DRAM
同步动态存储器SDRAM
容量度量
千兆吉太子节
海量存储器
磁系统
磁盘HDD
结构
盘片
柱面
磁道
扇区
区
结构安排
所有扇区容量相同
每个磁道包含扇区数量
最简单磁盘系统
每个磁道包含扇区数相等
大容量磁盘存储系统
外缘磁道扇区数远高于内部磁道
区位记录技术
一个区内磁道扇区数相等
外侧区单个磁道扇区数高于内侧
容量取决于
盘片数目
磁道与扇区划分密度
性能评估
存取时间
寻道时间
磁头转移磁道的时间
旋转延迟
盘片旋转半圈的时间
数量级
千分之一秒
传输速率
读写数据的速率
与数据部位相关
外区磁道速度快
磁带
寻道数间极长
低成本大容量,适合存档备份
软盘驱动器
可移动
数据密度存取速度低
光系统
光盘
格式
数字音频光盘
信息按照统一线性密度存储在整个螺旋形磁道上
种类
传统CD
数字多功能光碟DVD
蓝光光碟BD
闪存驱动器
原理
二进制位由电子信号发送到存储介质
电子信号使介质中二氧化硅晶格截获电子
缺点
数据反复擦除破坏晶格
可靠性稍差
固态硬盘
较大的闪存驱动器
优势
防震抗摔
安静运行
速度快
缺点
贵
闪存技术寿命有限
损耗均衡
安全数字存储卡SD
安全数字高容量存储卡SDHC
32G
安全数字扩展容量存储卡SDXC
1TB
用位模式表示信息
文本表示
ASCII码
不支持包含不同语言的文本文档
Unicode字符集+转换格式8位UTF-8
两类文件
文本编辑器
只包含各个字符编码
字处理程序
例如word
数值表示
二进制计数法
整数存储
二进制补码计数法
每个数值用32位表示
最左侧的位叫符号位
补码
取相反数
右数第一个1右侧不变,左侧取反
加法
有符号数的任何组合加法都可以使用相同电路实现
溢出
计算结果超出范围
检测
正+正=负
负+负=正
余码计数法
1000. . .0作为0
小数存储
浮点计数法
高位端为符号位
指数域
尾数域
截断误差
尾数域空间不足,丢失部分数值
单精度浮点32位
符号位1
指数8
尾数23
7位有效数字,数量级10^38
双精度浮点64位
15位有效数字
图像表示
表示为编码像素集合(位图)
描述为几何结构的集合
声音表示
有规律时间间隔振幅采样
通话
8000hz
音乐
44100hz
乐器数字化接口MIDI
在合成器上编码音乐指令
避免采样技术的大存储量要求
数据压缩
通用数据压缩
无损
行程长度编码
被压缩数据由一长串相同数值
将一组相同数据成分替换成一个编码,指出成分次数
频率相关编码
赫夫曼编码
表示数据项的位模式的长度与该项使用频率反相关
相对编码(差分编码)
记录连续两个数据单元间的差别
可有损可无损
字典编码
字典
一组构造块
信息编码成字典的一系列参照符
可有损可无损
变体
自适应字典编码(动态字典编码)
例子
LZW编码
从包含基础构造块的字典开始
发现信息中更大的单元时加入字典
编码和解码都是小字典积累成大字典的过程
有损
图像压缩
图像交换格式GIF
字典编码系统
将赋予一个像素的颜色数量减少到256个
有损压缩
JPEG
包含多种图形压缩方法
可提供无损模式,但不能提供高级别压缩
JPEG基线标准(有损顺序模式)
一幅亮度成分和色度成分编码的图像
2*2像素方格求色度均值
分成8*8像素块,分单元压缩
行程长度编码
相对编码
变长编码
标记图像文件格式TIFF
存储照片和相关信息的格式
音视频压缩
MPEG标准
MP3
暂时模糊
巨大声响后的轻柔声音觉察不到
频率模糊
某频率声音掩盖相近频率的轻柔声音
通信差错
奇偶校验位
奇校验
加一个奇偶校验位,使位模式中有奇数个1
偶校验
不能发现偶数个错误
衍生方案
校验和
循环冗余校验
纠错码
既能检测错误,又能纠错
汉明距离
两个位模式的汉明距离是他们不相同位个数
数据操控
计算机体系结构
CPU
组成
算术/逻辑单元
包含执行数据运算的电路
控制单元
包含协调机器活动的电路
寄存器单元
包含寄存器,是数据存储单元
通用寄存器
临时存储CPU正在操控的数据
专用寄存器
通过总线连接主存储器
主存储器中两数相加步骤
从存储器取出一个加数放入寄存器
从存储器取出另一个加数放入另一个寄存器
激活加法电路,将前两个寄存器作为输入,用另一个寄存器存放和
将结果存入存储器
停止
存储程序概念
将计算机程序存储在主存储器中
以往将程序和数据视为不同实体
机器语言
定义
CPU可识别位模式编码的指令,这组指令和编码系统叫做机器语言
机器(级)指令
用机器语言表示的指令
分类
数据传输类
加载
用存储器内容填充通用寄存器
存储
将寄存器内容传输给存储单元
输入/输出活动
与CPU主存储器之外的设备通信
算术/逻辑类
告诉控制单元请求在算术/逻辑单元实现一个活动
分类
逻辑运算
与或异或扩展为按位运算
AND运算应用
屏蔽过程
用掩码这一操作数决定另一操作数哪些部分会影响结果
例如做像素的颜色屏蔽
位映射
所用位串中每个位表示一个特定对象存在与否
试探和抹零位映射
部分复制,不复制部分以0代替
OR运算应用
部分复制,不复制部分以1代替
XOR运算应用
形成一个位串的补码
可用于做颜色反转
移位运算
循环移位
最右填充最左
逻辑移位
丢弃移出的位,用0填充空位
算术移位
保留符号位不变,其余补0
算术运算
加减乘除
浮点加法
读取操作数尾数
根据指数字段进行移位,检查符号位
执行加法,翻译为浮点计数法
控制类
包含指导程序执行而非数据操作的指令
例子
转移
无条件转移
有条件转移
分支
编码
操作码字段
用位模式指明基本运算类型
操作数字段
用位模式提供操作码指定运算的详细信息
例子
35A7
3是操作码,表示把一个寄存器内容存储到存储单元
将寄存器5中的位模式存储到存储单元A7中
指令系统
两种CPU体系结构哲学
精简指令集计算机
速度快,效率高,成本低
复杂指令集计算机
CPU应当执行大量复杂指令
应对现代软件日益增加的复杂性
程序执行
CPU内的两个专用寄存器
指令寄存器
存储正在执行的指令
程序计数器
存储下一个待执行指令的地址
机器周期
取指
译码
执行
与其他设备通信
通过控制器处理
翻译两种形式的信息和数据
与计算机内部特征适应的形式
与所连接的外围设备相适应的形式
通用串行总线和火线
一个控制器处理多种设备
直接存储器存取
控制器存取主存储器的能力
充分利用计算资源
使计算机总线通信复杂化
CPU和控制器竞争总线存取
冯诺依曼瓶颈
握手
涉及持续双向对话的过程
状态字
外围设备生成,发送给控制器的位模式
是一个位映射,反应设备情况
例子
打印机
流行的通信媒介
计算设备间通信途径
并行通信
若干信号同时传输,信号各走各路
速度快,路径复杂
例子
计算机内部总线
串行通信
信号在一条线路上一个接一个传输
路径简单
例子
语音电话线
利用调制解调器将位模式转换为音调
通过电话系统串行传输
在目的地将音调转换成二进制位
数字用户线
现有电话线能处理传统语音通信所用频率更宽的范围
线缆调制解调器
调制解调位模式,在有线电视系统上传输
卫星链路
通信速率
速率单位
比特每秒
USB2.0,FireWire
几百Mbit/s
多路复用技术
数据编码或混合,使一条路径完成多路径功能
数据压缩技术
最大速率
取决于
通信路径的种类
实现过程中的技术
大致等同于带宽
数据操控编程
其他体系结构
流水线
提高计算机性能
提高执行速度
光速极限
小型化
改进机器的吞吐量
机器在给定时间内可完成的工作总量
例子
流水线技术
允许一个机器周期各个步骤重叠进行
执行指令时,取下一条指令
多处理器机器
流水线是迈向并行处理的第一步
真正的并行处理需要多个处理单元
多处理器/多核计算机
操作系统
概述
操作系统
控制计算机整体运行的软件
作用
为用户提供存储和检索文件的方法
请求执行程序的借口
执行被请求程序的环境
操作系统的历史
批处理
把若干的要执行的作业收集到一个批次中,然后执行
队列
存储组织,对象按照先进先出方式排队
高优先级对象插队
无交互
交互式处理
允许执行一个程序通过远程终端与用户对话
多用户时实时交互障碍
多道程序设计技术
用于单用户系统
多任务处理
用于多用户系统
分时
要处理的问题
负载平衡
把任务动态地分配给各个处理器,使之得到充分利用
均分
把任务划分为若干字任务,与可用处理器数目匹配
操作系统体系结构
软件概述
应用软件
系统软件
操作系统
实用软件
操作系统组件
用户界面
老式
外壳
现代化
图形用户界面GUI
重要组件
窗口管理程序
内核
文件管理程序
协调机器海量存储设施的使用
目录路径
由目录内的目录组成的链
设备驱动程序
负责与控制器通信
内存管理程序
协调机器主存储器的使用
页面调度
在主存储器和海量存储器之间来回切换数据
虚拟内存
调度程序
决定哪些活动可以执行
分派程序
控制这些活动时间分配
系统启动
引导
引导装入程序永久存储在ROM中
引导CPU把操作系统从海量存储器中调入主存储器的易失性存储区
固件
只读存储器的一组软件例程
实现基本输入输出,屏幕显示信息
BIOS,EFI等
为什么不把系统装在ROM里面
效率低,浪费主存储器
不便于系统更新
协调机器活动
进程
进程
在操作系统控制下执行某个程序的活动
进程状态
与进程联系在一起的活动的当前状态
正在执行的程序的当前位置(程序计数器值)
其他CPU寄存器中的值
就是机器在特定时刻的快照
进程管理
调度程序
维护一个有关计算机系统中现存进程的记录
在主存储器维护一个称为进程表的信息块
分配给该进程的存储区域
进程优先级
进程就绪还是等待
就绪
能够继续执行
等待
因为等待外部事件而发生延迟
分派程序
确保被调度的程序能够实际执行
依靠多道程序设计
时间片
进程切换
中断
保存进程位置
执行中断处理程序
作用
抢占当前进程,将控制权传回分派程序
处理进程间的竞争
信号量
置位清零标志法
可能被时间片打乱,导致两个进程使用同一打印机
解决办法1
禁止中断指令
允许中断指令
解决办法2
测试并置位指令
检索标志值,记录,然后置位,一条指令完成
临界区
一个指令序列一次只能由一个进程执行
互斥
一次只允许一个进程执行一个临界区的要求
造个句
获得对一个临界区互斥的办法是用信号量守护这个临界区
死锁
状态
多个进程被阻塞,不能继续执行
原因
每个进程都在等待以分配给另一个的资源
条件
存在对不可共享资源的竞争
一个进程接受了某些资源后稍后还将请求其他资源
一个资源一旦被分配出去不能强制收回
死锁检测和改正方案
抑制条件3
死锁避免方案
抑制条件1,2
一次请求所有资源
假脱机
安全性
外部攻击
操作系统要保护计算机不被未授权的用户访问
审计软件
记录分析发生在计算机系统内的活动
识别用户账户中与该用户以往行为不一致的活动
检测嗅探软件
内部攻击
潜行者欺骗操作系统获得未授予该用户的权限
CPU的两种模式
有特权模式
处理所有指令
无特权模式
接受有限指令
特权指令
仅在有特权模式下可用
例子
改变内存界限寄存器内容
改变CPU当前的特权模式
无特权模式下特权指令引起中断,中断使CPU变成有特权模式,将控制权交给操作系统内部中断处理程序
组网和因特网
网络基础
网络的分类
按范围分
个人域网
无线耳机与手机之间
局域网
由一个建筑内的计算机组成
城域网
横跨一个社区
广域网
连接周边城市,世界两端
按内部操作设计分
开放式
允许自由流通
封闭式(专用)
受到许可费,合约条件限制
按网络的拓扑分
总线型
所有机器通过总线连接起来
例如以太网
星型
其他机器和焦点机器相连
例如无线网络
无线电广播
中央机器(作为接入点)
协议
管理网络活动的规则
如何协调网络中计算机之间的报文传输
基于以太网标准的总线型网
带冲突检测的载波侦听多址访问
每条报文都要广播给总线上所有机器
每台机器都对所有报文进行监听,只保存发给自己的
等到总线空闲时才可以传输报文,继续监听
如果监测到另一台机器也开始传输,那么二者暂停随机时间,然后再次传输
与无线星型网不兼容
隐藏终端问题
尝试避免而不是检测冲突
带冲突避免的载波侦听多址访问
无线星型网
带冲突避免的载波侦听多址访问
标准化
IEEE
无线保真WIFI
目的
避免冲突,冲突发生时重传报文
方法
将优先权赋予等待传输的计算机
组合网络
设备
中继器
在两个原始总线之间传送信号
网桥
连接两条总线,检查报文地址,按需传送
交换机
具有多连接的网桥,连接多条总线
路由器
把网络连接起来形成互联网
网关
网络和互联网连接的点
进程间通信
一个网络中不同计算机上执行的进程互相通信
客户机/服务器模型
进程基本角色
客户机
向其他进程发出请求
服务器
满足客户机请求
例子
打印服务器
文件服务器
对等模型P2P
既提供服务又接受服务
蜂群
参与文件分发的对等体集合
分布式系统
由网络中不同计算机上作为进程执行的软件单元组成
集群计算
多个计算机密切合作提供计算服务
高可用性
至少一个成员相应请求
负载平衡
负载自动平衡
网格计算
耦合度低于集群,仍可协作完成大型任务
云计算
因特网Internet
互联网的一种
体系结构
提供者
因特网服务提供商ISP
层次结构
第一层ISP
拥有高速高容量国际化广域网
第二层ISP
区域性,能力稍弱,通常是通信公司运营
因特网接入服务提供商(第三层ISP)
独立的互联网(内联网)
有线电视,电话公司,大学或公司等
终端系统(主机)
电脑电话相机汽车电器等
如何接入大型网络
Wi-Fi技术
接入点连接因特网接入服务提供商
接入点广播范围内终端可接入因特网
接入点和接入点组范围内区域叫做热点
电话线
电缆/卫星系统
编址
因特网需要互联网范围内的编制系统,为系统内的每台计算机分配唯一标识地址,即因特网的IP地址
IP地址
因特网名称与数字地址分配机构提供 IP地址
写法
点分十进制计数法
难以为人所用
另一种编址系统
基础
域
注册商注册域
给域分配助记域名
后缀称为顶级域名
商业机构com
政府机构gov
非营利机构org
博物馆museum
无限制使用info
表示ISP的net
国家代码顶级域名
澳大利亚au
加拿大ca
域助记名被注册后机构可在域内自由扩展名称
子域
扩展,代表域管辖内的不同网络
域名服务器
将助记地址转化为IP地址,向客户端提供地址转换服务的目录
域名服务器组成因特网范围内的目录系统
域名系统DNS
域名系统查找
使用域名系统进行转换的过程
应用
电子邮件
简单邮件传输协议
多用途因特网邮件扩展
邮局协议第3版
因特网邮件访问协议
因特网协议语音VoIP
ViOP软电话
Skype
模拟电话适配器
允许用户将传统电话连接到某个因特网接入服务提供商提供的电话服务上
嵌入式VoIP电话
把传统电话替换为直接连接到TCP/IP网络的等效手持设备
无线VoIP技术
4G是完全基于IP的网络
因特网多媒体流
音视频的实时传输叫做流
技术
N单播
站点服务器和服务器紧邻的因特网邻居负担大
P2P
对等体收到数据后分布到等待中的对等体
多播
服务器通过单个地址把一个消息传送到多个客户端,依赖因特网中的路由器识别地址含义,产生消息副本并转发到合适的目的地
点播流
每个点播流是从存储内容的媒体服务器到终端的单播
任播
使终端用户自动连接到规定服务器组之外的最近一台服务器
万维网
将互联网技术与超文本的链接文档概念结合
实现
允许用户访问因特网的超文本软件包
浏览器
在用户的电脑上获取用户请求的材料,并作整理
万维网服务器
驻留在含有待访问的超文本文档的计算机中
根据浏览器的请求提供对机器里文档的访问权
传输协议
超文本传送协议HTTP
统一资源定位地址URL
包含浏览器要联系的正确服务器和请求所需文档所需要的信息
超文本标记语言HTML
可扩展标记语言XML
一种标准化风格,用于设计将数据表示为文本文件的符号系统
搜索引擎
客户端和服务器端的活动
客户端浏览器利用URL信息联系相应万维网服务器,请求传送该页面的副本
浏览器解释文档中HTML标签,确定页面显示方式,呈现在屏幕上
其他的活动
客户端活动
服务器端活动
早期方法
公共网关接口标准
变体
允许客户机在服务器端执行小服务程序
微软
活动服务器页面
开源系统
PHP超文本处理程序
实现活动的系统
源文档包含JavaScript语言编写的程序
浏览器从中获取程序根据需要执行
将小应用程序作为额外程序单元根据请求传送给浏览器
flash
实现大量多媒体客户端演示
因特网协议
软件分层方法
应用层
由使用因特网通信完成任务的软件单元组成
使用传输层收发报文,利用域名服务器把助记地址译为IP地址
传输层
接受来自应用层的报文,以正确的形式在因特网传输
将长报文分割成小片段传输,小片段叫做分组,分组上有序列号
重组接收到的报文
网络层
在传输路径的每个步骤上决定分组的下一个发送方向
决定好合适方向后,把分组交给链路层
链路层
传送分组
TCP/IP协议簇
开放系统互联参考模型OSI
七层
TCP/IP协议簇是因特网使用的协议标准的集合,用于实现四层通信层次结构
传输控制协议TCP和网际协议IP只是集合中的两个元素
传输层实现方式
传输控制协议TCP
电子邮件
用户数据报协议UDP
DNS查找,VoIP
以上两者区别
发送报文前TCP有连接,UDP没有(无连接协议)
TCP有确认和分组重发,是可靠的协议,UDP不是
TCP提供了流量控制和拥塞控制
网络层的实现
IP
任务
转发
跳数
限制分组被转发次数
路由
IPv4
32位互联网编址
IPv6
128位互联网编址
安全性
入侵
恶意软件
传送到计算机内部执行
病毒
将自身嵌入到计算机已有程序
宿主被执行时,病毒也被执行
把自身传送到其他程序或执行破坏性操作
蠕虫
独立的程序
通过网络传送,驻留在计算机中,向其他计算机转发自己的副本
可以单纯复制也可实施破坏行为
蠕虫副本激增降低合法应用性能,使网络过载
特洛伊木马
伪装成吸引人的程序进入计算机系统
实施额外活动
立即开始
暂时休眠,事件触发
间谍软件
收集驻留计算机的活动信息,报告给攻击发起者
网络仿冒
显示获取(钓鱼)
远距离攻击计算机
拒绝服务攻击
攻击者在大量计算机内植入能够在收到信号后发出信息的软件,使之变成“僵尸网络”
发出信号后,僵尸网络短时间内产生大量信息,淹没目标计算机
散布垃圾邮件
不能压垮计算机系统
能压垮接受邮件的人
防护和对策
防火墙
过滤穿过网络中某一重要节点的通信流
作用
阻止向某些特定地址发送信息
阻止接受已知有问题来源发送的信息
阻止所有源地址位于通过网关接入该区域的所有进入信息(防止内鬼欺骗)
变种
垃圾邮件过滤器
代理服务器
保护客户机屏蔽来自服务器的不利行为
审计软件
察觉报文流量激增,监控防火墙状态,分析个人计算机请求模式,探测非正常行为
防病毒软件
探测和移除被已知病毒感染的文件
加密
最好的例子
HTTP-HTTPS
骨干
安全套接字层SSL
令人着迷的话题
共钥加密
两个密钥
共钥
用于加密
私钥
用于解密
先讲公钥分给发送报文的一方
将私钥秘密地保存在目的地端
小问题
要保证所用共钥对目的地来说是个正确的密钥
解决
建立可信任的站点(认证机构),维护相关方准确列表及其公钥
认证机构以软件包(证书)的形式为客户提供可靠公钥信息
鉴别问题
确保报文作者使声称的作者
利用私钥加密产生一个位模式(数字签名)
法律途径
障碍
认定一个行为不合法不意味着会排除该行为
网络具有国际特性,难以获得依靠
算法
概念
定义
一个可终止过程的一组无歧义可执行的步骤的有序集合
表示
原语
一组定义明确的构造块
程序设计语言
原语的集合
组合原语的规则集合
组成
语法
语义
伪代码
算法开发过程中非正式表示思想的符号系统
发现
问题求解的艺术
理解问题
设计一个解决问题的计划
完成计划
从准确度和解决其他问题的潜力两方面评估计划
迈出第一步
从输出开始反向推到输入
寻找相关的已经解决的问题,借鉴解决方案
逐步求精,问题分解
自顶向下,从一般到特殊
自底向上
迭代结构
顺序搜索算法
循环控制
组成
初始化
测试
修改
分类
前测试循环
while
后测试循环
repeat
插入排序算法
从上到下字表逐步有序化
递归结构
二分搜索算法
猜中间,知大小,再猜
递归控制
初始化
修改
终止测试
效率与正确性
算法效率
算法分析
最佳情况
最差情况
平均情况
复杂度
软件验证
前置条件
断言
后置条件
循环不变式
软件工程
学科
特性
难以通过预制构件来构建系统
缺少衡量软件属性的定量技术(度量学)
研究层面
实践派
开发直接应用的技术
理论派
探寻软件工程基础原理和理论
计算机辅助软件工程CASE
CASE工具
项目设计系统
项目管理系统
文档工具
原型与仿真系统
界面设计系统
程序设计系统
集成开发环境IDE
编辑器
编译器
调试工具
软件生命周期
开发
需求分析
目标
指定预期系统要提供的服务
确认这些服务运行的条件
定义外界和系统交互的方式
来源
利益相关者提供数据
终端用户是一个实体
开始于用户独自进行的可行性研究
开发者为大众市场生产商用现货
从软件开发者的市场调研开始
过程
收集分析软件用户需求
和项目的利益相关者协商
一般需求
核心需求
费用
可行性
确定需求,明确软件系统必须具有的特性和服务
记录在软件需求规格说明文档中
设计
为预期系统的构建提出一个计划
结果
可被转化为程序的软件系统结构的详细描述
实现
包括
程序的具体编写
数据文件的创建
数据库开发
分工
软件分析员
参与整个开发过程,重点在于需求分析和设计步骤
程序员
写程序来实现软件分析员提出的设计
测试
开发过程的每个中间步骤成果都要进行准确性测试
使用
维护
软件工程方法学
瀑布模型
严格的需求分析设计实现测试的顺序
增量模型
先有简化版本,不断增添更多功能
扩展产品每个前期版本到更大版本
迭代模型
改进每个版本
开源开发
单个作者开发初始版本软件,将相关代码和文档发到因特网上
其他用户免费下载使用,可以修改,增强功能,改正错误,并报告给作者
作者整合改动,发布软件的扩展版本
敏捷方法
在增量基础上进行早期快速实现,相应需求变更,降低严格的需求分析和设计的重要性
例子
极限编程XP
少于12人团队在公共工作场所自由交换想法,,相互协作,每天重复非正式的瀑布模型
软件开发趋势
原型开发
构建并评估预期系统的非完整版本
分类
演化式原型开发
抛弃式原型开发
快速原型开发
模块化
模块式实现
命令型范式
模块表现为函数
面向对象范式
模块表现为对象
耦合
两个模块之间的联系
分类
控制耦合
一个模块移交执行控制给另一个模块
比如调用函数
数据耦合
两个模块之间数据共享
函数耦合形式
以参数形式在函数间进行显式数据传送
数据以全局数据的形式在模块间隐式共享
内聚
模块内部各部分的关联程度
形式
逻辑内聚
较弱
由内部元素实现逻辑上相似的活动引起
功能内聚
较强
模块中所有部分集中于实现某一项功能
信息隐藏
好的模块化设计的基本特征,指限制软件系统的指定部分信息
关键
阻止模块的动作对其他模块产生不必要的依赖或影响
化身
设计目标
其他模块不需要读取它的内部信息
比如最大化内聚最小化耦合
实现目标
以强化模块边界的方式实现模块
例如局部变量,封装,定义明确的控制结构
构件
对象和类
C++标准模板库
JAVA应用程序员接口API
C#.NET框架类库
构建架构
构件装配员
暂不能用于智能手机系统
行业工具
较老的工具
数据流图
从数据流分析过程中所获得的信息的一种手段
符号
箭头
数据路径
椭圆
数据操控发生地
矩形
数据源/数据存储
用途
命令型范式
客户与软件工程师交流
数据字典
关于整个软件系统中出现的数据项的中央信息库
内容
为引用数据项采用的标识符
数据项里有效条目的构成
数据存储位置
软件引用数据项的位置
目标
增强软件系统利益相关者和软件工程师的交流
确立整个系统的一致性,发现冗余和矛盾
新工具
统一建模语言UML
用例图
从客户角度捕捉预期系统画面
符号
大矩形框
描述预期系统
椭圆
用例,系统与用户的交互
火柴人
参与者,系统中的用户
类图
符号系统,表示类的结构和类之间的关系(关联)
关联的基本形式
一对一关系
一对多关系
多对多关系
泛化
空箭头
表示程序设计中的静态特性征
交互图
序列图
描述完成一个任务所设计的个体之间的通信
符号
带有向下延伸虚线的矩形
个体
矩形+虚线
生命线
带标记的箭头连接生命线
个体间通信
类-职责-协作卡CRC卡
验证面向对象设计的有效性
为每个预期系统的对象做一张卡片
结构化走查
设计模式
解决软件设计过程中反复出现的问题的预先开发的模型
例子
适配器模式
装饰者模式
质量保证
质量保证范围
分支
软件工程过程改进
培训课程的开设
标准的确立
软件质量保证小组
主题
保存记录
CASE
评审的使用
面向质量
形式
需求评审
设计评审
实现评审
软件测试
白盒测试
帕累托法则
对容易出错的模块做彻底测试
基本路径测试
开发测试数据,保证每条指令都至少执行一次
黑盒测试
边界值分析
确定数据范围
用接近这些范围的边界数据来测试软件
贝塔测试
产品最终版本稳定向市场发放之前,初步版本发给一部分预期受众,了解软件现实表现
阿尔法测试
在开发者现场做类似测试
文档
分类
用户文档
解释软件特性,描述如何使用软件
系统文档
描述软件内部构成,便于日后维护
组成
所有程序源代码版本
设计文档的记录
软件需求规格说明
显示这些规格说明在设计期间如何获得
技术文档
描述软件系统如何安装和服务
人机界面
研究来源
人机工程学
与身体协调的系统设计
知行学
与精神协调的系统设计
例子
习惯导致错误
注意力的狭隘性
并行处理多事情时有限的思考能力
度量搜索
GOMs模型
分析依据
目标
操作
方法
选择规则
软件所有权和责任
知识产权法
版权法
专利法
声称所有权
作品中加入版权声明
最终产品显著位置加入需求规范说明,设计文档,源代码,测试计划
软件许可
法律术语正式描述开发人员的权利
软件所有者和用户的法律协议
数据库系统
数据库基础
多维数据集合
模式的作用
模式
整个数据库结构的描述,数据库软件用以维护数据库
子模式
与特定用户需求相关的部分数据库的描述
数据库管理系统
两个软件层
应用层
确定用户请求的操作
数据库管理层
作为抽象工具获取结果
应用软件和数据库管理系统分离的好处
允许构建和使用抽象工具
提供了一种对数据库访问进行控制的手段
可以获取数据独立性,改变数据库组织不改变软件
数据库模型
数据库概念视图
经典模型
关系数据库模型
基本概念
关系
存放数据的矩形表格
元组
关系中的行
属性
关系中的列
问题
信息冗余导致效率低下
删除信息时出现连带信息损失
解决
把一个关系分解为多个小关系
有信息损失
无信息丢失
无损分解
关系运算
SELECT
从一个关系中提取行
语法
NEW <- SELECT from EMPLOYEE where Emplid = ‘34Y70’
PROJECT
从关系中提取列
语法
NEW2 <- PROJECT JobTitle from NEW1
JOIN
把原来不同的关系组合成一个关系
语法
C <- JOIN A and B where A.W = B.X
SQL
结构化查询语言
面向对象数据库模型
由对象构成,对象之间相互连接反映关系
数据库管理系统任务
维护两个对象之间的链接,类似链表
为所托管的对象提供永久存储空间(持久对象)
面向对象数据库优势
使整个软件系统用同样的范式设计
姓名存储为智能对象,可以不同格式输出,便于存储姓名查询姓氏
能把不同的数据格式的术语封装
它有存储智能对象而不仅仅是数据的潜力,对象包含一些方法能描述如何响应有关它的内容和关系的消息
维护数据库完整性
提交/回滚协议
提交点
把一个事物的所有步骤记录进日志文件的点
回滚
利用日志撤销实际上已被事物执行的活动
可能造成级联回滚的问题
锁定
问题
错误决算问题
执行某个事物时,正直数据库因另一事物而处于变迁状态,两个事物相互影响,造成错误
更新丢失问题
两个扣除金额的操作读取的是同一个当前金额,导致一个扣除的影响不能被反映
锁定协议
数据库中当前正在被某个事物使用的项目都要加以标记(锁)
锁类型
共享锁
共享访问,不改变数据项,允许其他事物看到该数据项
排他锁
互斥访问,改变数据项,只有该事物能访问该数据项
事务访问请求被拒
强制事物等待
直至所请求的项可用
可能造成死锁
受伤等待协议
老的事务将新的事物刮起,新的事务等待变成老的事物
传统文件结构
顺序文件
从头到尾以顺序的方式访问
音视频,程序,文本文档
固有问题
检测何时到达文件末尾(文件结束EOF)
方法
在文件末尾放专用标记(哨兵)
利用操作系统的目录系统中的信息来标识一个文件的EOF
处理
按照由键确定的顺序安排文件中的记录
归并过程
把两个顺序文件合并成一个包含原来两个文件记录的新文件
索引文件
使用索引来定位的文件系统
索引包含
存储在该文件中的键的列表
每个键的记录存储位置的项
构建索引
层次化方式
例子
分层目录系统
散列文件
利用键值定位记录,直接通过键确定记录位置
结构
存储桶
数据存储空间被分为几个区(存储桶)
将键的值转换为桶号(散列函数),将记录分散存储在桶里
检索过程
对该记录的标识键应用散列函数,确定相应的桶
检索桶中的内容,从检索的数据中搜索所需记录
散列文件
将散列用在海量存储器的存储结构
散列表
将散列用在主存储器的存储结构
群集
不成比例的键数目散列到一个桶里
溢出
桶过满
设立溢出区
负载因子
记录的数目/文件总的记录容量
小于50%
散列文件棒
接近75%
以更大容量重建
数据挖掘
数据仓库
静态数据集合
数据立方
从多角度看待数据
形式
类描述
找出描绘一组数据项的属性
类识别
找出区分两组数据项的属性
聚类分析
用于发现类型
关联分析
寻找两个数据组之间的联系
孤立点分析
识别出不符合规则的数据项
用途
识别数据集中的错误
检测信用卡是否偏离客户正常消费模式
通过反常行为识别潜在恐怖分子
序列模式分析
识别随时间变化的行为模式
例子
揭示股票市场趋势
气候环境变化趋势
数据库技术的社会影响
数据收集
直接要求某人提供信息
问卷,调查等
避免了与对象的直接交流
信用卡公司记录消费活动
网站记录访问者身份
数据的价值随着数据库技术的发展日益扩大
防止数据库滥用
法律手段
公众舆论