软件构建的概念

  • 时间:
  • 浏览:82

1.1 软件构建的活动相关定义

构建(Construction),通常在我们生活理解中,第一印象可能就是房屋的构建。或者又例如小朋友搭积木的那种过程也可称为构建。故构建的通常指的是建设的过程。而软件构建的也就是软件开发的过程。而软件开发,在《代码大全》这种书,作者总结了11个构建过程中涉及到活动。

  • 1).定义问题
  • 2).需求分析
  • 3).规划构建
  • 4).软件架构
  • 5).详细设计
  • 6).编码与调试
  • 7).单元测试
  • 8).继承测试
  • 9).集成
  • 10).系统测试
  • 11).保障维护

而作者通过下面一张图,阐述了本书的侧重的范围:详细设计、编码与调试、单元测试这几块。

图片 1.png

1.2 软件构建为什么重要

  • 1).构建活动是软件开发的主要组成部分

构建活动在整个软件开发活动总时间中所占比例一般在30%至80%之间,所以必然会影响项目的成败

  • 2).构建活动是软件开发中的核心活动
  • 3).把精力集中于构建活动,可以大大提高程序员的生产率
  • 4).构建产物-源代码往往是对软件的唯一精确描述

在很多项目中,程序员可以得到的唯一文档就是源代码本身。需求规格书和设计文档可能会过时,但是源代码是最新的。因此,源代码就必须具有尽可能的高的质量。

  • 5).构建活动是唯一一项确保会完成的工作

二、使用隐喻的方式理解软件构建

软件开发相对于其他学科而言,还是一门很年轻的学科,它还没有完全成熟到拥有一套标准隐喻的程序,因此必然存在许多或者相互补充,或者相互抵制的隐喻,某些隐喻相对好些,而另一些比较糟糕,你对隐喻有多理解,也就决定了你对软件开发有多理解

2.1 常见的隐喻

  • 1).写作代码

在很多项目中,程序员可以得到的唯一文档就是源代码本身。需求规格书和设计文档可能会过时,但是源代码是最新的。因此,源代码就必须具有尽可能的高的质量。

  • 2).培植系统

将创造软件想象成类似播种和耕种的情形。你一次设计的系统的一小部分、写出一段代码、做一点测试,并将成果一点点添加到整个系统

  • 3).系统生长

先做出软件系统的一个尽可能简单,但能运行的版本。后期你再一次一次增加你得功能。目前互联网的公司的产品大都使用此方式进行开发,因为前期投入成本比较低,如果失败了,可以迅速改变策略方向。如果成功了,可以进行围绕核心依次展开拓展开发。

  • 4).建造软件

与系统生长概念相通,但是它提供了更详细的指导。比如前期详尽的调研,准备,软件规划等等。比如要构建大型信息化系统。应该使用此模式

三、软件构建的前期准备

3.1 前期准备的重要性

使用高质量的实践方法是那些能够创造高质量软件的程序员的共性。这些高质量的实践方法在项目的初期、中期、末期都强调质量。

构建活动是软件项目的中间阶段,在你开始构建的时候,项目前期工作已经或多或少为这个项目的成功或失败打下了基础。然而,在构建的过程中,你至少应该能够辨明当时的形式如何,如果你看到失败的乌云已经出现在地平线上时。就退回到项目的前期工作。

3.2 前期准备适用于现代软件项目吗?

在20世纪70年代开始至今的业界数据显示,如果在开始构建活动之前认真地进行适当的准备活动,那项目将会运行的很好。(作者的调研总结结论)

3.3 问题定义的先决条件

在构建软件之前,首先要满足的是一项先决条件,对这个系统要解决的问题做出清楚地陈诉。这时候称为:产品设想、设想陈述、任务陈述或者说产品定义。但是本书,将它称为“问题定义”

如下图,问题定义为后面的软件开发奠定了坚实的基础

2.png

而且问题定义应该用客户的语言来写,而且应该从客户的角度来描述问题。通常不应该用计算机的专业术语叙述。最好的解决方案未必是一个计算机程序。

3.4 需求的先决条件

  • 1).要求一套明确的需求,这点很重要。因为明确的需求有助于确保是与用户驾驭的功能,而不是程序员驾驭的功
    能。因为明确的需求,免得你去猜测用户想要什么功能。

  • 2).明确的需求有助于避免争论,以免产生歧义。

  • 3).明确的需求有助于减少开始编程开发之后的系统变更情况。如果你在编码的过程中发现一个代码上的错误,你只需要修改几行代码,然后继续工作。但是如果你在编码的时候发现一个需求的错误,那你就得改变设计。

  • 4).稳定的需求是软件开发的圣杯。一旦需求稳定,项目就能以有序的、可预测的、平稳的方式,完成从架构到设计到编码到测试等一系列工作。

3.5 如何处理构建期间的需求变更

  • 1).确保每一个都知道需求变更的代价

  • 2).建立一套变更控制程序

  • 3).使用能适应变更的开发方法

  • 4).放弃这个项目

3.6 架构的先决条件

软件架构是软件设计的高层部分,用于支撑更细节的设计的框架。通常会有一份独立的文档描述架构。

好的架构使得构建活动变得更加容易。糟糕的架构则使得构建活动几乎寸步。

3.png

3.7 软件架构的典型

  • 1).程序组织
  • 2).主要类
  • 3).数据设计
  • 4).业务规则设计
  • 5).用户界面设计
  • 6).资源管理
  • 7).安全性
  • 8).性能
  • 9).可伸缩性
  • 10).互用性
  • 11).国际化/本地化
  • 12).IO输入输出的性能考虑
  • 13).错误处理
  • 14).容错性
  • 15).架构可行性

四、总结

这篇主要是前三章关于概念理论的总结与分享。代码相关的在后面的篇幅进行介绍。谢谢,大家可以关注我的个人微信公众:Java从零入门系列,更多干货等你来哦!!!

猜你喜欢