软件开发流程

系统工程,软件工程,UML建模,项目管理主旨的抽象于软件开发流程内。软件开发的方法集合。

一、需求分析

1.总体需求分析

2.各部分需求分析

概念模型:

系统抽象的最终目的:

5w2h:why ,人物,(时间,地点),事件,方法(how much)

用例图:从用户角度描述功能并制定各子系统的操作者

1.划分系统子系统或者包图

2.指定各子系统实现的操作者

3组成:

用例、事件流、异常流、前置条件、后置条件

系统的原理,性能,结构,了解并掌握(绘制结构框架图)

1).明确大概事件流:大概的逻辑模型。.分类系统功能模块或者包图

2.)指定各功能模块实现的操作者

二、概要设计

1.面向对象

1)面向对象方法:

静态图:

类图:(类之间的联系:关联,依赖,聚合。类的内部结构:类的属性和操作。在系统的整个生命周期都有效)

对象图:(是类图的实例,不同于类的地方在于对象图显示类的多个对象实例而不是实际的类,对象有生命周期,只能在系统某一时间段存在)

包图:(由包或类组成,表示包与包之间的关系,用于描述系统的分层结构)

模块的4m1e的设计

模块的4m1e的5w1h的统计

2)明确事件流:大概的逻辑模型

3)明确时序图流程:

组织及其清单

组织:部门,组织团队,组织活动

活动清单:时序图(逻辑模型)

三、

行为图:物理模型:(行为实现)描述系统的动态模型和组成对象间的关系

活动图:描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并进 行活动,对系统的功能建模特别重要,强调对象间的控制流程。

状态图:有多个状态,其行为受外界环境影响,并发生改变的类画状态图    m与h

描述类的对象所有可能的状态及时间发生时状态的转移条件。使用上不需为所有类画状态图,仅为那些有多个状态,其行为受外界环境影响并发生改变的类画状态图

交互图:(时序图)描述对象间的交互关系

顺序图:(强调时间和顺序)

合作图:强调上下级关系

 

实现图:

构件图(组件图) 描述代码部件的物理结构及各部件之间的依赖关系。可能是 一个资源代码部件,二进制部件或可执行部件,包含逻辑类或实现类的 有关信息。展现了一组组件的物理结构和组件之间的依赖关系。部件图有 助于分析和理解组件之间的相互影响程度。

配置图:定义系统中软硬件的物理体系结构展现了运行处理节点以及其中的组 件的配置。部署图给出了系统的体系结构和静态实施视图。它与组件图相关,通常 一个节点包含一个或多个构建。

首先:描述需求

其次:根据需求建立系统 的静态模型,来构造系统的结构

再次:描述系统的行为

静态建模机制:1,2所建立的模型都是静态的,包括用例图,类图,兑现图,包图,组件图,配置图

动态建模机制:3.所建立的模型或者可执行时的时序状态或交互关系包括状态图,活动图,时序图(顺序图和合作图。)

系统:设备,测量,材料,人,环境       方法

万物皆对象始终逃不出系统的范围

业务流程即方法

业务需求分析始终逃不出5w2h的范围

业务需求分析始终逃不出5w2h的范围

程序优化分析始终逃不出ECRSI,PDCA的范围

用户界面层   业务逻辑层    数据访问层


一、软件项目开发流程

1.需求分析

目的:按照软件工程的要求,复述用户的需求,得到用户的认可。

先做需求分析。招标前需求分析。能不能中标很大一部分取决于需求分析。

业务规格书: 

分类与方法:

需求分析->技术语言、归纳和整理(抽象出来)、

面向业务人员,用户化的需求文档。收集分析用户的需求

面向设计人员,专业化的需求文档。有逻辑性的需求分析

《需求规则说明书》

1)总体需求    

 

2)各部分需求

3)组成

用例、事件流、异常流、前置条件、后置条件

用例:能达到什么效果,5w2h。完成这些功能的操作者.概念模型

明确大概事件流:怎样一步一步的达到效果。横向的(不包括纵向的)。设计阶段确定发生的。必定会发生的。逻辑模型

异常流:设计阶段不能确定的。有可能会发生的。逻辑模型

前置条件:条件

后置条件:产品

分析阶段不考虑和具体设计有关的内容。不考虑如何实现。

简单的演示程序(demo):在招标中的作用至关重要。

看不同的人,做出不同专业的演示程序。但是结果都是把用户的业务需求搞清楚。

2.概要设计

面向过程的主框架:事件流。关注细节

面向对象的主框架:对象的过程。

1)总体框架:

 

2)技术路线:(采用什么体系架构,采用什么样的基础产品:采用什么数据库。访问数据库采用什么方式,使用分布式的还是集成式系统?用什么语言来开发,工作在什么操作系统上。用不用什么中间键)。

访问量是多少,并发线程是多少。

2.1)体系架构 c/s,b/s,两层,三层。MVC

2.2)平台约束

2.3)绘制结构框架图  -模块

结构框架:分成什么大的模块。模块是干吗的。通过什么来交换数据。

写大的模块,大的框架。

做完模块开发时,基本上就做好了开发计划。

2.4)逻辑模型 (接口,接口实现,业务逻辑对象)

用户界面(接口,实现),业务逻辑(接口,实现),数据访问(接口,实现),业务逻辑对象()

《概要设计说明书》  一般是架构师来做。

3)面向对象:

面向对象方法:

面向对象设计的首要任务就是找对象;然后描述对象的属性的改变,状态的改变(描述如何实现)。

明确事件流:大概的逻辑模型

描述事件流:依据时间的描述、依据数据的描述、两者并重

读取(行为)->文件(属性),形成->记录

事件->数据,事件->数据

主谓宾要齐全

理论:根据需求事件流中的名词和动词找对象。

需求和设计师是相关的。设计类的名字多数都是名词。设计函数都是动词或者动词组成的词组。名词,形容词设置成员变量。

成员变量来自某些前置条件。成员函数来自事件流的某一个环节

实践:

根据需求事件流中的事件找对象,事件由对象触发,责任分配,关注行为,接口驱动

根据需求事件流中的数据找对象,关注属性,模型驱动。

根据需求异常流中的事件找对象,关注异常,异常驱动。先设置异常,面向异常,先考虑异常的情况,然后再考虑正确的情况。

根据这三者结合找备选对象。

明确时序图流程

需要哪些具体的功能和处理哪些具体的信息,这就达到了事件流的细化阶段。

通过时序图验证对象能否实现事件流。

用对象验证执行流程。

用执行流程验证对象。

开发时间:预定的时间+预定的时间*20%

3.详细设计

1)根据对象抽象类,形成类图

2)对类分配责任,即主要成员函数。细节问题,行为

3)通过时序图验证类的成员函数能否实现事件流

4)对类设计成员变量,成员变量来自前置条件,后置条件,方法中的临时变量。

5)对类分析设计成员函数的返回值、参数、函数名、访控属性(公有私有保护)

6)设计成员函数的过程:流程(活动图/状态图),异常

活动图状态图

7)其他细节:构造函数,析构函数,拷贝构造函数,操作符重载

8)通过继承和多态引入抽象。优化。降低模块之间的耦合。

9)套用设计模式。不要为了设计模式而用设计模式。很容易弄巧成拙。

会形成一份详细的设计文档。文档要尽可能详细。会发送给代码编写人员和测试人员。

功能性详细描述、类型、函数、各种条件、流程设计、关键算法、关键库的接口(提供哪些接口,这些接口是干吗的,怎么调用这些库)。

《详细设计说明书》

不要做蓝领。不要做codeing。

4.编写代码/设计用例

编写程序代码:

基本测试:(使用main函数调用一下函数实现,定义函数,定义类的。函数级别的),

单元测试:(模块级别的。写一个测试的简单的测试代码服务器端,。为了测试我们写的客户端代码。仅仅为了测试客户端写一个简单的服务端。仅仅为测试客户端只是写几个简单的函数,写死一个响应包。写一个模拟逻辑)

集成测试:(所有模块都做完了,做集成测试。在开发中把环境搭建起来。几个模块都写好了:文件访问,数据库访问。网络。界面。UI)。

只有在研发这边测不出什么明显bug时,才有可能提交给测试部门。

测试部门:考虑的是具体的功能和需求

5.测试验证/修改错误

测试用例:

白测试:语句级测试。

黑测试:

工具:测试用脚本,有测试用例。有测试软件。

测试方向:功能测试、性能测试、压力测试、健壮性测试,稳定性测试(烤机,连续运行一个月)。

《测试报告》

bug管理系统。

回归测试。

把所有的测试报告改到95%以上。再发布

如果能确定前面不出错,那么就能缩小确定出错的范围

6.产品发布/工程实施

发布:打包、必要的文档、工程实施、售后服务、技术支持。

技术支持:三层

第一层:网线什么的,安装,卸载等

第二层:数据库异常等

第三层:研发层的

7.项目总结:

瀑布式开发。

迭代开发,只能少量迭代而不能全部迭代,回到过去

SQA部:质量管理。

国内开发一般拼体力。往项目管理方面走:需要了解项目流程。

代码的高效性,健壮性,稳定性,安全性,

文件外部编写代码及其他:

基础设施及辅助工具

配置文件(辅助工具文件)

文件组织:

1.代码文件命名

1)(根据业务系统分).h  .cpp 文件名(声明,定义)类

2.)基础设施及辅助工具(main()函数,(声明,定义)全局变量,(声明,定义)辅助工具函数)

2.脚本文件makefle

makefile文件编写:

#! bin/bash #!告诉编译器用bash解释器来解释。

-I. 包含头文件

#用来解释

if cp $1 $2 > /dev/null表示第一个路径,$2表示第二个路径,将$1复制到$2,有多余的输出,就输出到空设备.if判断一个命令的返回值,fi表示结束

cat  /dev/null > $1  将$1清空

exit 0 让脚本的进程返回码为0;

开发计划:

实现。编写代码/设计用例Debug

实现过程

测试验证,修改错误

风险评估

产品发布,工程实施

项目总结

原文地址:https://www.cnblogs.com/zqz365001/p/4492028.html