02333软件工程
第1章 绪论
第一节
软件 = 程序 + 文档
软件危机:随着计算机的广泛应用,软件生产效率、软件质量远远满足不了社会发展的需求,成为社会、经济发展的制约因素,这一现象统称为软件危机。
从软件的开发速度,软件制品质量,软件开发成本。都可能引发软件危机。
所以,为了解决软件危机,引申出了软件工程。
软件工程定义:应用计算机科学理论和技术以及工程管理和方法,按预算和进度实现满足用户要求的软件产品的工程,或以此为研究对象的学科。
第二节
软件开发的本质:不同抽象层术语之间的“映射”,以及不同抽象层处理逻辑之间的“映射”。
实现软件开发的基本途径:即实现这一映射的基本途径—系统建模
模型的概念:模型是一个抽象。所谓的系统建模,是指运用所掌握的知识通过抽象,给出该系统的一个结构–系统模型。(模型是在特定意图下所确定的角度和抽象层次上对物理系统的描述,通常包含对系统边界的描述、对系统内各模型元素以及它们之间关系的语义描述。)
模型的类别*:
- 概念模型:描述软件是什么
- 软件模型:实现概念模型的软件解决方案,包括设计模型、实现模型和部署模型。
软件开发中所涉及的两大类技术:(1)求解软件的开发逻辑 (2)求解软件的开发手段。
第2章 软件需求与软件需求规约
第一节 软件需求
软件需求:一个需求是有关一个“要予构造”的概述,描述了待开发产品/系统应该具有的功能上的能力、性能参数或其它性质。
例如:
系统必须实现“某一业务”功能,并有能力支持1000个以上的并发用户,平均相应时间应该小于1s,最大响应时间应小于5s。
系统必须有能力存储连续100天操作所产生的事务。
对于单一一个需求,必须具有的5个基本性质:
(1) 必要的:该需求是用户所要求的;
(2) 无歧义的:该需求只能用一种方式解释;
(3) 可测的:该需求是可进行测试的;
(4) 可跟踪的:该需求可从一个开发阶段跟踪到另一个阶段;
(5) 可测量的:该需求是可测量的;
需求分类*
可以把软件需求分为两大类:一类是功能需求,一类是非功能需求,而非功能需求又可分为性能需求、外部接口需求、设计约束和质量属性需求。
- 功能需求:是整个需求的主体。
- 非功能需求:性能需求、外部接口需求、设计约束和质量属性需求。
![20210719001726336](/post/358f7bb0/20210719001726336.png)
![20210719003045362](/post/358f7bb0/20210719003045362.png)
需求发现技术
初始发现需求的常用技术包括以下几个:
- 自悟:需求人员把自己作为系统的最终用户,审视该系统并提出问题,“如果是我使用这一系统,则我需要…”。
- 交谈:为确定系统应该提供的功能,需求人员通过提出问题/用户回答这一方式,直接询问用户需要的是一个什么样的系统。
- 观察:通过观察用户执行其现行的任务和过程,了解系统运行的环境;特别是了解要建立的新系统与现存系统、过程以及工作方法间必须进行的交互。
- 小组会:举行客户和开发人员的联席会议,与客户组织的一些代表共同开发需求。
- 提炼:复审技术文档,并提取相关信息。
第二节 需求规约
需求规约定义(SRS)*
需求规约是一个软件/产品/系统所有需求陈述的正式文档,它表达了一个软件/产品/系统的概念模型。
需求规约一般需要满足以下4个基本性质:
1.重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级,例如:基本需求、可选需求和期望需求。
2.可修改性:在不过多地影响其它需求的前提下,可以容易地修改一个单一需求。
3.完整的:没有遗漏的需求。
4.一致的:不存在互斥的需求。
需求规约格式*
IEEE标准830-1998(IEEE 1998)描述的需求规格说明书模板,其中第三部分“特定需求”是文档的技术核心。
![20210719004203811](/post/358f7bb0/20210719004203811.png)
需求规约的表达
在实际工程中,需求规约的表发主要存在3中不同的风格:
- 非形式化的需求规约:以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。适用于规模较小的、复杂程度不大高的小型软件项目,或在获取SRS(草案)时使用的。
- 半形式化的需求规约:以半形式化符号体系(包括术语表、标准的表达格式等)来表达需求规约。
- 形式化的需求规约:以一种居于良构数学概念的符号体系来编制需求规约,一般常伴有解释性注释的支持。
需求规约的作用*
1.需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。
2.对于项目的其余大多数工作,需求规约是一个管理控制点。
3.对于产品/系统的设计,需求规约是一个正式的、受控的起始点。
4.需求规约是创建产品验收测试计划和用户指南的基础,基于需求规约一般还会产生另外两个文档——初始测试计划和用户系统操作描述。
小结
![image-20230220200256731](/post/358f7bb0/image-20230220200256731.png)