2024年6月12日发(作者:)

C/C++武穆遗书

技术篇 一.软件设计基本步骤[初稿]

一.软件设计基本步骤:

第一步:明确总体需求,你要做的是一个什么软件,用一句话表述之.

第二步:需求分析,需求捕捉,撰写需求文档,不断细化,确认需求.

第三步:总体设计.

A.

考虑哪些东西是独立与具体程序的.

这些东西尽量采用现成的高质量的支持库/模块.

B.

考虑哪些东西是你的程序要重点关注的,这些东西是你的程序

的真正价值所在,你再怎样重视这些东西都不过分.

第四步:详细设计.

确定各个模块及其交互接口,设计好模块之间的通信协议,调用关

系.

第五步:逐个模块实现,并做充分测试,在进行系统集成之前,每个模

自身的测试做得越充分,系统集成调试就越容易完成.

第六步:系统集成调试,然后提交内部测试,然后提交外部测试,

修改反馈回来的BUGs,确认无误后方可提交发布.

?哪些东西是独立于具体程序的?

1.算法

---------------------------------------------------------

对数据进行操纵的许多算法:排序算法,搜索算法,遍历算法.

这些基本算法也是独立于程序的,可以独立为算法支持库.

C++ STL中的算法是个很好的例子.

2.数据结构

---------------------------------------------------------

数据结构用来容纳各种各样的数据,这些容器也是与具体应用无关

的,

可以独立成库.C++ 中的STL是最好的例子.

!!!利用这些基础容器,你可以存储用于表示程序内部任何结构的信

息.

3.用户界面

---------------------------------------------------------

包括控制台界面和图形用户界面,这也是独立于每个程序的东

西.

对用户界面的支持也可以并且非常有必要独立为一组用户界面

支持库.

MFC,WTL,VCL,GTK,GTK+,wxwidgets,QT等都是GUI界面库的例

子.

!!!有了用户界面基础库,你可以在其基础上实现任意形式的界面.

通常,用户界面相关的处理可能占用50%以上的编程时间,因此,

尽量使用已有的更符合你的需求的界面模块,而不是从头开始

用基础界面库自己构造全部界面.

4.数据库访问.

有相应的数据库访问支持库.各种支持库提供的接口封装程度各不

相同,

有C函数的,有C++类的,有COM接口的,有.NET接口的...

5.网络通信.

----------------------------------------------------------

同样有独立于具体程序的支持库.

各种支持库提供的接口封装程度各不相同,

有C SOCKET API的,有C++ SOCKET封装类的,还有更高级的网络通

信框架

如ACE的.

6.字符串处理.

--------------------------------------------------------

每个程序几乎都需要处理字符串,所以字符串处理可以单独

做成一个独立的库:

*在C中是char* 类型和一组操纵char*类型的函数.

*在C++中是一个字符串类string,CString等.

*正则表达式库则是专门用来进行字符串匹配的.

从编译器构造到诸如email地址检查,都可以用它来处理.

!!!提供一个字符串基础库,可以进行几乎任意的字符串处理.

7.文件读写.

---------------------------------------------------------

file IO也是独立于程序的.如INI,XML,BMP,JPG等文件处理.

!!!提供一个文件IO基础库,可以对任意文件进行处理.

8.程序运行日志logging.

---------------------------------------------------------

logging也是可以提升为独立模块的,进一步可以演变为log框

架.

!!!提供一个log基础模块,几乎可以对任意信息进行log.

log4cplus,log4cpp是比较好的log框架.

9.操作系统服务的使用.

---------------------------------------------------------

如系统注册表,线程支持,进程支持,系统shell访问等,也都是

独立

于各个具体应用程序的.

!!!有了这些系统服务支持,你几乎可以与操作系统进行各种各样的

交互.

?哪些东西是你的程序的核心?

你的程序要处理的业务,该业务的处理流程和逻辑是你的程序的核

心.

你需要为你的业务核心设计相关的数据结构,辅助数据结构,辅助功

能类.

可以采用自顶向下的设计,也可以采用自底向上的设计,甚至双向收

缩的

设计方式;如果你想要用面向对象的方式OOA,OOD的手段:CRC

卡,UML建模

必不可少.做到纯面向接口是绝大多数应用程序的进化终点(企业级

应用

除外,企业级应用还有AOP,SOA).