软件设计与体系结构-齐治昌
一致性
整个软件系统的各个模块应使用一致的概念、符号和术语。 程序内部接口应保持一致。软件和硬件、操作系统的接口应 保持一致。系统规格说明与系统行为应保持一致。用于形式 化规格说明的公理系统应保持一致
软件工程的原则
完全性
软件系统不丢失任何重要成分,可以完全实现系统所要求功 能的程度。为了保证系统的完备性,在软件开发和运行过 程中需要严格的技术评审。
抽象、信息隐藏、模块化、局部化、一致性、完全性、 可验证性
目标
•基本目标:
可修改性
✓付出较低的开发成本 ✓达到要求的软件功能
有效性
✓取得较好的软件性能
可靠性
✓开发的软件易于移植
可理解性 可维护性 可复用性
✓需要较低的维护费用 ✓能按时完成开发工作 ✓及时交付使用
可适应性 可移植性
工具:人类在开发软件的活动中智力和体力的扩展和 延伸,为软件工程方法提供自动或半自动的软件支持 环境
过程:将方法和工具综合起来以达到合理、及时地进 行软件开发的目的
1.1软件工程
软件工程的目标和原则
在给定成本、进度的前提下,开发出具有可修改性、 有效性、可靠性、可理解性、可维护性、可复用性、 可适应性、可移植性、可跟踪性并满足用户需求的软 件产品。
1.1软件工程
软件危机:在计算机软件的开发和维护过 程中所遇到的一系列严重问题
软件设计:计算机软件发展到一定阶段, 为了应对软件危机
计算机软件=程序+数据+文档 计算机软件是逻辑和智力产品,不是物理
产品
1.1软件工程
软件的应用领域和分类
系统软件 实时软件 嵌入式软件 科学和工程计算软件 事物务理软件 人工智能软件 个人计算机软件
计相一致的。
软件生存周期
软件测试 单元测试,查找各模块在功能和结构上存在的问题并加 以纠正 集成测试,将已测试过的模块按一定顺序组装测试 确认测试,按规定的各项需求,逐项进行有效性确认测 试,决定已开发的软件是否合格,能否交付用户使用
使用与维护: 在用户特定的环境中,在测试通过后移交用户使用 改正性维护:运行中发现软件中的错误需要修正 适应性维护:为了适应变化了的软件工作环境,需做适 当变更 完善性维护:为了增强软件的功能需做变更
软件工程的目标是提高软 件的质量与生产率,最终
可追踪性 实现软件的工业化生产。
软件工程的原则
抽象
采用分层次抽象,自顶向下、逐层细化的办法控制软件开发 过程的复杂性
信息隐蔽
将模块设计成“黑箱”,实现的细节隐藏在模块内部,不让模 块的使用者直接访问。这就是信息封装,使用与实现分离的 原则
模块化
提交管理机构评审
软件生存周期
概要设计 — 把各项需求转换成软件的体系结构。结构 中每一组成部分都是意义明确的模块,每个模块都和某 些需求相对应,编写设计说明书,评审
详细设计 — 对每个模块要完成的工作进行具体的描述, 为源程序编写打下基础,编写设计说明书,提交评审
软件构造
把软件设计转换成计算机可以接受的程序代码, 即以某一种特定程序设计语言表示的“源程序清 单”;程序应当是结构良好、清晰易读的,且与设
1.3 软件开发过程模型
软件开发过程模型 是跨越整个生存期的系统开发、运作和维护 所实施的全部过程、活动和任务的结构框架
可验证性
开发大型的软件系统需要对系统自顶向下、逐层分解。系统 分解应遵循系统易于检查、测试、评审的原则,以确保系 统的正确性。
软件工程的原则
复杂问题 分解
解决原始问题
子问题1 子问题2 子问题n
程序1 程序2 程序n
软件 系统
集成
1.2 软件生存周期
Software life cycle 软件产品从形成概念开始,经过开发、使用和维护,直到
软件设计与体系结构
主讲教师:
1
第1章 软件工程与软件设计
1.1 软件工程 1.2 软件生存周期结
第1章 软件工程与软件设计
以计算机为核心的信息社会 软件是信息化的灵魂 以工程化方法和思想开发软件 软件设计是软件开发过程中的核心活动之一
最后退役的全过程称为软件生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。
这个过程即为计算机软件的生存周期 软件定义-软件开发-软件使用和维护
软件定义(系统分析):可行性研究(软件计划)、需求分析 软件开发(系统设计):概要设计、详细设计、软件实现
(编码、单元测试)、软件测试(组装测试、确认测试) 软件使用、维护 退役
1.1软件工程
软件危机 软件危机是指在计算机软件的开发和维护过程中所遇 到的一系列严重问题。 即包含两方面的问题: (1)如何开发软件 (2)如何维护软件
软件危机的原因 软件产品生产效率较低 软件供需失衡 用户需求不明确 整个软件开发过程缺乏正确的理论指导 软件产品的规模越来越大 软件产品开发的复杂度越来越高
1.1软件工程
软件工程
软件工程是指导计算机软件开发和维护的工程学科; 将系统的、规范的、可度量的工程化方法应用于软件
开发、运行和维护的全过程及上述方法的研究; 是用工程、科学和数学的原则与方法研制、维护计算
机软件的有关技术和管理方法;
软件工程要素:方法、工具、过程
方法:为软件开发提供了“如何做”的技术,是完成 软件工程项目的技术手段
软件生存周期
可行性研究
确定要开发软件系统的总目标 给出功能、性能、可靠性以及接口等方面的要求 完成该软件任务的可行性研究 估计可利用的资源 、成本、效益、开发进度 制定出完成开发任务的实施计划,连同可行性研
究报告,提交管理部门审查
需求分析
对用户提出的要求进行分析并给出详细的定义
编写软件需求说明书或系统功能说明书及初步的 系统用户手册
如 C 语言程序中的函数过程,C++ 语言程序中的类。模块化 有助于信息隐蔽和抽象,有助于表示复杂的系统。
软件工程的原则
局部化
要求在一个物理模块内集中逻辑上相互关联的计算机资源, 保证模块之间具有松散的耦合,模块内部具有较强的内聚。 这有助于控制解的复杂性
确定性
软件开发过程中所有概念的表达应是确定的、无歧义性的、 规范的。