2015年软件水平考试软件设计师考前辅导完整手册
来源:网络  园友关注度 218   发布于:3/25/2015 12:24:27 AM


 软件开发方法综述

  1、结构化方法

  结构化开发方法是由E.Yourdon 和 L.L.Constantine 提出的,即所谓的SASD 方法, 也可称为面向功能的软件开发方法或面向数据流的软件开发方法。Yourdon方法是80年代使用最广泛的软件开发方法。

  它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。它给出了两类典型的软件结构(变换型和事务型)使软件开发的成功率大大提高。

  2、面向数据结构的软件开发方法

  Jackson方法是最典型的面向数据结构的软件开发方法,Jackson方法把问题分解为可由三种基本结构形式表示的各部分的层次结构。三种基本的结构形式就是顺序、选择和重复。三种数据结构可以进行组合,形成复杂的结构体系。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统非凡有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的具体设计。

  3、 面向问题的分析法

  PAM(PRoblem Analysis Method)是80年代末由日立公司提出的一种软件开发方法。它的基本思想是考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。这一方法的具体步骤是:从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的PAD图。这一方法本质上是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数据结构。PAM方法的另一个优点是使用PAD图。这是一种二维树形结构图,是到目前为止最好的具体设计表示方法之一。当然由于在输入、输出数据结构与整个系统之间同样存在着鸿沟,这一方法仍只适用于中小型问题。

  4、原型化方法

  产生原型化方法的原因很多,主要随着我们系统开发经验的增多,我们也发现并非所有的需求都能够预先定义而且反复修改是不可避免的。

  当然能够采用原型化方法是因为开发工具的快速发展,比如用VB,Delphi等工? 们可以迅速的开发出一个可以让用户看的见、摸的着的系统框架,这样,对于计算机不是很熟悉的用户就可以根据这个样板提出自己的需求。

  开发原型化系统一般由以下几个阶段:

  (1) 确定用户需求

  (2) 开发原始模型

  (3) 征求用户对初始原型的改进意见

  (4) 修改原型。

  原型化开发比较适合于用户需求不清、业务理论不确定、需求经常变化的情况。当系统规模不是很大也不太复杂时采用该方法是比较好的。

  5、面向对象的软件开发方法

  当前计算机业界最流行的几个单词就是分布式、并行和面向对象这几个术语。由此可以看到面向对象这个概念在当前计算机业界的地位。比如当前流行的两大面向对象技术DCOM和CORBA就是例子。当然我们实际用到的还是面向对象的编程语言,比如C++。不可否认,面向对象技术是软件技术的一次革命,在软件开发史上具有里程碑的意义。

  随着OOP(面向对象编程)向OOD(面向对象设计)和OOA(面向对象分析)的发展,最终形成面向对象的软件开发方法OMT (Object Modeling Technique)。这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。所以OMT彻底实现了PAM没有完全实现的目标。不仅如此,OO技术在需求分析、可维护性和可靠性这三个软件开发的要害环节和质量指标上有了实质性的突破,基本地解决了在这些方面存在的严重问题。

  综上所述,面向对象系统采用了自底向上的归纳、自顶向下的分解的方法,它通过对对象模型的建立,能够真正建立基于用户的需求,而且系统的可维护性大大改善。当前业界关于面向对象建模的标准是UML(Unified Modeling Language)。

  这里我们需要谈一下微软的MSF(Microsoft Solutions Framework)的框架,它简单的把系统设计分成三个阶段:概念设计、逻辑设计和物理设计。概念设计阶段就是从用户的角度出发可以得到多少个对象,并且以对象为主体,画出业务框架。逻辑设计阶段就是对概念设计阶段的对象进行再分析、细分、整合、删除。并建立各个对象的方法属性以及对象之间的关系。而物理设计实际上就是要确定我们实际需要的组件、服务和采用的框架结构、具体的编程语言等。MCF整个结构比较清楚是基于对象开发的一个比较好的可操作的框架系统。

  6、可视化开发方法

  其实可视化开发并不能单独的作为一种开发方法,更加贴切的说可以认为它是一种辅助工具,比如用过SYBASE的S-Design的人都知道,用这个工具可以进行显示的图形化的数据库模式的建立,并可以导入到不同的数据库中去。当然用过S-Design的人不一定很多,但用过VB,DELPHI,C++ Builder等开发工具的人一定不少,实际上你就是在使用可视化开发工具。

  当然,不可否认的是,你只是在编程这个环节上用了可视化,而不是在系统分析和系统设计这个高层次上用了可视化的方法。实际上,建立系统分析和系统设计的可视化工具是一个很好的卖点,国外有很多工具都致力于这方面产品的设计。比如Business Object就是一个非常好的数据库可视化分析工具。

  可视化开发使我们把注重力集中在业务逻辑和业务流程上,用户界面可以用可视化工具方便的构成。通过操作界面元素,诸如菜单、按钮、对话框、编辑框、单选框、复选框、 列表框和滚动条等,由可视开发工具自动生成应用软件。
 
 
 

  软件工程之详细设计

  详细设计的基本任务:

  (1)为每个模块进行详细的算法设计。用某种图形、表格、语言等工具将每个模块处理过程 为每个模块进行详细的算法设计。 为每个模块进行详细的算法设计的详细算法描述出来。

  (2)为模块内的数据结构进行设计。对于需求分析、概要设计确定的概念性的数据类型进行 为模块内的数据结构进行设计。 为模块内的数据结构进行设计确切的定义。

  (3)对数据结构进行物理设计,即确定数据库的物理结构。物理结构主要指数据库的存储记 对数据结构进行物理设计, 对数据结构进行物理设计即确定数据库的物理结构。 录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。

  (4)其他设计:根据软件系统的类型,还可能要进行以下设计:

  ①代码设计。为了提高数 其他设计: 其他设计 根据软件系统的类型,还可能要进行以下设计: 代码设计。 据的输入、分类、存储、检索等操作,节约内存空间,对数据库中的某些数据项的值要进行 代码设计。

  ②输入 输出格式设计。 输出格式设计。人机对话设计。 对于一个实时系统, 用户与计算机频繁对话, 因此要进行对话方式、 内容、

  ③人机对话设计。 格式的具体设计。

  (5)编写详细设计说明书。

  (6)评审。对处理过程的算法和数据库的物理结构都要评审。

  结构化程序设计方法:

  详细设计是软件设计的第二阶段,主要确定每个模块具体执行过程,也称“过程设计”,详细设计的目标不仅是逻辑上正确地实现每个模块的功能,并使设计出的处理过程清晰易读。过程设计中采用的典型方法是结构化程序设计(简称 SP)方法, 最早是由 E.W.Dijkstra 在 60 年代中期提出的,它是实现详细设计目标的关键技术之一。

  计算机软考软件设计师知识点:用Java实现的日志切割清理工具

  对于服务器的日常维护来说,日志清理是非常重要的事情,如果残留日志过多则严重浪费磁盘空间同时影响服务的性能。如果用手工方式进行清理,会花费太多时间,并且很多时候难以满足实际要求。例如:如何在每个星期六凌晨3点把超过2G大的日志文件进行切割,保留最新的100M日志记录?

  网上没有发觉能满足本座要求的日志切割工具,因此花了一些闲暇时间自己写了一个。由于要在多个平台上使用,为了方便采用 Java 实现。本工具命名为 LogCutter,主要有以下特点:

  1、支持 Linux、Mac 和 Windows 等所有常见操作系统平台

  2、支持命令行交互式运行

  3、支持后台非交互式运行(Linux/MAC 下使用 daemon 进程实现,Windows 用系统 Service 实现)

  4、支持两种日志清理方式(删除日志文件或切割日志文件)

  5、支持对 GB18030、UTF-8、UTF-16LE、UTF-16BE 等常用日志文件类型进行切割(不会发生切掉半个字符的情况)

  6、高度可配置(程序执行周期、要删除的日志文件过期时间、要切割的日志文件阀值和保留大小等均可配置

  使用方法:

  LogCutter - Bruce Liang, all rights reserved.

  一、启动方式

  ) Windows A) 前台运行: > ./run.bat B) 后台运行: > ./LogCutter.exe { -install-demand (安装手动启动服务)

  -install-auto (安装自动启动服务)

  -start (启动服务)

  -stop (停止服务)

  -status (查看服务状态)

  } *** 注 *** @ LogCutter.exe 以 Windows 系统服务的方式运行,安装好后也可以通过 Windows 服务管理器进行管理@ LogCutter.exe 依赖 JRE 1.6, 因此必须在注册表或环境变量中设置 %JAVA_HOME%) Linux / Unix A) 前台运行: $ ./run.sh B) 后台运行: $ ./run.sh -d *** 注 *** @ 可以设置为开机时自动后台运行,方法如下:$ vi /etc/rc.d/rc.local( 加入: ${YOUR_LOGCUTTER_PATH}/run.sh -d )

  二、配置文件

  ) 程序配置文件: ./conf/config.xml) 日志配置文件: ./conf/log4j.properties (默认)

  三、环境要求

  ) Java 版 本: JRE 1.6 以上) 依赖程序包: dom4j、log4j、juniversalchardet

  run.sh (Mac 平台)

  #!/bin/bash JAVA_HOME=“/Library/Java/Home” CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar JAVA_BIN=$JAVA_HOME/bin JAVA=$JAVA_BIN/java APP_PATH=“/Users/Kingfisher/MyWork/Java/LogCutter” APP_CLASSPATH=$APP_PATH/classes APP_LIBPATH=$APP_PATH/lib APP_LIBS=$APP_LIBPATH/dom4j-1.6.1.jar:$APP_LIBPATH/log4j- 1.2.16.jar:$APP_LIBPATH/juniversalchardet-1.0.3.jar APP_CONFPATH=$APP_PATH/conf APP_CONFFILE=$APP_CONFPATH/config.xml APP_MAIN_CLASS=com.bruce.main.LogCutter DAEMON='-d' CMD=“$JAVA -cp $CLASSPATH:$APP_CLASSPATH:$APP_LIBS $APP_MAIN_CLASS -f $APP_CONFFILE” if [ $# -eq 0 ] then $CMD elif [ “$#” -eq 1 -a “$1” = “$DAEMON” ] then $CMD & else echo “Usage: $0 [ $DAEMON ]” exit 1 fi

  交互式运行操作演示:

  [Kingfisher@Bruce-mbp LogCutter] $ pwd /Users/Kingfisher/MyWork/Java/LogCutter [Kingfisher@Bruce-mbp LogCutter] $ ./run.sh command line usage

  HELP : Show help JOBS : Show jobs status CFG : Show configuration summary RUN : Schedule jobs manually!Q : Shutdown application? : About me

  > help

  command line usage

 
 
 
 

  C++强大的原因

  C++在几乎所有的计算环境中都非常普及:个人电脑、Unix工作站和大型计算机。如果考察一下新编程语言的发展史,就可以看出C++的这种普及率是非常高的。用以前的语言编写的程序量非常大,这无疑会降低对新语言的接受程度。除此以外,大多数专业软件设计师总是愿意使用他们已熟知的、使用起来得心应手的语言,而不是转而使用新的、不熟悉的语言,花大量的时间来研究其特性。当然,C++是建立在C的基础之上(在C++出现之前,许多环境都使用C语言),这对于C++的普及有很大的帮助,但是C++的流行远不只是这一个原因。C++有许多优点:

  C++适用的应用程序范围极广。C++可以用于几乎所有的应用程序,从字处理应用程序到科学应用程序,从操作系统组件到计算机游戏等。

  C++从C中继承了过程编程方式的高效性,并集成了面向对象编程方式的功能。

  C++在其标准库中提供了大量的功能。

  有许多商业C++库支持数量众多的操作系统环境和专门的应用程序。

  因为几乎所有的计算机都可以使用C++编程,所以C++语言普及到几乎所有的计算机平台上。也就是说,把用C++编写的程序从一台机器迁移到另一台机器上不需要费什么力气。当然,如果这个过程真的非常简单,那么编写在另一台机器上运行的程序时就需要考虑使用C++语言了。

  C++的ANSI标准

  标准化是把所编写的程序从一种类型的计算机迁移到另一种类型的计算机上的基础。标准的建立使语言在各种机器上的实现保持一致。在所有相容编译器上都可用的一组标准功能意味着,用户总是能确定下一步会获得什么结果。使用ANSI标准后,C++使应用程序可以轻松地在不同的机器之间迁移,缓解了在多个环境上运行的应用程序的维护问题。

  当然,还有其他问题需要考虑。如果程序是可以移植的,那么就不能把非标准库中的特性引入代码,还必须使程序对建立该程序所使用的开发机器的依赖性降到最低,否则迁移代码就很困难。

  C++的ANSI标准还有另一个优点:它对用C++编程所需要学习的部分进行了标准化。这个标准将使后续的程序具有一致性,因为它只为C++编译器和库提供了一个定义参考。在编写编译器时,该标准的存在也使编写人员不再需要许可。

  A类IP地址

  一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”.A类IP地址中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用于主机数达1600多万台的大型网络。

  B类IP地址

  一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码,剩下的两段号码为本地计算机的号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”.B类IP地址中网络的标识长度为14位,主机标识的长度为16位,B类网络地址适用于中等规模规模的网络,每个网络所能容纳的计算机数为6万多台。

  C类IP地址

  一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”.C类IP地址中网络的标识长度为21位,主机标识的长度为8位,C类网络地址数量较多,适用于小规模的局域网络,每个网络最多只能包含254台计算机。

  除了上面三种类型的IP地址外,还有几种特殊类型的IP地址,TCP/IP协议规定,凡IP地址中的第一个字节以“lll0”开始的地址都叫多点广播地址。因此,任何第一个字节大于223小于240的IP地址是多点广播地址;IP地址中的每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;IP地址中凡是以“llll0”的地址都留着将来作为特殊用途使用;IP地址中不能以十进制“127”作为开头,27.1.1.1用于回路测试,同时网络ID的第一个6位组也不能全置为“0”,全 “0”表示本地网络。

  IP的寻址规则

  1.网络寻址规则

  A、 网络地址必须唯一。

  B、 网络标识不能以数字127开头。在A类地址中,数字127保留给内部回送函数。

  C、 网络标识的第一个字节不能为255.数字255作为广播地址。

  D、 网络标识的第一个字节不能为“0”,“0”表示该地址是本地主机,不能传送。

  2.主机寻址规则

  A、主机标识在同一网络内必须是唯一的。

  B、主机标识的各个位不能都为“1”,如果所有位都为“1”,则该机地址是广播地址,而非主机的地址。

  C、主机标识的各个位不能都为“0”,如果各个位都为“0”,则表示“只有这个网络”,而这个网络上没有任何主机。

  IP地址的分类

  我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在 INTERNET上这个庞大的网间网中,每个网络也有自己的标识符。这与我们日常生活中的电话号码很相像,例如有一个电话号码为0515163,这个号码中的前四位表示该电话是属于哪个地区的,后面的数字表示该地区的某个电话号码。与上面的例子类似,我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应?IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。例如,盐城市信息网络中心的服务器的IP地址为210.73.140.2,对于该IP地址,我们可以把它分成网络标识和主机标识两部分,这样上述的IP地址就可以写成:

  网络标识:210.73.140.0

  主机标识: 2

  合起来写:210.73.140.2

  由于网络中包含的计算机有可能不一样多,有的网络可能含有较多的计算机,也有的网络包含较少的计算机,于是人们按照网络规模的大小,把32位地址信息设成三种定位的划分方式,这三种划分方法分别对应于A类、B类、C类IP地址。

  我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在 INTERNET上这个庞大的网间网中,每个网络也有自己的标识符。这与我们日常生活中的电话号码很相像,例如有一个电话号码为0515163,这个号码中的前四位表示该电话是属于哪个地区的,后面的数字表示该地区的某个电话号码。与上面的例子类似,我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应?IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。例如,盐城市信息网络中心的服务器的IP地址为210.73.140.2,对于该IP地址,我们可以把它分成网络标识和主机标识两部分,这样上述的IP地址就可以写成:

  网络标识:210.73.140.0

  主机标识: 2

  合起来写:210.73.140.2

  由于网络中包含的计算机有可能不一样多,有的网络可能含有较多的计算机,也有的网络包含较少的计算机,于是人们按照网络规模的大小,把32位地址信息设成三种定位的划分方式,这三种划分方法分别对应于A类、B类、C类IP地址。

 
 
真题园 (http://www.zhentiyuan.com) 最全的真题题库下载网站。

     分享到:
X
网站首页
投稿反馈
真题园网二维码