软件工程(1)--初识基础概念

简介: 软件工程(1)--初识基础概念

前言


学习了半年的软件工程课程,总不能一无所获吧,故此写下文章总结一番。


软件工程是一门综合性交叉学科,它涉及计算机科学、工程科学、管理科学和数学等领域。学习目标是掌握需求分析、 软件设计、编码风格、软件测试的工程化方法。软件=程序+数据+文档


一、软件危机


1.定义


定义:在计算机软件的开发和维护过程中所遇到的一系列严重问题。

1968年 NATO 会议( Garmisch , Germany )提出"软件危机"


  • 项目超出预算
  • 项目超过计划完成时间
  • 软件运行效率很低
  • 软件质量差
  • 软件通常不符合要求项目
  • 难以管理并且代码难以维护
  • 软件不能交付


2.案例


OS/360:1961-1964年,IBM公司的 OS /360,共约100万条指令,花费了5000个人年,开发总投资5亿美元,达到当时美国研究原子弹的曼哈顿计划投资20亿美元的1/4,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。


美国火箭爆炸:根据 NASA 的报告,是1962年的飞往金星的宇宙飞船天线发生故障,致使地面无法控制火箭,于是火箭上的计算机开始控制火箭,然而在导航系统软件中又存在一个 bug (打印错误,在平滑半径导数表达式"R-dot-bar sub n "中漏掉了代表平滑的" bar "),致使火箭迅速偏离航道。于是发射场的安全官员下令摧毁飞船。


美国银行信托软件系统:美国银行1982年进入信托商业领域,并规划发展信托软件系统。.项目原订预算2千万美元,开发时程9个月,预计于1984年12月31日以前完成,后来至1987年3月都未能完成该系统,期间已投入6千万美元。.美国银行最终因为此系统不稳定而不得不放弃,并将340亿美元的信托账户转移出去,并失去了6亿美元的信托生意商机。


二、软件工程


1.定义


定义:IEEE 计算机协会将软件工程定义为:(1)应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。(2)对(1)中各种方法的研究。


目标:定义软件工程的目标是在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠可维护、适应力强、可移动、可重用的软件。


2.三要素


方法、工具、过程


方法回答的是”怎样做“;

工具是运用方法支撑环境;

过程是任务的框架,它规定了完成各项任务的步骤。


  • 方法:是完成软件工程项目的技术手段。支持项目计划和估算、系统和软件需求分析、设计、编程、测试和维护。软件工程方法依赖一组原则,贯穿软件工程的各个环节。软件工程方法分两类结构化方法和面向对象方法。
  • 工具:为软件工程的过程和方法提供自动化或半自动化的工具支持。将若干工具集成起来。与软件工程数据库和计算机系统构成一个支持软件开发的系统称"计算机辅助软件工程( Computer Aided Software Engineering , CASE )",系统中某一工具的信息加工结果可以作为另一工具的输入。集成的软件工程工具再加上人的因素构成了软件工程环境。
  • 过程:贯穿软件开发的各个环节,在各环节之间建立里程碑;管理者在软件工程过程中对软件开发的质量、进度、成本进行评估、管理和控制;技术人员采用相应的方法和工具生成软件工程产品(模型、文档、数据、报告、表格等)。


3.七个原则

  1. 使用阶段性生命周期计划的管理
  2. 进行连续的验证
  3. 保障·严格的产品控制
  4. 使用现代编程工具/工程实践
  5. 保持清晰的责任分配
  6. 用更好更少的人
  7. 保持过程改进



三、软件生命周期


软件产品或软件系统从设计、投入使用到淘汰的全过程。


1、问题定义(项目计划报告)

2、可行性研究(可行性研究报告)

3、需求分析(需求规格说明书)

4、总体设计(总体设计说明书)

5、详细设计(详细设计说明书)

6、编码(源程序)

7、测试(软件测试报告)

8、维护(软件维护说明)


520c263a015f44bcbeb1c26a0ebdfecb.jpg



四、软件过程模型

1.软件过程

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

软件过程是在工作产品构建过程中,所需完成的工作活动、动作和任务的集合。


e8d371a1a8b844fa9f286cffe4961773.jpg


  • 活动主要实现宽泛的目标,与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系。
  • 动作包含了主要工作产品生产过程中的一系列任务。
  • 任务关注小而明确的目标,能够产生实际产品。


2.软件过程模型


1.定义


定义:软件过程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。

软件过程模型也常称为:


  • 软件开发模型
  • 软件生存周期模型
  • 软件工程范型


2.能力成熟度模型CMM


5.优化级                  持续的过程改进

4.量化管理级          量化管理
3.已定义级              过程标准化
2.可重复级             基本项目管理
1.初始级                 有能力的人和个人英雄主义


参考资料

软件工程导论(第六版)  张海藩 牟永敏 著  

目录
相关文章
|
3月前
|
敏捷开发 安全 测试技术
软件工程:从概念到实践
【8月更文第20天】随着信息技术的快速发展,软件在现代社会中扮演着越来越重要的角色。从简单的移动应用到复杂的操作系统,软件已经成为连接人与数字世界的桥梁。为了有效地开发和维护这些软件系统,软件工程应运而生。本文将探讨软件工程的基本概念、目标、原则以及常用的生命周期模型。
147 0
|
6月前
|
敏捷开发 算法 测试技术
【软件设计师—基础精讲笔记5】第五章 软件工程基础
【软件设计师—基础精讲笔记5】第五章 软件工程基础
91 2
|
数据处理
【软件工程】第三章
【软件工程】第三章
|
算法 安全 测试技术
软件工程基础知识
软件工程是一门关于软件开发过程、方法和工具的学科,它旨在提高软件开发的效率和质量,以满足用户需求和市场需求。软件工程涉及到软件开发的各个方面,包括需求分析、设计、编码、测试、维护等环节。本文将介绍软件工程的基础知识,包括软件开发生命周期、软件过程模型、软件需求工程、软件设计和软件测试等方面。 一、软件开发生命周期 软件开发生命周期是指软件从需求分析到维护的整个过程,它包括以下几个阶段: 1. 需求分析阶段:在这个阶段,软件开发人员与用户沟通,了解用户需求和系统需求,确定软件开发的目标和范围。 2. 设计阶段:在这个阶段,软件开发人员根据需求分析的结果,设计软件的架构、模块、接口等,确定
115 0
|
测试技术 程序员 开发者
【软件工程】第六章
【软件工程】第六章
|
测试技术 数据库管理
【软件工程】第一章
【软件工程】第一章
|
敏捷开发 运维 数据可视化
软件工程基础知识总结
简单来说就是多人参与、有计划有步骤的构造一个符合质量标准的软件产品,这个过程称之为软件工程。我们都知道,参与人越多、产品越复杂、流程越繁琐,最终构造的软件产品就越可能出现问题。
软件工程基础知识总结