340 likes | 484 Views
《 软件工程 》. 教学对象: 2008 级遥感科学与技术 教师:陈江平( EMAIL:chenjp_lisa@163.com ) 教材: Ian Sommerville,《 软件工程 》( 第 8 版 ), 机械工业出版社 , 2009 。 参考书: 1 . 张海藩 ,《 软件工程导论 》( 第三版 ) ,清华大学出版社 , 1999 年。 2 . 林锐 ,《 软件工程思想 》, 非正式出版。 3.( 美 )Roger S.Pressman 著,梅宏译, 《 软件工程-实践者的研究方法 》 , 2002 年
E N D
《软件工程》 • 教学对象:2008级遥感科学与技术 • 教师:陈江平(EMAIL:chenjp_lisa@163.com) • 教材:Ian Sommerville,《软件工程》(第8版), 机械工业出版社,2009。 • 参考书:1.张海藩,《软件工程导论》(第三版),清华大学出版社,1999年。 2.林锐,《软件工程思想》,非正式出版。 3.(美)Roger S.Pressman著,梅宏译,《软件工程-实践者的研究方法》,2002年 4.Jeffrey著,肖钢译,《系统分析与设计方法》,机械工业出版社,2008年。
软件工程的相关网站: 1、http://www.csdn.net:程序员大本营:中国最大的开发者网络,为开发人员和相关企业提供全面的信息服务和技术服务。 2、http://www.sercenter.com,软件工程研究中心。 3、http://www.uml.net.cn,UML软件工程组织。 4、http://www.uml.com.cn,软件工程专家
课本结构介绍 • 教学日历介绍 • 教学方式 • 课间实习 • 考试考查方式
目标 • 什么是软件工程,为什么它很重要 • 软件工程入门的几个关键问题 • 道德和职业问题对于软件工程的重要性
内容 • 软件工程中的常见问题 • 职业和道德上的责任
软件工程 • 所有发达国家的经济发展都离不开软件. • 越来越多的系统由软件控制 • 软件工程关心的是专业软件开发的理论,方法和工具. • 在所有发达国家中,软件的开支占国民生产总值很大的一部分.
软件成本 • 软件成本往往是计算机系统成本的主导地位,在个人计算机上的软件成本往往大于硬件成本. • 软件的维护成本比开发成本要高. 对于寿命长的系统来说,维护成本往往是开发成本的几倍. • 软件工程关注的是最具成本效益的软件开发.
软件工程中的常见问题 • 什么是软件? • 什么是软件工程? • 软件工程和计算机科学有何区别? • 软件工程和系统工程有何区别? • 什么是软件过程? • 什么是软件过程模型?
软件工程中的常见问题 • 什么是软件工程的成本? • 什么是软件工程方法? • 什么是 CASE (Computer-Aided Software Engineering计算机辅助软件工程) • 什么是优良软件的特点? • 软件工程面临的主要挑战是什么?
什么是软件? • 软件是程序和所使程序正确运行所需的相关文档和配置信息. • 软件有可能是针对某一特定用户开发的,也有可能是面向一般市场开发的. • 软件产品有可能是 • 通用软件产品 – 为一系列不同用户开发的,在市场上公开销售的 如 PC软件Excel或者Word. • 定制软件产品 (客户软件产品) – 受特定的客户委托,由软件承包商专门为这类客户开发. • 新软件可以通过开发新的项目程序,配置通用软件系统或重用现有的软件来创建.
什么是软件工程? • 软件工程是一门工程学科,设计软件生产的各个方面. • 软件工程师既能恰当地应用理论、方法和工具,又能有选择地利用它们,即使在没有可用的理论和方法的情况下,也力求找出解决问题的方法.
软件工程和计算机科学之间的区别? • 计算机科学研究的是构成计算机和软件系统基础的有关理论和方法,而软件工程则是研究软件制作中的实际问题. • 计算机科学仍不能作为软件工程的坚实的基础.
软件工程和系统工程有何区别? • 系统工程研究由软件起主导作用、有关复杂系统的开发和进化的各个方面,包括软硬件开发,过程设计等. 软件工程是系统工程中的关于开发软件基础设施,控制,应用和系统数据库的部分. • 系统工程师参与了系统描述,体系设计,集成和部署.
什么是软件过程? • 软件过程是指制作软件产品的一组活动及其结果. • 软件过程的基本活动有: • 软件描述 – 客户和工程师定义所要生产的软件以及对其操作的一些约束 • 软件开发 – 软件得以设计和编程实现 • 软件有效性验证 – 软件经过检查以保证它就是客户所需要的 • 软件进化 – 软件随不同的客户和变化的市场需求而修改.
什么是软件过程模型? • 是从一特定角度提出的软件过程的简化描述. • 几种软件过程模型 • 工作流模型 – 活动的结果; • 数据流或活动模型 – 信息流; • 角色/动作模型 – 谁做什么. • 软件开发模型 • 瀑布型开发方法; • 迭代式开发方法; • 基于组件的软件工程.
什么是软件工程的成本? • 一般来说, 60%是开发成本, 40%是测试成本.对于一般的软件,进化成本往往超过开发成本. • 成本取决于正在开发的系统的类型和系统的属性,例如性能和系统可靠性等. • 成本分布取决于所使用的开发模型.
什么是软件工程方法? • 是软件开发的结构化方法,包括系统模型描述、规则、建议和过程指南等. • 模型描述 • 对要开发的系统模型和定义这些模型所使用的符号的描述; • 规则 • 系统模型总的使用约束; • 建议 • 对好的设计练习的建议; • 过程指南 • 要遵循的活动.
什么是CASE (Computer-Aided Software Engineering计算机辅助软件工程) • 软件系统是旨在为软件过程活动提供自动化支持. • CASE系统通常用于方法支持. • Upper-CASE • 支持需求和设计过程等早期活动的工具; • Lower-CASE • 支持诸如编程、调试和测试等后期活动的工具.
什么是优良软件的属性? • 软件除了为用户提供相应的功能和性能外,还需要有可维护性、可依赖性和有效性等产品特性. • 可维护性 • 软件能够不断进化以满足用户的需求变化; • 可依赖性 • 软件必须是可信赖的; • 有效性 • 软件不应该浪费系统资源; • 可用性 • 软件必须具备可用性,这就意味着,软件必须具备相似的用户界面和充分的说明文档.
软件工程所面临的主要问题? • 多样性、交付和信任. • 多样性的挑战 • 开发软件能够应付异构平台和执行环境的技术; • 交付上的挑战 • 开发能使软件交付更快的技术; • 信任的挑战 • 研究能说明软件可信的技术.
职业和道德上的责任 • 软件工程人员的工作不仅仅是技术的应用,还要承担很多责任. • 软件工程人员要想受人尊重,其行为就必须合乎道德,必须有责任心. • 道德行为不仅仅是遵守法律.
职业责任问题 • 保密 • 工程人员必须严格保守雇主或客户的机密,而不管是否签署了保密协议. • 工作能力 • 工程人员应实事求是地表述自己的工作能力,不应有意接受超出了自己能力的工作.
职业责任问题 • 知识产权 • 工程人员应当知晓控制专利权、著作权等知识产权使用的地方法律,必须谨慎行事,确保雇主和客户的知识产权受到保护. • 计算甲滥用 • 软件工程人员不应该用自己的技能滥用他人的计算机,滥用计算机有时对他人影响不大(如在雇主的计算机上玩游戏),但有时后果非常严重(传播病毒).
ACM/IEEE 职业道德标准 • 美国专业协会( ACM和IEEE )共同颁布了职业行为准则. • 成员在加入协会时要签署这些准则. • 本行为准则包括八项基本原则,针对包括软件工程行业的从业者、教育者、管理者、监督者、政策制定者、接受培训者和学生在内的职业软件工程人员.
道德准则 – 序言 • 序言 • 准则的简写版把对软件工程人员的要求作了高度抽象性的概括,较长版本中的条框把这些要求细化,并给出了实例,用以规范软件工程专业人员的工作方式,没有这些总体要求,所有的细节都是教条而又枯燥的,没有这些细节,总体要求就会变成空洞的高调。只有把二者结合起来,才能形成有机的行为准则. • 软件工程人员应当作出承诺,使软件的分析、描述、设计、开发、测试和维护等工作对社会有益且受人尊重。基于对公众健康、安全和福利的考虑,软件工程人员应遵守以下八条原则:
道德准则 – 原则 • 公众感 • 软件工程人员应始终与公众利益保持一致. • 客户和雇主 • 软件工程人员应当在于公众利益保持一致的前提下,满足客户和雇主的最大利益. • 产品 • 软件工程人员应保证他们的产品及其附件达到尽可能高的行业标准.
道德准则 – 原则 • 判断力 • 软件工程人员应具有公正和独立的职业判断力. • 管理 • 软件工程管理者和领导者应当拥护并倡导合乎道德的有关软件开发和维护的管理方法. • 职业感 • 软件工程人员应当弘扬职业正义感和荣誉感,尊重社会公众利益.
道德准则 – 原则 • 同事 • 软件工程人员应当公平地对待和协助每一位同事. • 自己 • 软件工程人员应当毕生学习专业知识,倡导合乎职业道德的职业活动方式.
道德困境 • 与高级管理人员政策的原则分歧. • 你的雇主以不道德的方式发布了一个安全关键系统,而该系统还没有完成测试. • 参与军事武器系统或核系统的开发.
要点 • 软件工程是一门工程学科,涉及软件生产的各个方面. • 软件产品由开发的程序及相关文档构成,软件产品的基本属性是可维护性、可依赖性、有效性和可接受性. • 软件过程由开发软件产品的一系列活动组成,基本的活动有:软件描述、开发、有效性验证和进化. • 软件工程方法是软件生产的组织方式,包括对软件工程的建议、使用的标记法、进行系统描述的规律和设计指南.
要点 • CASE 工具箱是一些软件系统,被设计成支持软件过程中的常规活动,如编辑设计图表、检查图表的连贯性、跟踪已经运行的程序测试等. • 软件工程人员对软件工程这一职业和社会负有责任,不应该只关心技术问题. • 职业协会颁布的行为准邪恶规定了一系列协会成员应该遵循的行为标准.