软件工程实践
DESCRIPTION
软件工程实践. 软件学院 高海昌 作业提交 [email protected] 课件下载 http://web.xidian.edu.cn/hchgao. 内容. 1. 概述 2. 软件过程和生命周期 3. 项目管理 4. 需求工程 5. 软件设计 6. 软件实现 7. 软件测试 8. 软件交付 考核 闭卷考试( 40%)+ 实践成果( 60%) 教材 谭庆平等著 《 软件工程实践教程 》 ,高等教育出版社, 2009 年第 1 版。. 内容. 参考书目 - PowerPoint PPT PresentationTRANSCRIPT
软件工程实践
Gao Haichang , Software School, Xidian University 2
内容内容 1. 概述 2. 软件过程和生命周期 3. 项目管理 4. 需求工程 5. 软件设计 6. 软件实现 7. 软件测试 8. 软件交付
考核 闭卷考试 (40%)+实践成果 (60%)
教材 谭庆平等著《软件工程实践教程》,高等教育出版
社, 2009年第 1 版。
软件工程实践
Gao Haichang , Software School, Xidian University 3
内容内容 参考书目
Roger S Pressman 著《 Software Engineering, A Practitioner’s Approach 》 4th Edition, 北京:机械工业出版社, 1999.
Shari Lawrence Pfleeger 著《 Software Engineering Theory an Practice 》 3rd Edition,北京:高等教育出版社, 2006.
孙家广主编《软件工程-理论、方法与实践 》 第一版,北京:高等教育出版社, 2005.
刘兵等编《软件工程实践教程》第一版,北京:机械工业出版社, 2009.
韩万江编《软件工程案例教程》第一版,北京:机械工业出版社, 2009.
软件工程实践
Gao Haichang , Software School, Xidian University 4
内容内容1. 概述
3. 软件项目管理
4. 软件需求分析
5. 软件设计
8. 软件交付
6. 软件实现
7. 软件测试
2. 软件过程模型软件工程基础知识回顾
为后续阶段以项目机制实施作知识准备
项目实施阶段,每个阶段均须形成报告
软件工程实践
Gao Haichang , Software School, Xidian University 5
实施实施 学生自由分组以形成团队,每组 3-6 人。 团队合作完成一个实际项目,每个学生完成相应
子任务。组建团队
完成案例
汇报总结
选择案例
软件工程实践
Gao Haichang , Software School, Xidian University 6
实践案例实践案例 1---1--- 课程注册管理系统课程注册管理系统 为某所高校的教务管理部门开发一个课程注册管
理系统。在每学期开学前,教务管理人员可利用该系统输入课程信息,设定课表(每门课的任课教师、上课地点和时间)。开学后,学生可以利用该系统查询课程和课表信息,在第一周内注册课程或撤销对课程的注册。
软件系统负责将学生所选课程的列表通知计费系统以确定学生应缴纳的选课费用。任课教师在学期内可随时查询选修所授课程的学生的信息,学生可随时查询课程信息、课表、本人所选课程列表,教务管理人员可随时查询所有信息。
软件工程实践
Gao Haichang , Software School, Xidian University 7
实践案例实践案例 2---2--- 机票预订管理系统机票预订管理系统 为某家机票预订服务商开发一个机票查询和预订
管理系统。该系统中的航班和机票信息由多家航空公司提供,客户可以通过电话或上网方式查询航班时刻表、机票可用信息、折扣信息,可以远程订票、退票、通过银行卡支付票款。客户分三类:金牌客户、银牌客户、普通客户。普通客户通过订票积分至一定的额度可以逐步升级为银牌客户、金牌客户。不同类别的客户所享受的折扣可以不同。该系统还必须按每日、每周、每月给出机票销售的统计分析报表。
软件工程实践
Gao Haichang , Software School, Xidian University 8
实践任务实践任务 1 、根据第二章(过程模型及生命期)所学内容,撰写所
开发项目的开发过程模型。 2 、根据第三章(项目管理)所学内容,编制所开发项目
的项目进度计划,以 GANTT 图方法呈现。 3 、根据第四章(需求分析)所学内容,撰写所开发的项
目的需求规格说明书。需求文档分两部分,第一部分( Definition ) , 第二部分( Specification )。
4 、根据第五章(软件设计)所学内容,撰写所开发的项目的设计说明书。包括:界面设计、体系结构设计、数据库设计三大类,可集中于一个文档。
5 、编码实现需要同学们到机房根据任务分工,各自实现分工模块,并完成集成测试。
6 、对开发的系统进行最终实地验收,并作项目总结。
软件工程实践
Gao Haichang , Software School, Xidian University 9
结果结果 任务 1 、 2 、 3 、 4 以电子文档的形式提交; 任务 5 实地验收 ;
任务 6 由各组长以 PPT 方式讲解汇报。
电子文档提交地址: [email protected]
软件工程实践
Gao Haichang , Software School, Xidian University 10
概述概述 IEEE 给软件下的定义:软件是计算机程序、规
程以及运行计算机系统可能需要的相关文档和数据。
2000 年中国软件产业收入达 590 亿 ;
…
2009 年中国软件产业收入达 9513 亿,同比增长25.6% ; 软件出口 185 亿美元,同比增长 14% 。
2010 年中国软件产业收入达 1.33 万亿,同比增长 31% ,占电子信息产业比重上升至 18% 。
2011 年中国软件产业收入达 1.84 万亿,同比增长 32.4%
软件工程实践
Gao Haichang , Software School, Xidian University
什么是软件什么是软件 ??
软件历史 第一台计算机
ENIAC, 46
晶体管计算机 IBM 7090, 58Software was free addition to hardware
集成电路计算机 IBM 360, 64Software was first priced, 69
软件工程实践
Gao Haichang , Software School, Xidian University
什么是软件什么是软件 ??软件系统的体积
1989 19991996
1.5M
700K
4 bit 8 bit 16 bit
Sof
twar
e Si
ze (
LO
C)
500K
1M
2M2.2M
1989 19991996
1.5M
700K
4 bit 8 bit 16 bit
Sof
twar
e Si
ze (
LO
C)
500K
1M
2M2.2M
Dev
elop
men
t P
erio
d (
year
)
1
0.5
Telephone Terminal (Cell Phone)
软件工程实践
Gao Haichang , Software School, Xidian University
什么是软件什么是软件 ?? 软件是一个集合,包含有:
(1) 指令(也可以说程序),执行后会提供想要的功能和性能 ,
(2) 数据,使得程序能够更加便利和充分的操作信息 (3) 文档,描述程序的操作和使用 .
例子 源码、对象程序、涉及文档、测试数据等等……
软件工程实践
Gao Haichang , Software School, Xidian University
什么是软件什么是软件 ??软件的特性 不可见性
软件产品很难去触摸、感觉或识别或者鉴定,是一种不真实存在于物理环境中的虚拟实体
逻辑性 软件产品的功能一般很难由人类来单独完成,或者说人
类完成的效率非常低下。例如邮件、文件系统、数据库、操作系统等
灵活性 软件产品很容易被改变和修改。保持其一致性是一件非
常重要的工作,但这种特性也为软件的重用提供了很好的支持,可以根据需求的变化而变化。
软件工程实践
Gao Haichang , Software School, Xidian University
什么是软件什么是软件 ??软件的特点 软件是一种逻辑实体,而不是具体的物理实体。因
而它具有抽象性 软件的生产与硬件不同,在它的开发过程中没有明
显的制造过程 在软件的运行和使用期间,没有硬件那样的机械磨
损,老化问题
软件工程实践
Gao Haichang , Software School, Xidian University
什么是软件什么是软件 ??软件的特点 软件的开发和运行常受到计算机系统的限制,对计
算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工艺的开发方式 软件本身是复杂的
实际问题的复杂性程序逻辑结构的复杂性
软件成本相当昂贵,涉及到社会因素
软件工程实践
Gao Haichang , Software School, Xidian University 17
概念概念 大中型软件项目的成功有赖于系统化的软件开发
方法学和有纪律的软件工程。 软件质量要素不仅包含正确性、可靠性、有效性
和可用性,也包含可理解性、可扩展性、可维护性。
用户优先 合理权衡 放眼全局 化繁为简
软件工程实践
Gao Haichang , Software School, Xidian University
什么是什么是““好的软件好的软件” ” ??质量术语 Error错误 : 人为的错误;例如出现了输入错误、操作失误的现象
Fault故障:错误的结果,在开发和维护中明显出现的。例如误操作删除了系统文件,导致了操作系统的崩溃。
Failure失败:违背了需要的系统行为。例如由于开发中的错误,导致出现了系统表现出的行为与需求不一致。
?!human error fault
failure
can lead to can lead to
软件工程实践
Gao Haichang , Software School, Xidian University
什么是什么是““好的软件好的软件”” ?? 好的软件工程一般都必须包含一个产生质量可靠的
软件产品的策略 什么是“质量” ?
产品的质量。软件产品本身的质量,例如产品的性能、功能、可靠、安全等角度
过程质量。指的是开发软件产品的过程是否有质量。例如开发团队的质量、人际沟通的效率、规程的规范性等等。 CMM就是衡量过程的质量。
产品在商业环境中的质量。更多的是其使用过程中用户的评价,投资回报等等。
软件工程实践
Gao Haichang , Software School, Xidian University
什么是什么是““好的软件好的软件”” ??产品本身的质量 用户的观点:人机界面友好的程度,易用性和是否是以用
户为中心的设计、产品的正确性等 开发者的观点:采用的技术是否成熟可靠?性能、可维护性、文档是否齐全、是否可测试等等
和产品质量标准相关的外部质量因素
软件工程实践
Gao Haichang , Software School, Xidian University21
Correctness
Reliability
Efficiency
Integrity
Usability
Maintainability
Testability
Flexibility
Portability
Reusability
Interoperability
Completeness
Traceability
ConsistencyAccuracy
Error toleranceExecution efficiency
Storage efficiencyAccess controlAccess auditOperabilityTraining
CommunicativenessSimplicityConciseness
InstrumentationSelf-descriptiveness
ExpandabilityGeneralityModularity
Software independenceMachine independenceCommunications commonality
Data commonality
软件工程实践
Gao Haichang , Software School, Xidian University
什么是什么是““好的软件好的软件”” ??
过程质量 软件产品的生产过程和其它工业界的产品的生产
过程也是类似的。生产过程被分为了很多个活动,一系列的活动组成了整个生产过程。生产过程中的活动均可能影响到最终的产品质量。可能存在的问题是 . 在何时何地可能找到特别的一类故障? 如何在开发的早期找到故障?最好是在产品出厂前。 如何建立一种容错机制,使得在故障变成失败之前使其发生的可能最小化?例如工业界的质量管理制度,质量员的存在等;
有没有一种活动可以在保障质量方面使得开发过程更加有效?质量保障活动。
软件工程实践
Gao Haichang , Software School, Xidian University
什么是什么是““好的软件好的软件”” ??过程质量 软件工程中的过程建模和过程改进活动
能力成熟度模型 (CMM)— 实际上也是一种过程指导方针 .
软件过程改进和能力测定模型 (SPICE) ISO9001 模型 统一过程模型 (RUP)
软件工程实践
Gao Haichang , Software School, Xidian University
什么是什么是““好的软件好的软件”” ??
商业环境中的质量 投资回报率 (ROI)
( 总利润 – 总成本 ) = ROI 总成本
通过调查,一般情况下,投资回报率的计算包括以下内容:
• 培训• 时间进度• 风险• 质量• 生产力
• 过程• 用户• 成本• 买卖成本等
软件工程实践
Gao Haichang , Software School, Xidian University
什么是什么是““好的软件好的软件”” ??各种因素对商业环境下质量的影响比例
Software process group
Quality group
Process
Internal R&D
Assessments
Materials
Hardware costs
Facilities
0% 10% 20% 30% 40% 50% 60% 70%
General
Documentation
SCE costs
General
Software costs
Eff
ort
Percent of interviewees
Dol
lars
• SCE--Software Capability Evaluation (软件能力评鉴 )
• R&D--Research and Development (研发 )
软件工程实践
Gao Haichang , Software School, Xidian University
如何获得如何获得““好的软件好的软件”” 系统方法 工程方法
软件工程实践
Gao Haichang , Software School, Xidian University
系统方法系统方法 项目在开发过程并不是处于一个真空当中 .
硬件 别的软件任务已经存在的数据库另外的计算机系统
指导自己开发的软件的边界是很重要的 . 项目包含的内容是什么? 什么是系统不包含的内容?需要很明确的确定下来
软件工程实践
Gao Haichang , Software School, Xidian University
系统方法系统方法系统中的元素: 活动和对象 对象和活动之间的关联,和系统边界 相关的系统
软件工程实践
Gao Haichang , Software School, Xidian University
系统方法系统方法确定活动和对象 确定活动 从活动中确定各种对象或者实体
并确定对象之间的关系 系统
确定系统的边界
软件工程实践
Gao Haichang , Software School, Xidian University
系统方法系统方法系统的例子
Boundary
呼吸系统中的实体 :颗粒物质氧气二氧化碳水氮气鼻子嘴气管支气管等
呼吸系统中的活动 :吸气过滤将空气和血液进行交换呼气
软件工程实践
Gao Haichang , Software School, Xidian University
系统方法系统方法相关系统 边界
一般情况下,没有系统是单独存在的 .
软件工程实践
Gao Haichang , Software School, Xidian University
系统方法系统方法
System boundary
ComputerMail room
Datevalidation
Calculation
Pay informationPay checks
Printing
工资发放系统的例子
软件工程实践
Gao Haichang , Software School, Xidian University
系统方法系统方法数据报表系统
数据管理系统
远程数据收集系统
针对远程数据的计算系统
从远程节点到中心节点的通信系统
软件工程实践
Gao Haichang , Software School, Xidian University
工程方法工程方法 构造
搭建房子 搭建软件
软件工程实践
Gao Haichang , Software School, Xidian University
工程方法工程方法建造房子 vs. 软件
• 决定和分析房子的各种需求• 产生并记录形成各种设计文档• 细节描述• 确定和设计单独房间的各种构件• 建造各种构件• 测试构件• 集成构件• 最后的修改• 持续的维护
• 需求分析和定义• 系统设计• 程序设计• 编写代码• 单元测试• 集成测试• 系统测试• 系统提交• 维护
软件工程实践
Gao Haichang , Software School, Xidian University 36
软件危机软件危机 软件危机主要表现在以下几个方面:
(1) 软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜。
(2) 软件存在着错误多、性能低、不可靠、不安全等质量问题。
(3) 软件维护极其困难,而且很难适应不断变化的用户需求和使用环境。
如何解决软件危机?软件工程!
软件工程实践
Gao Haichang , Software School, Xidian University 37
软件工程软件工程 1968 年在北大西洋公约组织( NATO )举行软件
可靠性的学术会议上正式提出“软件工程( Software Engineering )”的概念。软件工程是建立和使用一套合理的工程原则,以便获得经济的软件,这种软件是可靠的,可以在实际机器上高效的运行。 (Fritz Bauer, at the First NATO Conference on Software Engineering)
软件工程是一门交叉性的工程学科,重点研究如何以系统的、可控的、高效的方式开发和维护高质量软件的问题。
软件工程实践
Gao Haichang , Software School, Xidian University
什么是软件工程什么是软件工程 ?? 定义 :
软件工程是涉及软件产品的系统化生产和维护的技术性和管理性规则,软件产品应该在成本估计的范围内,准时的被开发和修改 . (Fairley, R., Software Engineering Concepts. New York: McGraw-Hill, 1985. )
软件工程是 : (1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件 . (2) (1) 中所述方法的研究 . (IEEE Std 610-1990 )
软件工程实践
Gao Haichang , Software School, Xidian University 39
软件工程软件工程 软件工程以关注软件质量为目标,包括过程、方法和工具等三个要素。其中,软件过程涉及开发软件产品的一组活动及其结果;软件工程方法为软件开发过程提供“如何做”的技术; CASE 工具为软件开发方法提供自动的或半自动的软件支撑环境,辅助软件开发任务的完成。
软件工程人员不应该只关心技术,应当对整个社会承担重要的责任,应当遵循本行业的职业道德规范,否则无法在这个行业中长久立足。
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程 总结:软件工程是涉及到软件产品所有方面的工程
化规则 .
软件工程师应该采用系统化和有组织的方法,使用合适的工具和技术来解决具体的问题,并考虑到开发的限制和可用的资源 .
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程问题的分析与合成
PROBLEM
Subproblem 1Subproblem 3
Subproblem 2Subproblem 4
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程问题的分析与合成
SOLUTION
Solution 1Solution 3
Solution 2 Solution 4
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程我们要解决问题,需要 方法或者技术:主要是产生结果的过程 工具:完成工作的工具和自动化系统,类似流水线
的东西,降低生产的难度 过程:如何解决工具和技术组合的方法? 范例:做事情的类型,也就是总结生产软件的过程模型
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程软件工程所处的位置 ?
COMPUTER SCIENCE
SOFTWAREENGINEERING
CUSTOMER
Theories
Tools andTechniques toSolve Problem
ProblemComputerFunctions
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程计算机科学和软件工程之间有何不同 ?
计算机科学关心的是理论和基础性的知识;软件工程关心的则是开发和提交有用软件的实践活动 .
计算机科学家解决的是计算机本身的问题,而软件工程师则是将计算机作为工具以生产有质量的软件 .
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程计算机科学和软件工程之间有何不同 ?
系统工程师关心的是基于计算机系统开发的所有方面,包括硬件、软件、和过程。软件工程则只是其中的一个部分,系统工程师关心的是开发软件基础、控制、应用和系统中的数据库 .
系统工程师关心的是系统说明、体系结构涉及、集成和开发 .
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程软件工程涉及到的人员: 客户 :
公司、组织、和为软件付费的人 .
开发者 : 公司、组织和为客户创建软件的人(包括管理者和测试
者) .
用户 : 真正使用该系统的人 .
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程软件工程涉及到的人员
CUSTOMER Sponsors systemdevelopment
USER
Usessystem
DEVELOPER
Buildssystem
Contractualobligation
$$$,needs
Software system
Needs
软件工程实践
Gao Haichang , Software School, Xidian University
软件工程软件工程 开发团队的成员 每个工程师一般只是擅长开发中的一个方面 .
需求分析员 程序员 测试人员培训师维护团队配置管理团队
软件工程实践
Gao Haichang , Software School, Xidian University 50
软件工程的目标软件工程的目标 软件工程的目标 :
(1) 支付较低的开发成本; (2) 达到要求的软件功能; (3) 获取较好的软件性能; (4) 开发的软件易于移植; (5) 需要较低的维护费用; (6) 能按时完成开发任务,及时交付使用; (7) 开发的软件可靠性高。
软件工程实践
Gao Haichang , Software School, Xidian University 51
软件工程的发展软件工程的发展 软件工程的发展主要经历了四个阶段 :
第一阶段:控制机器( 1956 - 1967 ); 第二阶段:控制过程( 1968 - 1982 ) 第三阶段:控制复杂性( 1983 - 1995 ) 第四阶段:开放式的软件工程( 1996-至今)
软件工程实践
Gao Haichang , Software School, Xidian University 52
软件工程的发展软件工程的发展
软件工程实践
Gao Haichang , Software School, Xidian University 53
软件工程的发展软件工程的发展
软件工程实践
Gao Haichang , Software School, Xidian University 54
软件工程的发展软件工程的发展
软件工程实践
Gao Haichang , Software School, Xidian University 55
软件工程的发展软件工程的发展
软件工程实践
Gao Haichang , Software School, Xidian University 56
软件工程知识体系软件工程知识体系 IEEE 的软件工程知识体系指南 (SWEBOK) 中界
定了软件工程的 11 个知识领域: 软件需求 Software requirement 软件设计 Software design 软件构件 Software construction 软件测试 Software testing 软件维护 Software maintenance 软件配置管理 Software configuration management
软件工程实践
Gao Haichang , Software School, Xidian University 57
软件工程知识体系软件工程知识体系 IEEE 的软件工程知识体系指南 (SWEBOK) 中界
定了软件工程的 11 个知识领域: 软件工程管理 Software engineering management 软件工程过程 Software engineering process 软件工程工具和方法 Software engineering tools and
methods 软件质量 Software quality相关学科知识领域件 Knowledge areas of the related
disciplines
软件工程实践
Gao Haichang , Software School, Xidian University 58
软件工程知识体系软件工程知识体系 11
软件需求知识域包括 7 个子领域: 软件需求的基本原则 需求过程 需求获取 需求分析 需求规格 需求确认 实践注意事项
软件工程实践
Gao Haichang , Software School, Xidian University 59
软件工程知识体系软件工程知识体系 22
软件设计知识域包括 6 个子领域: 软件设计的基本原则 软件设计的关键元素 软件结构和架构 软件设计质量分析和评估 软件设计的表达 软件设计策略和方法
软件工程实践
Gao Haichang , Software School, Xidian University 60
软件工程知识体系软件工程知识体系 33
软件构建包括 3 个子领域: 软件构建的基本原则 管理构建过程 构建注意事项
软件工程实践
Gao Haichang , Software School, Xidian University 61
软件工程知识体系软件工程知识体系 44
软件测试包括 5 个子领域: 软件测试的基本原则 测试级别 测试技术 测试相关的度量 测试过程
软件工程实践
Gao Haichang , Software School, Xidian University 62
软件工程知识体系软件工程知识体系 55
软件维护包括 4 个子领域: 软件维护的基本原则 软件维护中的关键问题维护过程维护技术
软件工程实践
Gao Haichang , Software School, Xidian University 63
软件工程知识体系软件工程知识体系 66
软件配置管理包括 6 个子领域:配置管理过程管理 软件配置标识 软件配置控制 软件配置状态统计 软件配置审计 软件版本管理和提交
软件工程实践
Gao Haichang , Software School, Xidian University 64
软件工程知识体系软件工程知识体系 77
软件工程管理包括 6 个子领域:初始和范围定义 软件项目规划 软件项目执行评审和评估 项目结束 软件工程度量
软件工程实践
Gao Haichang , Software School, Xidian University 65
软件工程知识体系软件工程知识体系 88
软件工程过程包括 4 个子领域: 过程实施和变更 过程定义 过程评估 过程和产品度量
软件工程实践
Gao Haichang , Software School, Xidian University 66
软件工程知识体系软件工程知识体系 99
软件工程工具和方法包括 2 个子领域: 软件工程工具 软件工程方法
软件工程实践
Gao Haichang , Software School, Xidian University 67
软件工程知识体系软件工程知识体系 1010
软件质量包括 3 个子领域: 软件质量基本规则 软件质量管理过程 实践注意事项
软件工程实践
Gao Haichang , Software School, Xidian University 68
软件工程知识体系软件工程知识体系 1111
相关学科知识领域包括 8 个子领域: 计算机工程 计算机科学 管理 数学 项目管理质量管理 软件人类工程学 系统工程