软件工程-第0/1章总结

  1. 0-1 课程简介

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 1-1 软件工程概论

 

    • A. 软件的基本概念
      一组对象或项目所形成的一个“配置”, 由程序、文档和数据等部分构成。

 

      • 1. 程序
        可被计算机硬件理解并执行的一组指令, 提供期望的功能和性能

 

      • 2. 数据
        程序能正常操纵信息的数据结构

 

      • 3. 文档
        与程序开发、维护和使用有关的图文材料

 

 

 

 

 

 

 

 

      • 2. 范围:
        – 软件开发过程(设计、开发、运行、维护)

– 软件开发中应遵循的原则和管理技术

– 软件开发中所采用的技术和工具

 

      • 3. 目标:
        – 高质量  – 按时交付  – 控制成本  – 满足用户需求

 

      • 4. 软件开发方法:
        使用预先定义好的一组模型表示方法、良好的设计技术与原则、质量保证标准等方面来组织软件开发的过程;

 

– 程序=数据结构+算法 

– 自顶向下:结构化需求分析…结构化设计(概要设计、详细设计)…面向过程的编码…测试

 

 

 

 

        • c) 面向服务的软件开发方法(Service-oriented software engineering (SOSE))
          面向服务的软件开发是将应用程序的不同功能单元(称为服务) 进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构件在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

 

 

 

 

        • a) 工具:自动或半自动的软件支撑环境,辅助软件开发任务的完成,提高开发效率和软件质量、降低开发成本

 

 

 

 

 

 

 

 

 

 

 

      • 1. 应用软件
        为满足特定应用领域、不同应用问题之需求的专用软件。

 

      • 2. 系统软件
        最靠近计算机硬件的一层软件 —— 控制和协调计算机及外部设备、支持应用软件开发与运行的软件。

 

      • 3. 支撑软件
        软件系统的中间层,支撑各种软件的开发、运行与维护的软件。

 

 

 

      • 1. 复杂性(complexity)
        软件要解决的现实问题通常很复杂,数据、状态、逻辑关系的可能组合导致了软件本身的复杂性;

软件无法以“制造”的方式被生产,只能采用手工开发方式, 这是一种人为、抽象化的智能活动(智力密集型),与人的水平密切相关,人类思维的不确定性导致了开发过程的复杂性;

 

      • 2. 不可见性(invisibility)
        尚未完成的软件是看不见的,无法像产品一样充分呈现其结构,使得人们在沟通上面临极大的困难,难以精确的刻画和度量。

 

      • 3. 易变性(changeability)
        软件所应用的环境由人群、法规、硬件设备、应用领域等因素汇集而成,而这些因素皆会频繁快速的变化。

 

      • 4. 一致性(conformity)
        各子系统的接口必须协同一致,而随着时间和环境的演变,要维持这样的一致性通常十分困难。

 

 

 

 

 

 

 

      • 2. 遗留系统( Legacy system):仍在使用中的软件系统, 可满足客户需求,但很难以“优雅的”方式对其进行演变以适应新需求或新环境

 

  1. 1-2 软件工程核心思想

 

用严格的规范和管理手段来缩小偏差, 通过牺牲“时间”来提高“质量”

 

 

 

 

为了实现以上两个映射,软件工程需要解决以下问题:  – 需要设置哪些抽象层次——单步映射?多步映射?几步? – 每一抽象层次的概念、术语与表达方式——公式?图形?文字?  – 相邻的两个抽象层次之间如何进行映射——需要遵循哪些途径和原则?
概念映射
业务逻辑映射

 

        • b) 概念映射
          问题空间的概念与解空间的模型化概念之间的映射

 

 

 

      • 1. 需求分析
        在一个抽象层上建立需求模型的活动,产生需求规约(Requirement Specification),作为开发人员和客户间合作的基础,并作为以后开发阶段的输入。

现实空间的需求  需求规约

 

      • 2. 软件设计
        定义了实现需求规约所需的系统内部结构与行为,包括软件体系结构、数据结构、详细的处理算法、用户界面等,即所谓设计规约(Design Specification),给出了实现软件需求的软件解决方案。

需求规约  设计规约

 

      • 3. 实现
        由设计规约到代码的转换,以某种特定的编程语言,对设计规约中的每一个软件功能进行编码。

设计规约  代码

 

      • 4. 验证/确认
        一种评估性活动,确定一个阶段的产品是否达到前阶段确立的需求(verification),或者确认开发的软件与需求是否一致 (validation)

 

软件工程具有“产品与过程二相性”的特点,必须把二者结合起来去考虑,而不能忽略其中任何一方。

 

 

      • 2. 过程:
        在各个抽象层次之间进行映射与转换

 

 

 

      • 1. 功能性需求
        软件所实现的功能达到它的设计规范和满足用户需求的程度

 

 

        • b) 完备性
          软件能够支持用户所需求的全部功能的能力;

 

 

正确性描述软件在需求范围之内的行为,而健壮性描述软件在需求范围之外的行为
正确性:
健壮性

 

        • e) 健壮性
          在异常情况下,软件能够正常运行的能力

 

        • f) 可靠性
          在给定的时间和条件下,软件能够正常维持其工作而不发生故障的能力

 

 

        • a) 效率:
          软件实现其功能所需要的计算机资源的大小,“时间-空间”

 

        • b) 可用性
          用户使用软件的容易程度,用户容易使用和学习

 

        • c) 可维护性
          软件适应“变化”的能力,系统很容易被修改从而适应新的需求或采用新的算法、数据结构的能力

 

        • d) 可移植性
          软件不经修改或稍加修改就可以运行于不同软硬件环境(CPU、OS 和编译器)的能力

 

        • e) 清晰性
          易读、易理解,可以提高团队开发效率,降低维护代价;

 

        • f) 安全性:
          在对合法用户提供服务的同时,阻止未授权用户的使用

 

 

        • h) 经济性:
          开发成本、开发时间和对市场的适应能力

 

        • i) 商业质量
          上市时间、成本/受益、目标市场、与老系统的集成、生命周期长短等

 

 

 

 

 

 

 

 

        • a) 核心问题:在设计软件的初期,就要充分考虑到未来可能的变化,并采用恰当的设计决策,使软件具有适应变化的能力。   即:可修改性、可维护性、可扩展性;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值