软件工程第一章概述
- 格式:docx
- 大小:22.73 KB
- 文档页数:9
软件工程概论知识点汇总软件工程概论知识点汇总第一章软件工程概述1. 软件工程定义及概念2. 软件工程的历史发展3. 软件开发生命周期模型a. 瀑布模型b. 迭代模型c. 增量模型d. 螺旋模型e. 敏捷开发模型第二章需求分析与管理1. 需求工程的基本概念2. 需求获取与分析方法3. 需求规格说明书4. 需求变更与配置管理第三章软件设计与架构1. 结构化设计方法2. 面向对象设计方法3. 设计模式及应用4. 软件架构设计与选择第四章软件编码与测试1. 编码规范与风格2. 测试方法与策略3. 单元测试与集成测试4. 软件质量保证与评估第五章软件项目管理1. 软件项目组织与人力资源管理2. 软件项目计划与进度管理3. 风险管理与配置管理4. 软件项目质量管理第六章软件维护与演化1. 软件维护的类型与阶段2. 软件维护的过程与方法3. 软件重构与演化第七章软件工程的理论与方法1. 软件需求建模方法2. 软件设计原则与方法3. 软件度量与评估方法4. 软件工程的形式化方法第八章软件工程的伦理与职业道德1. 软件工程的伦理问题2. 软件工程师的职业道德要求3. 软件工程师的专业素养与发展本文档涉及附件:________本文所涉及的法律名词及注释:________1.著作权法:________保护软件的著作权,禁止未经授权的复制、修改、发布等行为。
2.商标法:________保护软件的商标权,禁止他人未经授权使用相同或相似的商标。
3.专利法:________保护软件的发明专利权,禁止他人未经授权使用相同或相似的发明。
4.合同法:________规定软件开发过程中的合同签订与履行等事项。
第一章软件工程学概述第一节软件危机1.为了消除软件危机,20世纪60年代后期形成了新学科:计算机软件工程学。
2.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(这些问题不是不能运行的软件才仅仅具有的,几乎所有的软件都不同程度存在这些问题。
)3.软件危机包含两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
4.产生软件危机的原因(page4—图1.1)1.一方面与软件本身的特点有关2.另一方面也和软件开发与维护的方法不正确有关。
5.软件不同于一般程序,它的一个显著特点是:“规模庞大”。
6.软件开发流程:1. 问题定义:(确定要求解决的问题是什么)2. 可行性研究:(决定该问题是否存在一个可行的解决办法)3. 需求分析:(深入具体的了解用户需求)进入开发时期:对软件设计概要设计详细设计编写程序(全部工作量10%—20%)测试交付使用7.软件产品的配置:包括:程序、文档、数据8.软件危机的一些典型表现:1.对软件开发成本和进度的估计常常不准确2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住4.软件常常是不可维护的5.软件通常没有适当的文档资料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
第二节软件工程1.软件工程定义软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2. 软件工程方法学包含3个要素:方法、工具和过程。
3. 软件工程方法学: 1. 传统方法学2. 面向对象方法学4. 面向对象方法学的4个特点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2)把所有的对象都划分成类(class)。
(3)按照父类(基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统(也成为类的等级)。
《软件工程教案》PPT课件第一章:软件工程概述1.1 软件工程的定义解释软件工程的含义和目的强调软件工程的重要性和应用范围1.2 软件工程的基本原则介绍软件工程的基本原则,如模块化、抽象化、逐步求精等解释这些原则在软件开发中的应用和意义1.3 软件工程的发展历程概述软件工程的发展历程和重要里程碑介绍软件工程的发展趋势和未来挑战第二章:软件需求分析2.1 需求分析的重要性强调需求分析在软件开发中的作用和必要性解释需求分析的目标和基本概念2.2 需求收集和分析方法介绍需求收集和分析的方法和技术,如访谈、问卷调查、用例分析等强调有效需求分析和需求管理的关键因素2.3 需求规格说明书编写介绍需求规格说明书的结构和内容强调需求规格说明书的重要性和在软件开发中的作用第三章:软件设计3.1 软件设计的基本概念解释软件设计的含义和目标强调软件设计的重要性和在软件开发中的作用3.2 软件设计方法和工具介绍软件设计方法和工具,如结构化设计、面向对象设计、设计模式等强调选择合适的设计方法和工具的关键因素3.3 软件设计文档编写介绍软件设计文档的类型和内容强调软件设计文档的重要性和在软件开发中的作用第四章:软件实现4.1 软件实现的基本概念解释软件实现的含义和目标强调软件实现的重要性和在软件开发中的作用4.2 编程语言和工具介绍常用的编程语言和开发工具强调选择合适的编程语言和开发工具的关键因素4.3 代码质量和编程规范强调代码质量和编程规范的重要性介绍代码质量和编程规范的评估和实施方法第五章:软件测试5.1 软件测试的基本概念解释软件测试的含义和目标强调软件测试的重要性和在软件开发中的作用5.2 测试方法和策略介绍常用的测试方法和策略,如黑盒测试、白盒测试、集成测试等强调选择合适的测试方法和策略的关键因素5.3 测试用例设计和测试执行介绍测试用例设计和测试执行的方法和技巧强调测试用例的重要性和在软件测试中的作用第六章:软件维护6.1 软件维护的基本概念解释软件维护的含义和目的强调软件维护的重要性和类型,如改正性维护、适应性维护等6.2 软件维护的挑战和策略介绍软件维护所面临的挑战和问题强调有效的软件维护策略和方法6.3 软件维护过程和工具介绍软件维护的过程和阶段介绍常用的软件维护工具和技巧第七章:软件项目管理7.1 软件项目管理的基本概念解释软件项目管理的含义和目标强调软件项目管理的重要性和在软件开发中的作用7.2 软件项目管理的过程和活动介绍软件项目管理的过程和活动,如项目规划、监控、沟通等强调项目管理人员和团队的角色和职责7.3 软件项目风险管理和质量保证介绍软件项目风险管理和质量保证的方法和技巧强调风险管理和质量保证在软件项目管理中的重要性第八章:软件工程标准和法规8.1 软件工程标准的基本概念解释软件工程标准的含义和目的强调软件工程标准的重要性和应用范围8.2 主要的软件工程标准和组织介绍主要的软件工程标准和组织,如IEEE、ISO等强调这些标准和组织对软件工程发展的影响8.3 软件工程法规和伦理介绍软件工程法规和伦理的相关内容强调软件工程师的职业责任和伦理道德第九章:软件工程工具和技术9.1 软件工程工具和技术的分类介绍软件工程工具和技术的分类及作用强调选择合适的工具和技术的关键因素9.2 建模工具和技术介绍常用的建模工具和技术,如UML、ER图等强调建模在软件工程中的重要性和应用9.3 软件开发环境和集成开发工具介绍软件开发环境和集成开发工具的基本概念强调集成开发工具在软件工程中的作用和优势第十章:软件工程前沿技术10.1 软件工程前沿技术的概述介绍软件工程前沿技术的研究方向和发展趋势强调关注前沿技术对软件工程师的重要性10.2 和机器学习在软件工程中的应用介绍和机器学习的基本概念强调这些技术在软件工程中的潜在应用和挑战10.3 软件工程与其他领域的交叉融合介绍软件工程与其他领域的交叉融合,如生物学、心理学等强调跨学科研究对软件工程发展的影响和意义重点和难点解析重点环节1:软件工程的基本原则和原则在软件开发中的应用解析:软件工程的基本原则是软件工程学的核心,理解并掌握这些原则对于软件开发至关重要。
第一章软件工程概述第一章软件工程概述1.1软件危机1.1.1软件危机的介绍1)软件危机在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机的典型表现:(2)用户对“已完成的”软件系统不满意的现象经常发生。
(3)软件产品的质量往往靠不住。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入趋势。
1.1.2产生软件危机的原因软件本身特点:缺乏可见性,在运行之前往往难以衡量,质量也难以评价不会因为长期使用而用坏,软件维护通常意味着修正或修改原来的设计,较难维护。
规模庞大,需分工合作,如何保证每个人的工作合在一起是极端复杂的问题。
软件开发与维护的方法不正确产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。
软件生命周期:一个软件从定义、开发、使用和维护直到最早被废弃。
软件产品必须由一个完整的配置组成(程序、文档、数据)1.1.3消除软件危机的途径正确认识计算机软件认识到软件开发是一个协同配合、共同完成的工程项目并吸取经验。
推广使用已总结的开发软件成功的技术和方法开发使用更好的软件工具1.2软件工程的介绍软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的基本原理和方法第一章:软件工程的概述软件工程是一种系统化、规范化、可量化的方法论,用于开发和维护高质量的软件系统。
软件工程作为一种新兴的领域,涉及到许多方面,包括需求分析、设计、开发、测试和维护等。
它的任务是通过管理和组织过程,使软件开发者更加有效地开发软件。
第二章:软件开发方法软件开发方法主要包括瀑布模型、原型模型、迭代模型、增量模型和敏捷开发模型等。
其中瀑布模型是最常用的方法之一,它将软件开发过程划分为多个阶段,每个阶段依次进行。
相比之下,敏捷开发更加注重迭代和交互式开发。
第三章:需求分析需求分析是软件开发的第一步,它的任务是定义和理解用户对软件的需求。
需求分析的过程一般可以分为需求获取、需求分析和需求说明三个步骤。
在这个阶段,开发人员需要与用户沟通,了解他们的需求和期望,并制定一个详细的需求规格说明书。
第四章:软件设计软件设计是软件开发的关键步骤之一,它的任务是将软件需求转化为软件设计方案。
在软件设计过程中,开发人员需要考虑系统的整体结构和组成部分、功能需求、性能需求等方面的问题,以及软件维护和升级等方面的需求。
第五章:软件测试软件测试是为了验证软件的正确性、完整性、可靠性和健壮性而进行的。
软件测试的过程一般包括单元测试、集成测试、系统测试和验收测试等。
在进行软件测试时,需要制定测试计划和测试用例,以及测试过程的监控和管理。
第六章:软件维护软件维护是软件生命周期中最长的阶段,也是最具挑战性的阶段之一。
软件维护主要包括修改、升级、修复和优化等各种活动,以确保软件系统持续运行并满足用户需求。
第七章:软件工程的质量管理软件工程的质量管理主要包括软件质量保证和软件质量控制两个方面。
软件质量保证是在软件开发的过程中,通过规范化、标准化、自动化等措施来减少软件缺陷和提高软件质量的一系列活动。
软件质量控制则是在软件开发和维护的过程中,通过测试和质量度量等手段来监控和控制软件质量的一系列活动。
结论:软件工程作为现代信息技术领域的核心领域之一,其基本原理和方法对于软件开发和维护具有重要意义。
软件工程复习纲要第一章、概述1、软件危机的概念与主要原因(1)软件危机是指在计算机软件开发与维护时所遇到的一系列问题。
(2)软件危机产生的原因:软件规模、方法、技术、软件开发人员;客观:规模,环境,需求变化;主观:开发技术,管理。
✓软件产品规模庞大,开发与维护带来客观困难✓软件使用同期相对较长,期间可能出现开发没料到的问题,需要与时维护✓软件开发技术落后,生产方式与开发工具落后✓软件开发人员忽视软件需求分析的重要性,轻视软件维护2、软件、软件工程、软件工程学的概念(1)软件是指计算机程序与其有关的数据与文档。
(2)软件工程(software engineering)是计算机软件开发、运行、维护与隐退的系统方法;是指导计算机软件开发与维护的工程学科;软件工程的目标是在规定的时间、开发费用内,开发满足用户需求的高质量的软件。
(3)软件工程学的主要内容是软件开发技术(包含软件工程方法学、软件工具与软件开发环境)与软件工程管理(包含软件工程经济学与软件管理学)。
更多内容请见P.4;3、软件生命周期与生命周期各阶段的任务(1)软件生命周期指从设计软件产品开始到产品不能使用为止的时间周期。
包括:定义,开发,使用,维护,淘汰。
(2)软件生命周期各阶段的任务✧软件计划、软件开发与软件运行维护三个时期。
✧软件计划时期:问题定义、可行性研究、需求分析✧软件开发时期:软件概要设计、软件详细设计、软件实现、综合测试等阶段。
✧软件运行维护时期:需要不断地进行维护,使软件持久满足用户需要4、软件开发模型的几种模型与各模型的特征(1)瀑布模型(Waterfall Model) :(规范的、文档驱动方法。
开发阶段按顺序进行,适合需求分析较明确、开发技术较成熟的情况。
)特点:阶段间具有顺序性与依赖性;推迟实现编码;质量保证。
(2)快速原型模型:(快速原型系统让用户试用并收集用户意见。
获取用户真实需求。
)特点:软件产品的开发基本上是线性顺序进行的;能减少软件的总成本,缩短开发周期。
第一章软件工程概述一、软件的定义和特性(P2—P3)定义:软件=程序+数据+文档程序:按照事先设计的功能和性能要求执行的指令或语句序列数据:程序能正常操纵信息的数据结构文档:描述程序操作和使用的文档特性:(1)软件是一种逻辑实体,具有抽象性,不是一般的物理实体;(2)软件的成产与硬件存在某些相同点,但有根本上的不同,软件开发是人的智力的高度发挥,而不是传统意义上的制造,它更依赖于开发人员的素质,智力,人员和组合,合作和管理;(3)软件维护与硬件维修有着本质的差别,软件维护没有硬件维护那样有可替换的标准零件;(4)软件在运行和使用期间没有硬件那样的机械磨损,老化问题,但存在退化问题;(5)基于构件的开发方法由于其自身的特点越来越受到人们的重视,这些技术可以减少开发时间、提高质量,并提高复用水平。
* 掌握P4图1-2(b)软件失效率曲线二、计算机软件的发展经历了几个阶段?各有何特征?(P1—P2)共经历了四个阶段特征:第一阶段——程序规模小且主要采用个体工作方式,开发的系统大多采用批处理技术第二阶段——引入人机交互的概念,实时系统出现,产生了第一代数据库管理系统,程序编制采用了合作的工作方式,出现了早期的软件危机第三阶段——分布式系统出现,嵌入式系统得到广泛应用,低成本硬件第四阶段——强大的桌面系统和计算机网络迅速发展时期,面向对象技术得到广泛应用,人工智能技术和专家系统开始应用于软件。
三、什么是软件危机?其产生的原因是什么?定义:软件危机是指由于落后的软件生产方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
(P4)原因:(P5)(1)用户对软件需求的描述不准确、不全面,甚至有错误,以及在开发过程中,不断提出或者修改需求;(2)用户和开发人员对软件需求的理解存在差异,导致所开发的软件产品和用户需求不一致;(3)大型软件项目需要组织一定的人力共同完成,各类人员的信息交流不及时、不准确,有时还可能产生误解,软件开发人员对大型软件缺少开发经验,管理人员缺少相应的管理经验;(4)软件开发人员不能有、独立自主的处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误;(5)开发技术落后,缺乏有效的方法学和工具方面的支持,过分依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化(6)软件产品的特殊性和人类智力的局限性,导致人们无法处理“复杂问题”,因为软件是逻辑产品,软件开发进展情况较难衡量、软件开发质量难以评价、管理和控制软件开发过程相当困难。
软件工程第一章概述第一章:概述目标:什么是软件工程,为什么它很重要;开发不同类型的软件系统可能需要不同的软件工程方法;道德和职业问题对于软件工程的重要性;介绍3个不同类型的软件系统,这3个系统将作为贯穿全书的例子;1.1专业化软件开发一.对于软件工程的一些常见问题1.什么是软件?计算机程序和相关文档。
软件产品可针对特定客户开发或为通用市场开发。
2.什么是优良软件的特点?好的软件应具有用户所需的功能与性能,而且应该可维护,可靠,可用。
3.什么是软件工程?软件工程师关于软件生产的各个方面的工程学科。
4.什么是基本的软件工程活动?软件描述,软件开发,软件验证以及软件进化。
5.软件工程和计算机科学有何区别?计算机科学侧重理论和基础,而软件工程则侧重于软件开发和交付的实际活动。
6.软件工程和系统工程有何区别?系统工程侧重基于计算机系统的开发的所有方面,包括硬件,软件和过程工程。
7.软件工程面临的主要挑战是什么?不断增长的多样性,减少交付时间以及开发可靠的软件的要求。
8.什么是软件工程的成本?软件开发成本约占总成本的60%,测试成本占40%。
对于定制软件而言,进化成本常常高于开发成本。
9.什么才是最好的软件工程技术和方法?由于所有的软件项目都必须进行专业化的管理和开发,所以不同的技术应适用于不同类型的系统。
例如,游戏开发需要一系列原型,而安全要求极高的控制系统开发需要一个完整的和可分析的描述。
因此,你不能单纯的评判一种方法比另一种方法更好。
10.Web给软件工程带来了哪些不同?Web带来了软件服务的可用性,以及开发高品质的基于服务的分布式系统的可能性。
基于Web的系统开发极大地促进了编程语言和软件复用的发展。
二.软件产品有以下两类1.通用软件产品2.定制软件产品这两类产品的一个重要区别在于:在通用软件产品中,软件描述由开发者自己完成,而定制软件产品,其软件描述通常是由客户给出,开发者必须按客户要求进行开发。
三.软件除了提供相应的功能外,作为一个产品它还有一系列相关的反映质量的属性。
这些属性不直接涉及软件的功能,而是反映软件在执行时的行为以及源程序的结构,组织及相关的文档。
软件对用户查询的响应时间和程序代码的可理解性就属于这类属性(有时也称为非功能性属性)。
四.软件系统在具体应用中,用户可能会要求其具有特殊的属性。
这些属性也是专业化软件系统应具备的基本属性。
1.可维护性软件必须能够不断进化以满足客户的需求变化,这是软件产品最根本的特性,因为工作环境是不断变化的,软件也必然要跟着变化。
2.可依赖性和安全性软件课依赖性还包括一些特性:可靠性,保密性,安全性。
可靠的软件在系统失败的情况下,也不会导致物理性损害和经济损失。
有恶意的人员不得访问或破坏系统。
3.有效性软件不要浪费内存和处理器等系统资源,因而有效性应包括响应时间,处理时间和内存利用率等方面。
4.可用性软件必须简单易用,容易被用户接受。
这就意味着,它必须是容易理解的,易用的并且和其他系统是兼容的。
1.1.1软件工程一.软件工程的定义软件工程是一门工程学科,涉及软件生产的各个方面,从最初的系统描述一直到投入使用后的系统维护,都属于其科学范畴。
在软件工程的定义中有两个关键词:1.工程科学:干什么事情都离不开工程人员,他们既拥有一定的理论,方法和工具,又能有选择地利用它们,即使在没有可用的理论和方法的情况下,也能够力求找出解决问题的方法。
同时他们也认识到必须在机构或财政状况所允许的限度内工作,即在此限度内寻找解决办法。
2.软件生产的各个方面:软件工程不仅涉及软件开发的技术过程,也涉及诸如软件项目管理以及对那些支持软件生产的工具,方法和理论的开发等活动。
二.软件工程之所以重要有两方面的原因:1.个人和社会越来越多的依赖于先进的软件系统。
这就需要我们能够既经济又快速地生产出可依赖和值得信赖的系统。
2.从长远来看,运用软件工程方法和技术去开发软件系统比单纯为个人程序项目写程序更加便宜。
对于大多数类型的系统来说,绝大多数的钱都花费在软件投入使用后对软件的变更上。
三.软件过程包含的4项基本活动软件工程中系统化的方法有时候也叫软件过程,软件过程是指制作软件产品的一组活动及其结果。
这些活动主要由软件工程人员完成。
所有的软件过程都包含4项基本的活动,它们是:1.软件描述客户和工程师定义所要生产的软件以及对其操作的一些约束。
2.软件开发软件得以设计和编程实现3.软件有效性验证软件经过检查以保证它就是客户所需要的。
4.软件进化软件随不同的客户和变化的市场需求而进行修改。
四.影响大多数类型软件的3个方面1.异质性人们越来越要求系统像基于网络的分布式系统一样运行,而网络中包含不同类型的计算机和移动设备。
除了在通用的计算机上运行之外,有些软件可能还需要在手机上运行。
又是必须将新软件集成到遗留系统中,这些遗留系统可能使用其他语言写成的。
这样带来的挑战是:必须开发新技术,制作可靠的软件,从而足以灵活应对这种多样性。
2.业务和社会的变革随着新经济成长和新技术的不断涌现,业务和社会正在发生着前所未有的快速变革。
这对现存软件的变更和快速地开发出新软件提出新需求。
很多传统的软件工程技术是费时的,新系统的交付往往滞后于预先的计划。
因此技术必须进化,在不损及系统质量的前提下,缩短大型,复杂系统的交付时间。
3.安全和可信软件和我们生活的方方面面息息相关,最关键的一点事软件要让人们信得过。
这对于那些通过网页或Web服务界面访问的远程软件系统来说尤为重要。
我们必须确保有恶意的人员不能攻击软件,不会危及信息安全。
1.1.2软件工程的多样性一.不同类型的应用也许决定使用哪种软件工程方法和技术主要取决于要开发的应用的类型。
这里有许多不同类型的应用:1.独立的应用2.以交易为基础的交互式应用3.嵌入式控制系统4.批处理系统5.娱乐系统6.建模和仿真系统7.数据采集系统8.集成的系统二.适用于所有类型的软件系统的软件工程基本方法1.应使用有管理的和理解了的开发过程进行开发。
软件开发机构应规划它们的开发过程,并清楚地知道应产出什么以及什么时候完工。
当然,对于不同类型的软件使用不同的开发过程。
2.可依赖性和性能对所有类型的系统来说都很重要。
软件应该如所期待的那样表现,没有失败且在用户需要的时候是可用的。
它应该是操作安全的,只要可能,它应该是信息安全的,能抵御来自外部的攻击。
系统应是高效的且不会浪费资源。
3.理解和管理系统描述和需求(系统应该做的是什么)是很重要的。
你必须知道不同的客户和用户的期望是什么,然后你必须管理这些期望以便在预算范围内按期交付一个有用的系统。
4.你应该尽可能高效地使用当前存在的资源。
这就意味着,你应该在适当的地方复用已开发的软件,而不是重新写一个新软件。
1.1.3软件工程和Web一.软件组织的显著变化导致了以网络为基础的系统设计的变化1.软件复用已经成为构建基于Web的系统的主要技术。
当你在构造这样的系统时就需要考虑怎样从已有的软件组件和系统开始工作。
2.现在人们普遍认识到,提前制定这些系统的所有需求是不切实际的。
应逐步开发和交付这种基于Web的系统。
3.用户界面受到Web浏览器能力的约束。
1.2软件工程人员的职业道德一.软件工程人员必须坚持诚实正直的行为准则,这是不可言喻的。
他们不能用掌握的知识和技能做不诚实的事情,更不能给软件工程行业抹黑。
然而,在有些方面,某些行为没有法律加以规范,只能靠职业道德来约束,这种约束是软弱无力的。
包括:1.保密工程人员必须严格保守雇主或客户的机密,而不管是否签署了保密协议。
2.工作能力工程人员应该实事求是地表述自己的工作能力,不应有意接受超出自己能力的工作。
3.知识产权工程人员应当知晓有关专利权,著作权等知识产权的地方法律,必须谨慎行事,确保雇主和客户的知识产权收到保护。
4.计算机滥用软件工程人员不应运用自己的技能滥用他人的计算机。
滥用计算机有时对他人的影响不大(如在雇主的机器上玩游戏),但有些时候后果非常严重(传播病毒)。
二.软件工程职业道德和执业行为准则软件工程人员应当做出承诺,是软件的分析,描述,设计,开发,测试和维护等工作对社会有益且受人尊重。
基于对公众健康,安全和福利的考虑,软件工程人员应当遵守以下8条原则:1.公众感软件工程人员应始终与公众利益保持一致。
2.客户和雇主软件工程人员应当在与公众利益保持一致的前提下,保证客户和雇主的最大利益。
3.产品软件工程人员应当保证他们的产品及其相关附件达到尽可能高的行业标准。
4.判断力软件工程人员应当具备公正和独立的职业判断力。
5.管理软件工程管理者和领导者应当维护并倡导合乎道理的有关软件开发和维护的管理方法。
6.职业感软件工程人员应当弘扬职业正义感和荣誉感,尊重社会公众利益。
7.同事软件工程人员应当公平地对待和协助每一位同事8.自己软件工程人员应当毕生学习专业知识,倡导合乎职业道德的职业活动方式。
1.3案例研究一.用于案例的3种类型的系统分别是:1.嵌入式系统系统的软件控制硬件设备并嵌入在这个设备中。
嵌入式系统的典型问题包括物理尺寸,响应性,电源管理等。
本书嵌入式的例子是一个软件系统控制的医疗设备。
2.信息系统这个系统的主要目的是管理和提供对信息数据库的访问服务。
信息系统的主要问题包括信息安全性,可用性,隐私和维护数据的完整性。
信息系统的例子是一个医疗数据系统。
3.基于传感器的数据采集系统这个系统的主要目的是从多个传感器手机数据并以适当的方式处理数据。
这类系统的关键需求是可依赖性,甚至是在极端环境条件下的可靠运行,可维护性。
数据采集系统的例子是一个野外气象站。
1.3.1胰岛素泵控制系统一.胰岛素泵是一个仿真胰腺(一种体内组织)运转的医疗系统。
此系统的软件控制部分是一个嵌入式系统,它从传感器收集数据,然后控制泵输送指定剂量的胰岛素给患者。
一.糖尿病患者使用这个系统。
糖尿病是一种常见病症,是由于人体无法产生足够数量的胰岛素而引起的。
胰岛素在血液中起到促进葡萄糖新陈代谢的作用。
糖尿病的传统治疗方法是长期规律地注射人工胰岛素。
通过使用一种外部仪器测量糖尿病患者的血糖值,从而计算所需要注射的胰岛素剂量。
二.这个治疗方法存在的问题是,血液中的胰岛素浓度不仅与血液中的葡萄糖浓度相关,还与最后一次注射胰岛素的时间有关。
这样有可能导致血糖浓度太低(当胰岛素太多时),或血糖浓度太高(当胰岛素太少时)。
短时间内的低血糖是一种比较严重的情况,会导致暂时的脑功能障碍,最后失去知觉甚至死亡。
长期处于高血糖则会导致眼睛损伤,肾损伤和心脏问题。
三.目前在开发微型传感器方面取得的进步使得自动胰岛素传送系统开发成为可能。
系统监控血糖浓度,根据需要输送适当的胰岛素。
这样的胰岛素输送系统已经在临床中得到使用了。