您的位置:首页 > 其它

(四十二)重构与软件开发流程

2017-03-05 13:41 155 查看

重构

重构的目的:

改善代码质量

1.        使软件的设计与架构更加合理

2.        提高软件的扩展性与可维护性

 

实现与重构:

实现:按照设计编写实现,重点在于实现功能

重构:重新架构软件系统以实现软件的优化,不能影响已实现的功能

 

软件开发流程:



什么时候需要重构:

1.        项目中的重复代码越来越多时

2.        项目中的代码功能越来越不清晰时

3.        项目中的代码离设计越来越远时

 

重构的时机与方式由项目组使用的软件开发过程决定

 

 

GUI程序架构:

GUI程序基本架构一般包含:

1.        用户界面模块(UI)  用于接受用户输入以及呈现数据

2.        业务逻辑模块(Business Logic) 根据用户需求处理数据

 

接口:

广义概念:一种约定(如协议、语法、格式等)

狭义:

1.        面向过程:一组预定义的函数原型

2.        面向对象:纯虚类(C++)(C#与Java中直接支持接口概念)

 

 

基本设计原则:

功能模块之间需要进行解耦(即让各个模块尽可能的独立)

其核心思想在于设计编写程序时应该做到:强内聚,弱耦合

1.        每个模块应该只实现单一的功能

2.        模块内部的子模块只为整体的单一功能而存在

3.        模块之间通过约定好的接口进行关联

1)        必然存在模块使用接口

2)        必然存在模块实现对应的接口

4.        模块之间的关系是单向依赖的(尽量避免模块间存在循环依赖的情况,循环依赖是糟糕设计的标准之一)

 

 

软件开发流程

1、软件开发流程概念

  1)、通过一系列步骤保证软件产品的顺利完成

  2)、软件产品在生命期内的管理方法学

2、软件开发流程的本质

  1)、开发流程与具体技术无关

  2)、开发流程是开发团队必须遵完的规则

3、常见软件开发流程

1)、即兴模型(Build-and-Fix Model)

  ①与最终用户交流后立即开始进行开发

  ②没有需求分析和需求发掘的过程

  ③没有整体设计以及规划的过程

  ④没有相关软件文档,维护性差

2)、瀑布模型(Waterfall Model)

  ①瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。

  ②将软件生命周期划分为制定计划、需求分析→软件设计→程序编写→软件测试→发布、运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

  ③为项目提供了按阶段划分的检查点。当前一阶段完成后,只需去关注后续阶段。

  ④由于开发步骤是线性的、不可逆的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。

3)、增量模型(Incremental Model)

  ①将系统功能分解为互不重叠的子功能,它引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。

  ②每次全力实现一个子功能。由于每次只提交用户部分功能,用户有较充分的时间学习和适应新的产品。

  ③增量模型融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征。该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第1个增量往往是核心的产品,即第1个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品

  ④子功能全部完成后系统开发结束。

 


4)、螺旋模型(Spiral Model)

  ①采用一种迭代的方法来进行系统开发,它将瀑布模型和快速原型模型结合起来。

  ②软件项目分解成多个不同的版本完成

  ③每个版本的开发过程都需要用户参与

  ④根据前一个版本的反馈计划下一个版本

  ⑤风险驱动的螺旋模型适用于内部开发的大型软件项目,但是,只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。



5)、敏捷模型(Agile Modeling)


 

  ①一切从简②拥抱变化 ③高效工作④持续开发

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: