软件工程基础与开发技巧:架构师必备知识

发表时间: 2023-03-01 08:05

软件工程这个篇章非常重要,能够在综合知识里面考到十几分,仅次于架构,在案例和论文里面也会用到。

1、什么是软件工程?

软件开发的工程性的一些东西,基本思想就是用工程化的思想去做软件。

最早开发软件是没有软件工程的,最早使用计算机做大型的计算,后来计算机软件,成成一步步兴起,原来一个人很短时间能够搞定的事情,现在要许多人一起来完成这个工作。

而软件领域比较虚幻,往往要程序运行之后才能看到最终的效果,这就给软件开发带来了很大的风险。比如软件一开始没有问题,除去成本还能赚钱,但是有问题后修修改改,需要大量的成本,导致最后的亏损。

从而带来一些问题,也就是软件危机。我们希望软件开发能像建房子一样拔地而起,又比较受控,所以提出软件工程。软件工程很多东西跟建造领域的一些东西是有着异曲同工之妙的。

2、软件开发方法

方法论就是你想要做成某些事情,你就需要遵循一些原则,否则就会出现一些问题。

2.1、结构化法

结构化也叫做过程化,就是面向过程的。早期使用C语言开发过程化的东西那个时代,就是结构化时代。

思想原则

  • 用户至上
  • 严格区分工作阶段,每阶段有任务与成果
  • 强调系统开发过程工程化,文档资料标准化
  • 自顶向下,逐步分解

如果用C语言做过开发时,我们从整体看系统比较复杂,如何简化。那就是拆,拆成多个子系统,每个子系统拆模块,模块拆成子模块,最后变成了一个函数,函数输入输出是什么,用什么算法实现等,可能都有要求了,典型的应用就是瀑布模型。对日外包项目就是这种模式,标准化非常高。

结构法化方法思想其实很好,为什么会被淘汰了呢?

因为结构化开发的应变能力比较差,面向过程就是把业务流程固化到一个一个方法中了,是不容易做变更的,而现实中业务流程变化是非常常见的,所以该方法被淘汰了。而面向对象方法就是为了应对需求灵活。

2.2、原型法

一般认为是用在需求分析阶段的,其实就是一个demo. 就是为了避免在需求不明确时,这时候做一个原型来给客户演示。从而避免开发出来的东西跟客户想要的东西不一致.

  • 适用于需求不明确的开发
  • 包括抛弃型原型和进化/演化型原型

2.3、面向对象方法

比如C++,, VB, Java等都是面向对象的语言。

面向对象尝试在计算机里面构建一个与真实事件对应的一个体系。

比如现实中,有一个人,它完成了什么任务,他有什么特点,建模到系统里面。业务流程就可以按照建模进行组装,从而更加的灵活。所以面向对象有以下的一些基本思想原则。

思想原则

  • 更好的复用性
  • 关键在于建立一个全面、合理、统一的模型
  • 分析、设计、实现三个阶段,界限不明确(在做分析阶段的工作时,一般会考虑到设计,或者做了一部分设计,所以界限不明显)

2.4、面向服务的方法

面向服务是在面向对象的基础上,进一步去做标准化这一层级的,服务的粒度会比对象大。

  • SO方法分为三个主要的抽象级别:操作、服务、业务流程
    • 操作:函数,方法层级
    • 服务:就是服务
    • 业务流程:由服务协作完成一个业务的处理
  • SOAD(面向服务方法体系)分为三个层次:
    • 基础设计层(底层服务构建)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程建模编排)
  • 服务建模:分为服务发现、服务规约和服务实现三个阶段

3 、软件开发模型

  • 瀑布模型: 迭代模型/迭代开开发方法
  • 演化模型: 快速开发应用
  • 增量模型: 构建组装模型/基于构建的开发方法
  • 螺旋模型: 统一过程/统一开发方法
  • 原型模型: 敏捷开发方法
  • 喷泉模型: 模型驱动的开发方法
  • V模型: 基于架构的开发方法

上面重点标注的方法为重点要学习的模型, 其他的了解即可.

软件工程的知识量很多, 我们慢慢的,一点点的学习这些方法与模型. 下一节会详细来讲软件的开发模型.

学无止境, 我们一起加油!