软件工程复习

软件:程序+数据+文档

程序:在运行中能提供所希望的功能和性能的指令集。

数据:使程序能够正确运行的数据。

文档:描述程序研制过程和方法使用的文档。

软件的特点:   软件是逻辑产品,硬件是物理产品

  1. 软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
  2. 软件开发、设计几乎都是从头开始,成本和进度很难估计。
  3. 软件存在潜伏错误,硬件错误一般都能排除。
  4. 软件开发成功后,只需对原版进行复制。
  5. 软件在使用过程中维护复杂。

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

具体表现:

  1. 开发成本和进度估计不准。
  2. 用户对“已完成的”软件系统不满意。
  3. 软件质量往往靠不住。
  4. 软件常常是不可维护的。
  5. 软件通常没有适当的文档资料。
  6. 软件成本逐年上升。
  7. 软件开发生产率滞后于硬件硬件和计算机应用普及。

软件工程:用工程、科学和数学的原则与方法开发、维护计算机软件的有关技术及管理方法。

软件工程构成三要素:过程、方法、工具

目的:在给定成本、进度的前提下,开发满足用户需求的并具有以下特性的软件产品。

  1. 可修改性 2.有效性 3.可靠性 4.可理解性 5.可维护性 6.可重用性 7.可移植性 8. 可追踪性 9.可适应性 10.可互操作性

原则:1.抽象 2.信息隐藏 3.模块化 4.局部化 5.一致性 6.完全性 7.可验证性

基本原理:

  1. 用分阶段的生存周期计划严格管理。
  2. 实行严格的产品控制。
  3. 采用现代程序设计技术。
  4. 结果应能清楚地审查。
  5. 开发小组的人员应少而精。
  6. 承认不断改进软件工程实践的必要性。

软件生存周期:软件从定义开始,经过开发、使用和维护,直到最终退役的全过程。

各阶段划分:软件定义:  可行性研究(经济、技术、操作、法律等)

                     需求分析(功能、性能、运行环境、前景等)

                     软件开发:  概要设计

                                        详细设计

                                        实现

                                        集成测试

                                        确认测试

                      软件使用与维护:

                                        使用与维护(纠错、适应、改善、预防)

                                        退役

需求分析主要方法:面向数据流的分析方法(其中典型是结构化方法,又称SA方法)

软件开发模型的几种类型:

  1. 以软件需求完全确认为基础的瀑布模型;
  2. 在开发初期仅给出基本需求的渐进式模型,如原型模型、螺旋模型、喷泉模型;
  3. 以形式化开发方法为基础的变换模型、基于四代技术的模型;
  4. 基于知识的智能模型。

三大模型主要问题:

瀑布模型:线性过程太理想化

原型模型:用户需求往往不完全和不准确

螺旋模型:迭代效率不高,增加成本并推迟提交时间

软件开发方法:

  1. 结构化方法(采用“抽象”和“分解”两个基本手段)

                适用于开发大型的数据处理系统,特别是管理信息系统

        缺点:可维护性、稳定性、可修改性和可重用性比较差;

                由于不是使用构造性的术语进行思考,所以软件需求与软件实现之间存在巨大差异

      2. 面向对象建模方法(采用“封装”、“分类”和“继承”三个基本原则)

                以客观世界中实体为基础,将客观实体的属性与操作封装成对象,对象之间通过传递消息互相联系,以模拟现实中不同的事物彼此之间的联系。

        优点:符合人们的思维习惯

                  软件过程模型具有高度的连续性

                  软件的可维护性和可重用性好

系统流程图(描绘物理系统的工具)

数据流图(描绘数据在系统中流动的逻辑过程)

数据字典(对数据流图中包含的所有元素的定义的集合)

成本/效益分析

  1. 代码行技术
  2. 任务分解技术
  3. 自动估计成本技术

软件需求的三个层次

业务需求

用户需求

功能与非功能需求(约束与限制)

软件需求的三种类型

功能需求

非功能需求

设计约束

优秀需求的标准(一个好的需求规格说明应该具有的特征)

  1. 完整性
  2. 正确性
  3. 可行性
  4. 必要性
  5. 划分优先级
  6. 无二义性
  7. 可验证性

需求工程:(需求开发、需求管理)

        指应用工程化的方法、技术和规格来开发和管理软件的需求。

         目的:获取高质量的软件需求。

问题分析的五步法

  1. 在问题定义上达成共识;
  2. 理解根本原因,也就是分析问题背后的问题;(定性分析的鱼骨图、定量分析的帕累托图,两种实用的工具)
  3. 确定相关人员和用户;
  4. 定义解决方案的界限;(上下文关系图,即数据流图中的顶层图)
  5. 确定加在解决方案上的约束。(对技术开发的约束、项目实施的约束)

建模的目的:

  1. 帮助我们按照实际情况或按我们需要的样式对系统进行可视化;
  2. 提供一种详细说明系统的结构或行为的方法;
  3. 给出一个指导系统构造的模板;
  4. 对我们所做出的决策进行文档化;

要点:

  1. 设计要考虑到计划之外的变化;
  2. 设计要文档化;
  3. 用可视化的模型表达架构,有助于理解变化所代表的含义;

原则:

  1. 不同的模型的精度级不同;
  2. 单个模型是不充分的,最好用一组几乎独立的模型;

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月3日
下一篇 2022年1月3日

相关推荐