软件的定义:
软件不仅包括程序,还包括程序处理对象——数据,以及程序开发、维护和使用的图文资料即文档
软件危机的定义:指人们在开发软件和软件维护过程中所遇到的一系列问题
软件危机的表现:
- 软件产品不能满足用户
- 软件质量不能得到保障
- 难以估计软件开发与维护的费用
- 有风险,开发速度赶不上市场变化
- 相比硬件,软件代价过高
- 软件维护困难
- 软件文档不完备
软件危机的原因:在软件开发过程中,产品质量得不到保证,工作效率低下和开发经费严重超资等现象。
软件工程定义:为了获得可靠的的和能在计算机上高效的运行的软件而使用的工程规划
软件工程三要素:工具,过程,方法
软件开发方法:结构化方法 面向数据结构方法 面向对象方法 形式化方法
软件工程的目标与原则:
- 达到要求的软件功能
- 取得较好的软件性能
- 开发出高质量软件
- 付出较低成本
- 较低维护费用
- 能按时完成,及时交付
软件生命周期的六个子过程:
- 可行性研究
- 需求分析
- 软件设计
- 编码
- 软件测试
- 软件维护
瀑布模型:是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。
- 特点:不可回溯性
- 优点:模型简单,执行容易
- 缺点:不适应环境变更
快速原型模型:快速原型模型需要迅速建造一个可以运行的软件原型 ,以便理解和澄清问题,使开发人员与用户达成共识,最终在确定的客户需求基础上开发客户满意的软件产品。
- 优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。 这种模型适合预先不能确切定义需求的软件系统的开发。
- 缺点:所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。 使用这个模型的前提是要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。
增量模型:
- 特点:将待开发的软件进行模块化
- 优点:降低了开发的风险
- 缺点:要求被开发的软件可以被模块化
螺旋模型:(瀑布模型和快速原型模型结合)
- 优点:降低开发风险
- 缺点:控制管理复杂可,操作性不强
项目立项包括:项目发起、项目论证、项目审核、项目立项。
可行性研究的步骤:
- 明确系统目标
- 分析研究现行系统
- 设计新系统的高层逻辑模型
- 获得比较可行的方案
- 撰写可行性研究报告
需求分析步骤:需求获取 分析建模 需求描述 需求验证
需求分析方法:功能分解 结构化分析(SA) 信息建模 面向对象分析
数据字典定义:数据字典是描述数据的信息的集合,是对系统中使用的所有数据元素/数据流图中包含的所有元素 的定义的集合。是为了描述在结构化分析过程中定义对象的内容时,使用的一种半形式化的工具。
软件测试:是为了发现错误而执行程序的过程,他不可能发现所有的错误,但可以减少错误
杀虫剂现象:如果一个软件产品总是由同一个人来测试的话,由于他的思维方式和测试方法的局限性,很难发现潜在的问题
按开发阶段:单元测试 集成测试 确认测试 系统测试 验收测试
按测试实施组织:开发方测试 用户测试 第三方测试
按测试技术:白盒 黑盒 灰盒
软件测试过程模型:V W(开发和测试同步进行) H(测试过程完全独立)
测试用例:为了达到最佳测试效果而设计的少量测试数据并执行
黑盒测试(功能测试)
等价类划分法、边界值分析法,因果图法、场景法、决策表法、错误推断法
白盒测试(玻璃盒测试)用于单元测试和集成测试
有代码检查法、逻辑覆盖法、基本路径法
软件调试:是在进行了成功的测试之后才开始工作的,它是进一步改正程序中潜在的错误。
调试途径三种方法:蛮干法 回溯法 原因排除法
软件维护:将产品交付给用户之后,弥补测试阶段未发现的错误,改进产品性能,补充产品新功能等进行的修改过程
软件维护的过程:
- 建立维护机构
- 用户提出维护申请和报告
- 维护人员确认维护类型并展开工作
- 整理维护记录并进行评审
- 对维护工作进行评价
软件维护可分为:完善性维护 适应性维护 纠错性维护 预防性维护
软件的可维护性:可理解性 可测试性 可修改性
软件维护的副作用:修改代码的副作用 修改数据的副作用 修改文档的副作用