软件工程核心概念

文章目录

  • 软件概念
      • 软件的逻辑抽象性
      • 软件分类
      • 软件危机
  • 软件开发与软件工程
      • 软件开发基本过程
      • 软件开发成本
      • 软件工程要点
      • 软件工程原则
      • 软件工程目标
      • 软件开发方法
  • 软件生命周期模型
      • 软件生命周期
      • 软件生命周期模型SDM
          • 瀑布模型
          • V-W模型
          • 快速应用开发模型
          • 原型模型(重点)
  • 如何从一个需求落实到一个系统设计,如何衡量两个不同设计的好坏,如何在各种限制下(人员、时间、资源等)选择其中更合适的设计,以及提升该设计的可拓展性等。

转自:概念 | 必知的软件工程核心概念

软件概念

软件 = 程序 + 数据 + 文档 + (服务)

程序 = 数据结构 + 算法

软件是能够完成预定功能和性能的、可执行的计算机指令;
软件是使得程序能够适当地处理信息的数据结构;
软件是描述程序的操作和使用的文档。

软件的逻辑抽象性

软件是一种逻辑实体,具备知识性的产品集合,是对物理世界的一种抽象化,同时又是一种人脑智力的成果,开发成本昂贵但可以复制。

而软件问题都是在软件开发和修改过程中引入的,开发工作仍未完全摆脱手工作坊式的低效开发方式。软件测试则是为了最小化软件问题和风险。

软件分类

软件工程核心概念

软件危机

软件工程核心概念
软件工程核心概念

软件开发与软件工程

软件开发基本过程

  1. 软件计划,确定产品定位和目标人群。
  2. 软件需求分析:根据客户需求,制定客户需求的产品功能,特性,性能,界面和具体规格。
  3. 根据需求进行设计:概要设计和详细设计。
  4. 编程实现并运行。
  5. 软件测试:确认用户需求,对设计和实现结果进行验证。
  6. 维护:维持软件运行,修改软件缺陷,增强完善功能,不断迭代软件版本。

软件开发成本

软件工程核心概念

软件工程要点

软件工程核心概念

软件工程目标

软件工程核心概念

软件生命周期模型

软件生命周期

  • 可行性分析与计划阶段
  • 需求分析阶段
  • 设计阶段
  • 实现阶段
  • 测试阶段
  • 运行与维护阶段

软件生命周期模型SDM

常见模型

软件工程核心概念
瀑布模型中的每一个开发活动具有下列特征:
  • 本阶段活动的工作对象来自于上一项活动的输出,这些输出一般是代表本阶段活动结束的里程碑式的文档
  • 根据本阶段的活动规程执行相应的任务
  • 本阶段活动产出相关的软件工件,作为下一阶段活动的输入。
  • 对本阶段活动执行情况进行评审
  1. 瀑布模型的优点:
  • 降低软件开发的复杂程度,提高软件开发过程的透明性,提高软件开发过程的可管理性
  • 推迟软件实现,强调在软件实现前必须进行分析和设计工作
  • 以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,保证了阶段之间的正确衔接,能够及时发现并纠正开发过程中存在的缺陷,使产品达到预期的质量要求
  1. 瀑布模型的缺点:
  • 强调过程活动的线性顺序
  • 缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题
  • 风险控制能力较弱
  • 瀑布模型中的软件活动是文档驱动的,当阶段之间规定过多的文档时,会极大地增加系统的工作量
  • 管理人员如果仅仅以文档的完成情况来评估项目完成进度,往往会产生错误的结论
V-W模型

软件工程核心概念
W 模型是V 模型的演进
  • 在V 模型中增加软件各开发阶段对应同步进行的测试
  • W 模型中开发是一个“V”型,测试是与此并行的另一个“V”型。基于“尽早地和不断地进行软件测试”的原则,在软件的需求和设计阶段的测试活动遵循IEEE1012-1998《软件验证与确认(V&V)》。
  • W 模型强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题
快速应用开发模型

软件工程核心概念
软件工程核心概念
问题产生 → 用户痛点 → 产生需求 ↓

—– 设计原型 —— 实现并实现模型:

if 原型 exist problems, then 修改加强 (伴随新的需求)

else 转为可用于生产环境的软件发行版本

软件工程核心概念
软件工程核心概念

如何从一个需求落实到一个系统设计,如何衡量两个不同设计的好坏,如何在各种限制下(人员、时间、资源等)选择其中更合适的设计,以及提升该设计的可拓展性等。

如何从一个需求落实到一个系统设计:http://www.woshipm.com/pmd/712972.html
如何衡量两个不同设计的好坏:https://blog.csdn.net/tenfyguo/article/details/7616834
如何实现系统的可扩展性和高可用性:https://cloud.tencent.com/developer/article/1031954

来源:Tattoo_Welkin

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年6月19日
下一篇 2019年6月19日

相关推荐