第二章 软件工程基础知识

本文详述了软件工程中的基础知识,重点涵盖了软件需求分析的定义、可行性研究步骤、需求分析任务和方法论,以及软件设计的基本原则和测试策略。探讨了软件需求的层次,包括业务需求、用户需求和系统需求,并介绍了结构化分析方法、用户界面设计和软件测试的黑盒与白盒测试方法。
摘要由CSDN通过智能技术生成

第二章 考试大纲

  1. 软件需求分析与定义
  2. 软件设计、测试与维护
    3. 软件复用
    4. 软件质量保证及质量评价
    5. 软件配置管理
    6. 软件开发环境
    7. 软件过程管理。

知识点:

1. 软件需求分析与定义
什么是软件需求:

软件需求就是系统必须完成的事,以及必须具备的品质,软件需求包括功能需求、非功能需求和设计约束3 方面内容。
容易混淆的概念,并非软件需求:
业务需求: 是指反映组织机构或客户对系统、产品高层次的目标要求,通常问题定义本身就是业务需求
用户需求: 是指描述用户使用产品必须要完成什么任务,通常是进行用户访谈、调查,对用户使用的场景进行整理,从而建立从用户角度的需求。
系统需求: 是从系统的角度来说明软件的需求,包括用特性说明的能需求、质量属性,以及其他非功能需求,还有设计约束。
这分别对应于需求的3个不同的层次,从目标到具体,从整体到局部,从概念到细节。

需求开发:

需求开发:包括需求捕获、需求分析、编写规格说明书和需求验证4个阶段.
在这里插入图片描述

可行性研究工作的任务
  1. 技术可行性:现有的技术力量是否达到? 否有多种不同的解决方案?
  2. 经济可行性:效益分析、投资回报率、其他方案是否超过开发成本?
  3. 社会可行性:是否符合企业实际情况?是否符合员工利益?是否符号相关法规行业规范?
可行性研究工作的步骤
  1. 实问题定义与目标:使问题定义更加清晰、明确、没有歧义性,并且对系统的目标、规模,以及相关约束与限制条件提出更加细致的定义, 确保可行性性研究小组的所有成员达成共识。
  2. 研究分析现有系统。
  3. 新系统建模: 用例模型、ER关系图、
  4. 客户复核:建立起来的系统模型是系统分析员眼里问题定义,这与客户心目中的问题是否一致?
  5. 提出并评价解决方案。在这个阶段,应该尽量列举出各种可行的解决方案,并且对这个解决方案优点、缺点 一个综合性的评价,以便下一步决策。
  6. 确定最终推荐的解决方案。选中一个最合理、最 行的解决方案,更加详细地说明理 ,并且还要对其进行更加完善的成本/效益分析。
    a. 成本估计:对于软件系统而,主要的成本是人力资源成本,另外还包括 直接的费用、设备采购的费用等。对系统工作量(用人月、人
    年等单位进行说明)进行合理、科学的评估,并在此基础上进行计。
    b. 效益分析:将会带来的直接、间接收益,以及成本降低的具体数额进行量化。
    c. 草拟开发计划。
    d. 以书面的形式提交《可行性分析报告》并进行审查。
    完成可行性研究工作之后,必须将这成果文档化地记录下来,形成 《可行性研究》报告 。
需求分析定义

所谓分析就是通过对问题域的研究,获得对该领域特性及存在于其中(需要解决) 问题特性的透彻理解并用文档说明。

需求分析的工作任务
  1. 绘制系统上下文范围关系图:定义系统与系统外部实体间的界限和接口的简单模型
  2. 创建用户接口原型:在需求分析段通过快速开发工具开发一个可抛弃原型。
  3. 分析需求的可行性:对所有获得的需求进行成本、性能、技术实现方面的行性研究,以及这些需求项是否与其他的需求项有冲突,是否有对外赖关系等。
  4. 确定需求的优先级: 可以采用满意度/非满意度指标进行说明,需求被实现时用户的满意度。
  5. 为需求建立模型:模型的表现形式主要是图表加上少量的文字描述。
  6. 创建数据字典:对数据项和结构进行定义。以确保开发人员使用统一的数据定义。
  7. 使用质量功能调配(QFD ):需求优先级基础上的一个升华,QFD 将需求分为三类:期望需求,即如果缺少会让其感到不满意的需求;普通需求兴奋需求:实现了客户会感到惊喜,但没有也不会遭到责备。
需求分析方法论
  1. 结构化分析方法
  2. 软系统方法
  3. 面向对象分析方法
  4. 面向问题域的分析
2. 软件设计、测试与维护
软件设计基本原则
  1. 信息隐蔽:要是坐在后排聊天的同学能像中间打牌的同学那么安静,就不会影响到前排睡觉的同学,如果不想让坏事传播开来,就应该把坏事隐藏起来。
  2. 模块独立性:模块独立的概念是模块化、抽象化 、信息隐蔽和局部化概念的直接结果。
    a. 高内聚(high cohesion): 理想状态一个模块只干一件事。
    b. 低耦(low coupling):耦合是程序结构中模块相互关联的度量。
结构化设计方法
  1. 总结出系统应有的功能。
  2. 细化数据流。
  3. 分析各过程之间的耦合关系。
用户界面设计

发展:第一代是以文本为基础的简单交互,第二代直运操纵的界面。它大量使用图形、语音和其他交互媒介,充分地考虑了人对美的需求。
好的用户界面应具有以下特点:

  1. 可使用性:简单、标准化、一致性、拥有帮助功能、快速响应和低的系统成本、容错能力
  2. 灵活性:考虑用户 特点、能力、知识水平,满足不同用户要求,还可定制和修改界面
  3. 复杂性和可靠性:界面的复杂程度,无故障使用的间隔时间。
    设计评审:尽量不让错误传播到下一个阶段。设计评审一般采用评审会议的形式来进行。
软件测试
  1. 测试用例设计:测试用例是为特定目标开发的测试输入、执行条件和预期结果的集合,两种常用的测试方法:黑盒测试和白盒测试。
    a. 黑盒测试:不考虑内部结构,检查程序的功能是否符合它功能说明,又称为性能测试或数据驱动测试。
    黑盒测试方法:
    i. 等价类划分:
    ii. 边界值分析
    iii. 错误推测法: 靠经验和直觉推测程序中可能存在的各种错误。
    iiii. 因果图:考虑输入条件的各个组合, 使用一种适于描述多种条件的组合。
    b. 白盒测试:允许测试人员利用程序内部的逻辑结构和有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
    c. 逻辑覆盖:它属白盒测试,包括语句覆盖、判定覆盖、条件覆盖、 判定-条件覆盖、条件组合覆盖、路径覆盖等。
  2. 软件测试策略: 分为:单元测试、集成测试 (又称组装测试)、确认测试和系统测试。
  3. 软件测试类型:功能测试,可靠性测试,强度测试,性能测试,恢复测试,启动/停止测试,配置测试,安全性测试,可使用性测试,安装测试,过程测试,容量测试,文档测试,兼容性测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值