程序设计基本概念软设

程序设计基本概念

编译程序和解释程序

汇编语言->源程序->汇编程序->目标程序->运行
高级语言->源程序->解释程序->中间代码->运行
	->编译程序->目标语言程序->运行

语法,语义,语用

词法(保留字):特定文本内语词的构成和使用的法则
语法(计算表达):程序设计语言的基本符号
语义:按语法规则构成的各个语法成分的含义,分析是否静态语义错误
语用:表示构成语言的各个记号和使用者的关系

程序设计语言分类

1.命令式和结构化
2.面向对象
3.逻辑式
4.函数式

软件过程模型

瀑布模型(依线性顺序连接,以文档为驱动,适用于软件需求很明确的软件项目模型)

优点:容易理解,管理成本低。
缺点:客户必须完整,正确和清晰的表单他们的需要。

增量模型(每一个增量均发布一个可操作的产品)

优点:第一个交付的成本和时间很少,小系统所承担的风险不大
缺点:如果没有对用户的变更要求进行规划,产生的初始增量可能会造成增量的不稳定。

演化模型(迭代的过程模型)

原型模型(适用于用户需求不确定,需求经常变化的情况)

原型模型可以分为:
1.探索性原型
2.实验性原型
3.演化型原型

螺旋模型(庞大,复杂且高风险的系统)

每个螺旋周期如下四个步骤:
1.制定计划
2.风险分析
3.实施工程
4.用户评估

喷泉模型(以用户需求作为动力,以对象作为驱动的模型,适合于面向对象的开发方法)

喷泉模型使开发过程具有迭代性和无间隙性。
优点:提高软件项目的开发效率,节省开发时间
缺点:开发过程需要大量开发人员,不易管理

基于构建的开发模型

利用预先包装的构建来构造应用系统

形式化方法模型(严格的数学模型)

主要生成计算机软件形式化数学规格说明

统一过程模型

用例和风险驱动,以架构为中心,迭代并且增量的开发过程。由UML方法和工具支持。
迭代的意思是将整个软件开发项目划分为许多个小的“袖珍”项目,每一个袖珍项目包含正常软件项目的所有元素。

敏捷方法

总体目标为通过尽可能早的,持续的对有价值的软件的交付。

极限编程(XP)

轻量高效低风险,每周工作40小时

水晶法

不同项目不同策略,项目质量和开发人员的提高,项目和过程的质量也随之提高

并列争求法

每30天一个从此,按照需求的优先级来实现产品。。

常用算法

算法的特性:

(1)有穷性:执行有穷步之后结束。

(2)确定性:算法中每一条指令都必须有确切的含义,不能含糊不清。

(3)输入(>=0)

(3)输出(>=1)

(4)有效性(可行性):算法的每个步骤都能有效执行并能得到确定的结果。例如a=0,b/a就无效。

2、分治法

子问题相互独立,将一个难以解决的大问题分解为一些规模较小的相同问题

(1)特征:把一个问题拆分成多个小规模的相同子问题,一般可用递归解决。

(2)经典问题:斐波那契数列、归并排序、快速排序、矩阵乘法、二分搜索、大整数乘法、汉诺塔

3、动态规划法(用于求最优解)

子问题相互不独立,避免大量的重复运算,用于求解某种具有最优性质的问题

(1)特征:划分子问题(最优子结构),并把子问题结果使用数组存储,利用查询子问题结果构造最终问题结果。

(2)经典问题:斐波那契数列、矩阵乘法、揹包问题、 LCS最长公共子序列

4、回溯法

可以系统的搜索一个问题的所有解或任意解。

(1)特征:系统的搜索一个问题的所有解或任一解。有试探和回退的过程。

(2)经典问题:N皇后问题、迷宫、揹包问题

5、贪心法(用于求满意解)

贪心算法并不是从整体最优考虑,而是某种意义的局部最优

(1)特征:局部最优,但整体不见得最优。每步有明确的,既定的策略。

(2)经典问题:揹包问题(如装箱)、多机调度、找零钱问题

加密技术

MD5 报文摘要算法

RC5 明文加密算法

RSA 非对称加密算法

SHA-1 安全校验算法,确保信息未被篡改

软件复杂度度量

Macabe度量法

 V(G) = m - n + 2

测试

白盒测试

逻辑覆盖

 语句覆盖(每条语句至少执行一次)
 路径覆盖(测试程序中所有可能路径)
 判定覆盖(每个判定表达式至少获得一次“真”或“假”)
 条件覆盖(每一条判定语句的每个逻辑条件至少满足一次)
 判定/条件覆盖

循环覆盖

 循环中的每个条件都得到验证

基本路径测试

黑盒测试

 等价类划分
 边界值分析
 错误推测
 因果图

软件项目估算模型

COCOMO 估算模型 (精确的易于使用的成本估算模型)

1.基本COCOMO(静态单变量)
2.中级COCOMO(静态多变量)
3.详细COCOMO
  系统,子系统,模块三个层次

COCOMO Ⅱ 估算模型

1.应用组装模型
2.早期设计阶段模型
3.体系结构阶段模型

Putnam 估算模型(动态多变量)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章