软件工程结构化分析是怎样的?
需求分析是发现、求精、建模、规格说明和复审的过程。
为了发现用户的真正需求,首先应该从宏观角度调查、分析用户所面临的问题,也就是说,需求分析的第一步是尽可能准确地了解用户当前的情况和需要解决的问题。
例如,仅仅知道“用户需要一个计算机辅助设计系统,因为他们的手工设计系统很糟糕”是远远不够的。
除非开发人员准确地知道目前使用的手工系统什么地方很糟糕,否则新开发出的计算机辅助设计系统很可能也同样糟糕。
类似地,如果一个个人计算机制造商打算开发一个新的操作系统,他首先应该做的工作就是评价目前使用的操作系统并准确地分析它不能令人满意的原因。
只有开发人员对用户面临的问题有了清楚的了解之后,才能正确地回答出“什么是新产品必须做到的”这个关键问题。
如果软件是新开发的计算机系统的一个组成部分,则系统工程师所确定的软件职责范围,可以作为软件需求分析的出发点。
分析员对用户提出的初步要求应该反复求精多次细化,才能充分理解用户的需求,得出对目标系统的完整、准确和具体的要求。
为了更好地理解问题,人们常常采用建立模型的方法。
所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。
通常,模型由一组图形符号和组织这些符号的规则组成。
在技术层次上,软件工程是从一系列建模活动开始的,这些建模活动导致对要求开发的软件的完整的需求规格说明和全面的设计表示。
结构化分析就是一种建立模型的活动,通常建立数据模型、功能模型和行为模型等三种模型。
除了用分析模型表示软件需求之外,还要写出准确的软件需求规格说明。
模型既是软件没计的基础,也是编写软件规格说明的基础。
在分析软件需求和编写软件规格说明的过程中,软件开发者和软件用户都起着关键的、必不可少的作用。
只有用户才真正知道他们需要什么,用户必须尽量把他们对软件功能和性能的模糊需求准确、具体地描述出来,而开发者则是软件需求的询问者、顾问和实现者。
表面看来,需求分析和规格说明好像是比较简单的工作,实际上完全相反,这是一项相当艰巨复杂的工作。
用户与开发者之间需要通信、沟通的内容非常多,在双方交流信息的过程中很容易出现误解或遗漏,也可能存在二义性。
因此,不仅在整个需求分析过程中应该采用行之有效的通信技术,集中精力过细工作,而且对需求分析的结果(分析模型和规格说明)必须严格审查。
尽管目前存在许多不同的结构化分析方法,但是,所有这些分析方法都遵守下述准则 必须理解和表示问题的信息域,根据这条准则应该建立数据模型。
必须定义软件应完成的功能,这条准则要求建立功能模型。
必须表示作为外部事件结果的软件行为,这条准则要求建立行为模型。
软件复杂度的复杂度的种类
有模块、类和程序三类复杂度。
模块复杂度包含了关于模块的复杂度信息;类复杂度是针对那些使用McCabe面向对象特性的程序,它包含了关于类的复杂度信息;程序复杂度包含了关于程序的复杂度信息。
集成复杂度报告 对应于三种复杂度的是三种复杂度报告。
如果一个报告的复杂度信息不只一种,那么就把这些复杂度信息组合成新的报告。
集成复杂度信息只收集一个部件及其下级的信息。
例如:如果一个程序级报告包含一个类复杂度,那么只报告组成程序的类的信息,而不包含类组成的信息。
McCabe复杂度是对软件结构进行严格的算术分析得来的,实质上是对程序拓扑结构复杂性的度量,明确指出了任务复杂部分。
McCabe复杂度包括:圈复杂度、基本复杂度、模块设计复杂度、设计复杂度、集成复杂度、行数、规范化复杂度、全局数据复杂度、局部数据复杂度、病态数据复杂度。
McCabe复杂度的用途 在软件工程中,有三种使用McCabe复杂性度量的方式。
作为测试的辅助工具。
McCabe复杂性度量的结果等于通过一个子程序的路径数,因而需要设计同样多的测试案例以覆盖所有的路径。
如果测试案例数小于复杂性数,则有三种情况一是需要更多的测试;二是某些判断点可以去掉;三是某些判断点可用插入式代码替换。
作为程序设计和管理指南。
在软件开发中,需要一种简单的方式指出可能出问题的子程序。
保持子程序简单的通用方法是设置一个长度限制,例如50行或2页,但这实际上是在缺乏测试简明性的有效方法时无可奈何的替代方法。
不少人认为McCabe度量就是这样一种简明性度量。
但是要注意,McCabe度量数大的程序,不见得结构化就不好。
例如,Case语句是良结构的,但可能有很大的McCabe度量数(依赖于语句中的分支数),这可能是由于问题和解决方案所固有的复杂性所决定的。
使用者应当自己决定如何使用McCabe度量所提供的信息。
作为网络复杂性度量的一种方法。
Hall和Preiser提出了一种组合网络复杂性度量,用于度量可能由多个程序员组按模块化原理建立的大型软件系统的复杂性。
他们提出的组合度量公式为 式中 C1,...,Ck是各个模块的复杂性;CN是网络复杂性;W1和W2为权值。
McCabe复杂度即可用于度量各个模块的复杂性,也可用于度量网络复杂性。
圈复杂度是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,经验表明,程序的可能错误和高的圈复杂度有着很大关系。
独立路径组成的集合称为基本路径集合,独立路径数就是指基本路径集合中路径的数量。
基本路径集合不是唯一的,独立路径数也就不唯一。
因此,圈复杂度是最大独立路径数。
计算方法 节点是程序中代码的最小单元,边代表节点间的程序流。
如果一个模块流程图有e条边n个节点,它的圈复杂度V(G)=e-n+2,典型的V(G)max=10。
图1中示例的圈复杂度是2。
优点 避免软件中的错误倾向;指出极复杂模块,这样的模块也许可以进一步细化;度量测试计划,确定测试重点;在开发过程中通过限制程序逻辑,指导测试过程;指出将要测试的区域;帮助测试人员确定测试和维护对象;与所用的高级程序设计语言类型无关。
应用 圈复杂度指出为了确保软件质量应该检测的最少基本路径的数目。
在实际中,测试每一条路经是不现实的,测试难度随着路径的增加而增加。
但测试基本路径对衡量代码复杂度的合理性是很必要的。
McCabe & Associates建议圈复杂度到10,因为高的圈复杂度使测试变得更加复杂而且增大了软件错误产生的概率。
提示:圈复杂度度量是测量在一个软件模块中的分支数目,在所有的开发周期中都要使用。
圈复杂度度量以软件的结构流程图为基础。
控制流程图描述了软件模块的逻辑结构。
一个模块在典型的语言中是一个函数或子程序,有一个入口和一个出口,也可以通过调用/返回机制设计模块。
软件模块的每个执行路径,都有与从模块的控制流程图中的入口到出口的节点相符合的路径。
“Cyclomatic”来源于非直接连接基本测试周期的数目,更重要的是,也通过直接相连的图表给出独立路径的数目。
通过图表的相关性,一个节点可到达另一个节点。
圈复杂度度量也可作为模块基本流程图路径的数目,其重点在于模块线形组合后,所产生的路径数目是最小的。
对圈复杂度的限制 现在有许多好方法可以用来限制圈复杂度。
过于复杂的模块容易出错,难于理解、测试、更正,所以应当在软件开发的各个阶段有意识地限制复杂度,许多开发者已经成功地实现把对软件复杂度的限制作为软件项目的一部分,尽管在确切的数目上略微有些争议。
最初支持的数目是10,现在支持数目可达15。
但是,只应当在条件较好的情况下使数目大于10,例如开发者非常有经验,设计合乎正式标准,使用现代化的程序语言、结构程序、代码预排和先进的测试计划。
换句话说,开发团队可以选择超过10的限制数目,但是必须根据经验进行一些取舍,把精力花在比较复杂的模块上。
基本复杂度是用来衡量程序非结构化程度的,非结构成分降低了程序...
结构化程序具体是怎样实施的?
结构化开发方法是由E.Youdon 和 L.L.Constantine 提出的,即所谓的SASD 方法, 也可称为面向功能的软件开发方法或面向数据流的软件开发方法。
Youdon方法是80年代使用最广泛的软件开发方法。
它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。
它给出了两类典型的软件结构(变换型和事务型)使软件开发的成功率大大提高。
结构化面试试题的类型有哪些呢?
结构化程序设计方法主要由以下三种逻辑结构组成:1)顺序结构:顺序结构是一种线性、有序的结构,它依次执行各语句模块。
2)循环结构:循环结构是重复执行一个或几个模块,直到满足某一条件为止。
3)选择结构:选择结构是根据条件成立与否选择程序执行的通路。
采用结构化程序设计方法,程序结构清晰,易于阅读、测试、排错和修改。
由于每个模块执行单一功能,模块间联系较少,使程序编制比过去更简单,程序更可靠,而且增加了可维护性,每个模块可以独立编制、测试。
...
计算机软件及应用
三级考试大纲(网络技术) 基本要求 1、具有计算机软件及应用的基本知识。
2、掌握操作系统的基本知识。
3、掌握计算机网络的基本概念与基本工作原理。
4、掌握Internet的基本应用知识。
5、掌握组网、网络管理与网络安全等计算机网络应用的基本知识。
6、了解网络技术的发展。
7、掌握计算机操作并具有C语言编程(含上相调试)的能力。
考试内容 一、基本知识 1、计算机系统组成。
2、计算机软件的基础知识。
3、多媒体的基本概念。
4、计算机应用领域。
二、操作系统 1、操作系统的基础概念、主要功能和分类。
2、进程、线程、进程间通信的基本概念。
3、存储管理、文件管理、设备管理的主要技术。
4、典型操作系统的使用。
三、计算机网络基本概念 1、计算机网络的定义与分类。
2、数据通信技术基础。
3、网络体系结构与协议的基本概念。
4、广域网、局域网与城域网的分类、特点与典型系列。
5、网络互连技术与互连设备。
四、局域网应用技术 1、局域网分类与基本工作原理。
2、高速局域网。
3、局域网组网方法。
4、网络操作系统。
5、结构化布线技术。
五、Internet基础 1、Internet的基本结构与主要服务。
2、Internet通信协议——ICP/IP。
3、Internet接入方法。
4、超文本、超媒体与Web浏览器。
六、网络安全技术 1、信息安全的基本概念。
2、网络管理的基本概念。
3、网络安全策略。
4、加密与认证技术。
5、防火墙技术的基本概念。
七、网络应用:电子商务 1、电子商务基本概念与系统结构。
2、电子商务应用中的关键技术。
3、浏览器、电子邮件及Web服务器的安全特性。
4、Web站点内容的策划与推广。
5、使用Internet进行网上购物。
八、网络技术发展 1、网络应用技术的发展。
2、宽带网络技术。
3、网络新技术。
九、上机操作 1、掌握计算机基本操作。
2、熟练掌握C语言程序设计基本技术、编程和调试。
3、掌握与考试内容相关的上机应用 考试方式 一、笔试:120分钟 二、上机考试:60分钟 其他 三级考试大纲(PC技术) 基本要求 1、具有计算机及其应用的基础知识。
2、熟悉80X86微处理器的结构、原理及其宏汇编语言程序设计。
3、掌握个人计算机的工作原理及逻辑组成和物理结构。
4、掌握Windows操作系统的主要功能、原理、配置及其维护管理。
5、熟悉个人计算机常用外部设备的性能、原理及结构。
考试内容 一、计算机应用的基础知识 1、计算机技术的发展,计算机信息处理的特点,计算机分类,PC机的组成与性能评测。
2、数值信息在计算机内的表:整数的表示和运算,实数(浮点数)的表示和运算。
3、文字信息与文本在计算机内的表示:西文字符的编码,汉字的输入码、国标码、机内码,汉字的输出,通用编码字符集与Unicode。
4、多媒体技术基础:数字声音的类型,波形声音与合成声音,图像、图形的特点与区别,图像、图形和视频信息在计算机内的表示。
5、计算机网络的基础知识:计算机网络的功能、分类和组成。
数据通信的基本原则,网络体系结构与TCP/IP协议,因特网与IP地址,计算机局域网初步。
二、微处理器与汇编语言程序设计 1、微处理器的一般结构:寄存器组,存储器管理,总线时序,工作模式及典型系统配置。
2、Pentium微处理器的功能与结构:内部结构及工作原理,寄存器组,工作模式及存储器管理,中断管理,总路时序。
3、80X86系列微处理器指令系统:指令格式与编码,寻址方式,指令系统。
4、80X86宏汇编语言的程序设计:顺序、分支及循环程序设计,子程序设计、ROMBIOS中断调用和DOS系统功能调用。
三、PC机组成原理与接口技术 1、PC机的逻辑组成与物理结构:主板与芯片组,超组I/O芯片,主板BIOS等。
2、系统叫线的功能与工作原理,ISA总线和PCI局部总线。
3、主存储器的组成与工作原理:ROM和RAM,内存条与主存储器工作原理,Cache存诸器。
4、输入输出控制:I/O寻址方式与I/O端口地址,程序控制I/O方式,中断控制I/O方式,DMAI/O控制方式。
5、外设接口:串行接口,并行接口,SCSI接口,USB和IEEE-1394。
四、Windows操作系统的功能与原理 1、操作系统的功能,类型和Windows98的体系结构,WindowsAPI与DLL的基本概念。
2、Windows的处理机管理:Windows虚拟机,Windows虚拟机管理程序,Windows的进程调度技术。
3、Windows的存储管理:Windows的内存结构与管理,Windows的虚拟内存。
4、Windows的文件管理:Windows的文件系统结构,磁盘的存储结构,FAT16和FAT32。
5、Windows的设备管理:虚拟设备驱动程序,通过驱动程度与小型驱动程序,即插即用与配置管理,电源管理,打印子系统等。
6、Windows的网络通信功能:Windows的网络组件,程序网络与通信,分布式组件对象模型DCOM,Windows中的Internet组件。
7、Windows的多媒体功能:Windows对多媒体文件与设备的支持,Windows的多媒体组件,Windows的媒体播放器。
8、Windows的配置、管理与维护:安装与启动,注册表,系统配置与管理,系统性能监视和优化,故障诊断。
9、PC机的安全与病毒防范:计算机安全的一般概念,...
软件测试师
女孩子做软件软件测试的还是比较多.这个行业可以让女人工作没那么累.要想学软件测试 可以在网上找一些书看看. 软件测试教程. 软件测试技术.在看点文档.和一些测试模板.在下载些简单的工具.去找工作估计没什么问题了.QTP, silktest 或是 lr 都可以. www.rjzl.gov.cn 照大纲复习了.上网找一些最新资料 一、考试说明 1.考试要求: (1) 掌握数据表示、算术和逻辑运算; (2) 掌握相关的应用数学、离散数学的基础知识; (3) 掌握计算机体系结构以及各主要部件的性能和基本工作原理; (4) 掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识; (5) 熟练掌握常用数据结构和常用算法; (6) 熟悉数据库、网络和多媒体的基础知识; (7) 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中的一种程序设计语言; (8) 熟悉软件工程、软件过程改进和软件开发项目管理的基础知识; (9) 熟悉掌握软件设计的方法和技术; (10) 掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识; (11) 了解信息化、计算机应用的基础知识; (12) 正确阅读和理解计算机领域的英文资料。
2.通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程的实际工作能力和业务水平。
3.本考试设置的科目包括: (1) 计算机与软件工程知识,考试时间为150分钟,笔试; (2) 软件设计,考试时间为150分钟,笔试。
二、考试范围 考试科目1:计算机与软件工程知识 1.计算机科学基础 1.1 数制及其转换 · 二进制、十进制和十六进制等常用制数制及其相互转换 1.2 数据的表示 · 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出) · 非数值表示(字符和汉字表示、声音表示、图像表示) · 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码) 1.3 算术运算和逻辑运算 · 计算机中的二进制数运算方法 · 逻辑代数的基本运算和逻辑表达式的化简 1.4 数学基础知识 · 命题逻辑、谓词逻辑、形式逻辑的基础知识 · 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分) · 排列组合、概率论应用、应用统计(数据的统计分析) · 运算基本方法(预测与决策、线性规划、网络图、模拟) 1.5 常用数据结构 · 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作 · Hash(存储地址计算,冲突处理) 1.6 常用算法 · 排序算法、查找算法、数值计算方法、字符串处理方法、数据压缩算法、递归算法、图的相关算法 · 算法与数据结构的关系、算法效率、算法设计、算法描述(流程图、伪代码、决策表)、算法的复杂性 2.计算机系统知识 2.1 硬件知识 2.1.1 计算机系统的组成、体系结构分类及特性 · CPU和存储器的组成、性能和基本工作原理 · 常用I/O设备、通信设备的性能,以及基本工作原理 · I/O接口的功能、类型和特性 · I/O控制方式(中断系统、DMA、I/O处理机方式) · CISC/RISC,流水线操作,多处理机,并行处理 2.1.2 存储系统 · 主存-Cache存储系统的工作原理 · 虚拟存储器基本工作原理,多级存储体系的性能价格 · RAID类型和特性 2.1.3 安全性、可靠性与系统性能评测基础知识 · 诊断与容错 · 系统可靠性分析评价 · 计算机系统性能评测方式 2.2 软件知识 2.2.1 操作系统知识 · 操作系统的内核(中断控制)、进程、线程概念 · 处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁) · 存储管理(主存保护、动态连接分配、分段、分页、虚存) · 设备管理(I/O控制、假脱机) · 文件管理(文件目录、文件组织、存取方法、存取控制、恢复处理) · 作业管理(作业调度、作业控制语言(JCL)、多道程序设计) · 汉字处理,多媒体处理,人机界面 · 网络操作系统和嵌入式操作系统基础知识 · 操作系统的配置 2.2.2 程序设计语言和语言处理程序的知识 · 汇编、编译、解释系统的基础知识和基本工作原理 · 程序设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用 · 各类程序设计语言主要特点和适用情况 2.3 计算机网络知识 · 网络体系结构(网络拓扑、OSI/RM、基本的网络协议) · 传输介质、传输技术、传输方法、传输控制 · 常用网络设备和各类通信设备 · Client/Server结构、Browser/Server结构 · LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接 · 因特网基础知识以及应用 · 网络软件 · 网络管理 · 网络性能分析 2.4 数据库知识 · 数据库管理系统的功能和特征 · 数据库模型(概念模式、外模式、内模式) · 数据模型,ER图,第一范式、第二范式、第三范式 · 数据操作(集合运算和关系运算) · 数据库语言(SQL) · 数据库的控制功能(并发控制、恢复、安全性、完整性) ...