软件工程概论.doc

合集下载

软件工程(概论)习题与答案

软件工程(概论)习题与答案

一、单选题1、软件产品与物质产品有很大的区别,软件产品是一种()产品。

A.有形B.消耗C.逻辑D.文档正确答案:C2、在()年的NATO会议上,软件工程的术语被首次提出。

A.1966B.1968C.1970D.1972正确答案:B3、软件开发中实现映射的基本手段是()A.抽象B.分层C.隔离D.建模正确答案:D4、下列哪项不属于软件工程框架的三元组。

()A.目标B.范围C.原则D.活动正确答案:B5、下列哪个不是软件维护的类型。

()A.完善性维护B.纠错性维护C.适应性维护D.更新性维护正确答案:D6、只有高水平的(),才能生产出高质量的软件产品。

A.软件开发技术B.软件开发工具C.软件工程管理D.项目开发经验正确答案:C二、多选题1、下列关于软件的说法正确的是()A.软件是通过定制进而生产制造出来的B.软件没有磨损老化问题。

C.软件开发的成本很高D.软件开发和运行必须依赖计算机环境正确答案:B、C、D2、下列软件属于系统软件的是()A.操作系统B.编译器C.中间件D.浏览器正确答案:A、B3、下述软件属于支撑软件的是()A.财务管理软件B.编译器C.中间件D.数据库正确答案:C、D4、下述软件属于应用软件的是()A.财务管理软件B.数据库C.编译器D.浏览器正确答案:A、D5、软件工程是一门交叉性学科,下列哪些学科是软件工程涉及的?A.数学B.计算机科学C.管理科学D.工程科学正确答案:A、B、C、D6、下列属于软件模型的是()A.概念模型B.设计模型C.实现模型D.部署模型正确答案:B、C、D7、软件需求阶段所要完成的任务包括()A.需求获取B.需求完善C.需求定义D.需求规约正确答案:A、C、D三、填空题1、软件工程概念的提出是为了解决()。

正确答案:软件危机2、软件设计阶段包括()和()两个阶段。

正确答案:总体设计、详细设计3、软件开发是实现()的概念和处理逻辑到()的概念和处理逻辑的映射。

软件工程概论基础概念

软件工程概论基础概念

软件的概念:软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。

(它是包括程序,数据及其相关文档的完整集合。

)软件= 程序+数据+文档程序= 算法+数据结构软件危机:指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。

软件危机主要包括的问题(两方面):①如何开发软件,以满足对软件日益增长的需求。

②如何维护数量不断膨胀的已有软件。

软件工程:① 把系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程应用于软件中。

②对① 中提到的各种方法的研究。

软件工程包括“管理”和“技术”两方面内容:管理——对人、财、物的合理使用和配置;技术——指软件开发中采用的方法、工具和过程。

软件工程方法学三要素:工具、方法和过程。

软件工程目标:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可追踪性、可移植性、可互操作性并满足用户需求的软件产品。

软件工程原则:在软件开发过程中,为了达到软件开发目标,必须遵循下列原则:1.抽象2.信息隐藏3.模块化4.局部化5.一致性6.完整性7.可验证性软件生命周期:软件产品从形成概念开始,经过开发、运行和维护直到退役的全过程称为软件生命(存)周期。

软件生命周期组成:包括软件定义、软件开发、软件运行与维护三部分。

软件过程:1.为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

2.软件过程是软件工程三要素之一。

3.通常用软件生命周期模型来描述。

软件生命周期模型,又称软件开发模型/软件过程模型/软件工程范型。

指软件项目从需求定义直至软件经使用后废弃为止,跨越整个生存周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。

瀑布模型优点:可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段的所有产品都必须经过质量保证小组的仔细验证。

软件工程概论简答题

软件工程概论简答题

软件工程概论简答题1. 什么是软件工程?它的主要目标是什么?软件工程是一门以工程化的方式开发、部署和维护软件系统的学科。

它涉及应用系统性方法、工具和技术,以提高软件产品和过程的质量、可靠性和效率。

软件工程的主要目标包括:- 提高软件产品的质量- 提高软件开发过程的效率- 降低软件开发与维护的成本- 保证软件系统的可靠性和安全性- 提供可维护性和可扩展性的软件系统2. 什么是软件工程的生命周期?它包括哪些阶段?软件工程的生命周期是指软件项目从定义需求到投放使用的整个过程。

它涵盖了以下主要阶段:1) 需求分析阶段:确定软件系统的需求和功能,并与用户进行沟通与协商。

2) 设计阶段:基于需求分析的结果,定义软件系统的架构、模块划分以及数据结构和算法等细节。

3) 编码阶段:根据设计结果,进行编码和测试,实现软件系统的各个模块和功能。

4) 集成和测试阶段:将开发的各个模块进行集成,进行整体功能和性能测试。

5) 部署阶段:将软件系统部署到实际的运行环境中,进行用户培训和技术支持。

6) 维护阶段:对软件系统进行维护和升级,修复bug、增加新功能,并解决用户反馈的问题。

3. 简述软件需求工程的主要任务和挑战。

软件需求工程是软件工程中非常重要的一个环节,主要任务包括:1) 需求获取:通过访谈、调研、文档分析等方法,与用户和利益相关者沟通与交流,准确获取软件系统的需求。

2) 需求分析:对获取的需求进行分析、整理和归纳,抽象出软件系统的功能和约束条件,形成一份需求规范文档。

3) 需求确认:与用户确认需求规范文档,确保所提供的需求与用户的期望一致。

4) 需求管理:对需求进行变更管理、跟踪和控制,确保软件系统在开发过程中的需求改变得到合理处理。

软件需求工程面临一些挑战,例如:- 需求不完整、不清晰或不准确,需要通过与用户的深入交流来解决。

- 用户需求的不稳定性和不一致性,使得需求工程师需要与用户持续沟通,及时调整需求规范。

软件工程概论_8_面向对象需求分析

软件工程概论_8_面向对象需求分析

• 一.面向对象分析模型的组成结构 • 二.面向对象分析模型描述工具 • 三.面向对象分析的基本过程
• 四. 面向对象分析方法
• 五. 小结
一.面向对象分析模型的组成结构
数据模型
属性、操作、协作者
功能模型
类/对象 模型
对象关系模型
使用实例
对象-行为模型
行为模型
二.面向对象分析模型描述工具
1. 用例图
2.面向对象建模 (1)建模与模型 建模是将问题域的解空间定义成一种模型,以帮助系统分析 人员更好地理解问题。 模型是为了理解问题而对问题所做出的一种抽象,而且是对 问题的一种无歧义的描述。模型由一组图示符号和组织这些 符号的规则组成。利用它们来定义和描述问题域中的术语和 概念。 建模的目的主要是为了减少复杂性。 (2)面向对象模型
2) 面向对象分析的五个层次 面向对象分析由五个主要活动组成,即确定类-&-对象、识别 结构、识别主题、定义属性和定义服务(方法)。对于一个复杂 问题的面向对象的模型可用五个层次表示:类-&-对象层、结 构层,主题层、属性层和服务层,见图3.3.8。
主题层 subject level 类-&-对象层object 结构层 structure 属性层 attribute 服务层 serves
•使用具有确切含义的名词。
• 尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含 义模糊的词作名字。例如,“库房”比“房屋”或“存物场所”更确切。
•必要时用名词短语作名字。
• 为使名字的含义更准确,必要时用形容词加名词或其他形式的名词 短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等 都是比较恰当的名字。
签定保险单 销售统计
客户

软件工程概论

软件工程概论

软件工程概论软件工程概论随着信息技术的不断发展,软件在我们的生活中扮演着越来越重要的角色。

同时,软件行业也成为了当今世界最具活力的产业之一,具有无限的发展前景。

为了能够更好的利用信息技术及其应用,软件工程应运而生。

软件工程是一门关于软件开发及其维护的学科,旨在建立一组标准化的方法,规范软件的生产过程,以确保软件的质量、可靠性、有效性和安全性。

本文将介绍软件工程的概念、软件生命周期、流程模型、软件开发方法以及软件工程中的人员角色。

一、软件工程的概念软件工程是一种系统化、规范化、可量化的软件开发方法。

它是应用工程的思想、方法、技术和经验,以满足用户需求为核心,从软件的开发到维护全过程的管理学科。

软件工程的主要任务是:掌握软件开发中必要的知识、方法和技能,理解软件开发中的困难和问题并寻求合理的解决方案。

软件工程要求软件开发人员从纯技术的视角上,向管理、计划和控制等方面发展,以满足软件市场日益增长的需求。

二、软件生命周期软件生命周期指软件开发从提出需求到废止使用的整个过程。

它包括五个基本阶段:计划阶段、需求分析阶段、设计阶段、编码阶段和测试阶段。

其中,计划阶段包括项目开始前的准备活动,需求分析阶段主要是明确用户对软件的需求,设计阶段则是将需求转化为软件模型,编码阶段是根据设计方案编写程序代码,测试阶段则是对软件进行系统测试以确保质量。

三、流程模型为了更好的管理和控制软件开发过程,人们提出了软件开发流程模型。

软件开发的游程模型是指软件建设过程中不断实施的各个阶段和活动的组合,基本上可以分为瀑布模型、原型模型、迭代模型、螺旋模型、敏捷模型等。

(1)瀑布模型瀑布模型是一种经典的、线性的软件开发流程模型。

它是按照顺序完成各个阶段的,即只有当上一个阶段完成后才能进入下一个阶段。

这种模型的优点是开发流程清晰明确,整个过程非常可控,但是也有缺点,即在后期发现问题,需要回到前一个阶段进行修改,费用和时间成本较高。

(2)原型模型原型模型的主要特点是在软件开发的初期,开发人员会根据用户的需求和建议,开发出一个草图性质的产品原型。

软件工程概论课后习题答案

软件工程概论课后习题答案

软件工程概论郑人杰等版第1章软件与软件工程的概念1.1 举出你所知道的应用软件的例子。

办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。

1.2 认为“软件就是程序,软件开发就是编程序.”这种观点是否正确?为什么?认为“软件就是程序,软件开发就是编程序.”这种观点是错误的。

首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。

1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。

1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.典型表现:(1)对软件开发成本和进度的估计常常很不准确.(2)用户对“已完成的”软件系统不满意的现象经常发生。

(3)软件产品的质量往往靠不住。

(4)软件常常是不可维护的。

(5)软件通常没有适当的文档资料。

(6)软件成本在计算机系统总成本中所占的比例逐年上升。

(7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。

产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面:(1)缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定.(2)软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。

(3)软件开发过程不规范.如,没有真正了解用户的需求就开始编程序。

(4)随着软件规模的增大,其复杂性往往会呈指数级升高.需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理.(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。

1.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。

软件工程概论

软件工程概论

软件工程1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题;包含两方面的问题:1如何开发软件,以满足对软件日益增长的需求;2如何维护数量不断膨胀的已有软件;2、软件危机的主要表现:1对软件开发成本和进度的估计经常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;3、产生软件危机的原因1从软件特点上看,软件是逻辑部件,不是物理部件;2软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;3软件的参与人员多且成分复杂需求人员,开发人员,用户,维护人员等;4在软件实践过程中或多或少的采用的错误的但当时无法知晓的方法和技术这是主要原因4、消除软件危机的途径1首先应该对计算机软件有一个正确的认识;2更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;3应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;4应该开发和使用更好的软件工具总之,为了解决软件危机,既要有技术措施方法和工具,又要有必要的组织管理措施;5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科;11968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理;21993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径;6、软件工程的本质特征1软件工程关注于大型程序的构造;2软件工程的中心课题是控制复杂性;3软件经常变化;4开发软件的效率非常重要;5和谐地合作是开发软件的关键;6软件必须有效地支持它的用户;7在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品;7、软件工程的基本原理1用分阶段的生命周期计划严格管理2坚持进行阶段评审3实行严格的阶段性产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应该少而精7承认不断改进软件工程实践的必要性8、软件生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,所历经的一个漫长的时期;包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护;1软件定义时期:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的相关策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并适当估计完成进度表;2软件开发时期:总体设计;详细设计;编码和单元测试;综合测试; 3软件维护时期:主要任务是使软件更持久地满足用户需要;具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要;9、软件生命周期每个阶段的基本任务1问题定义:“要解决的问题是什么”;2可行性研究:“对于上一个阶段所确定的问题有行得通的解决方案吗”3需求分析:“为了解决这个问题,目标系统必须做什么;”4总体设计:“概括地说,应该怎样实现目标系统”5详细设计:“应该怎样具体地实现这个系统呢”6编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块;7综合测试:关键任务是通过各种类型的测试及相应的调试使软件达到预定的要求;8软件维护:通过各种必要的维护活动使系统持久地满足用户的需要;10、什么是软件生命周期模型有哪些主要模型1生存周期模型:描述软件开发过程中各种活动如何执行的模型;对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心;2主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型;11、可行性研究的任务:用最小的代价在尽可能短的时间内确定问题是否能够解决;技术可行性;经济可行性;操作可行性;法律、社会效益、道德、政治等诸多方面的因素;12、可行性研究过程的步骤:1复查系统的规模和目标2研究目前正在使用的系统3导出新系统的高层逻辑模型4进一步定义问题5导出和评价供选择的解法6推荐行动方针7草拟开发计划8书写文档提交审查13、可行性分析报告的主要内容:项目背景;客户需求;商务前景;市场计划;技术方案;实施周期;财务分析;风险管理;14、数据流图DFD:以图形的方式描述数据在系统中流动和处理的过程;只反映系统必须完成的逻辑功能,是一种功能模型;15、画数据流图应注意的事项:1命名:不能使用缺乏具体含义的名字,加工名应能反映出处理的功能;2画数据流而不是控制流,一般不画物质流;3每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果 ;4编号:子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应;5父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致;6局部数据存储;7注意数据流图的易理解性;16、数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合;内容:数据流;数据流分量即数据元素;数据存储;处理;17、需求分析的任务1确定对系统的综合要求2分析系统的数据要求3导出系统的逻辑模型4修正系统开发计划18、软件设计的目标和任务:根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计、界面设计;19、什么是软件概要设计该阶段的基本任务是什么1把一个软件需求转换为软件表示时,首先设计出软件总的体系结构;称为概要设计或结构设计;2基本任务:①设计软件系统结构②进行数据结构及数据库的设计③编写概要设计的文档④评审;20、总体设计概要设计原理:1模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能;2抽象:抽出事物的本质特性而暂时不考虑它们的细节;3逐步求精4信息隐蔽和局部化5模块独立:每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单;21、模块独立程度的衡量标准:耦合和内聚1耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标;内容耦合、公共耦合、控制耦合、标记耦合、数据耦合、无耦合;2内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标;偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚;22、概要设计的启发式准则:1改进软件结构,提高模块独立性2模块规模应该适中3深度、宽度、扇出和扇入都应适当4模块的作用域应该在控制域之内5力争降低模块借口的复杂程度6设计单入口单出口的模块7模块功能应该可以预测23、面向数据流的设计方法:把信息流映射成软件结构;有两种类型:1交换流:根据基本系统模型,信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统;由输入、输出、变换或称处理三部分组成,是一顺序结构;2事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类数据流称为事务流;处理T称为事务中心;24、详细设计的基本任务:1为每个模块进行详细的算法设计2为模块内的数据结构进行设计3对数据库进行物理设计4其他设计5编写详细设计说明书6评审25、结构程序设计:1如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的;2结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法②使用三种基本控制结构构造程序③主程序员组的组织形式;26、选择程序设计语言基本原则:1系统用户的要求2可以使用的编译语言3可以得到的软件工具4工程规模5程序员的知识6软件可移植性要求7软件的应用领域27、为了编制出清晰、紧凑、高效的程序,一般应依次考虑下列原则:1编制易于修改和维护的代码2编制易于测试的代码3必须将编程和编文档的工作统一起来4编程中采用统一的标准和约定,降低程序复杂性5限定每一层的副作用,减少耦合度6尽可能地复用28、软件测试的目标:1测试是为了发现程序中的错误而执行程序的过程2好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案3成功的测试是发现了至今为止尚未发现的错误的测试29、软件测试的准则:1所有测试都应该能追溯到用户需求2应该远在测试开始之前就制定出测试计划3把Pareto原理应用到软件测试中4应该从“小规模”测试开始,并逐步进行“大规模”测试5穷举测试是不可能的6为了达到最佳的测试效果,应该由独立的第三方从事测试工作;30、测试的步骤:1模块测试:保证每个模块作为一个单元能够正确运行,又称为单元测试2子系统测试:集成测试、组装测试、联合测试;重点在于测试模块之间的接口;3系统测试:将经过测试的子系统装配成一个完整的系统来测试;发现设计和编码的错误,验证系统是否满足需求说明所定义的功能及其动态特性;也称为集成测试;4验收测试:有用户参加的系统测试;验证是否满足用户的需要5平行运行:同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标;31、非渐增式和渐增式测试方法1非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法;2渐增式测试方法:把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试;这种每次增加一个模块的方法称为渐增式测试;3非渐增式和渐增式测试方法的优缺点比较:①非渐增式方法要对每个模块编写驱动模块和桩模块,工作量较大;而渐增式方法可以利用部分已测试过的模块作为测试软件;②非渐增式方法发现模块间的接口错误较晚,而渐增式方法则要早一些;③非渐增式方法发现错误后较难定位;而渐增式方法则要容易一些;④非渐增式方法可以并行测试所有模块,可充分利用人力,加快工程进度;⑤渐增式方法接近全真运行环境,需要较多的测试运行时间,但对程序模块的测试较为彻底;32、什么是白盒测试法有哪些覆盖标准试对他们的检错能力进行比较1白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致;2白盒法的覆盖标准:语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;路径覆盖3从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准;在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准;33、什么是黑盒测试法采用黑盒技术测试用例有哪几种方法这些方法各有什么特点1黑盒测试法:把被测试对象看成是一相黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求;2采用黑盒技术测试用例的方法有:等价类的划分、边界值分析、错误推测和因果图;①等价类的划分,是将输入数据按有效的或无效的也称合理的或不合理的划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试;这样就把漫无边迹的随机测试改为有针对性的等价类测试,用少量有代表性的例子代替大量测试目的相同的例子,能有效地提高测试效率;但这个方法的缺点是没有注意选择某些高效的、能够发现更多错误的测试用例;②边界值分析法一般与等价类划分结合起来;但它不是从一个等价类中任选一个例子做代表,而是将测试边界情况作为重点目标,选取正好等于、刚刚大于和刚刚小于边界值的测试数据;边界情况是指输入等价类和输入等价类边界上的情况;这种方法可以查出更多的错误,因为在程序中往往在处理边界情况时易发生错误;③错误推测法是在测试程序时,人们根据经验或直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用例;④因果图能够有效地检测输入条件的各种组合可能会引起的错误;它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例;34、软件维护:就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程;软件维护工作分为以下四类:1矫正性维护:目标是识别和矫正功能错误、性能错误和实现错误; 2适应性维护:使软件适应于外界环境的改变而对软件所做的修改工作;3完善性维护:为了扩充软件的功能或改善软件的性能对软件所做的改变;4预防性维护:为了以后更便于维护,或者为了改进可靠性,或者提供更好的基础便于将来提高性能而修改软件;35、决定软件可维护性的因素:可理解性;可测试性;可修改性;可移植性;可重用性;36、提高可维护性的方法1建立明确的软件质量目标和优先级2使用提高软件质量的技术和工具3进行明确的质量保证审查4选择可维护的程序设计语言5改进程序的文档37、软件维护的副作用有哪些1编码副作用;在使用程序设计语言修改源代码时可能引入的错误;2数据副作用;在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误;数据副作用是修改软件信息结构导致的结果;但它可以通过详细的设计文档加以控制;3文档副作用;如果对可执行软件的修改没有反映在文档中,就会产生文档副作用;以上根据老师课件和软件工程概论整理38、某厂对部分职工重新分配工作的政策是:年龄在20岁以下者,初中文化程度脱产学习,高中文化程度当电工;20岁至40岁之间,中学文化程度,男性当钳工,女性当车工,大学文化程度都当技术员;年龄在40岁以上者,中学文化程度当材料员,大学文化程度当技术员;请用结构化语言﹑判定表或判定树描述上述问题的加工逻辑;1判定树2判定表3结构化语言:CASE 年龄<20CASE 文化程度初中分配工种脱产学习CASE 文化程度高中分配工种电工ENDCASECASE 年龄<=40.AND.>=20 CASE 文化程度初中.OR.高中 CASE 性别男分配工种钳工CASE 性别女分配工种车工ENDCASE ENDCASECASE 文化程度大学分配工种技术员ENDCASEENDCASECASE 年龄>40CASE 文化程度初中.OR.高中分配工种材料员CASE 文化程度大学分配工种技术员ENDCASEENDCASE39、请使用流程图、PAD图和PDL语言描述下列程序的算法; 1在数据A1~A10中求最大数和次大数;解:如图所示:PDL语言描述:GETa1,a2,...a10 max=a1;max2=a2;FOR i=2 TO 10 IF ai>maxmax2=max;max=ai;ELSEIF ai>max2max2=ai;ENDIFENDIFENDFORPUTmax,max2END2输入三个正整数作为边长,判断该三条边构成的三角形是等边、等腰还是一般三角形;解:如图:PDL 语言描述如下:GETa,b,cIF a+b>c and b+c>a and c+a>b IF a=bIF a=cPUT"等边三角形"ELSEPUT"等腰三角形"ENDIFELSEIFa=cPUT"等腰三角形" ELSEIF b=cPUT"等腰三角形"ELSEPUT"一般三角形"ENDIFENDIFENDIFELSEPUT "这不是一个三角形"ENDIF40、用PAD图描述下面问题的控制结构;有一个表A1、A2、...An,按递增顺序排列;给定一个Key值,在表中用折半法查找;若找到,将表位置i送入x,否则将零送到x,同时将key值插入表中;算法:置初值H=1表头,T=N表尾;置i=H+T/2取整;若Key=Ai,则找到,i送到x;若Key>Ai,则Key在表的后半部分,i+1送入H;若Key<Ai,则Key在表的前半部分,i-1送入T,重复第2步查找直到H>T为止;查不到时,将Ai,...AN移到Ai+1...AN+1,Key值送入Ai中;解:如图所示:。

软件工程概论

软件工程概论

一、单选(本大题共25小题,每小题1分,共25分)C 1.软件开发环境支持一定的()或按照一定的软件开发模型组织而成。

A.软件生存周期B.软件过程C.软件开发方法D.软件开发模型A 2.控制集成是指工具激活后能控制其他()的操作。

A.工具B.系统C.软件D.应用D 3.表示集成是指一个系统中的工具使用共同的风格以及采用共同的用户交互标准集。

表示集成有三种不同级别:窗口系统集成、命令集成和()。

A.数据集成B.平台集成C.界面集成D.交互集成C 4.软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是()。

A.分析阶段B.设计阶段C.编码阶段D.测试阶段A 5.在软件生存周期中,用户主要是在()参与软件开发。

A.软件定义期B.软件开发期C.软件维护期D.整个软件生存周期过程中A 6.原型化方法是一种()型的设计过程。

A.自外向内B.自顶向下C.自内向外D.自底向上A 7.可行性分析中,系统流程图用于描述()。

A.当前运行系统B.当前逻辑模型C.目标系统D.新系统A 8.在结构化分析方法中,用以表达系统内数据的运行情况的工具有()。

A.数据流图B.数据字典C.结构化语言D.判定表与判定树B 9.与计算机科学的理论研究不同,软件工程是一门()学科。

A.理论性B.工程性C.原理性D.心理性A 10.一个CASE工作台是一组(),支持设计、实现或测试等特定的软件开发阶段。

A.工具集B.软件包C.平台集D.程序包B 11.数据集成指不同软件工程能相互交换数据。

有三种级别的数据集成:共享文件、共享数据结构和共享仓库。

()采用所有工具都能识别的文件格式,在UNIX系统中广泛使用。

A.共享单元B.共享文件C.消息共享D.共享仓库B 12.软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、()、维护等活动。

A.应用B.测试C.检测D.以上答案都不正确D 13.瀑布模型是一种()。

《软件工程概论》实验教学大纲

《软件工程概论》实验教学大纲

《软件工程概论》实验教学大纲课程名称:软件工程概论英文名称:Software Engineering课程编号:1500280003课程性质:课程类型:专业必修是否为独立设课的实验课:否适用专业:软件工程学时与学分:总学时:72 总学分:3+1 实验学时:18 实验学分:1执笔人:钱嘉玮制定时间:2014.03.15一、课程简介和基本要求1.软件工程与软件过程软件危机、软件工程、软件过程2.结构化分析结构化分析过程和准则、分析建模与规格说明、实体-关系图、数据流图、状态转化图、数据字典3.结构化设计与实现结构化设计与结构化分析的关系、软件设计的概念和原理、模块独立、启发规则、表示软件结构的图形工具、人机界面设计、过程设计、过程设计的工具、面向数据结构的设计方法、结构化实现4.面向对象分析面向对象的概念与模型:面向对象建摸、对象模型、动态模型、功能模型;面向对象分析(OOA):分析过程、需求陈述、建立对象模型、建立动态模型、建立功能模型、定义服务、面向对象分析实例5.面向对象设计与实现面向对象设计(OOD):面向对象设计的准则、设计问题域子系统、设计人-机交互子系统、设计任务管理子系统、设计数据管理子系统、设计类中的服务、设计关联、设计优化、面向对象分析与设计实例、面向对象实现(OOP)6.软件项目管理软件项目管理与计划、软件质量与质量管理、CMM、国际标准形式化方法7.高级课题形式化方法、统一建模语言UML、软件重用二、实验课的任务、性质与目的软件工程实践是计算机科学与技术专业的重要专业实践。

课程的目的是让学生掌握求解软件的基本思想、途径和方法,为从事计算机软件开发、维护和应用奠定良好的基础。

软件工程实践从实用的角度讲述软件工程的基本原理、概念和技术,强调软件开发过程的方法研究。

学生通过一个实际课题的课程设计,掌握软件分析、设计、实现和测试的基本技术以及面向对象分析和设计的基本方法。

通过该课程实践,实际运用软件工程的技术和方法,掌握软件项目管理和团队开发的工作方法。

软件工程概论需求分析.doc

软件工程概论需求分析.doc

1概述1.1目的随着企业的信息化和体制改革的步伐,人才竞争使企业的人力资源面临前所未有的挑战。

越来越多的企业不断地加大对员工的投资,从而更好地吸引、保留和发展所需人才,使企业拥有持久的、强大的竞争优势。

我们将为企业提供全面的人力资管理解决方案,旨在满足快速成长的企业管理信息化需求,主要目的就是帮助客户快速持续和健康成长,并且使人力资源部门借助此管理系统从重复烦杂的日常管理事务中解脱出来,将更多精力投注于人力资源战略规划以支持和推动企业战略目标的实现,不断提升人力资源部对企业的价值,有效地提升企业的核心竞争力。

2需求说明2.1系统功能流程2.1.1 系统功能层次模块图2.2系统功能说明2.2.1 人员档案建立符合公司组织机构的组织模型和完整人事档案库,记录一定范围内的职工和雇工的档案信息,并且这些信息可以和绩效考核的成绩关联,方便存档和查询。

系统重点围绕数据维护、查询和分析便捷的要求,并通过关键业务节点的业务流程化,提高HR业务的处理效率。

2.2.1.1 基本信息记录员工基本信息,包括姓名、性别、学历、学位、部门、职务、人员状态等相关信息。

员工(在职、兼职、离退)基本信息的管理,包括:增加、删除、修改;✓员工基本信息的浏览和打印;✓照片、身份证和学历证书等图片资料的管理;✓提供员工履历表(查询);在系统提供的标准人事信息基础上,用户可自行定义其他人事信息子集及项目(即导向员工档案、员工履历、员工合同等界面)。

根据选择的条件可进行快速筛选、定位所需的人员信息,并方便地进行员工自然信息的修改,便于人员信息的维护。

各级单位可分别对本单位员工进行管理,即可分别维护本单位员工的基本信息。

2.2.1.2 员工档案记录员工档案索引信息,包括:档案ID、人员ID、档案编号、档案名称、内容摘要、备注。

对员工档案进行分类、编号、保存。

对每个员工的档案进行分类维护(增加、删除、编辑)。

2.2.1.3 员工履历记录员工履历信息,包括人事变动的部门、职位、学历、工作内容、注意成绩、开始和结束时间等信息。

软件工程概论 第5讲:软件设计

软件工程概论 第5讲:软件设计

图 9 机 房
第5讲 软件设计
2. 物理设备设计
●物理设备设计是根据软件的设计要求,确定系 统物理设备方案。 ●设计的物理设备方案应能满足软件系统功能需 要。
●满足系统的效率、可靠性、安全性和适应性等
性能要求。 ● 具有较高的性价比。
第5讲 软件设计
5.2.3 软件平台设计
1. 操作系统 大型操作系统:UNIX、Windows NT、OS/2、 Macintosh等; 微机操作系统:Windows 95、Windows 98、
对象基本操作设计、关系设计、优化类和建立业务对象 模型等工作。
第5讲 软件设计
3 提取业务对象
业务对象来源于业务领域中的业务实体; 用类的简化形式把提取的业务对象描述出来。
书店业务中提取的部分业务对象
第5讲 软件设计
4 对象属性设计
属性用来表示对象的静态特性,对提取的对象应该设 计其属性。
第5讲 软件设计
第5讲 软件设计
2.文件服务器模式
文件服务器模式是由PC机或工作站通过网络与文 件服务器相连接所形成的一种计算模式。
图13 文件服务器模式
第5讲 软件设计
优点:
◆ 利用PC机和网络技术; ◆ 实现了非集中处理。 不足: ◆ 处理的效率完全由客户机决定;
◆ 文件服务器成为整个系统的瓶颈;
◆ 网络的传输开销过大; ◆ 数据的完整性和安全性难以保证。
第5讲 软件设计
图19 书店书务系统软件结构
第5讲 软件设计
案例分析
书务系统支撑结构
书务系统 应用层
Java.awt
Java.swing
Java.rmi
中间件层
Java虚拟机

软件工程软件工程概论

软件工程软件工程概论
• 方法是完成软件开发的各• 项任务的技术方法,为 软件开发提供 “如何做” 的技术。
• 工具是为运用方法而提供的自动的或半自动的软 件工程的支撑环境;
• 过程是为了获得高质量的软件所需要完成的一系 列任务的框架,它规定了完成各项任务的工作步 骤。
• 目前使用最广泛的软件工程方法学,分别是传统 方法学和面向对象方法学。
运行维护
• 通过各种必要的维护活• 动使软件系统持久地满 足用户的需要,通常有4类:
• 改正性维护:运行中发现了软件中的错误需要 修正。
• 适应性维护:为了适应变化了的软件工作环境 ,需做适当变更。
• 完善性维护:为了增强软件的功能需做变更。 • 预防性维护,即修改软件为将来的维护活动预
先做准备。
软件的特点之二
• 软件的开发和运行常受到计算机系统的限 • 制,对计算机系统有着不同程度的依赖性 。
• 开发工作的劳动强度决定了软件开发需要 有效的软件开发工具或软件开发环境。软 件的开发至今尚未完全摆脱手工操作的开 发方式。
• 软件本身是复杂的,因为 • 实际问题的复杂性; • 程序逻辑结构的复杂性。
早期的软件系统多以此作• 为首选设计标准。
B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结 构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在 前端实现,但是主要事务逻辑在服务器端实现,一种新的软件系
• 质量保证的观点 1. 每个阶段都必须完成规定的文档,没有交出 合格的文档就是没有完成该阶段的任务。 2. 每个阶段结束前都要对所完成的文档进行评 审,以便尽早发现问题,改正错误。
2. 快速原型模型

软件工程概论

软件工程概论


的制造过程

在软件的运行和使用期间,没有硬件那样的机械磨损 和老化问题;可永久使用,轻松复制,传播极快 软件的开发和运行经常受到计算机系统的限制,对计 算机系统有着不同程度的依赖性


软件的开发至今尚未完全摆脱手工艺的开发方式
软件的特点-2
1)软件的复杂性 2)软件的不可见性 3)软件的不断变化性
于软件中

2- 研究1-中提到的途径
软件工程的基本原理
用分阶段的生命周期计划严格管理; 坚持进行阶段评审; 实行严格的产品控制; 采用现代程序设计技术; 结果应能清楚地审查; 开发小组的人员应该少而精; 承认不断改进软件工程实践的必要性。

软件工程的研究内容

软件工程的主要研究内容包括软件开发技术和软


软件开发的过程 软件工程的方法 软件开发的工具

称软件工程的三要素
软件工程三要素

软件工程中的过程是由为最终实现软件开发的总任务 而进行的阶段划分,以及各阶段工作目标,共同组成
的工作框架

软件工程中的方法是完成软件开发各阶段中各项工作 任务的技术手段

软件工程使用的工具是为方法的运用而提供的支持软 件的开发、管理和文档生成的支撑环境

于是,开创了计算机科学技术的一个新的研究领域
软件工程意义

《国标GB/T11457—1995》中关于软件工程术语的定 义是:软件工程是软件开发、运行、维护和引退的系
统方法。

软件工程的经典定义(1993年,IEEE提出):

1- 把系统的、规范的、可度量的途径应用于软件 开发、运行和维护的过程,也就是把工程化应用

软件工程软件工程学概论

软件工程软件工程学概论
第3页/共78页
几个软件危机的案例
第4页/共78页
产生软件危机原因
• 两个主要原因: • 与软件本身的特点有关, • 和软件开发与维护的方法不正确有关。
第5页/共78页
第6页/共78页
第7页/共78页
第8页/共78页
第9页/共78页
第10页/共78页
第11页/共78页
第12页/共78页
第70页/共78页
可重复级(II) 改进方向: • 不再按项目制定软件过程,而是总结各种项目的成功经验,使之规则 化,把具体经验归纳为全组织的标准软件过程。确定全组织的标准软件过 程,把软件工程及管理活动集成到一个稳固确定的软件过程中 • 建立软件工程过程小组(SEPG)长期承担评估与调整软件过程的任务, 以适应未来软件项目的要求。 • 积累数据,建立组织的软件过程库及软件过程相关的文档库。 • 加强培训。
第21页/共78页
软件工程方法学3个要素
• 方法 完成软件开发的各项任务的技术方法, 回答“怎样做”的问题;
• 工具 为运用方法,而提供的自动的或半自动的 软件工程支撑环境;
• 过程 为了获得高质量的软件,所需要完成的一系列任务 的框架,它规定了完成各项任务的工作步骤。
第22页/共78页
软件工程方法学思想
软件工程定义 软件工程原理 软件工程方法学 1.3 软件生命周期 1.4 软件过程
第17页/共78页
第18页/共78页
软件工程的本质特性
1. 软件工程关注于大型程序/系统的构造 2. 软件工程的中心课题是控制复杂性
逻辑—>文档 分而治之 可管理
3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中,是由具有一种文化背景的

软件工程概论

软件工程概论

软件工程•概述o软件▪定义•软件 = 程序 + 数据 + 文档o数据▪程序加工处理的对象。

▪包括数据的表示、组织与存储。

▪数据 = 初始化数据 + 测试数据o文档▪开发、使用和维护程序所需的图文资料。

▪文档 = 开发文档+管理文档+用户文档+维护文档。

o程序▪能完成预定功能和性能的指令集合。

o软件和程序的区别▪程序只是完整软件产品的一部分。

▪编写程序只是软件开发过程数据中的一个阶段,一般来说,其工作量仅仅是软件开发全部工作量的10%-20%▪软件的特点•抽象性o逻辑实体。

可记录。

但看不到,开发过程可视化程度低,开发结果难以直观表示。

•可复制性o与开发成本相比,复制成本很低。

•无折旧•受硬件制约•未完全摆脱手工工艺•开发费用高▪软件分类•按适用范围分o定制软件(Custom Software)项目软件▪满足特定客户的特定需要的软件。

例如网站。

o通用软件(Generic Software)产品软件▪满足市场潜在客户的通用需求的商业成品软件。

例如:Office、Windows等。

•按软件功能分o系统软件▪管理计算机自身的资源、提高计算机的使用效率并为计算机用户提供各种服务的基础软件。

例如操作系统OS、数据库管理系统DBMS等o应用软件▪解决某一具体领域的实际问题的软件。

例如CAD。

o支撑软件▪协助用户开发的工具软件,如编辑程序、程序库、图形软件包等。

•按软件体系结构分o桌面软件▪全部工作由在单一机器上的一个软件系统完成。

o分布式软件▪由多个软件协调工作来完成任务。

例如客户端与服务器C/S、浏览器与服务器B/S软件。

o并行软件▪基于多CPU环境能完成并行计算的软件。

•按规模分o小型软件(1-5人年)o中型软件(5-50人年)o大型软件(50人年以上)•按工作方式分o实时软件o分时软件o交互式软件o批处理软件o嵌入式软件(Embedded Software)▪运行于特定硬件设备中的软件。

例如:手机、汽车等中的软件。

软件工程概论课程教学大纲

软件工程概论课程教学大纲

软件工程概论课程教学大纲一、课程简介《软件工程概论》是软件工程专业中的一门综合性和实践性很强的核心课程。

课程将系统的介绍软件工程的基本概念和基本原理,这些内容覆盖整个软件生命周期,包括软件工程过程、软件工程方法、软件工程模型、软件需求、软件设计、软件实现、软件测试、软件项目管理等内容。

学生通过本课程的学习,了解软件项目生命周期中在不同阶段如何使用不同的软件工程方法进行分析和解决问题,使得学生逐步学会遵循软件工程方法论,以提高软件开发的成功率,显著减少软件开发和维护中的错误,为更深入地学习和今后从事软件工程实践打下良好的基础。

二、课程目标(一)课程具体目标1. 掌握软件工程的基础知识,具有发现问题、分析问题和解决问题的能力;2. 能基于软件工程的专业知识,正确表达一个软件工程问题的解决方案;3. 能客观评价软件工程领域的相关发展对社会、安全以及文化的影响;4. 能及时跟踪软件工程领域及相关行业发展状况,并就当前的热点问题发表自己的见解。

(二)课程目标与专业毕业要求的关系表1 本课程对专业毕业要求及其指标点的支撑(三)课程对解决复杂工程问题能力的培养在课程理论知识讲授环节,注重培养学生对软件工程中方法、过程和技术的深入理解,使学生掌握解决软件工程领域复杂工程问题所需的基本理论和工程原理,并通过适当的课后作业锻炼和检验学生解决复杂工程问题的能力。

在实验教学环节,以培养学生解决复杂工程问题的能力为目标,围绕课程支撑的毕业要求指标点安排实验项目,设计实验内容,明确实验要求,指导实验实施,严格实验成果考核。

在课程考核环节,根据课程支撑的课程目标选择合适的考核方式,考题设置应完全覆盖课程支撑的课程目标,考题设计应充分考虑学生解决复杂工程问题所需知识和能力的考查,考题的难度和深度应能够体现复杂工程问题的特征。

总之,本课程的教学通过在理论讲授、课后作业、课内实验、课程考核等环节充分贯彻培养学生解决复杂工程问题能力的理念和要求,实现本课程支撑课程目标的达成。

软件工程概论计算机类和鼠标类之间的关系

软件工程概论计算机类和鼠标类之间的关系

软件工程概论计算机类和鼠标类之间的关系(原创实用版)目录1.软件工程的定义和重要性2.计算机类和鼠标类的概念3.计算机类和鼠标类之间的关系4.这种关系的实际应用正文【1.软件工程的定义和重要性】软件工程是一门专注于设计、开发、维护和测试软件系统的学科。

它是计算机科学的一个重要分支,旨在通过使用一系列工具、方法和技术来确保软件系统能够按时完成、满足用户需求,并且具有高质量、可靠性和可维护性。

在现代社会,软件已经深入到我们生活的方方面面,因此软件工程对于确保软件系统的可靠性和安全性至关重要。

【2.计算机类和鼠标类的概念】计算机类和鼠标类都是面向对象编程中的类。

类是一种抽象的数据类型,用于描述具有相同属性和行为的一组对象。

计算机类是一个抽象的类,它描述了一台计算机的基本属性和行为,例如 CPU、内存、硬盘等。

而鼠标类是一个具体的类,它继承自计算机类,并且描述了一只鼠标的具体属性和行为,例如左右键、滚轮等。

【3.计算机类和鼠标类之间的关系】计算机类和鼠标类之间的关系是继承关系。

鼠标类从计算机类继承而来,因此它具有计算机类的所有属性和行为。

同时,鼠标类也可以根据自己的特点,添加一些特有的属性和行为。

这种继承关系使得鼠标类可以复用计算机类的代码,减少了代码的冗余,提高了代码的可读性和可维护性。

【4.这种关系的实际应用】在实际的软件开发中,这种继承关系被广泛应用。

例如,在一个图形用户界面(GUI)的程序中,我们可以定义一个基类(如计算机类),用于描述计算机的基本属性和行为。

然后,我们可以定义一系列具体的子类(如鼠标类、键盘类等),用于描述不同设备的具体属性和行为。

软件工程(概论)生存期和开发模型-作业2

软件工程(概论)生存期和开发模型-作业2

2.1 软件生命周期
软件生命周期
软件从定义、产生、发展到成熟、直至衰亡为止的全过程
周期序号 周期划分 周期名称
1
胚胎至分娩 胎儿
2
0~3岁
婴儿
3
3~6岁
幼儿
4
6~12岁
儿童
5
12~18岁 少年
6
18~30岁 青年
7
30~60岁 中年
8
60岁以上 老年
周期的主要活动 胎教
早期教育,看图说话,益智游戏 幼儿园教育,智力开发
瀑布模型反馈环
31.选模择型模的型本的意条件 软在件瀑项布目模或型产中品,选软择件瀑开布发模的型各,项必活须动满严足格下按列照条线件性:方式进行,当前阶段
的活动(接1)受在上开一发阶时段间活内动需的求工没作有结或果很,少实变施化完;成所需的工作内容。 对(当2前)阶分段析活设动计的人工员作对结应果用进领行域验很证熟,悉如;果验证通过,则该结果作为下
软件工程
第2章 软件生存期和软件开发模型
2.1 软件生命周期 2.2 软件工程过程 2.3 软件开发模型

2.1 软件生命周期
软件生命周期
软件从定义、产生、发展到成熟、直至衰亡为止的全过程
周期序号 周期划分 周期名称
周期的主要活动
1
胚胎至分娩
胎儿
定期到妇幼保健院或妇产科医院检查,孕妇营养
2
0~6岁
软件生存期和软件开发模型21软件生命周期22软件工程过程23软件开发模型21软件生命周期软件从定义产生发展到成熟直至衰亡为止的全过程软件生命周期周期序号周期划分周期名称周期的主要活动胚胎至分娩胎儿定期到妇幼保健院或妇产科医院检查孕妇营养婴幼儿请保姆看护上托儿所或幼儿园定期打预防针适度营养多做游戏618岁少年儿童身体发育加强体育锻炼适度营养注意安全1830岁青年身体发育成熟定型养成很好的生活习惯适度烟酒坚持锻炼3060岁中年适度锻炼减少剧烈活动多做有氧运动60以上老年注意保养多散步晒太阳戒油腻21软件生命周期软件从定义产生发展到成熟直至衰亡为止的全过程软件生命周期周期序号周期划分周期名称周期的主要活动胚胎至分娩胎儿胎教婴儿早期教育看图说话益智游戏幼儿幼儿园教育智力开发612岁儿童小学教育好好学习天天向上1218岁少年中学教育中考高考基础教育全面发展1830岁青年大学教育攻读硕士博士学位与业教育能力培养3060岁中年继续教育丌断创新追求事业上的成就成功60岁以上老年退休老有所乐老年大学21软件生命周期软件从定义产生发展到成熟直至衰亡为止的全过程软件生命周期周期序号周期名称周期序号周期名称详细设计10版本更新或退役21软件生命周期软件从定义产生发展到成熟直至衰亡为止的全过程软件生命周期软件生存周期模型是软件工程思想的具体化是覆盖软件生存周期的系统开发运行维护所实施的全部活动和任务的过程框架
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程1、软件危机:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。

包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。

2、软件危机的主要表现:(1)对软件开发成本和进度的估计经常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

3、产生软件危机的原因(1)从软件特点上看,软件是逻辑部件,不是物理部件;(2)软件是很大的程序,复杂且有很多技术问题,但缺少严格而科学的管理;(3)软件的参与人员多且成分复杂(需求人员,开发人员,用户,维护人员等);(4)在软件实践过程中或多或少的采用的错误的(但当时无法知晓的)方法和技术(这是主要原因)4、消除软件危机的途径(1)首先应该对计算机软件有一个正确的认识;(2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;(3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法;(4)应该开发和使用更好的软件工具总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

5、软件工程:软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。

(1)1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。

(2)1993IEEE定义:软件工程是①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。

6、软件工程的本质特征(1)软件工程关注于大型程序的构造;(2)软件工程的中心课题是控制复杂性;(3)软件经常变化;(4)开发软件的效率非常重要;(5)和谐地合作是开发软件的关键;(6)软件必须有效地支持它的用户;(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。

7、软件工程的基本原理(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的(阶段性)产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精8、软件生命周期:一个软件从定义、开发、使用和维护,直到最终被废弃,所历经的一个漫长的时期。

包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。

(1)软件定义时期:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的相关策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并适当估计完成进度表。

(2)软件开发时期:总体设计;详细设计;编码和单元测试;综合测试。

(3)软件维护时期:主要任务是使软件更持久地满足用户需要。

具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。

9、软件生命周期每个阶段的基本任务(1)问题定义:“要解决的问题是什么?”;(2)可行性研究:“对于上一个阶段所确定的问题有行得通的解决方案吗?”(3)需求分析:“为了解决这个问题,目标系统必须做什么。

”(4)总体设计:“概括地说,应该怎样实现目标系统?”(5)详细设计:“应该怎样具体地实现这个系统呢?”(6)编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块。

(7)综合测试:关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。

(8)软件维护:通过各种必要的维护活动使系统持久地满足用户的需要。

10、什么是软件生命周期模型?有哪些主要模型?(1)生存周期模型:描述软件开发过程中各种活动如何执行的模型。

对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。

(2)主要有:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。

11、可行性研究的任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。

技术可行性;经济可行性;操作可行性;法律、社会效益、道德、政治等诸多方面的因素。

12、可行性研究过程的步骤:(1)复查系统的规模和目标(2)研究目前正在使用的系统(3)导出新系统的高层逻辑模型(4)进一步定义问题(5)导出和评价供选择的解法(6)推荐行动方针(7)草拟开发计划(8)书写文档提交审查13、可行性分析报告的主要内容:项目背景;客户需求;商务前景;市场计划;技术方案;实施周期;财务分析;风险管理。

14、数据流图(DFD):以图形的方式描述数据在系统中流动和处理的过程。

只反映系统必须完成的逻辑功能,是一种功能模型。

15、画数据流图应注意的事项:(1)命名:不能使用缺乏具体含义的名字,加工名应能反映出处理的功能。

(2)画数据流而不是控制流,一般不画物质流。

(3)每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。

(4)编号:子图应编号子图上的所有加工也应编号,子图的编号应与父图的编号相对应。

(5)父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致。

(6)局部数据存储。

(7)注意数据流图的易理解性。

16、数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。

17、需求分析的任务(1)确定对系统的综合要求(2)分析系统的数据要求(3)导出系统的逻辑模型(4)修正系统开发计划18、软件设计的目标和任务:根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计、界面设计。

19、什么是软件概要设计?该阶段的基本任务是什么?(1)把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。

称为概要设计或结构设计。

(2)基本任务:①设计软件系统结构②进行数据结构及数据库的设计③编写概要设计的文档④评审。

20、总体设计(概要设计)原理:(1)模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的功能。

(2)抽象:抽出事物的本质特性而暂时不考虑它们的细节。

(3)逐步求精(4)信息隐蔽和局部化(5)模块独立:每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单。

21、模块独立程度的衡量标准:耦合和内聚(1)耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。

内容耦合、公共耦合、控制耦合、标记耦合、数据耦合、无耦合。

(2)内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。

偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。

22、概要设计的启发式准则:(1)改进软件结构,提高模块独立性(2)模块规模应该适中(3)深度、宽度、扇出和扇入都应适当(4)模块的作用域应该在控制域之内(5)力争降低模块借口的复杂程度(6)设计单入口单出口的模块(7)模块功能应该可以预测23、面向数据流的设计方法:把信息流映射成软件结构。

有两种类型:(1)交换流:根据基本系统模型,信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统。

由输入、输出、变换(或称处理)三部分组成,是一顺序结构。

(2)事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类数据流称为事务流。

处理T称为事务中心。

24、详细设计的基本任务:(1)为每个模块进行详细的算法设计(2)为模块内的数据结构进行设计(3)对数据库进行物理设计(4)其他设计(5)编写详细设计说明书(6)评审25、结构程序设计:(1)如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

(2)结构化程序设计的基本要点:26、选择程序设计语言基本原则:(1)系统用户的要求(2)可以使用的编译语言(3)可以得到的软件工具(4)工程规模(5)程序员的知识(6)软件可移植性要求(7)软件的应用领域27、为了编制出清晰、紧凑、高效的程序,一般应依次考虑下列原则:(1)编制易于修改和维护的代码(2)编制易于测试的代码(3)必须将编程和编文档的工作统一起来(4)编程中采用统一的标准和约定,降低程序复杂性(5)限定每一层的副作用,减少耦合度(6)尽可能地复用28、软件测试的目标:(1)测试是为了发现程序中的错误而执行程序的过程(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案(3)成功的测试是发现了至今为止尚未发现的错误的测试29、软件测试的准则:(1)所有测试都应该能追溯到用户需求(2)应该远在测试开始之前就制定出测试计划(3)把Pareto原理应用到软件测试中(4)应该从“小规模”测试开始,并逐步进行“大规模”测试(5)穷举测试是不可能的(6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。

30、测试的步骤:(1)模块测试:保证每个模块作为一个单元能够正确运行,又称为单元测试(2)子系统测试:集成测试、组装测试、联合测试;重点在于测试模块之间的接口;(3)系统测试:将经过测试的子系统装配成一个完整的系统来测试;发现设计和编码的错误,验证系统是否满足需求说明所定义的功能及其动态特性;也称为集成测试。

(4)验收测试:有用户参加的系统测试;验证是否满足用户的需要(5)平行运行:同时运行新旧两个系统,并且对处理的结果进行比较,以确定新系统是否满足相关性能指标。

31、非渐增式和渐增式测试方法(1)非渐增式测试方法:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,这种方法称为非渐增式测试方法。

(2)渐增式测试方法:把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。

这种每次增加一个模块的方法称为渐增式测试。

(3)非渐增式和渐增式测试方法的优缺点比较:①非渐增式方法要对每个模块编写驱动模块和桩模块,工作量较大;而渐增式方法可以利用部分已测试过的模块作为测试软件;②非渐增式方法发现模块间的接口错误较晚,而渐增式方法则要早一些;③非渐增式方法发现错误后较难定位;而渐增式方法则要容易一些;④非渐增式方法可以并行测试所有模块,可充分利用人力,加快工程进度;⑤渐增式方法接近全真运行环境,需要较多的测试运行时间,但对程序模块的测试较为彻底。

相关文档
最新文档