软件工程 学习笔记 知识梳理

Chapter 1 绪论

软件开发知识体系

  • 项目管理开发: 软件工程
  • 软件逻辑设计: 数据结构与算法
  • 程序编程编译: 编译原理
  • 软件运行环境: 操作系统/数据库

软件开发过程

  1. 问题理解
  2. 算法设计
  3. 数据结构设计
  4. 算法分析
  5. 程序设计
  6. 程序实现

操作系统

操作系统是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。

主要功能

  • 处理机管理: 进程管理
    • 控制: 程序的创建, 撤销, 状态转换
    • 调度: CPU分配
    • 同步: 多个进程协调
    • 通信: 进程信息交换
  • 储存器管理: 内存管理
    • 分配: 为每个作业分配内存 静态分配 动态分配
    • 保护: 确保用户程序只在自己内存内运行 互不干扰
    • 映射: 地址空间 内存空间 地址映射
    • 扩展: 虚拟储存技术扩充内存容量 请求调入, 置换
  • 设备管理: I/O管理
    • 缓冲: 缓和CPU和I/O速度不匹配矛盾
    • 分配: 根据进程I/O请求, 为之分配所需设备
    • 驱动: 设备处理, 实现CPU与设备控制器之间的通信
  • 文件管理: 用户文件, 系统文件管理
    • 储存: 储存空间分配 回收
    • 组织: 建立目录项, 按名存取
    • 读写: 外村读写数据
    • 安全: 放置未核准用户存取, 防止不正确使用文件
  • 用户接口: 提供有好的接口, 方便用户使用
    • 图形用户接口
    • 命令接口
    • 程序接口

软件程序编译

  1. 操作系统依赖: 高级语言 --> 翻译程序 --> 机器码
  2. 不依赖操作系统: 高级语言 --> 翻译程序 --> 中间语言 --> 执行虚拟机

编译步骤

源程序字符串 --> 词法分析器 --> 单词流 --> 词法分析器 --> 语法树 --> 语义分析器 --> 中间代码序列 --> 代码优化器 --> 目标代码生成器 --> 目标程序

计算机软件数据管理

位于用户与操作系统之间的数据管理软件

功能

  • 数据定义
  • 数据操作
  • 数据库运行管理
  • 数据组织, 储存, 管理
  • 数据库建立维护
  • 数据通信接口

SQL

  1. DDL definition
  2. DML manipulation

Chapter 2 数据结构

线性表

  1. 数据元素一一对应, 顺序关系
  2. 位序, 表长, 前驱, 后继, 除第一个和最后一个, 唯一前驱和后继

顺序储存结构

  1. 地址连续 依次存放 起始地址
  2. 随机存取
  3. 定义{基址, 长度length, 容量size}
  4. 插入操作: E = n / 2 E=n/2 E=n/2 O ( n ) O(n) O(n)
   Status  List_Insert(ListPtr L, int pos, ElemType elem){
	Status status = range_error;
	int len = L->length,i;
	if (len = MAXSIZE) status = overflow;
	else if (1<= pos && pos <=len+1){
	   for(i=len;i>=pos;i--)
			L->elem[i+1] = L->elem[i];  /* 数据元素后移一个位置*/
	   L->elem[pos] = elem;
	   L->length ++;  /* 表长加1 */
	   status = success;
	}
	return status;
   }

  1. 删除操作: E = n − 1 2 E=\frac{n-1}{2} E=2n1 O ( n ) O(n) O(n)
Status List_Remove(ListPtr L,int pos){
	Status status = range_error;
	int len = L->length, i;
	if(1<= pos && pos<=len){
	   for(i=pos;i<len;i++)
		    L->elem[i] = L->elem[i+1]; /* 数据元素前移一个位置*/
	   L->length --;  /* 表长减1 */
	   status = success;
	 }
	return status;
}

链式储存结构

  1. 数据域+指针=节点
  2. 头指针 带不带头结点皆可
  3. 查找
Status  List_Locate(ListPtr L, ElemType elem, int *pos){
   
	Status status = range_error;
	ListNodePtr p = (*L)->next; /*p指向第一个元素结点*/
	int i
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值