软件系统设计的思路

最近有学弟问我,拿到一个软件需求,可是殊不知道怎么才能更好地架构好整个系统,在此,我简单地根据个人经验介绍一下我是怎么设计一个软件系统的吧。固然,这只是个人一个简单的思路而已,真正涉及到一个大的软件项目,可能还要复杂不少不少。linux

 

要设计一个面向对象的系统,建议遵循以下思路:  c++

 

1. 调研,完成一份详细的需求文档编程

 

(1)系统要实现什么功能架构

(2)性能上有什么特别的要求编程语言

(3)哪些是技术难点,能够的话对技术难点首先测试攻关函数

 

2. 肯定系统的运行环境性能

 

(1)系统运行的操做系统:widows,linux,unix等测试

(2)使用何种编程语言:c/c++,java,C# 等优化

(3)使用何种界面交互环境:console,MFC,WTL等等

(4) 须要使用哪些第三方库:如 openCV,STL,Boost等

 

3. 划分系统模块,设计整体框图

   

(1)整个系统从大的方向来划分的话,能够分为哪几个模块,每一个模块又能够继续划分为哪几个小模块。

(2)每一个模块的提供的功能是什么

(3)模块之间怎么交互

 

4. 分析模块的需求,抽象出实现模块功能的各个类

 

(1)本模块能够设计哪些类,哪些类是做为本模块对外的接口?

(2)模块内部的类之间怎么交互?模块间的类之间怎么交互?

(3)类的设计时,须要考虑是否能够经过继承、组合等方式简化设计

(4)画出简单的UML设计图

 

5. 设计每一个类的属性和方法

    

(1)每一个类有哪些成员变量?提供哪些功能函数?

(2)哪些功能经过继承获取,哪些功能须要用到重载,哪些功能须要利用多态?     

(3)完成类的头文件的定义

 

6. 实现每一个类的功能及集成测试

    

(1) 编码实现每一个类的功能

(2) 根据前面的设计,完成类之间的交互代码,实现系统所须要的功能

(3)集成和测试,优化代码,修改bug

转载于:https://my.oschina.net/dawd/blog/1840116