首页 > 编程语言 > 软件开发所经历的生命周期
2016
04-18

软件开发所经历的生命周期

总的来说,软件开发都会经历一下生命周期

  • 分析需求:分析问题领域,了解用户的需求
  • 软件设计:设计软件的总体架构,把整个软件系统划分成大大小小的多个子系统,设计每个子系统的具体结构
  • 软件编码:用选定的编程语言来编写软件功能,实现软件设计阶段所勾画出来的软件蓝图
  • 软件测试:测试软件是否实现特定的功能,以及软件的运行性能
  • 软件部署:为用户安装软件系统,帮助用户正确的使用软件
  • 软件维护:修复软件中存在的BUG,当用户的需求发生变化时(增加新的功能,或更改现有功能的实现方式)修改相应的软件模块

为了提高软件的开发效率,降低软件的开发成本,一个良好的软件系统应具备以下特点

  • 可重用性:减少软件的重复代码,避免重复编程
  • 可扩展性:当软件系统的需求必须放生更改时,可以方便的在现有架构的基础上构建新的子系统,也不需要改变软件系统的现有结构且不影响其它以存在的子系统
  • 可维护性:当软件系统的某个功能需要更改时只需修改相关子系统的少量代码即可,而不需要修改软件系统中的多个子系统。

如何才能使软件系统具备以上特点呢?加入吧整个软件系统分解成多个小的子系统,每个子系统之间相对独立把这些子系统像最积木一样灵活的组装起来构成整个大的软件系统。这样设计出来的软件肯定能获得以上的优良特性。软件系统中的子系统具备以下特性:

  • 结构稳定性:软件设计阶段把一个软件系统划分成更小的子系统时,设计合理,是系统的结构健壮能适应用户变化的需求
  • 可扩展性:当软件必须增减新的功能时,能够在现有子系统的基础上创建出新的子系统,该子系统继承了原有子系统的一些特性,并且还具有一些新的特性,从而提高的系统的可重用性及可扩展性
  • 内聚性:每个子系统只完成特定的功能,每个子系统不会有功能的重叠
  • 可组合性:若干个小的子系统组合起来就成了一个完整的大系统,子系统的可组合性会提高软件的可维护性及可重用性 并简化开发过程
  • 松耦合:每个子系统之间相对独立,修改一个子系统不会影响到其它的子系统。

面向对象开发:

咋面向对象的开发方法中把软件系统看成是各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。面向对象的开发方法具有以下优点

  • 把软件系统堪称是各种对象的集合,这更符合人类的自然思维方式
  • 软件需求的改动往往是功能的改动,而功能的执行者————对象一般不会有太大的变化这使得按照对象设计出来的系统结构比较稳定
  • 对象包括属性(数据)和行为(方法)把对象的数据及方法的实现方式一起封装起来,这使得方法以及与之相关的数据不再分离,提高的子系统的相对独立性,从而提高的软件的可维护性
  • 支持封装、继承、多态和抽象,提高的系统的可重用性、可维护性和可扩展性

对象模型:

在面向对象的分析和设计阶段,致力于建立模拟问题领域的对象模型,建立对象模型包括自底向上的抽象过程也包括自顶向下的分解过节过程。

建立对象模型的第一步使从问题领域入手,彻底搞清用户的需求,然后建立正确的对象模型,开发人员需要进行一下自低向上的抽象思维

  • 吧问题领域的属性和行为抽象成具体的对象
  • 把具有相同属性和行为的对象抽象成类
  • 若多个类中存在共性(具有相同的属性和行为)把这些共性抽象到父类中

在自底向上的抽象过程中,为了使子类能更好的继承父类的属性和行为,可能需要自顶向下的修改,从而使类体系更加合理。由于这种类体系的构造是由具体到抽象,再从抽象到具体,符合人类的思维规律,因此能更好更快的完成任务。

编程技巧