第1章 绪论

第一节

软件 = 程序 + 文档

软件危机:随着计算机的广泛应用,软件生产效率软件质量远远满足不了社会发展的需求,成为社会、经济发展的制约因素,这一现象统称为软件危机。

从软件的开发速度软件制品质量软件开发成本。都可能引发软件危机。

所以,为了解决软件危机,引申出了软件工程。

软件工程定义:应用计算机科学理论和技术以及工程管理和方法,按预算进度实现满足用户要求的软件产品的工程,或以此为研究对象的学科。

第二节

软件开发的本质:不同抽象层术语之间的“映射”,以及不同抽象层处理逻辑之间的“映射”。

实现软件开发的基本途径:即实现这一映射的基本途径—系统建模

模型的概念:模型是一个抽象所谓的系统建模,是指运用所掌握的知识通过抽象,给出该系统的一个结构–系统模型。(模型是在特定意图下所确定的角度和抽象层次上对物理系统的描述,通常包含对系统边界的描述、对系统内各模型元素以及它们之间关系的语义描述。)

模型的类别*:

  1. 概念模型:描述软件是什么
  2. 软件模型:实现概念模型的软件解决方案,包括设计模型、实现模型和部署模型。

软件开发中所涉及的两大类技术:(1)求解软件的开发逻辑 (2)求解软件的开发手段。

第2章 软件需求与软件需求规约

第一节 软件需求

软件需求:一个需求是有关一个“要予构造”的概述,描述了待开发产品/系统应该具有的功能上的能力、性能参数或其它性质
例如:
系统必须实现“某一业务”功能,并有能力支持1000个以上的并发用户,平均相应时间应该小于1s,最大响应时间应小于5s。
系统必须有能力存储连续100天操作所产生的事务。
对于单一一个需求,必须具有的5个基本性质
(1) 必要的:该需求是用户所要求的;
(2) 无歧义的:该需求只能用一种方式解释;
(3) 可测的:该需求是可进行测试的;
(4) 可跟踪的:该需求可从一个开发阶段跟踪到另一个阶段;
(5) 可测量的:该需求是可测量的;
需求分类*
可以把软件需求分为两大类:一类是功能需求,一类是非功能需求,而非功能需求又可分为性能需求、外部接口需求、设计约束和质量属性需求。

  1. 功能需求:是整个需求的主体。
  2. 非功能需求:性能需求、外部接口需求、设计约束和质量属性需求。
20210719001726336 20210719003045362

需求发现技术
初始发现需求的常用技术包括以下几个:

  1. 自悟:需求人员把自己作为系统的最终用户,审视该系统并提出问题,“如果是我使用这一系统,则我需要…”。
  2. 交谈:为确定系统应该提供的功能,需求人员通过提出问题/用户回答这一方式,直接询问用户需要的是一个什么样的系统。
  3. 观察:通过观察用户执行其现行的任务和过程,了解系统运行的环境;特别是了解要建立的新系统与现存系统、过程以及工作方法间必须进行的交互。
  4. 小组会:举行客户和开发人员的联席会议,与客户组织的一些代表共同开发需求。
  5. 提炼:复审技术文档,并提取相关信息。

第二节 需求规约

需求规约定义(SRS)*
需求规约是一个软件/产品/系统所有需求陈述的正式文档,它表达了一个软件/产品/系统的概念模型
需求规约一般需要满足以下4个基本性质:
1.重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级,例如:基本需求、可选需求和期望需求。
2.可修改性:在不过多地影响其它需求的前提下,可以容易地修改一个单一需求。
3.完整的:没有遗漏的需求。
4.一致的:不存在互斥的需求。

需求规约格式*
IEEE标准830-1998(IEEE 1998)描述的需求规格说明书模板,其中第三部分“特定需求”是文档的技术核心。

20210719004203811

需求规约的表达
在实际工程中,需求规约的表发主要存在3中不同的风格:

  1. 非形式化的需求规约:以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。适用于规模较小的、复杂程度不大高的小型软件项目,或在获取SRS(草案)时使用的。
  2. 半形式化的需求规约:以半形式化符号体系(包括术语表、标准的表达格式等)来表达需求规约。
  3. 形式化的需求规约:以一种居于良构数学概念的符号体系来编制需求规约,一般常伴有解释性注释的支持。

需求规约的作用*
1.需求规约是软件开发组织用户之间一份事实上的技术合同书,是产品功能及其环境的体现。
2.对于项目的其余大多数工作,需求规约是一个管理控制点
3.对于产品/系统的设计,需求规约是一个正式的、受控的起始点
4.需求规约是创建产品验收测试计划和用户指南的基础,基于需求规约一般还会产生另外两个文档——初始测试计划和用户系统操作描述。

小结

image-20230220200256731

第3章 结构化方法*

第4章 面向对象方法—UML

第5章 面向对象方法—RUP

第6章 软件测试*

第7章 软件生存周期过程与管理

第8章 集成化能力成熟度模型(CMMI)