软件工程抽象过程: 软件工程过程的每一步都是对软件解法的抽象 层次的一次精化。 在可行性研究阶段,软件作为系统的一个完整 部件; 在需求分析期间,软件解法是使用在问题环境 内熟悉的方式描述的; 当由总体设计向详细设计过渡时,抽象的程度 也就随之减少了; 最后,当源程序写出来以后,也就达到了抽象 的最低层
软件工程抽象过程: ◼ 软件工程过程的每一步都是对软件解法的抽象 层次的一次精化。 ◼ 在可行性研究阶段,软件作为系统的一个完整 部件; ◼ 在需求分析期间,软件解法是使用在问题环境 内熟悉的方式描述的; ◼ 当由总体设计向详细设计过渡时,抽象的程度 也就随之减少了; ◼ 最后,当源程序写出来以后,也就达到了抽象 的最低层
层次思维 最高抽象 较低级抽象 低级概念构 较低级抽象 造和理解 具体基本元素
层次思维 最高抽象 较低级抽象 较低级抽象 具体基本元素 低级概念构 造和理解
523逐步求精 逐步求精:为了能集中精力解决主要问题而尽 量推迟对问题细节的考虑。逐步求精是人类解 决复杂问题时采用的基本方法,也是许多软件 工程技术(规格说明、设计和实现等技术)的 基础。 Miller法则:一个人在任何时候都只能把注意 力集中在(7±2)个知识块上
5.2.3 逐步求精 ◼ 逐步求精:为了能集中精力解决主要问题而尽 量推迟对问题细节的考虑。逐步求精是人类解 决复杂问题时采用的基本方法,也是许多软件 工程技术(规格说明、设计和实现等技术)的 基础。 ◼ Miller法则:一个人在任何时候都只能把注意 力集中在(7±2)个知识块上
例:用筛选法求100以内的素数。所谓的筛选法,就是 从2到100中去掉2,3,5,7的倍数,剩下的就是100 以内的素数。 首先按程序功能写出一个框架 man 建立2到1006数组A[l,其中A[=i; 建立2到10的素数表B,存放2到10以内的素数;…12 若A[=i是B中任一数的倍数,则剔除A[i;…3 输出A[中所有没有被剔除的数;
例:用筛选法求100以内的素数。所谓的筛选法,就是 从2到100中去掉2,3,5,7的倍数,剩下的就是100 以内的素数。 ◼ 首先按程序功能写出一个框架 main() { 建立2到100的数组A[ ],其中A[i]=i;..........................1 建立2到10的素数表B[ ],存放2到10以内的素数;......2 若A[i]=i是B[ ]中任一数的倍数,则剔除A[i];............3 输出A[ ]中所有没有被剔除的数;…..………………....4 }
上述框架中每一个加工语句都可进一步细化 maino i 体建立2到100的数组A[,其中A[=i1/… for(i=2;i<=100;i++)A|i=i; 建立2到10的素数表B,存放2到10以内的素数*/…2 B[1=2;B2]=3;B3=5;B|4=7 若A[i=i是B中任一数的倍数,则剔除Ai]* for(j=1;j<=4;j++) 检查A所有数能否被B订整除并将其从A剔除;…3.1 /输出A]中所有没有被剔除的数* 4 for(i=2;i<=100;i++) 若A[没有被剔除,则输出之 4.1 继续对31和41细化,直到每个语句都能用程序设计语 言来表示
◼ 上述框架中每一个加工语句都可进一步细化 ◼ main() { /*建立2到100的数组A[ ],其中A[i]=i*/ ………..………1 for (i = 2;i <= 100;i++)A[i] = i; /* 建立2到10的素数表B[ ],存放2到10以内的素数*/ ….2 B[1] =2; B[2] = 3; B[3] = 5; B[4] = 7; /*若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]*/ .…..….3 for (j = 1; j <= 4; j++) 检查A[]所有数能否被B[j]整除并将其从A[]剔除;.....3.1 /*输出A[ ]中所有没有被剔除的数*/ …………………….4 for (i = 2; i <= 100; i++) 若A[i]没有被剔除,则输出之……………………..…..4.1 } ◼ 继续对3.1和4.1细化,直到每个语句都能用程序设计语 言来表示