第一章软件工程导论(1)
(完整版)软件工程导论(第六版)张海藩课后习题部分答案
![(完整版)软件工程导论(第六版)张海藩课后习题部分答案](https://img.taocdn.com/s3/m/206aad4526fff705cc170ad9.png)
第一章1-1 什么是软件危机?是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1-3 什么是软件工程?是指导计算机软件开发和维护的一门工程学科。
1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
目前使用得最广泛的软件工程方法学(2种):1. 传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-6 什么是软件过程?它与软件工程方法学有何关系?z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。
软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。
适用中小型项目。
快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。
软件工程导论(共65张PPT)可编辑全文
![软件工程导论(共65张PPT)可编辑全文](https://img.taocdn.com/s3/m/49e0ee6c11661ed9ad51f01dc281e53a59025179.png)
– 学生选课系统 软件
Microsoft Visio; Rational Rose
高级程序语言 作业递交方式:
来信标题注明 :班级 、学号、姓名、章节
第1章 软件工程学概述
1.1 软件危机
软件危机的出现:60年代中期到70年代中期, 许多软件最终成为不可维护的,这就是软件危 机.
不能用象硬件替换部件的方式修复软件的故障 使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
出现了“软件作坊”,软件作为一种产品被广泛使用;
使用个体化开发方式;
软件的发展史_2
随着软件数量的增加及软件需求的日趋复杂, 维护难度与来越大,开发成本高,质量低 导致“软件危机”
➢相同点:都将软件开发划分为分析、设计、编码、 测试等阶段 ➢不同点:思想不同,方法不同。另外,传统软件 工程更关注功能模块,面向对象软件工程更关注对 象的抽取和设计
➢ 两类软件工程方法学没有绝对的替代关系
1.3软件生命周期
生命周期方法学
从时间角度对软件开发和维护的复杂问题进行分解,把软件生命 的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务, 然后逐步完成每个阶段的任务。
关注大型程序的构造 中心问题是控制复杂性 软件经常变化 开发效率非常重要 和谐地合作是开发软件的关键 有效地支持它的用户 具有一种文化背景的人替另一种文化背景的人
创造产品
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组成员应少而精 承认不断改进软件工程实践地必要性
软件工作涉及到很多社会因素。 由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙
软件工程导论第一章
![软件工程导论第一章](https://img.taocdn.com/s3/m/31024cc69ec3d5bbfd0a740d.png)
2013-7-4
liang@
6
软件的规模
类别 微型 小型 参加人员数 1 1 研制期限 1~4周 1~6月 产品规模(源程序行数) 0.5k 1k~2k
中型
大型 甚大型 极大型
2~5
5~20 100~1000 2000~5000
1~2年
2~3年 4~5年 5~10年
5k~50k
2013-7-4 liang@ 4
软件的特点
软件是一种逻辑实体,而非有形的系统元件
因而它具有抽象性,其开发成本和进度难以估算
软件的生产与硬件不同,在它的开发过程中没有 明显的制造过程
一旦开发成功只需复制即可使用,但维护工作量大
在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题
liang@ 10
Cutter Consortium在2002年的报告
2013-7-4
软件危机的典型表现
对软件开发成本和进度的估计常常很不准确
时常发生用户对“已完成的”软件系统不满意的现象
软件产品的质量不可靠 软件常常是不可维护的 软件通常没有适当的文档资料 软件开发生产率提高的速度,既跟不上硬件的发展速度,也
典型开发:编码:10%-20%;测试:40%-50% 软件产品的完整配置——程序、文档、数据
轻视软件维护
事实上,用于软件维护的费用占总费用的55-70% 开发每一行源代码耗资25美元,维护每一行源代码需要耗资1000美元
提高软件的可维护性,减少软件维护的代价
2013-7-4 liang@ 14
在类等级中,下层派生类自动拥有上层基类中定义的数据和操作——继承 (Inheritance)
软件工程导论_第1章
![软件工程导论_第1章](https://img.taocdn.com/s3/m/bc424f89ac51f01dc281e53a580216fc700a5325.png)
软件工程
7
王素红
中北大学电子与计算机科学技术学院
3. 软件经常变化 绝大多数软件都模拟了现实世界的某一部
分。现实世界在不断变化,软件为了不被很快 淘汰,必须随着所模拟的现实世界一起变化。 因此,在软件系统交付使用后仍然需要耗费成 本,而且在开发过程中必须考虑软件将来可能 的变化。
软件工程
8
王素红
中北大学电子与计算机科学技术学院
软件工程
6
王素红
中北大学电子与计算机科学技术学院
2. 软件工程的中心课题是控制复杂性 通常,软件所解决的问题十分复杂,以致
不能把问题作为一个整体通盘考虑。人们不得 不把问题分解,使得分解出的每个部分是可理 解的,而且各部分之间保持简单的通信关系。 用这种方法并不能降低问题的整体复杂性,但 是却可使它变成可以管理的。注意,许多软件 的复杂性主要不是由问题的内在复杂性造成 的,而是由必须处理的大量细节造成的。
中北大学电子与计算机科学技术学院
第1章 软件工程学概述
1.1 软件工程
一、为什么要学习软件工程? 软件开发技术限制 开发方法不规范 软件人员本身素质 在软件开发过程中存在着难以解决的
问题,因此研究出的软件产品不能够满足 要求,由此产生了软件危机。
软件工程
1
王素红
中北大学电子与计算机科学技术学院
为解决软件危机,解决开发过程中的高成 本、低质量,提出了“软件工程”。 软件工程的主要思想:
王素红
中北大学电子与计算机科学技术学院
5. 结果应能清楚地审查 软件产品不同于一般的物理产品,它是
看不见摸不着的逻辑产品。 软件开发人员(或开发小组)的工作进展情
况可见性差,难以准确度量,从而使得软件产 品的开发过程比一般产品的开发过程更难于评 价和管理。
《软件工程》第一章导论
![《软件工程》第一章导论](https://img.taocdn.com/s3/m/a98a8736195f312b3069a572.png)
《软件工程》软件工程导论软件工程产生的历史背景:时间:1968年原因:当时无法在预算内开发出高质量软件;软件开发者无法制定具体目标,无法实现预测所需的资源,无法实现客户的期望。
软件工程的重点既在软件,也在工程。
软件开发具有复杂性和多变性的特征。
软件产品必须随着终端用户需求和目标环境的变化而变化。
1.1 软件工程的失误软件工程失误主要包括:时间,接口,安全问题,拖延和超支,系统无法正常使用等。
产生失误的原因:软件系统本身的复杂性,功能复杂,涉及各个领域的人,开发周期长;软件项目的不断变化;开发者没有考虑偶发事件;开发者没有考虑用户主动误操作;管理失误。
1.2 什么是软件工程一、软件工程是一种建模活动。
建模即构建系统模型及应用域模型。
一个系统模型是对一个系统的抽象表示。
应用域模型是对现实世界系统中那些与在研问题相关的方面进行的描述,应用域模型可表达为一组相互依存的概念。
建模的前提是理解一个系统的运行环境;其次是理解所能构建的系统,并能评估不同的解决方案。
面向对象建模方法将应用域与解决方案域建模活动合二为一。
解决方案域就是应用域模型的一种转化。
开发软件就转化为找出一个解决最终用户问题的系统并将之描述为模型集合。
具体做法是首先将应用域建模为一组对象和关系,接着这一模型被系统用来表示它所处理的现实世界中的概念;其次解决方案域的概念也被建模为对象。
二、软件工程是一种解决问题的活动。
模型用于寻找一种可接受的解决问题的方法。
这种寻找方法受实验的驱动,并且通常依靠实验方法来评价各种可选方案的有点。
工程是一种解决问题活动。
包括一下5步:1.明确问题;2.分析问题;3.寻找解决方案;4.选定合适的解决方案;5.详细说明解决反案。
软件工程是一种工程活动。
面向对象的软件开发通常包括5种开发活动:需求获取、分析、系统设计、对象设计和实现。
在需求获取和分析阶段,软件工程师与客户把问题明确化并构建问题域模型。
在系统设计过程中,软件工程师分析问题,把它分成小块,并选择一些总体策略来设计系统。
软件工程导论 第一章
![软件工程导论 第一章](https://img.taocdn.com/s3/m/e8f9d0270242a8956aece4b6.png)
社会对新应用系统的需求超过了人力资源所能提供的 限度
软件工程的一个重要课题:寻求开发与维护软件更好 和更有效的工具
和谐地合作是开发软件的关键
软件必须有效地支持它的用户
必须仔细地研究用户,以确定适当的功能需求、可用 性要求及其他质量要求
软件开发不仅应该提交软件产品,而且应该写出用户 手册和培训材料,此外,还必须注意建立使用新系统 的环境。
传统方法学 面向对象的方法学
传统方法学(生命周期方法学)
采用结构化技术来完成软件开发的各项任务, 并使用适当的软件工具或软件工程环境来支持 结构化技术的运用。 把软件生命周期的全过程依次划分为若干个阶 段,然后顺序地完成每个阶段的任务。采用这 种方法学开发软件的时候,从对问题的抽象逻 辑分析开始,一个阶段一个阶段地进行开发。 从上而下,顺序地完成软件开发的各阶段任务。
目前,传统方法学仍然是人们在开发软件 时使用得十分广泛的软件工程方法学。这 种方法学历史悠久,为广大软件工程师所 熟悉,而且在开发某些类型的软件时也比 较有效,因此,在相当长一段时期内这种 方法学还会有生命力。
对用户要求没有完整准确的认识就匆忙着 手编写程序
越早开始写程序,完成它所需要用的时间 往往越长
所以......
围绕如何开发好一个软件人们提出了很多 理论,形成软件工程这样一个新领域
面向方面的编程 净室理论 极限编程 SOA架构 AJax ......
恰当的过程
问题定义,也就是确定要求解决的问题是 什么; 可行性研究,决定该问题是否存在一个可 行的解决办法; 需求分析,也就是深入具体地了解用户的 要求,在所要开发的系统(不妨称之为目标 系统)必须做什么这个问题上和用户取得完 全一致的看法。
(完整word版)软件工程导论(第6版)(word文档良心出品)
![(完整word版)软件工程导论(第6版)(word文档良心出品)](https://img.taocdn.com/s3/m/c73ac40e83c4bb4cf7ecd1d4.png)
第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。
2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。
5.软件通常没有适当的文档材料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。
软件配置:程序、文档和数据。
软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。
软件:是程序、数据及相关文档的集合。
程序:是能够完成预定功能和性能的可执行的指令序列。
数据:是使程序能够适当地处理信息的数据结构。
文档:是开发、使用和维护程序所需要的图文资料。
软件工程:指导计算机软件开发和维护的一门工程学科。
软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审。
3.实行严格的产品控制4.采用现代程序设计技术。
5.结构应能清楚的审查。
6.开发小组的人员应该少而精。
7.承认不断改进软件工程实践的必要性。
软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。
软件工程导论第一章
![软件工程导论第一章](https://img.taocdn.com/s3/m/43ae873b03768e9951e79b89680203d8ce2f6abd.png)
软件工程的发展经历了多个阶段,从早期的手工作坊式开发到结构化方法、面 向对象方法,再到现在的敏捷开发方法和DevOps等,不断推动着软件产业的快 速发展。
软件工程的研究对象与范围
研究对象
软件工程的研究对象包括软件开发过程中的各种技术、方法、工具和管理等方面 ,旨在提高软件开发的效率和质量,降低开发成本。
研究范围
软件工程的研究范围涵盖了软件开发的各个阶段,包括需求分析、设计、编码、 测试和维护等,同时也涉及到软件项目管理、软件质量保证和软件测试等方面。
软件工程的重要性
提高软件质量
通过采用先进的软件工程方法和工具,可以显著提高软件的质量,减 少软件中的缺陷和错误,提高软件的稳定性和可靠性。
降低开发成本
针对软件的最小可测试单元进行测试,确保每个单元的功能正 确无误。
将多个单元组合在一起进行测试,验证它们之间的接口和功能 是否正常。
对整个软件系统进行全面的测试,包括功能测试、性能测试、 安全测试等,确保软件满足需求和设计要求。
记录和管理测试过程中发现的缺陷,跟踪缺陷的修复进度和结 果,确保软件质量得到持续改进。
软件开发模型介绍
瀑布模型
瀑布模型是一种线性的软件开发模型,按照固定的顺序进行开发,每个阶段都有明确的输入和输出。它的优点是易于 理解和管理,但缺点是缺乏灵活性,难以应对需求变更。
螺旋模型
螺旋模型是一种迭代式的软件开发模型,强调风险分析和控制。它在每个迭代周期中都包括需求定义、风险分析、工 程实现和评审等步骤,适用于大型、复杂的软件项目。
将软件划分为独立的模块,降低 模块间的耦合度,提高代码的可 重用性和可维护性。
02
版本控制工具
使用版本控制工具(如Git)管理 代码,记录代码的变更历史,方 便团队协作和代码回溯。
软件工程导论1概述PPT课件
![软件工程导论1概述PPT课件](https://img.taocdn.com/s3/m/5c47373227d3240c8447ef8f.png)
1968年10月,北大西洋公约组织(NATO)的科学家在德 国召开的学术会议上正式提出了软件危机问题。
14
(2)软件危机 A.软件危机的表现 B.产生软件危机的原因 C.解决软件危机的途径
15
A.软件危机的表现
成本高
IBM 360 OS, 5000多人 年,耗时4年(1963- 1966),花费2亿多美元
美国空军:1955年软件占 总费用(计算机系统)的 18%,70年60%,85年 达到85%
美国全球军事指挥控制系统, 硬件1亿美元,软件高达 7.2亿美元
计算机软件和硬件费用比
90 80 70 60 50 40 30 20 10 0
60年代
80年代
16
计算机软件 计算机硬件
A.软件危机的表现
24
1.2 软件工程定义(1)
The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines. (1968- Fritz Bauer)
维护成本越来越高
55%到70%
维护带来的问题
13
软件的发展
早期 •面向批处理 •有限的分布 •自定义软件
第二阶段 •多用户 •实时 •数据库 •软件产品
第三阶段 •分布式系统 •嵌入“智能” •低成本硬件 •消费者的影响
第四阶段 •强大的桌面系统 •面向对象技术 •专家系统 •人工神经网络 •并行计算 •网路计算机
软件质量得不到保证
软件应用面的扩大:科学计算、军事、航空航天、工业控制、 企业管理、办公、家庭
软件工程导论习题答案
![软件工程导论习题答案](https://img.taocdn.com/s3/m/b19d8e7302768e9951e73895.png)
2.需求分析的基本任务是什么?
准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
3.怎样建立目标系统的逻辑模型?要经过哪些步骤?
建立目标系统的逻辑模型的过程也就是数据流图的分解过程。它的导出过程如图:
Hale Waihona Puke 4.什么是结构化分析?它的结构化体现在哪里?
结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
4.构成软件项目的最终产品:
应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?
软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
6.软件生存周期为什么划分成阶段?
(1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。
(2) 可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法。
(3) 使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别是提高了软件的可维护性。
结构化体现在将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联。
5.软件需求规格说明书由哪些部分组成?
组成包括:
(1) 引言:编写目的、背景说明、术语定义及参考资料等。
(2) 概述主要功能、约束条件或特殊需求。
(3) 数据流图与数据字典。
(4) 用户接口、硬件接口及软件接口。
软件工程导论第1章(第4版)
![软件工程导论第1章(第4版)](https://img.taocdn.com/s3/m/b347bf120812a21614791711cc7931b765ce7b1e.png)
软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。
软件工程导论第六版课后习题答案
![软件工程导论第六版课后习题答案](https://img.taocdn.com/s3/m/fd025a18302b3169a45177232f60ddccdb38e64a.png)
软件工程导论第六版课后习题答案第一章课后习题答案习题1.1答案:软件工程是使用工程化思维和方法来开发、维护和管理软件的一门学科。
它涵盖了软件开发的全过程,包括需求分析、设计、编码、测试、维护等各个阶段,以及与软件开发相关的项目管理、质量保证等方面。
习题1.2答案:软件是由计算机程序和相关文档组成的,而计算机程序是一组指令的集合,用来描述计算机在某种语言中执行的操作。
因此,软件和计算机程序是密切相关的,但并不完全等同。
软件是包含程序和相关文档的更广泛的概念,它包括了程序的编写、测试、维护等全过程。
习题1.3答案:软件工程的目标是提高软件的质量、可靠性、可维护性和可重用性。
通过使用工程化的方法和技术,软件工程可以使软件开发过程更加系统化、规范化,从而提高软件开发的效率和质量。
软件工程还关注与软件开发相关的项目管理和质量保证等方面,以确保软件能够按时、按预算、按要求的开发和交付。
习题1.4答案:软件工程的主要内容包括需求分析、软件设计、软件编码、软件测试和软件维护等方面。
需求分析是确定软件的功能和性能需求,为后续的设计和编码工作提供基础。
软件设计是根据需求分析的结果,制定软件系统的结构和组织方式,以便于后续的编码和测试。
软件编码是实现软件设计的过程,将设计的概念转化为具体的程序代码。
软件测试是验证软件的正确性和完整性的过程,通过各种测试方法和工具,发现并纠正软件中的错误。
软件维护是对软件进行更新、修复、优化等操作,以确保软件能够长期稳定地运行。
习题1.5答案:软件工程的活动包括项目管理、需求管理、设计管理、配置管理、质量管理等方面。
项目管理是对软件开发项目进行计划、组织和控制的活动,包括项目目标的设定、进度的控制、资源的分配等。
需求管理是对软件需求进行跟踪、分析和管理的活动,包括需求变更的管理、需求优先级的确定等。
设计管理是对软件设计进行管理和控制的活动,包括设计文档的编写、设计评审的组织等。
配置管理是对软件配置进行管理的活动,包括配置项的标识、配置变更的控制等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
活动
为完成某一具体目的而实施的行为,如项目中需求获取、 交付产品、周例会、月例会、评审会等
任务
可实施、可管理的具体工作,如本周完成JPEG解码库的 移植,本月完成1公里的高速公路建设
资源
人力 设备(硬件,软件等) 时间
第一章软件工程导论(1)
功能性需求
系统必须支持功能的规格说明
模块划分-把系统分解成为单个团队可实现的较小子系 统
相关对象的内聚 对外提供服务(接口)
第一章软件工程导论(1)
对象设计
准确描述对象及子系统接口 优化对象模型 完善类图及对象图
实现
用面向对象语言将之前的设计实现
测试
单元测试(代码是否与设计相符,开发人员完成) 集成测试(功能是否与需求相符,测试人员完成)
第一章软件工程导论(1)
例子
开发一个系统所需的必要前提
市场,心理学,行为学,目标人群, 专业知识等 例如HP的WebOS,手机研发出来后 发现运营商,应用开发者,用户观 念都跟不上,而且没有一个好的盈 利模式。
第一章软件工程导论(1)
1.3软件工程概念
第一章软件工程导论(1)
参与者
参与到项目中的所有人员
第一章软件工程导论(1)
1.1 软件工程的失误
iPhone 4手机每年元旦闹钟失灵 玉兔号故障 CSDN社区的密码泄露事件 软件设计、开发周期、安全…
第一章软件工程导论(1)
1.2 什么是软件工程
软件工程是一项创造性的活动 软件工程是一项事物基本原理指导的活动 软件工程是一项建模活动 软件工程是一项实现活动
旅客拿到了车票和找回的钱
如果系统超过一分钟没有结果则退回投入的钱
第一章软件工程导论(1)
分析
将需求分析中产生的 用例转化顺序图和状 态图
第一章软件工程导论(1)
系统设计
体系结构-选择构建系统的策略,完成软件/硬件部署图
定制硬件,还是普通PC加个触摸屏 Linux, Windows J2EE,.NET B/S,C/S
第一章软件工程导论(1)
2020/12/1
第一章软件工程导论(1)
导言
你们学过软件工程这门课吗? 软件工程这门课是讲什么的? 你们觉得软件工程这门课有意思吗?
第一章软件工程导论(1)
课程目的
体验软件工程各阶段的主要工作,特别注意吸取教训; 学会与他人合作,培养团队精神。
现在开始, 分组(每组3人左右)
角色ቤተ መጻሕፍቲ ባይዱ
分配了具体职责的参与者
客户---负责系统的高层需求 用户---系统最终的使用者 开发者---负责系统设计及开发 测试人员---负责系统的测试
第一章软件工程导论(1)
模型
在系统未完成之前对系统的各种抽象表示
硬件如房屋设计图,水电布线图 软件如类图,对象图,序列图,活动图
系统
需要完成的系统
文档
操作手册(可交付) 规格说明(可交付) 需求、分析、状态报告(内部工作产品) 可运行程序(可交付) 代码(可交付,内部工作产品)
播放器具有在线听歌的功能 相机具有实时录像的功能 汽车具有ABS防抱死功能
非功能性需求
是对系统运行的一些约束,指导着系统如何去实现
用户点击后反馈时间不得超过0.3秒 界面针对25岁以下群体设计 并发访问量有10万
第一章软件工程导论(1)
1.4 软件工程开发活动
需求获取 分析 系统设计 对象设计 实现 测试
第一章软件工程导论(1)
1.5管理软件开发
沟通
最关键,最耗时的活动
约定俗成:UML图,文档模板,会议记录模板,统一术语。 交流:月例会,周例会,关键技术讨论
配置管理
代码版本维护,项目文档管理,通信系统(邮件,IME, FTP)
项目管理
制定计划,里程碑,阶段性验证总结
第一章软件工程导论(1)
1.6思考
一般问题求解
----
软件工程
明确问题
-----
需求获取
分析问题
-----
需求分析
寻找解决方案
-----
系统设计
选定合适的解决方案 -----
对象设计
执行方案
-----
实现
第一章软件工程导论(1)
基本原理
了解系统及其功能是不够的,还 需要了解背后的原理
洗手台设置高低两个位置 手机上的home键 IC卡电话机非常结实 …….
解答域模型
从开发者的角度去描述的系统,评估具体实现时不同的方案
采用定制的硬件还是基于普通pc 采用Windows还是Linux 采用j2ee技术还是.net BS架构还是CS架构
面向对象的方法将应用域建模和解答域建模合二为一
采用UML对应用域及解答域建模,然后将其转化为具体实现
第一章软件工程导论(1)
为腾讯公司设计一部手机,你怎么考虑这个问题? 下列描述的基本原理是什么?
第一章软件工程导论(1)
1.2 什么是软件工程
建模
对系统抽象的表示,可以了解未知的系统和领域
恐龙骨骼,原始人壁画、青铜器
第一章软件工程导论(1)
应用域模型 从用户角度去描述的系统
有什么功能(功能性需求) 如何操作(交互设计) 性能如何(非功能性需求) 界面美观吗(界面设计)
第一章软件工程导论(1)
第一章软件工程导论(1)
第一章软件工程导论(1)
需求获取
客户和开发者定义系统目标,其结果是使用参与者和用 例来描述系统,包括功能性需求和非功能性需求
第一章软件工程导论(1)
用例名称 参与者 事件流
入口条件 出口条件 质量需求
购买单程车票
旅客
1.旅客选择始发地和目的地 2. 售票系统显示价格 3. 旅客投入不少于价格的钱 4. 售票系统输出指定车票并找回多余的钱 旅客站到售票系统前
第一章软件工程导论(1)
组长责任
组长负责:组织、分工、控制进度;
动调整权;
对每个组员成绩有 5 分浮
组长奖罚:引起过半数组员不满,改选组长; 带领全组顺利完成任务,总
成评+绩5。评定:课堂发言40,项目60分
第一章软件工程导论(1)
时间(进度)安排
1-4周 5周 6-7周 8-9周 10-11周 12-13周 10-16周 17周 18周
项目调研,工具学习 确定各小组的项目内容 需求设计演讲 分析设计演讲 系统设计演讲 对象设计演讲 编码 测试设计及结果演讲 系统交付,进行总结
第一章软件工程导论(1)
参考教材
面向对象软件工程-使用UML、模式与JAVA,第三版清 华大学出版社 OBJECT-ORIENTED SOFTWARE ENGINEERING Using UML,Patterns,and Java,Third Edition