软件开发技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11.2.2 代码复用
• 面向接口的编程
• 对象的组合
• 分离可变和不可变
• 减少方法的长度和参数个数 • 抽象类
11.2.3 高质量的代码
1.语法的标准化 头文件 空行与空格 对齐 注释 类的版式 命名规则 类型的一致性 2.写好循环语句
写法1: for(out=1;out<=10000;out++) for(in=1;in<=10;in++) … 写法2: for(out=1;out<=10;out++) for(in=1;in<=10000;in++)
11
软件开发技术
11.1 软件开发概述
软件的开发包括可行性分析、需求分析、系统 设计、程序设计、测试、维护等过程。软件生命周 期包括计划、开发和运行三个时期。程序设计只是 其中一个编码的环节,而软件的开发是一个系统工 程,需要经历更加复杂的过程。 需求分析需要搞清楚用户需要用软件解决什么 问题,包括这些问题的特点、特征以及完备性检测 和一致性检测等等。软件设计就是要把这些需求转 化为具体的实现。软件设计的过程包括系统结构设 计、数据设计、界面设计和过程设计。
11.2 软件开发技术
11.2.1 程序设计方法
面向过程的程序设计方法采用自顶向下的设计方法,把代 码分为顺序结构、分支结构和循环结构三种基本结构,简单 易用,是传统的程序设计方法。当软件规模不断扩大时,这 种方法会暴露出不易维护和代码重用差的缺点,为了解决这 些问题,提高程序设计的效率和质量,人们提出了面向对象 的概念和方法。 面向对象程序设计方法采用“面向对象”的概念来指导程 序设计,以对象为中心,以类、继承、多态等为机制,符合 客观世界的认识规律,既充分利用了对象之间的相似性,又 能表现他们之间的不同。
11.2.5 STL
STL(Standard Template Library)标准模板库。为了实现更高程度的 软件代码复用,使得代码适应更多的数据类型,通用类型程序的概念因 此而建立起 来 。这种通 用类型程序 设计又叫范 型程序设计 ( generic programming),其目的就是标准化组件和软件复用。 STL是最新的C++标准函数库中的一个子集。
11.1 软件开发概述
软件完成后还需要进行测试和维护。软件测试的目 的是验证软件的正确性、可靠性和稳定性等。包括单元 测试、集成测试、确认测试和系统测试。测试的方法有 很多,如著名的黑盒和白盒测试方法等。 软件维护需要解决软件和实际应用之间的矛盾,通 过修改错误和完善功能等工作使得软件最大程度地接近 用户的需求,完成用户的任务。具体包括校正性维护、 适应性维护、完善性维护和预防性维护等。 具体的软件开发需要参考软件工程方面的理论和实 际软件开发项目等。
容器(container)、迭代器(iterator)、算法(algorithm)
迭代器提供了访问容器中对象的方法。例如,上面例子中 的i1。迭代器就如同一个指针。事实上,C++的指针也是一种迭 代器。但是,迭代器也可以是那些定义了operator*()以及其他 类似于指针的操作符地方法的类对象。 容器是一种数据结构,如vector、list和deques,以模板类 的方法提供。为了访问容器中的数据,可以使用由容器类输出 的迭代器。 算法是用来操作容器中的数据的模板函数。例如,STL用 sort()来对一个vector中的数据进行排序,用find()来搜索一个list 中的对象。函数本身与他们操作的数据的结构和类型无关,因 此他们可以在从简单数组到高度复杂容器的任何数据结构上使 用。
11.2.6 异常处理
为了使得处理异常的工作规范化,C++提供 了一种结构化的异常处理机制,即将异常的抛出 、检测和捕获处理和正常代码分离。这种机制可 以解决模块遇到错误逐级返回直到系统接收到异 常并进行处理。
3.类的封装性和开放性
11.2.4 软件的技术性与艺术性
软件的技术性和艺术性是相关联的,有时候也是矛盾的。 软件的技术性是以解决问题的确定性和效率高低来衡量 的。无论采取什么编码方式和程序设计技术,解决问题是第 一位的,其次是代码的质量、代码的容量等。容错性、可读 性等都属于技术性的范畴。技术是软件产品的生产力。 软件其实还有艺术性。我们经常比较各种软件产品,排 除技术性的层面来观察和分析这些产品会发现,良好的界面 和交互性是软件给与用户第一印象,也是非常重要的第一步 ,就像相同的事物不同的包装,给予观赏者可能完全不同的 理解和认识。 从软件应用的角度,技术性是内在的,艺术性是外观的 ,都是应用实体的组成部分。二者都需要程序员关注。
【例11.1】演示STL
#include <iostream> #include <vector> //STL容器库 #include <algorithm> using namespace std; int main() { vector <int> n; int a[10]; for(int i=0 ; i<10;i++) {cin >> a[i]; n.push_back(a[i]); } sort(n.begin(), n.end()); vector <int>::iterator i1; i1 = find(n.begin(),n.end(),a[3]); if(i1) n.insert(i1,999); for (i = 0; i < n.size(); i ++) cout << n[i] << ' '; cout <<endl; return 0; }
11.2.6 异常处理
C++的异常情况主要有两种:一种是语法错误,即程序 中出现了错误的语句,函数,结构和类,致使编译程序无法 进行。 另一种是运行时发生的错误,一般与算法有关。 语法错误在编写代码时就可以解决,C++编译查 找错误。 运行时的错误包括文件打开失败、数组下标溢出、系统 内存不足、除0等等。处理的方法很多,例如检测异常发生的 条件,例如文件指针是否为空等。这种方法使得程序正常处 理代码和异常处理代码混杂在一起,降低了程序的可读性。 而模块化的程序设计使得处理异常可能比较困难,很难选择 是否退出程序还是继续。
相关文档
最新文档