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).
分享到:
相关推荐
以下是关于状态机设计的基本步骤,以及一些相关的重要知识点: 1. **定义初始状态**:任何状态机都有一个起始点,这就是初始状态。它代表了系统开始运行时所处的状态。在设计过程中,首先要明确系统从哪个状态开始...
本文主要探讨了抗干扰设计的基本步骤和原则,以及针对不同类型的干扰所采取的措施。 首先,抗干扰设计包括四个基本步骤。第一步是识别干扰源,这涉及理解干扰的类型和来源,例如电源噪声、空间干扰(场干扰)和传导...
西门子V90伺服驱动器是工业自动化领域中常用的一种高性能伺服系统,适用于精确...V-ASSISTANT软件提供的强大功能使得这一过程变得简单易行,大大降低了调试难度,使得用户能够更专注于实现更复杂的控制系统设计和优化。
瀑布模型是一种线性模型,依次执行需求规格、系统和软件设计、实现和单元测试、集成和系统测试、操作和维护等活动。V模型是一种V形模型,强调测试和验证的重要性。演进模型是一种迭代模型,强调迭代和递增式开发。...
状态机设计是软件工程、硬件设计以及自动化领域中不可或缺的一部分,尤其在嵌入式系统、协议解析、控制逻辑和游戏编程等场景中...通过阅读《状态机设计基本步骤.pdf》这份文档,你可以进一步深入了解并实践这些步骤。
《软件设计步骤归纳》 软件设计是开发过程中至关重要的一环,它涉及到多个步骤和考虑因素。本篇将详细解析软件设计的关键步骤,并通过案例研究来深入理解这些步骤的实际应用。 首先,软件设计的第一步通常是对需求...
软件设计师考试试题及答案解析 软件设计师考试是业内人士的一项重要资格认证考试,旨在评估考生的软件设计能力和知识水平。2023年上半年软件设计师考试试题计答案是该考试的重要组成部分,本文将对考试试题的答案...
1. 软件设计原理:软件设计原理是软件设计的基础,包括软件设计的基本概念、软件设计的历史发展、软件设计的分类等。 2. 软件设计方法:软件设计方法是软件设计的核心,包括软件设计的方法、软件设计的步骤、软件...
这份"软件详细设计文档模板(最全面).zip"包含了完成这一任务所需的全面资源,特别是其中的"软件详细设计文档模板(最全面).docx"文件,它将帮助我们深入理解如何构建高质量的详细设计文档。 详细设计文档的主要目标...
为了更好地掌握这些工具,建议用户参考《第2章 电子系统设计软件的基本使用.ppt》进行深入学习。这份资料可能包含了详细的步骤教程,从软件安装到具体操作,帮助用户逐步熟悉并掌握这三款软件的使用。通过实践和不断...
### LATTICE设计软件使用...通过以上详细步骤的学习,初学者可以全面掌握LATTICE设计软件的基本操作流程,包括工具安装、工程创建、软件编译、软件仿真及固件烧录等各个环节,为后续更复杂的设计项目奠定坚实的基础。
而对于个人项目而言,虽然可以简化某些步骤,但仍需遵循基本的开发流程,这样才能确保最终产出高质量的软件产品。同时,正如描述中提到的那样,“建议你要好好学习,打好基础”,只有扎实的基础知识才能支持开发者在...
软件详细设计是软件开发过程中的一个重要步骤,它涉及到对软件系统的架构、组件、接口、数据模型、算法等方面的详细设计。在这个例子中,我们将通过详细设计说明书来了解软件详细设计的过程和要素。 首先,从标题和...
以上四个步骤构成了电子电路设计的基本流程,每个步骤都至关重要,它们之间环环相扣,共同确保电路设计的成功。设计师在实际操作中还需要不断调整和完善,以应对可能出现的问题和挑战。同时,随着技术的发展,现代...
系统分析基础知识是软件设计师考试大纲的重要组成部分,包括系统分析的主要步骤、结构化分析方法等知识点。 系统设计基础知识是软件设计师考试大纲的重要组成部分,包括概要设计与详细设计的基本任务、系统设计的...
"掌握数据库设计的基本步骤和方法" 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,...
CAM(Computer-Aided Manufacturing)是电子制造中的一个重要环节,它涉及到PCB(Printed Circuit Board)...通过CAM软件,设计师可以将复杂的电路设计转化为精确的制造指令,确保PCB板的制造符合设计意图和工艺标准。