软件设计师学习笔记整理一:计算机系统知识

一、数据的表示

1、进制转换

十进制(D)     0~9
二进制(B)     0,1
十六进制(H) 0~9,A,B,C,D,E,F

R 进制 ——> 十进制 :按权展开法
十进制 ——> R 进制 :短除法(除基取余法)
十进制 ——> 二进制(小数) :乘2取整法

十进制 ——> 二进制 :减法(以94为例)

20=1, 21=2, 22=4, 23=8, 24=16, 25=32, 26=64, 27=128, 28=256, 29=512, 210=1024

94-64=30(26=64)
30-16=14(24=16)
14-8=6(23=8)
6-4=2(22=4)
2-2=0(21=2)
结束

位号6543210
取值1011110

94转为二进制为1011110
 

二进制 ——> 八、十六进制 (以10001110为例) 逆过来也适用

  1. 二——>八
    (0)10 001 110 (三位数一组,转为十进制,高位补0)
        2      1    6 (八进制结果)
  2. 二——>十六
    1000 1110 (四位数一组,转为十进制)
      8       E (十六进制结果)

2、码制(原码/反码/补码/移码)

原码:最高位是符号位,其余低位表示数值的绝对值
反码:正数的反码与原码相同,负数的反码是其绝对值按位取反(符号位不变)
补码:正数的补码与原码相同,负数的补码是其反码末位加1(符号位不变)
移码:补码的符号位按位取反(常用于表示浮点数中的阶码)

n:机械字长码制定点整数(纯整数)定点小数(纯小数)数码个数
+0,-0,都是0原码-(2n-1-1) ~ +(2n-1-1)-(1-2-(n-1)) ~ +(1-2-(n-1))2n-1
所以个数要减1反码-(2n-1-1) ~ +(2n-1-1)-(1-2-(n-1)) ~ +(1-2-(n-1))2n-1
+0,-0被补码-2n-1 ~ +(2n-1-1)-1 ~ +(1-2-(n-1))2n
利用起来了移码-2n-1 ~ +(2n-1-1)-1 ~ +(1-2-(n-1))2n

是人为规定的
n=8时:-128的补码为10000000;-1的补码为10000000

3、浮点数的表示

N=尾数 * 基数指数(阶码)

浮点数的表示格式如下:

阶符阶码数符尾数

运算过程:
对阶 > 尾数计算 > 结果规格化

尾数≥0,将尾数限定在[0.5 , 1]之间,尾数M=0.1XXX…X(X可为0/1)
尾数<0,将尾数限定在[-1 , -0.5]之间,尾数M=0.1XXX…X(X可为0/1)

特点:
1.一般尾数用补码,阶码用移码(工业标准IEEE754中,尾数用原码
2.阶码的位数决定数的表示范围,位数越多范围越大
3.尾数的位数决定数的有效精度,位数越多精度越高对阶时,小数向大数看齐
4.对阶是通过较小数的尾数右移实现的

4、逻辑运算

关系运算符及其优先级
<<=>=> 优先级相同(高)

==!= 优先级相同(低)

1:真 ;0:假
逻辑或(||):都为0时为0
逻辑与(&&):都为1时为1
逻辑非(!):取反
逻辑异或(⊕):相同为0,不同为1

优先级(低—>高)
赋值运算符>逻辑与>逻辑或>关系运算符>算术运算符>逻辑非

短路原则

例:(m=a>b)&&(n=c>d)
当a=1,b=2,c=3,d=4,m和n的原值为1时,由于"a>b"的值为0,因此m=0,而"n=c>d"不被执行,因此n的值不是0而仍保持原值1

二、校验码

1、校验码基础知识

码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距

2、奇偶校验码

  1. 编码方式:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码
  2. 奇校验:整个校验码(有效信息位和校验位)中"1"的个数为奇数
    偶校验:整个校验码(有效信息位和校验位)中"1"的个数为偶数
  3. 奇偶校验,可检查1位(奇数位)的错误不可纠错

3、CRC循环冗余校验码(掌握特点即可,具体编码过程考试中未涉及)

  1. CRC校验,可检错不可纠错
  2. 编码方法:在k位信息码之后拼接r位校验码
  3. 把接收到的CRC码用约定的生成多项式G(X)去除(模二除法),如果正确,则余数为0;如果某一位出错,则余数不为0。不同的位数出,梦个数不同,余数和出错位序号之间有惟一的对应关系

4、海明校验码

  1. 海明校验,可检错也可纠错
  2. 构成方法:在数据位之间的特定位置上插入k个校验位,通过扩大码距来实现检错和纠错
  3. 数据位:n位 ; 校验位:k位
    2k-1≥n+k 2k≥n+k+1
  4. 海明码的校验关系表(软件设计师教程(第五版)P11
    具体过程例题(软件设计师教程(第五版)P12

在这里插入图片描述

三、CPU(中央处理单元)的组成(运算器与控制器)

1、计算机结构

在这里插入图片描述在这里插入图片描述

2、CPU结构

1、运算器

  1. 算术逻辑单元ALU:数据的算术运算和逻辑运算
  2. 累加寄存器AC:通用寄存器,为ALU提供一个工作区,用来暂存数据
  3. 数据缓冲寄存器DR:写内存时,暂存指令或数据
  4. 状态条件寄存器PSW:存状态标志与控制标志
    (争议:也有将其归为控制器的)

2、控制器

  1. 程序计数器PC:存储下一条要执行指令的地址
  2. 指令寄存器IR:存储即将执行的指令
  3. 指令译码器ID:对指令中的操作码字段进行分析解释
  4. 时序部件:提供时序控制信号
  5. 地址寄存器AR:保存当前CPU所访问的内存单元的地址(不常考)

四、指令系统

1、寻址方式

  1. 指令的基本概念
    一条指令就是机器语言的一个语句,它是一组有意义的二进制代码

指令的基本格式如下:

操作码字段地址码字段
  1. 寻址方式
    立即寻址方式
        特点:操作数直接在指令中,速度快,灵活性差
    直接寻址方式
        特点:指令中存放的是操作数的地址
    间接寻址方式
        特点:指令中存放的是操作数的地址的地址
    寄存器寻址方式
        特点:寄存器存放操作数
    寄存器间接寻址方式
        特点:寄存器内存放的是操作数的地址

2、CISC与RISC

  1. CISC与RISC是指令集发展的两种途径
指令系统类型指令寻址方式实现方式其它
CISC(复杂指令集计算机)数量多,使用频率差别大,可变长格式支持多种微程序控制技术(微码)研制周期长
RISC(精简指令集计算机)数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store 操作内存支持方式少增加了通用寄存器;布线逻辑控制为主;适合采用流水线优化编译,有效支持高级语言
  1. CISC与RISC比较,分哪些维度?
    指令数量、指令使用频率,寻址方式,寄存器,流水线支持,高级语言支持

    CISC:复杂,指令数量多,频率差别大,多寻址
    RISC:精简,指令数量少,操作寄存器,单周期,少寻址,多通用寄存器,流水线

3、流水线技术

  1. 概念
    ①相关参数计算:流水线执行时间计算流水线吞吐率、流水线加速比、流水线效率(后两个只在高级考试中出现,不需要了解)
    ②流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术
    ③流水处理时空图在这里插入图片描述

  2. 流水线计算
    ①流水线周期 t :为执行时间最长的一段(即 取指、分析(指令译码、取操作数)、执行 这些步骤中时间最长的)

    ②执行时间公式(n:指令条数;t:周期;k:步骤有几段(段数))
    第1条指令执行时间+(指令条数-1)*流水线周期

    理论公式:(t1+t2+ ··· +tn)+(n-1)*t
    红色部分为第1条指令执行时间,即流水线建立时间

    实践公式:k*t+(n-1)*t
    默认用理论公式,若无答案再用实践公式

    ③吞吐率计算
    流水线的吞吐率(Though Put rate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。

    基本公式:TP=指令条数/流水线执行时间

    最大吞吐率:TPmax = limn->∞n / ((k+n-1)*t) = 1/t即流水线周期的倒数

五、存储系统

1、层次化存储结构

在这里插入图片描述
虚拟存储体系由主存-辅存两级存储器构成

局部性原理是层次化存储结构的支撑
时间局部性:刚被访问的内容,立即又被访问(循环体)
空间局部性:刚被访问的内容,临近的空间很快被访问(顺序结构)

2、存储器的分类

1、按位置分类

  1. 内存(主存):用来存储当前运行所需要的程序和数据,速度快,容量小
  2. 外存(辅存):用来存储当前不参与运行的数据,容量大但速度慢

2、按存取方式分类

  1. 按内容存取
    相联存储器(如Cache)
  2. 按地址存取
    ①随机存取存储器RAM(如内存)
    ②顺序存取存储器SAM(如磁带)
    ③直接存取存储器DAM(如磁盘)

3、按工作方式分类

  1. 随机存取存储器RAM(如内存DRAM)
  2. 只读存储器ROM(如BIOS)
    DRAM:动态随机存取存储器
    SRAM:静态随机存取存储器
    Cache:高速缓存
    EEPROM:电可擦可编程只读存储器

3、高速缓存Cache

1、概念

  1. 在计算机的存储系统体系中,Cache是访问速度最快的层次
    若有寄存器,则寄存器最快
  2. 使用Cache改善系统性能的依据是程序的局部性原理
    时间局部性
    空间局部性
  3. 如果以h代表对Cache的访问命中率,t1表示Cache的周期时间,t2表示主存储器周期时间,以读操作为例,使用 “Cache+主存储器” 的系统的平均周期为t3,则:
    t3 = h*t1 + (1 - h)*t2
    其中,(1-h)又称为失效率(未命中率)

2、映像

  1. 地址映像是将主存与Cache的存储空间划分为若干大小相同的页(或称为块)。
    例如,某机的主存容量为1GB,划分为2048页,每页512KB;Cache容量为8MB,划分为16页,每页512KB

  2. 直接相联映像:硬件电路较简单,但冲突率很高
    全相联映像:电路难于设计和实现,只适用于小容量的cache,冲突率较低
    组相联映像:直接相联与全相联的折中
    注:主存与Cache之间的地址映射由 硬件 直接完成

冲突率电路复杂度
直接相联映像简单
全相联映像复杂
组相联映像折中

3、主存编址计算

  1. 存储单元
    存储单元个数 = 最大地址 - 最小地址 + 1

  2. 编址内容
    按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字

    按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节

  3. 总容量=存储单元个数 * 编址内容

  4. 根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出所需芯片的总数,即:
    总片数=总容量 / 每片的容量

六、输入/输出技术

1、数据传输控制方式

  1. 程序控制(查询)方式:分为无条件传送程序查询方式两种
    方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率
  2. 程序中断方式:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度
  3. DMA(直接存储器存取)方式:DMA方式是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式与中断方式都高效
    DMAC向总线裁决逻辑提出总线请求;CPU执行完当前总线周期即可释放总线控制权。此时DMA响应,通过DMAC通知I/O接口开始DMA传输)
    CPU是在一个总线周期结束时响应DMA请求的
  4. 通道方式(考试中未出现
  5. I/O处理机(考试中未出现

     从1~5,效率越来越高

2、中断处理过程

  1. CPU无需等待也不必查询I/O状态
  2. 当I/O系统准备好以后,发出中断请求信号通知CPU
  3. CPU接到中断请求后,保存正在执行程序的现场(保存现场,相应的状态信息会保存到当中),打断的程序当前位置即为断点
  4. (通过中断向量表)转入I/O中的服务程序的执行,完成I/O系统的数据交换(中断向量表保存中断服务程序的入口地址
  5. 返回被打断的程序继续执行(恢复现场

七、总线系统

1、总线的特点

分时双工
一条总线同一时刻仅允许一个设备发送,但允许多个设备接收。

2、总线的分类

  1. 数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据
  2. 地址总线(Address Bus):用来指定在RAM (Random Access Memory)之中储存的数据的地址
  3. 控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号,传送到周边设备

八、系统可靠性分析

1、可靠性指标

在这里插入图片描述
平均无故障时间→(MTTF)MTTF=1/λ,λ为失效率
平均故障修复时间→(MTTR)MTTR=1/μ,μ为修复率
平均故障间隔时间→(MTBF)MTBF=MTTR+MTTF
系统可用性→ MTTF/(MTTR+MTTF)*100%

  • 在实际应用中,一般MTTR很小,所以通常认为MTBF ≈ MTTF
  • 可靠性可以用可以用MTTF/ (1+MTTF)来度量

2、可靠性参数计算

1、串联系统

在这里插入图片描述
R=R1 *R2 *… *Rn

2、并联系统

在这里插入图片描述
R=1-(1-R1) *(1-R2) *… * (1-Rn)

3、N模混合系统

在这里插入图片描述
R* (1-(1-R)3)* (1-(1-R)2)

九、系统性能设计

1、性能指标

  • 字长32bit)和数据通路宽度一次性数据线路能通过的数据量,bit
  • 主存容量存取速度
  • 运算速度
    • 主频数据在1秒当中通过的次数,2.4GHz)与
      CPU时钟周期每一次通过花费的时间,1/主频
      1s/2.4GHz(单位为s)

    • CPIIPC
      平均每条指令的平均时钟周期个数(CPI,clock per instruction)

      每(时钟)周期运行指令条数(IPC,instruction per clock)

    • MIPSMFLOPS
      百万条指令每秒(MIPS,Million Instructions Per Second)
      MIPS=指令条数/(执行时间 *106)=主频/CPI=主频 *IPC

      每秒百万个浮点操作(MFLOPS,Million Floating-point Operations per Second)
      MFLOPS=浮点操作次数/(执行时间 *106)

  • 吞吐量(某一时间间隔内所完成的任务量)与吞吐率(单位时间内所完成的任务量)
  • 响应时间(RT)完成时间(TAT)
  • 兼容性

十、计算机系统知识思维导图

在这里插入图片描述

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
软件设计方案 用户界面设计规范 用户界面:又称人机界面,实现用户与计算机之间的通信,以控制计算机或进行用户与计算机之间的数据传送的系统部件。 GUI:即图形用户界面,一种可视化的用户界面,它使用图形界面代替正文界面。 本系统坚持图形用户界面(GUI)设计原则,界面直观、对用户透明。用户接触软件后对界面上对应的功能一目了然、不需要多少培训就可以方便地使用本应用系统。 1、界面设计介绍 界面设计是为了满足软件专业化标准化的需求而产生的对软件的使用界面进行美化优化规范化的设计分支。 1)软件启动封面设计 应使软件启动封面最终为高清晰度的图像,选用的色彩不宜超过256色,大小多为主流显示器分辨率的1/6大。启动封面上应该醒目地标注制作或支持的公司标志、产品商标、软件名称、版本号、网址、版权声明、序列号等信息,以树立软件形象,方便使用者或购买者在软件启动的时候得到提示。插图宜使用具有独立版权的、象征性强的、识别性高的、视觉传达效果好的图形,若使用摄影也应该进行数位处理,以形成该软件的个性化特征。如果是系列软件还将考虑整体设计的统一和延续性。 2)软件框架设计 软件的框架设计要复杂得多。软件框架设计应该简洁明快,尽量少用无谓的装饰,应该考虑节省屏幕空间,各种分辨率的大小,缩放时的状态和原则,并且为将来设计的按钮、菜单、标签、滚动条及状态栏预留位置。设计中将整体色彩组合进行合理搭配,将软件商标放在显著位置,主菜单应放在左边或上边,滚动条放在右边,状态栏放在下边,以符合视觉流程和用户使用心理。 3)软件按钮设计 软件按钮设计应该具有交互性,即应该有3到6种状态效果:点击前鼠标未放在上面时的状态;鼠标放在上面但未点击的状态;点击时状态;点击后鼠标未放在上面时的状态;不能点击时状态;独立自动变化的状态。按钮应具备简洁的图示效果,名称易懂,用词准确,能望文知意最好,让使用者产生功能关联反应,群组内按钮应该风格统一,功能差异大的按钮应该有所区别。
范围:CPU上可以识别的代码和数据。全部的代码总和。 要求:从定义开始的设计。完整性,彻底地定义从无开始的整个设计。这是因为软件之软,也是因为硬件平台的多样性和特殊性。 完整把握,从头设计是第一原则。因为软件世界自己并不能统一,还有继续分化的趋势。没有根本一致的基础可能是软件的本性。退回到一无所有是处理软件问题的根本。 在这样的视野下,操作系统只是一个部分,一个模块,不同的操作系统任你选择;语言的选择是运行环境的选择(每种语言有每种语言的运行时布局);所谓框架只是“类库+运行环境”的一种构造。 没有对其负载能力、操作强度进行评估前,这些东西(操作系统、语言、框架)还都不能纳入设计规范。 性能:运行过程的收敛(长时间运行的均态)。操作强度设计(串行处理速度),负载能力设计(并发处理的量)。可靠性设计。 软件问题的3个方面: 1、硬件,软件的操作对象和运行软件的数字系统(CPU系统和数字加速硬件) 2、交互操作(界面),专业界面设计 3、软件调度性能,实时的自动化过程(设备控制和自动测量)和用户交互过程(请求服务过程和干预过程;本地交互和远程交互),程控和网络访问的调度(服务器)。 软件项目的3个部分:(把3个阶段由纵向横过来,进行统筹) 分解文档,集成平台,可维护性要求。 软件设计必须有自说明特性。不能对文档产生依赖性。软件代码中合适的地方,需要对文档进行恰如其分说明。原则是,每段代码,每处需要理解的地方,如果和总体架构相关,就要有说明。 软件领域需要简化。需要还原软件本来的面目。EDA有泛滥的趋势,软件的各个方面都需要简化。软件形态、需求分析、文档说明、开发工具等。 需求分析过分强调适应生命周期的变化和没有需求分析是一样的。不切实际的面向未来的需求架构的直接结果是软件的复杂和错误百出。 软件只有一个,而观察的视角很多。要采用最适合的观察视角,让软件一目了然。 软件的生成过程和观察过程是两个不同的观念。生成过程又可以区分为:研究过程和工程过程。研究过程可以通过结果,研究报告反映;工程过程则必须采用过程刻画。 软件规范使用的语言一定要有普遍语义,但描述本身具有特殊性;不能强求它的全球唯一。一定要雄视全体,才能选择正确的立足点,这就要求对目前的软件技术有一个了解;要考虑纳入新的发展,那么规范应该分层,把一般的和具体易变的成分分开;要有具体的指导意义,越具体指导意义越大,但通用性则越小。 所谓架构,可能是十分具体应用的代表;不同类别的应用必然有不同的架构。软件架构本身是“应用架构”。因此,不能规范具体的架构。到是可以做:应用架构规范的规范。 逻辑架构的特殊性。可以判断,任何一款实用的软件采取的软件逻辑抽象都是别样的,特例的逻辑。否则,软件不可能那么轻快实用。软件逻辑,鬼魅也。而需求分析,必须是现实实用的,而不是同构/仿真的-这似乎是反对象分析的。因为这里强调的是和软件的交互界面,这个界面远远没有反映现实世界的结构。须知,软件强调的是数据处理,是输入输出。否则,就不能达到最简化。 可能现实世界的结构映射,最适合的方式是数据库 - 采用纯数据结构进行映射。除此之外,能有更合适的技术吗? 面向对象建模是吗?那么对象又如何与现实世界的对象绑定在一起呢? 这再次表明,在软件技术和需求分析之间有鸿沟。软件技术作为特殊的技术,有它的有限性。也反映了,包含软件应用在内的现实架构已经固定。 如果软件是数据处理,是输入输出,那么软件结构也就可以确定了! 可视化、用户操作界面解开了另外的软件世界,因为可视化可以代表用户更抽象的逻辑。用户希望操作可视对象,象操作现实对象一样。软件从模拟现实对象的过程中继承了其结构。 工业控制也开启了新的软件世界,因为软件要从分离的输入建立“综合感知”,感知到设备状态,然后做出响应。 软件有其固有的物理属性,也就是计算的量。算法领域,无论算法的论证多么曲折,求得的结果,物化为软件,总是“早已熟知”的软件。这一区分,是定义软件规范的基石。 算法构造领域是和软件完全不同的领域,算法不是软件。算法类似数学系统。也一如数学系统那样多样。 软件构造。算法总要转化为软件,这就是软件构造问题。寻址系统,数组。软件把自己的生成作为问题,给算法开辟了新的领域。软件生成,是一个“构造-编译”问题。手工构造,自动编译。语言的发展,是一个软件生成的历史。所谓统一建模,所谓设计模式,其实都是软件生成的问题。 需求分析。需求分析本质上是独立的。所谓OOA,面向对象的建模,把程序构造概念上升到需求分析领域可能是不对的。一个先验的,复杂的难于掌握的限制,只会让人对需求分析望而却步;即使勉强掌握,难求对需求分析的创造性发展。需求分析应该专注于需求分析本身,独立发展,一切为了准确、快捷的分析。 需求分析层次高一些,抽象一些,自由一些,这样可以充分表达需求的本质。反而可以促进更高级别的程序自动生成。 软件生成的历史。软件生成是为了解决人机沟通,让“计算机语言”更接近普通人的思维逻辑。把这种“高级计算机语言”翻译成可以执行的代码,就是软件生成(代码生成)的任务。而软件编制是专业人员的事情,因此语言问题的本质其实不那么重要。须知,经过培训,莫尔司码的电报发报可以比说话的语速还快!因此,计算机语言的前途迷茫;实际上也确实迷茫,历史上语言的层出不穷本身就说明了问题,至今仍然如此。在当今,必须建立这样的观点:语言是因人而异的;面对一个语言的时候,要清醒,首先明确“这是为谁设计的语言”;也就是说,需求分析之前的需求是要明确,让什么人来设计软件,然后为他们选择合适的语言。软件生成除了代码生成,还包括另外一个意思:软件构造。这在前面已经论述过了。只是,这里的软件构造机制已经在语言中奠定了。手工参与的软件构造只是语言给出的构造机制的应用。手工的软件构造就是语言构造机制的复制,产生大量的代码,应付实际问题的量。 立体构造。这里还有一个立体问题,实际问题的构造可能产生立体构造,如同建筑,基本的构件组装出复杂的立体结构。这里是建筑设计师的功劳。可能目前我们在语言层面上混淆不清的关键也在这里,没有区分语言和立体构造的责任。一个趋势是语言本身总是试图包揽建筑师的责任。把立体构造独立出来,带来的问题是:这个构造本身必须能够证明自己是正确的。1)能产生软件2)构造逻辑上正确,确实能解决应用问题。构造本身有一个属性,它有通用性。根本原理是通用的;总体构造本身具有一般性,也就是抽象性、实际问题无关性;局部构件具有通用性。也就是说,这里存在容器和容量的区别,构造是容器,实际问题是装在容器中的量。一个好的容器要能顶住容量的压力;一个好的建筑架构要能满足负载和抗振性要求。而架构本身的承受能力是客观的,只与架构本身有关。这也就是说,架构本身自我构造的,因此也就是科学。可能软件构造本身是澄清问题的工作,明确“容量”的特点,为软件构造的选择提供准确的依据,杀鸡不要用牛刀。实际问题的“容量”很容易测量,因为它反映为应用的规模,流程的流量。(架构是什么?架构是否存在?如果我们所说非虚,那么如何为架构下一个定义-一定是一个由具体业务流量和模式支撑的架构) 软件(算法)的构造。一个是数据的复杂性(内在互相关系),一个是计算方法(步骤和缓冲)。从宏观角度,数据关系是更根本的东西。目前的高级语言,变量和流程(顺序、分支-步骤;循环-缓冲和迭代)研究的多,而数据复杂性构造不足。 同构现象。CPU指令集合可以说是硬件直接实现的软件。软件帝国从这里提取软件精神,并升华它。从硬件的角度,从寄存器和指令执行流程,体现出的是变量和迭代(顺序更迭,循环往复)。(迭代流程)基于固定寻址的变量,经过寻址接口,可以处理任意数据,从而把迭代流程变成了一般流程。CPU的基本过程,产生了指令和数据,指令天生具有子程序的基因(一般流程),数据天生具有数据结构(寻址能力)的基因。高级的构造一般也是这种结构的类似:设计一套类似CPU的机制,支撑程序和数据;独特的“寻址机制”和“CPU处理能力”是实现构造的核心机制;迭代是所有这种机制的动力学和构造方式。而数据化是“寻址机制”的基础。抽象是数据化的工厂,也因此必须研究抽象技术。 抽象技术。所谓抽象,就是具体化,是范围的界定和比对(两种具体化对象之间的比对)。如果范围界定的完整,那么比对建立的联系就是普遍联系,普遍联系也就是所谓抽象原则。 评价标准。软件架构需要评测。这种评测是“在商言商”似的评测。评测的基础是软件架构的具体化。当掌握了架构的构造方法,每种架构本身也就具体化,是一种具体的架构。一种具体化的架构,就可以识别;可以识别则可以客观评测。可以按照立体架构的“压力”、“流量”等概念进行评测。 需求的把握-需求的变化。我们希望永恒不变的需求,核心需求和需求方式(表现和满足步骤);而事实上需求总在演化。软件必须无条件、最大限度地方便需求的表达和需求的满足。软件可能永远只是皮肤,需求源于现实核心深处,软件是一件衣服。这种观点下,软件是没有中心的一种架构。软件架构和需求之间联系的定量评测。 软件和算法的分开 软件的构造作为软件的通用属性 需求的独立 推论:算法是应用的算法。比如数学公式的计算、图形图象的处理、频谱分析、词法和语法分析。因此算法不是通用的软件算法。也因此软件构造是软件规范的一部分,因为它是通用的软件构造技术。 计算技术和应用之间有明显的区别,是两种不同的成分。软件规范是纯粹的,只关心计算技术。而不关心应用建模。计算方法本身早已经被发现了(也就是怎么自动计算,或者说什么是可计算的),剩下的问题只是应用问题。把应用问题的解决纳入软件计算模式。自动计算技术在汇编指令集合那里得到了说明。所谓软件设计是把这种计算方式发扬广大。 所谓算法,就是明确问题,然后发现用自动计算的方式解决问题。从这个意义上说,软件是应用问题导向的。那么,也就是要以问题为中心谈论软件。不同类型的问题需要的解决方式有独特的强调。这也就反映为所谓不同的软件技术。所以,区分软件计算技术和应用问题的成分,是软件规范需要首先识别的东西。 解决问题。本质上是把问题装到变量里面的过程,是放大CPU寄存器的过程。表示层:(把局面、环境;起点和终点需要定义在一个世界里)装进去,组织起来。计算层(展开层):基于表示,定义问题解决步骤(定义运动和过程)。 需求分析。问题描述采用的方法可能应该和软件算法完全分开。否则不能发现问题描述的创造性方法,不能表达问题本质。阐述问题,写文章我们有某篇布局之法;哲学研究我们有严谨的逻辑方法。需求分析,我们一定可以创造自己的方法。这是什么方法?满足使用要求,满足使用流程。离散/隔离各个需求。事实上,面向外部的分析理解和面向内部的分析理解之间有鸿沟。因为这是两个不同的世界。在两个相差悬殊的世界之间,搭建的构造也必然多种多样,以奇为平常。那么,建立联系的媒介少的可怜。可能问题本身也正在于这种联系的分析和设计。 软件的量,是静态的。强调这部分就忽略了活跃的、奇异的、动态的部分。软件的出现不仅仅是被动地适应显示需求,同时也改变了现实需求本身。这种和现实需求融合在一起形成的状态,正是软件活跃的部分。在以前,仅仅以“应用软件”指称是不够的。(操作系统、编译软件、应用软件) 在范畴上,分为三个层次,或说3个范畴域: 1、 活跃的、黏性的动态层次。应用层。和现实之间的界面,是设备逻辑。需求简化、解决方案的奇异性;应用算法的专业性。这是软件形象最活跃的部分。 这里用的是抽象(业务流程)和具体(设备能力)统一的思维方法,构造逻辑的软件过程同时又是可以用具体进行描述的;动态的、物理的分析手段(物理的量)。 业务流程的设计几乎就是艺术设计。 2、 中间层。程序构造层。语言、编译技术、数据结构、设计方法(过程、数据、对象)等可以形式化的计算机科学的任务。对程序能力进行抽象,设计程序自动化生成的一套系统:语言、计算系统、编译系统。这是在静态和活跃部分之间的层次。这里的观念:设计方法、主程序、程序过程(和应用层的过程不是一一对应的)。 3、 静态层。软件的量,度量层。所有程序构造过程的差别消失了。这是软件的静态观点。 每层都有对软件的自己的理念,概念、过程和模型。两个层的对比,则凸显出不可调和的差别。也是所有关于软件的不成熟的印象、抽象产生的地方。 在应用层,抽象的、逻辑过程强一些。想象的部分占据主要的部分。需要对现实的业务,基于设备的具体能力,进行构造。 3个范畴定义了“软件”和“程序”的分别。第1层和第3层论述的是“软件”,而第2层论述的是“程序”。 软件和程序的研究方法不同。程序研究方法是完备的,而软件不完备。 程序开发应当体现软件特性。1)是逻辑的过程,总体的过程和子过程的观察和校验程序。2)软件的量层次上,软件的规模、运行强度和稳定性指标的自测试程序。 第二阶段 一定要有一个标准。软件如衣服,软件的交付文档应当显示出衣服是如何编织起来的。(相对于需求,软件是衣服,非核心;相对于硬件,软件是衣服,包裹) 要有一个理论说明。 架构也是衣服的一个部件,类似衣服的连接方式,模块集合的重心比对。 衣服是一个没有核心的结构。软件也一样要显示出这个特性。 无论如何,我们需要有观察软件的眼光,无论一套软件依据什么样的理论产生。 什么是软件?描述是软件的存在形式(文本格式)。软件一定是可执行的(这是软件的严肃性,精确、定量)。软件是异化的,一般异化为具体、特例(对抽象力最好的归结方式)(没有完美满足需求的软件,相对于需求,软件只能满足固定的需求,而不能满足需求的变化,即一款软件总是具体的;由一般产生出具体的思考方法,也就是构造的方法;或着是磁力打造,一个好的理论一定对现实素材有吸引力,向磁铁一般;这也是在矛盾中建造现实的方法,只要是具体的就肯定是可以分析出潜在矛盾、不完美的,问题不仅仅是分析、认识现实,还要能够构造现实;不存在完美的现实,只存在完美的理论 科学研究的方法是简化。工程的方法是‘相似’,复制发现事物时的状态,那么事物的表现就会复现。 在具体化这里,软件和硬件工作的方法在结果上实现了一致。只是方向不同,软件是从一般进行到具体;硬件一开始就是从具体出发,层层构造,搭建系统。硬件的设计明显具有以工艺、器件为核心的特征。配合器件的特新,进行外围设计。在硬件领域,是‘具体’为上;在软件领域,是‘具体’为下。) 对具体性的解释:组成所有物资的电子、质子、中子是圆的、相同的,但是这些相同的东西组成的原子则有几百种不同。每次量的规模的添加,都导致特殊性的添加。对于软件来说,也是如此。如下的概念是母庸质疑的,软件如同大山,沟壑鲜明。(这种巨大的特殊性,一定是和巨大的需求特殊性相应的)。 “软件以文本形式存在;软件在执行着;软件以个例的形式存在”,归结为在一起就是“软件是具体的”。 低一级别的定义:软件与数据和逻辑相关(数据和逻辑是软件的基本语义)。软件与过程相关(积分(存储,数据的数据化)和步骤(逻辑);过程是步骤的遍历,是数据的消长变化)。 执行的异化。区分独立执行和整体执行的概念。独立执行的代码称为模块,否则只是‘片段’。独立性和数据完整性相关,数据越庞大那么不独立的代码片段越多,模块就越大。模块独立性具有比和整体执行所要求的更大的自由度,也就是说整体只是使用了模块一部分的执行能力。模块独立执行获得的自由度是应该能够度量;模块的执行设计应该为了获取更大的自由度;自由度是模块可执行性质量的评定指标。对于整体执行的设计来说,自由度设计可能是设计过程的主导方法,它和全面、完整的需求理解相关,也和需求变化相关;因此自由度设计也是需求定位的设计。 软件的量,也就是软件的能力。这是理解软件解决问题的方式的基础。比如逻辑能力、计算能力、存储能力、图象能力等。 软件是运行的,软件是自我构造的,软件的全体的各个环节都有自己的量。编译、操作系统、文件管理等各环节都是不同分工的软件实现的。 需要构造在功能层次上的互相配合,解释这种完整性。显然每个部分都具有独立的完整性;完整性和完整性的配合构成一个总体的系统。因此未必要求系统的完整性、长期性、稳定性。反过来,系统满足需求的快速性、快速变化适应性、和现实一起变化、消长的特性、瞬态响应特性可能更接近系统的本质。 这好比太极拳,要在一个完满的氛围里运动。 软件能力是比代码高一个级别的抽象。又是构成软件内涵的基础语义。 ‘设备能力’的概念更基础,可以统一所有其它能力;又可以作为以硬件为中心的观念的基础。 能力的获得在于‘二分’。在于互相支撑的界面,支撑在一起的双方互为能力。 1.所谓需求分析,我们总是在创造一套新的方法和语言。而最有效的需求分析是自然语言分析。借助人们心目中的全部理解所用到的描述形式。也就是进入到实际存在的需求中去理解需求,分析需求。 因为领域、术语、行业表述习惯的原因,这个阶段千差万别。 2.其次是电脑的使用方式-电脑技术(外设、通信和电脑本身的硬件形态),尝试去设计合适的使用方式和硬件解决方案。 这里有使用环境、专业技术、成本、时间,以及个人习惯等原因,同样是一个精彩的过程。对领域工作方式的熟悉、外设相关的专业技术背景、折中技术决定了这是一个经验至上的活动。这就是电脑使用方式的确定。 3.进一步,确定使用者角色。使用者和使用地点关联。使用地点也就是前面电脑使用方式的一部分。 这是一个沟通过程,也是对有了电脑辅助参与,相关领域习惯改革的问题。 4.然后,进入二元分析阶段:使用者管角度、客观功能角度,分析功能,并完成二者之间的映射。 这个阶段,功能被量化。职能量化。职能和功能之间会有模糊,有授权的转移。这个阶段就是充分考虑这些问题。 5.然后,进入传统的需求分析阶段。 计算架构和功能描述的规格分析。使用者界面规划(详细、规格级别)。 界面规划、功能、架构三者之间组成互动的具体化过程。 最后会产生系统级别的文档。运行实体、接口;系统运行态、实体接口的输入输出规格。 6.然后,实体级别的程序构造阶段。 算法构造和程序构造。主要是从资源占用的角度确定宏观的算法。在这个阶段,是程序文档化阶段。文档这个属于是这个阶段的工具。 最后会产生严格的程序模块的文档。所有这些文档组合起来,可以构成运行流程。这些文档化的程序就是逻辑化的程序本身。 7.最后,编码阶段 用一种具体的语言,按照模块文档的接口、资源、算法要求,编制代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ؓ初尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值