软件工程(第五版)第1章
软件工程导论(第五版) 第一章
(
Software Engineering
杨易扬
)
广东工业大学 计算机学院
软件工程系
个人信息
• • • • •
姓名:杨易扬 软件工程系,计算机学院,广东工业大学
手机:18613087953
QQ:86749678
办公室地址:广东工业大学工学一号馆725室 研究兴趣:数据挖掘,地理信息系统,信息检 索
•一种风险更大的增量模型:
•1.4.4 螺旋模型
•可把它看作在每个阶
段之前都增加风险分 析的快速原型模型。
•风险分析:用户不
满意,提交推迟, 程序员跳槽
• 1.4.5 喷泉模型
典型的面向对象软件 开发过程模型之一。
1.4.6 Rational 统一过程
• • • • • • •
1. RUP软件开发经验
软件工程的本质特性:
• • • • • • •
1. 软件工程关注于大型程序的构造;
2. 软件工程的中心课题是控制复杂性;
3. 软件交付之后仍然经常需要修改;
4. 开发软件的效率非常重要;
5. 和谐地合作是软件开发的关键; 6. 软件必须有效地支持它的用户; 7. 在软件工程领域中是由具有一种文化背 景的人替具有另一种文化背景的人创造产品。
•
• • • •
•
8.维护。
1.4 软件过程 • 软件过程:为了获得高质量软件所需要完成的一
系列任务的框架,它规定了完成各项任务的工作步
骤。
• 软件过程(ISO9000):使用资源将输入转化为输
出的活动所构成的系统。
•输入:如软件需求 •输出:如软件产品
•1.4.1 瀑布模型
1.
软件工程第一章习题答案
第一章习题1.1什么是计算机软件?软件的特点是什么?答:计算机软件(Computer Software,也称软件,软体)是指计算机系统中的程序及其文档,程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。
程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。
软件的特点:1.软件是一种逻辑实体而不是有形的系统元件,其开发成本和进度难以准确的估算。
2.软件是被开发的或设计的,没有明显的制作工程,一旦开发成功,只需复制即可,但其维护的工作量大。
3.软件的使用没有硬件那样的机械磨损和老化问题。
1.2简述软件的分类,并举例说明。
答:软件分为系统软件,支撑软件和应用软件3类。
系统软件居于计算机系统中最靠近硬件的一层其他软件一般都通过系统软件发挥作用。
例如:编译程序,操作系统等。
支撑软件是支撑软件的开发和维护的软件。
例如:数据库管理系统,网络软件,软件工具,软件开发环境等。
应用软件是特定应用领域专用软件。
例如:工程/科学计算软件,嵌入式软件,产品线软件,Web应用软件,人工智能软件等。
1.3简述软件语言的分类,并举例说明。
答:软件语言是用于书写计算机软件的语言主要包括:需求定义语言,功能性语言,设计性语言,实现性语言和文档语言。
需求定义语言用以书写软件需求定义,软件需求定义是软件功能需求和非功能需求的定义性描述。
软件功能需求刻画“做什么”,软件非功能需求刻画诸如功能性限制、设计限制、环境描述、数据预通信规程以及项目管理等。
功能性语言用以书写软件功能规约,软件功能规约是软件功能的严格而完整的陈述。
软件功能规约通常只刻画软件系统“做什么”的外部功能,而不涉及系统“如何做”的内部算法,因此,功能性语言通常又称为功能规约语言。
设计性语言用以书写软件设计规约。
软件设计规约是软件设计的严格而完整的陈述。
一方面,它是软件功能规约的算法性细化,刻画了软件“如何做”的内部算法;另一方面,它又是软件实现的依据从。
软件工程第01章
教学目的:1. 了解软件、软件危机等概念2. 掌握软件工程的定义、原理、目标和原则教学重点:软件工程的定义、原理、目标和原则教学难点:软件工程的目标和原则第一章软件与软件工程1.1 软件(Software)1.1.1 软件与软件的组成程序设计语言三种类型:1.机器语言、汇编语言:依赖于机器,面向机器2.高级语言:独立于机器,面向过程或面向对象3.面向问题语言:独立于机器,非过程式语言(4GL)文档(document)—一种数据媒体和其上所记录的数据。
文档记录软件开发活动和阶段成果,具有永久性,可供人或机器阅读。
文档可用于专业人员和用户之间的通信和交流;软件开发过程的管理;运行阶段的维护。
1. 软件的特点软件是逻辑产品,硬件是物理产品。
特点:(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
软件开发、设计几乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:1)纠错性维护—改正运行期间发现的潜伏错误;2)完善性维护—提高或完善软件的性能;3)适应性维护—修改软件,以适应软硬件环境的变化;4)预防性维护—改进软件未来的可维护性和可靠性。
(5)软件不会磨损和老化。
2. 软件的发展第一阶段——20世纪60年代中期以前,软件开发处于个体化生产状态。
在这一阶段中,软件还没有系统化的开发方法。
目标主要集中在如何提高时空效率上。
第二阶段——从20世纪60年代中期到70年代末期。
软件开发已进入了作坊式生产方式,即出现了“软件车间”。
软件开发开始形成产品。
到20世纪60年代末,“软件危机”变得十分严重。
第三阶段——从20世纪70年代中期到20世纪80年代末期。
软件开发进入了产业化生产,即出现了众多大型的“软件公司”。
在这一阶段,软件开发开始采用了“工程”的方法,软件产品急剧增加,质量也有了很大的提高。
软工第五版知识点总结
第一章:软件工程学概述1.1946年,世界上第一台电子计算机诞生,从宏观角度而言,计算机软件的发展主要经历了以下三个阶段:(1)第一阶段——程序设计阶段;(2)第二阶段——软件工程阶段;(3)第三阶段——软件过程阶段2 软件危机:2.1定义:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.2主要是两个方面的问题:如何开发软件──怎样满足对软件日益增长的需求如何维护软件──数量不断膨胀的已有软件2.3主要表现:对软件开发成本和进度的估计常常很不准确。
用户对为他们开发的软件往往不满意。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度太慢。
2.4产生软件危机的原因:1. 软件本身的特点不同于硬件: (1)软件是逻辑的,而不是物理的产品。
(2)软件是由开发或工程化而形成的,没有明显的制造过程。
(3)软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。
2. 软件人员的主观原因:开发与维护的方法不正确。
早期软件开发个体化。
至今,忽视软件需求分析的重要性,轻视维护;困境中的消极态度;2.5解决软件危机的途径:a正确认识软件,软件包括:程序是按事先设计的功能和性能要求编写的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。
b推广使用在实践中总结出来的开发软件的成功技术和方法,研究、探索更好更有效的技术和方法c开发和使用更好的软件工具d有必要的组织管理措施3.软件工程;指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到得最好得技术方法结合起来.软件工程的根本在于提高软件的质量与生产率,最终实现软件的工业化生产。
4.软件工程方法学A:传统方法学:生命周期方法学或结构化范型采用结构化技术(结构化分析、设计和实现)把软件生命周期划分成若干阶段:每一阶段结束前都必须进行技术审查和管理复审,试图以每一阶段的正确性和完整性来保证最终产品的质量。
软件工程_张海蕃_第五版PPT
Software Engineering
课程介绍及要求
用工程化的方法来开发软件
教学目标
为什么要学习这门课程
有助于正确理解和认识“软件”的概念及其特点 理解软件开发面临的问题和挑战
课程介绍和要求
掌握软件工程的原则、方法和思想来系统地开发软 件,尤其是复杂、庞大的软件的开发
了解和接触软件开发所需的各种技术手段
教学与考核
必修考查课,共48学时,其中理论38学 时,实验10学时 平时(作业、考勤)20%,实验20%, 试卷60%
典型案例1 例: 美国IBM公司在1963年至1966年开发的
IBM360机的操作系统。这一项目花了5000人一
年的工作量,最多时有1000人投入开发工作,
写出了近100万行源程序。......据统计,这个
2、解决危机的管理途径
20世纪80年代末,美国DoD和工业界开始认识到
管理的重要性
美国DoD的一项研究表明,70%的项目由于管理不善导 致难以控制进步、成本和质量; 进一步的研究发现:管理是影响软件项目成功开发的全 局性因素,而技术只影响局部 如果软件开发组织不能对软件项目进行有效管理,就不 能充分发挥软件开发方法和工具的潜力,也就不能高效 率地开发出高质量的软件产品
96年Ariane火箭发射失败,浮点数 转换时发生错误
24
1.1 软件工程产生的背景 b、软件的特征
成本高(1/2)
成本高(2/2)
产品 Lotus1-2-3 Version 3.0 Space Shuttle 1989 Lincoln Continental City Bank Teller machine IBM Chechout Scanner 代码行 400k 25.6M 83.5M 780k 90k 工 作 量 成本(百万) (人年) 263 22 35 150 58 12 1.8 13.2 3
软件工程第1章课件
王华 周丽娟 谭小慧 电子工业出版社
课程考核要求
课上认真听讲 课后认真总结 高质量完成课程设计
总 目 录(1)
第1章 软件工程学概述 第2章 可行性研究 第3章 需求分析 第4章 形式化说明技术** 第5章 总体设计 第6章 详细设计 第7章 实现
3. 软件开发范型以及在软件开发中典型的软件开 发模型;
4. 软件过程及分类; 5. 软件工程管理以及软件规模估算、项目成本估
算、软件复杂性度量等技术;
6. 软件质量、质量特征以及软件质量保证; 7. 能力成熟度模型(CMM)。
课程教材
软件工程导论(第5版) 张海藩 清华大学出版社
参考教材: 实用软件工程(第二版)
软件工程的目标与原则
软件工程需要解决的问题: 软件成本、软件可靠性、软件维护、软件生产率和 软件复用。
软件工程需要达到的基本目标: 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发、及时交付使用
软件工程原则
在软件开发过程中必须遵循的软件工程原则有:
所谓管理就是通过计划、组织和控制等一系列活动, 合理地配置和使用各种资源,以达到既定目标的过 程。
通常把在软件生命周期全过程中使用的一整套技术 方法的集合称为方法学(methodology),也称为范 型(paradigm)。在软件工程领域中,这两个术语的 含义基本相同。
软件工程方法学包含3个要素: 方法、工具和过程 其中,方法是完成软件开发的各项任务的技术方法, 回答“怎样做”的问题;工具是为运用方法而提供 的自动的或半自动的软件工程支撑环境;过程是为 了获得高质量的软件所需要完成的一系列任务的框 架,它规定了完成各项任务的工作步骤。
软件工程第1章习题
软件工程第1章例题分析与解答一、填空题1.软件与物质产品有很大的区别,软件是一种____逻辑___产品。
2.软件工程是一门综合性交叉学科,计算机科学着重于理论和原理,软件工程着重于___建造一个软件系统____。
3.概要设计主要是把各项功能需求转换成系统的__体系结构______。
4.最基本、应用广泛、以文档为驱动、适用于开发功能明确的软件项目生存期模型是__瀑布模型_____。
5.简单实用、应用广泛、技术成熟的开发方法是__结构化方法______。
二、选择题1.同一软件的大量软件产品的生产主要是通过( B )而得到。
A.研究B.复制C.开发D.研制2.作坊式小团体合作生产方式的时代是( C )时代。
A.程序设计B.软件生产自动化C.程序系统D.软件工程3.软件工程与计算机科学性质不同,软件工程着重于( C )。
A.理论研究B.原理探讨C.建造软件系统D.原理的理论4.将每个模块的控制结构转换成计算机可接受的程序代码是( A )阶段的任务。
A.编码B.需求分析C.详细设计D.测试5.软件生存周期中时间最长的是( D )阶段。
A.需求分析B.概要设计C.测试D.维护一、填空题答案1.逻辑2.建造一个软件系统3.体系结构4.瀑布模型5.结构化方法二、选择题答案1.B2.C3.C4.A5.D第1章自测题及参考答案一、名称解释1.软件2.文档3.软件工程4.软件生存周期5.软件工程过程6.软件生存周期模型7.软件开发方法8.软件工具二、填空题1.构成一个完整计算机系统的两部分是硬件与_____软件___。
2.程序设计时代的生产方式是___个体手工劳动_____。
3.软件工程涉及到几个学科,它是一门__综合性交叉___学科。
4.软件开发划分的各阶段任务尽可能独立,同一阶段任务性质尽可能_____相同___。
5.将软件生存周期各个活动规定为依线性顺序联接的若干阶段的模型是_瀑布_______模型。
6.喷泉模型是一种以用户需求为动力,以____对象___为驱动的模型。
软件工程简答题答案 第五版
软件工程简答题第一章绪论1.什么是软件危机?软件危机有什么表现?软件危机产生的原因是什么?答:所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的先有软件。
表现:(1)对于软件开发的成本和进度的估计很不准确。
(2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。
(3)开发的软件可靠性差。
(4)软件通常没有适当的文档资料。
(5)软件的可维护性差。
(6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
原因:软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,导致了软件危机。
2.简述软件的发展过程。
答:软件生产的发展划分为三个年代:(1)程序设计时代:这一时期,软件的生产主要是个体手工劳动的生产方式。
(2)程序系统时代:由于计算机的应用领域不断扩大,软件的需求也不断增长,软件由于处理的问题域扩大而使程序变得复杂,设计者不得不由个体手工劳动组成小集团合作,形成作坊式生产方式小集团合作生产的程序系统时代。
(3)软件工程时代:软件工程时代的生产方式是采用工程的概念、原理、技术和方法,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。
3.什么叫软件工程?软件工程是如何克服软件危机的?答:软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
为了克服软件危机,人们从其他产业的工程化生产得到启示,采用工程的概念、原理、技术和方法来开发和维护软件。
4.软件工程的目标是什么?软件工程有哪些原则?答:软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。
原则如下:抽象、模块化、信息隐藏、局部化、完整性、一致性和可验证性。
软件工程导论_第一章
2.
•
二、软件工程的特性
1. 软件工程关注于大型程序的构造
2. 软件工程的中心课题是控制复杂性 3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中是由具有一种文化背景 的人替具有另一种文化背景的人创造产品
• 1.2.2 软件工程的基本原理
• 软件的特点
– 脑力劳动、逻辑(不会时好时坏)、无损耗、研制成 本大,复制成本低
• 软件的分类
– 基于软件功能的划分
• 系统软件(操作系统、网络软件、编译程序、数据库管理系统、 编辑软件、系统检查与诊断软件等) • 应用软件 • 支撑软件
– 基于软件工作方式的划分
• • • • 实时处理软件 分时软件 交互式软件 批处理软件
• 软件的另一个定义: • 软件是计算机系统中与硬件相互依存的另 一部分,它是包括程序、数据及其相关文 档的完整集合。
– 程序是按事先设计的功能和性能要求编写的指 令序列(源程序,目标程序,脚本程序script) – 数据是使程序能正常操纵信息的数据结构; – 文档是与程序开发、维护和使用有关的图文材 料。
• 这个项目的负责人F. D. Brooks事后总结了他在组织开发过程中的沉 痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎, 越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工 作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣 扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360 操作系统的历史教训成为软件开发项目的典型事例为人们所记取。
1.3 软件生命周期
• 软件产品或系统一系列相关活动的全周期
软件工程导论----张海藩(第五版)课后习(考研专用).doc
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件工程(第五版)--习题及答案---第九章
一、判断题1、(×)测试是为了验证该软件以正确地实现了用户的需求。
2、(√)发现错误多的程序模块,残留在模块中的错误也多。
3、(×)白盒测试法是根据程序的功能来设计测试用例的。
4、(×)黑盒法是根据程序的内部逻辑来设计测试用例的。
5、(√)确定测试计划是在需求分析阶段制定的。
6、(√)集成测试计划是在概要设计阶段制定的。
7、(√)单元测试是在编码阶段完成的。
8、(√)集成测试工作最好由不属于该软件开发组的软件设计人员承担。
9、(√)为了提高软件的测试效率,测试工作需要有测试工具的支持。
10、(×)在做程序的单元测试时,桩模块比驱动模块容易编写。
二、选择题1、测试用例是专门为了发现软件错误而设计的一组或多组数据,它由(C)组成。
A、测试输入数据B、预期的测试输出数据C、测试输入与预期的输出数据D、按照测试用例设计方法设计出的数据2、测试和调试最大的不同在于(A)。
A、操作者的心理状态不同B、它们的行为取向不同C、使用的工具不同D、运用的方法不同3、一个成功的测试是(B)。
A、发现错误B、发现至今尚未发现的错误C、没有发现错误D、证明发现不了错误4、白盒法和黑盒法最大的不同在于(A)。
A、测试用例设计方法不同B、测试的任务不同C、应用的测试阶段不同D、基于的知识集不同5、单元测试阶段主要涉及(D)的文档。
A、需求设计B、编码和详细设计C、详细设计D、概要设计6、检查软件产品是否符合需求定义的过程称为(A)。
A、确认测试B、集成测试C、验证测试D、验收测试7、软件调试的目的是(B)。
A、发现错误B、改正错误C、改善软件的性能D、挖掘软件的潜能8、进行软件测试的目的是(A)。
A、尽可能多地找出软件中的错误B、缩短软件的开发时间C、减少软件的维护成本D、证明程序没有缺陷9、选择一个适当的测试用例,用于测试下面的程序,能达到判定覆盖的是(C)。
A、B、C、D、10、在进行单元测试时,常用的方法是(A)。
软件工程课件之第1章_软件工程学概述(第五版)(张海潘编著)
图1.1 引入同一变动付出的代价随时间变化的趋势
轻视软件维护。维护是极端艰巨复杂的工作,需要花 费很大代价。软件维护的费用占软件总费用的 55%~70%。软件工程学的一个重要目标就是提高软 件的可维护性,减少软件维护的代价。
1.1.3 消除软件危机的途径
对计算机软件有正确的认识。 认识到软件开发是一种组织良好、管理严密、 各类人员协同配合、共同完成的工程项目。 应该推广使用在实践中总结出来的开发软件 的成功技术和方法,并继续研究探索。 应该开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施( 方法和工具),又要有必要的组织管理措施。
三个时期: 八个阶段: 问题定义 可行性研究 需求分析
软件定义
软件生命周期
软件开发
概要设计 系统设计 详细设计 编码和单元测试 系统实现 综合测试
运行维护
软件维护
1. 问题定义 任务:问题是什么
通过对客户的访问调查,系统分析员扼要地写出关 于问题性质、工程目标和工程规模的书面报告。 经过讨论和必要的修改之后这份报告应该得到客户 的确认。
软件工程方法学3要素:
方法:是完成软件开发的各项任务的技术方法,回答 “怎样做”的问题; 工具:是为运用方法而提供的自动的或半自动的软件 工程支撑环境;如,CASE(Computer-Aided Software Engineering )工具 过程:需要完成的一系列任务的框架,它规定了完成 各项任务的工作步骤。
1950 年
1960 年
1970 年
1980 年
1990 年
2000 年
计算机软件发展的4个阶段
1.1.1 软件危机的介绍
软件工程第1章软件过程
软件工程第1章软件过程在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。
从手机上的各种应用程序,到企业的管理系统,软件无处不在。
而要开发出高质量、可靠且满足用户需求的软件,就离不开对软件过程的深入理解和有效管理。
那么,什么是软件过程呢?简单来说,软件过程就是指软件开发、运行和维护过程中所涉及的一系列活动、方法和实践。
它就像是一条指引软件开发的路径,规定了从需求分析到软件退役的各个阶段应该做什么、怎么做以及由谁来做。
软件过程的重要性怎么强调都不为过。
一个良好定义和管理的软件过程可以提高软件开发的效率和质量,降低成本和风险。
想象一下,如果在软件开发中没有明确的流程和规范,开发团队就可能像无头苍蝇一样乱撞,导致项目进度拖延、成本超支,甚至最终开发出的软件无法满足用户的需求。
软件过程通常包括多个阶段,每个阶段都有其特定的目标和任务。
首先是需求分析阶段,这是软件开发的起点。
在这个阶段,开发团队需要与用户进行充分的沟通,了解他们的需求和期望。
这可不是一件简单的事情,因为用户往往并不能清晰地表达自己的需求,或者他们的需求在开发过程中可能会发生变化。
因此,开发团队需要运用各种方法和技巧,如问卷调查、用户访谈、原型设计等,来挖掘和明确用户的真实需求。
需求明确之后,就进入了设计阶段。
在这个阶段,开发团队需要根据需求分析的结果,设计软件的架构和模块。
这就像是建造房屋时的设计图纸,决定了软件的整体结构和功能布局。
设计阶段需要考虑软件的可扩展性、可维护性、性能等诸多因素,以确保软件在未来能够适应不断变化的需求和环境。
接下来是编码实现阶段,这是将设计转化为实际代码的过程。
开发人员根据设计文档,使用选定的编程语言和开发工具,将软件的各个模块逐一实现。
在这个阶段,开发人员需要遵循编程规范和最佳实践,确保代码的质量和可读性。
编码完成后,就进入了测试阶段。
测试的目的是发现软件中的缺陷和错误,确保软件的质量和稳定性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图1.1引入同一变动付出的代价随时间变化的趋势
2016/4/6 信息工程学院信息科学系 9
了解产生软件危机的原因,澄清错误认识,建立 起关于软件开发和维护的正确概念,还仅仅是解决软 件危机的开始,全面解决软件危机需要一系列综合措 施。
2016/4/6
信息工程学院信息科学系
2016/4/6 信息工程学院信息科学系 22
10
1.1.4
消除软件危机的途径
为了消除软件危机,首先应该对计算机软件有一 个正确的认识。
应该推广使用在实践中总结出来的开发软件的成 功的技术和方法,并且研究探索更好更有效的技术和 方法,尽快消除在计算机系统早期发展阶段形成的一 些错误概念和做法。
应该开发和使用更好的软件工具。 总之,为了消除软件危机,既要有技术措施(方法 和工具),又要有必要的组织管理措施。软件工程正是 从管理和技术两方面研究如何更好地开发和维护计算 机软件的一门新兴学科。
维过程。
2016/4/6
信息工程学院信息科学系
18
正确运用面向对象方法学开发软件,则最终的软 件产品由许多较小的基本上独立的对象组成,而且大
多数对象都与现实世界中的实体相对应,因此,降低
了软件产品的复杂性,提高了软件产品的可理解性, 简化了软件的开发和维护工作。由于对象是相对独立 的实体,容易在以后的软件产品中重复使用,因此, 面向对象范型的另一个重要优点是促进了软件重用。 面用对象方法特有的继承性,进一步提高了面向对象 软件的可重用性。
2016/4/6
信息工程学院信息科学系
15
· 把所有对象都划分成类(Class)。每个类都定义 了一组数据和一组操作,类是对具有相同数据和相同 操作的一组相似对象的定义。数据用于表示对象的静 态属性,是对象的状态信息,而施加于数据之上的操
作用于实现对象的动态行为。
· 按照父类(或称为基类)与子类(或称为派生类) 的关系,把若干个相关类组成一个层次结构的系统(也
2016/4/6
信息工程学院信息科学系
1
退出
第一篇 软件工程与 软件过程
2016/4/6
信息工程学院信息科学系
2
第1章 软件工程
1.1 软件危机
1.2 1.3
2016/4/6
软件工程 小 结
信息工程学院信息科学系
3
1.1 软件危机
1.1.1 计算机系统的发展历程
所谓计算机系统就是指适当地组织在一起的一系
2016/4/6 信息工程学院信息科学系 20
本章力求使读者对软件工程的基本原理和方法学 有概括的本质的认识。生命周期方法学把软件生命周 期划分为若干个相对独立的阶段,每个阶段完成一些 确定的任务,交出最终的软件配置的一个或几个成分; 基本上按顺序完成各阶段任务,在完成每个阶段的任 务时采用行之有效的结构化技术和适当的辅助工具; 在每个阶段结束时都进行严格的技术审查和管理复审。 当软件规模较大或对软件的需求模糊易变时,采 用生命周 期方法学开发往往不能成功,近年来在许多 应用领域面向对象方法学已经迅速地取代了传统方法 学。面向对象方法有四个要点,可以用下列方程式概 括:
2016/4/6 信息工程学院信息科学系 7
1.1.3
产生软件危机的原因
在软件开发和维护的过程中存在这么多严重问题,
一方面与软件本身的特点有关,另一方面也和软件开
发与维护的方法不正确有关。
与软件开发和维护有关的许多错误认识和作法的
形成,可以归因于在计算机系统发展的早期阶段软件 开发的个体化特点。错误的认识和作法主要表现为忽 视软件需求分析的重要性,认为软件开发就是写程序 并设法使之运行,轻视软件维护等。
2016/4/6 信息工程学院信息科学系 21
面向对象方法=对象+类+继承+用消息通信 也就是说,面向对象方法就是既使用对象又使用类 和继承等机制,而且对象之间仅能通过传递消息实现 彼此通信。 如果仅使用对象和消息,则这种方法可以称为基 于对象的(Object-based)方法,而不能称为面向对象 的方法;如果进一步要求把所有对象都划分为类,则 这种方法可称为基于类的(Class-based)方法,但仍然 不是面向对象的方法。只有同时使用对象、类、继承 和消息的方法,才是真正面向对象的方法。 面向对象方法简化了软件的开发和维护工作,提 高了软件的可重用性。
2016/4/6 信息工程学院信息科学系 14
传统方法学也称为生命周期方法学或结构化范型。 当软件规模较大,或者对软件的需求是模糊的或随时间变化 的时候,使用结构化范型开发软件往往不成功;此外,使用传统 方法学开发出的软件,维护起来通常都很困难。概括地说,面向 对象方法具有下述四个要点。 · 把对象(Object)作为融合了数据及在数据上的操作行为的 统一的软件构件。面向对象程序是由对象组成的,程序中任何元 素都是对象,复杂对象由比较简单的对象组合而成。
列系统元素的集合,这些系统元素互相配合、相互协
作,通过对信息的处理而完成预先定义的目标。 迄今为止,计算机系统已经经历了四个不同的发 展阶段。
2016/4/6
信息工程学院信息科学系
4
60年代中期以前,是计算机系统发展的早期时代。 从60年代中期到70年代中期,是计算机系统发展 的第二代。 计算机系统发展的第三代从20世纪70年代中期开 始,并且跨越了整整10年。 在计算机系统发展的第四代已经不再看重单台计
2016/4/6 信息工程学院信息科学系 17
用面向对象方法学开发软件的过程,是一个主动 地多次反复迭代的演化过程。面向对象方法在概念和 表示方法上的一致性,保证了在各项开发活动之间的 平滑(无缝)过渡。面向对象方法普遍进行的对象分类
过程,支持从特殊到一般的归纳思维过程;通过建立
类等级而获得的继承性,支持从一般到特殊的演绎思
不能从外界直接对它的数据进行处理。也就是说,对 象的所有私有信息都被封装在该对象内,不能从外界 直接访问,这就是通常所说的封装性。面向对象方 法学的出发点和基本原则,是尽可能模拟人类习惯的 思维方式,使开发软件的方法与过程尽可能接近人类 认识世界解决问题的方法与过程,从而使描述问题的 问题空间(也称为问题域)与实现解法的解空间(也称为 求解域)在结构上尽可能一致。
2016/4/6
信息工程学院信息科学系
6
·软件产品的质量往往靠不住。
·软件常常是不可维护的。 ·软件通常没有适当的文档资料。 ·软件成本在计算机系统总成本中所占的比例逐 年上升。
· 软件开发生产率提高的速度,既跟不上硬件的
发展速度,也远远跟不上计算机应用迅速普及深入的 趋势。 以上列举的仅仅是软件危机的一些明显的表现, 与软件开发和维护有关的问题远远不止这些。
2016/4/6 信息工程学院信息科学系 19
1.3 小
结本章对计算机软件工程源自作了一个简短的概述。首先通过回顾计算机系统发展简史,说明开发软件的 一些错误方法和观念是怎样形成的。然后列举了这些 错误方法带来的严重弊病(软件危机),澄清了一些糊 涂观念。为了计算机系统的进一步发展,需要认真研 究开发和维护软件的科学技术。应总结计算机软件的 历史经验教训,借鉴其他工程领域的管理技术,逐步 使软件工程这门新学科发展和完善起来。
2016/4/6 信息工程学院信息科学系 12
1.2.2 软件工程的基本原理 1用分阶段的生命周期计划严格管理
2坚持进行阶段评审
3实行严格的产品控制
4采用现代程序设计技术
5结果应能清楚地审查 6开发小组的人员应该少而精 7承认不断改进软件工程实践的必要性
2016/4/6
2016/4/6 信息工程学院信息科学系 11
1.2 软件工程
1.2.1 什么是软件工程 概括地说,软件工程是指导计算机软件开发和维
护的工程学科。采用工程的概念、原理、技术和方法
来开发与维护软件,把经过时间考验而证明正确的管 理技术和当前能够得到的最好的技术方法结合起来, 以经济地开发出高质量的软件并有效地维护它,这就 是软件工程。
算机和程序,人们感受到的是硬件和软件的综合效果。
2016/4/6
信息工程学院信息科学系
5
1.1.2
软件危机的含义 软件危机是指在计算机软件的开发和维护过程中所遇到的一
系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有 的,实际上,几乎所有软件都不同程度地存在这些问题。 具体来说,软件危机主要有以下一些典型表现。 ·对软件开发成本和进度的估计常常很不准确。 ·用户对“已完成的”软件系统不满意的现象经常发生。
称为类等级)。在类等级中,下层派生类自动拥有上层
基类中定义的数据和操作,这种现象称为继承。
2016/4/6 信息工程学院信息科学系 16
· 对象彼此之间仅能通过发送消息互相联系。对
象与传统数据有本质区别,它不是被动地等待外界对 它施加操作,相反,它是进行处理的主体,必须向它
发消息请求它执行它的某个操作以处理它的数据,而
信息工程学院信息科学系
13
1.2.3
软件工程方法学
通常把在软件生命周期全过程中使用的一整套技 术的集合称为方法学(methodology),也称为范型 (paradigm)。在软件工程范畴中,这两个词的含义基 本相同。 软件工程方法学包括三个要素,这就是方法、工 具和过程。其中,方法是完成软件开发的各项任务的 技术方法,回答“如何做”的问题;工具是为方法的 运用提供自动的或半自动的软件支撑环境;过程是为 了获得高质量的软件所需要完成的一系列任务的框架, 它规定了完成各项任务的工作步骤。 目前使用得最广泛的软件工程方法学,分别是传 统方法学和面向对象方法学。