1-2为什么要研究软件工程

合集下载

软件工程

软件工程
35/333
2.4 需求分析活动(5/7)
• When
– 项目的早期阶段?
贯穿于整个软件开发过程的需求活动
36/333
2.4 需求分析活动(6/7)
• Who
– 系统分析师、需求阐释者、客户代表、用户代表、 开发方领导、项目经理、架构设计师、领域专家、 财务人员、市场人员、软件质量保证(SQA, Software Quality Assure)人员、程序员、测试 人员、部署人员、技术文档编写人员、培训人员 等。
32/333
2.4 需求分析活动(2/7)
• What(2/3)
33/333
2.4 需求分析活动(3/7)
– 功能性需求和非功能性需求
• What(3/3)
• 功能性需求:描述了系统应该做什么,即具备 的功能或服务。(输入、输出和计算等) • 非功能性需求:描述了系统必须遵守的约束条 件。(响应时间、吞吐量 、可靠性、可移植性、 可扩展性、易用性、安全性、资源要求、可复 用性、技术要求、文化和政策需求、法律需求、 道德要求、隐私要求,等等)
• IEEE:
– (1)应用系统的有规则的定量的方法开发、 使用和维护软件;即应用工程于软件。(2) 研究(1)中的方法 – 粗糙
9/333
1.3 什么是软件工程(2/4)
• Definition
– 软件工程是以质量为核心,为了经济地开发 满足客户需求的软件而研究、建立和应用的 系统化的、有规则的、可度量的和可控制的 工程原则、方法,涉及到软件过程、项目管 理、开发方法、软件复用、软件度量、开发 工具,甚至企业文化等各个方面。 ──Guo Jun
16/333
2.1 软件过程的概念(1/9)
• 软件工程是一种层次化的技术

软件工程是个什么东西?

软件工程是个什么东西?

软件工程1.什么是软件工程?构成软件工程的要素是什么?软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。

它由方法、工具和过程三部分组成。

软件工程方法是完成软件工程项目的技术手段。

它支持项目计划和估算、系统和软件需求分析、软件设计、编码、测试和维护。

软件工程使用的软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,它自动或半自动地支持软件的开发和管理,支持各种软件文档的生成。

软件工程中的过程贯穿于软件开发的各个环节。

管理者在软件工程过程中,要对软件开发的质量、进度、成本进行评估、管理和控制,包括人员组织、计划跟踪与控制、成本估算、质量保证、配置管理等。

软件工程的方法、工具、过程构成了软件工程的三要素。

它们既有区别又有联系。

2.什么是软件危机?其产生的原因是什么?人们在大型软件项目开发面前显得力不从心,一些公司或团体承担的大型软件开发项目预算经常超支,软件交货时间经常延迟,软件质量差,维护困难,在软件维护过程中很容易引起新的错误,软件的可移植性差,两个类似的软件很少能够重用,等等。

工业界为维护软件支付的费用占全部硬件和软件费用的40%-75%。

许多重要的大型软件开发项目,在耗费了大量的人力和财力之后,由于离预定目标相差甚远不得不宣布失败。

从软件危机的种种表现和软件作为逻辑产品的特殊性可以发现软件危机的原因:①用户对软件需求的描述不精确,可能有遗漏、有二义性、有错误,甚至在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要求。

②软件开发人员对用户需求的理解与用户的本来愿望有差异,这种差异必然导致开发出来的软件产品与用户要求不一致。

③大型软件项目需要组织一定的人力共同完成,多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验。

各类人员的信息交流不及时、不准确、有时还会产生误解。

④软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。

软件工程导论(第六版)张海藩课后习题部分答案

软件工程导论(第六版)张海藩课后习题部分答案

第一章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返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。

简述软件工程的定义。

简述软件工程的定义。

简述软件工程的定义
软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。

它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。

同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。

这些应用促进了经济和社会的发展,也提高了工作效率和生活效率。

软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。

比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

在IEEE在软件工程术语汇编中的定义:软件工程是1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究。

在《计算机科学技术百科全书》中的定义是:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。

软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。

课程介绍1.软件工程的研究领域和组成要素 软件工程(Software ...

课程介绍1.软件工程的研究领域和组成要素 软件工程(Software ...

(1)与软件本身的特点有关 )
缺乏“可见性” 缺乏“可见性” 管理和控制软件开发过程相当困难 软件较难维护。 软件较难维护。 规模庞大 为了在预定时间内开发出规模庞大的软件, 为了在预定时间内开发出规模庞大的软件,必须 由许多人分工合作,然而, 由许多人分工合作,然而,如何保证每个人完成的工作合 在一起确实能构成一个高质量的大型软件系统,不仅涉及 在一起确实能构成一个高质量的大型软件系统, 许多技术问题,更重要的是必须有严格而科学的管理。 许多技术问题,更重要的是必须有严格而科学的管理。
(3) 软件产品质量靠不住。 软件产品质量靠不住。 (4) 软件可维护性差。 软件可维护性差。
开发过程没有统一的、公认的规范,软件开发人员按各自的风格 开发过程没有统一的、公认的规范, 工作,各行其事。开发过程无完整、规范的文档, 工作,各行其事。开发过程无完整、规范的文档,发现问题后进行 杂乱无章的修改。程序结构不好,运行时发现错误也很难修改, 杂乱无章的修改。程序结构不好,运行时发现错误也很难修改,导 致维护性差。 致维护性差。
6. 编码和单元测试
数据模型 功能模型 行为模型
必须准确完整地体现用户的要求。 必须准确完整地体现用户的要求。
联系图) (实体-联系图) 实体 联系图 数据流图) (数据流图) 状态转换图) (状态转换图)
. 书写规格说明书
用正式文档准确地记录对目标系统的需求。 用正式文档准确地记录对目标系统的需求。
4. 总体设计 概要设计 总体设计(概要设计 概要设计)
(2)与软件开发与维护的方法不正确有关 )
在不同时期引入一个变动需 要付出的代价的变化趋势。 要付出的代价的变化趋势。
忽视软件需求分析的重要性 作好软件定义时期的工作, 作好软件定义时期的工作, 是降低软件成本提高软件质 量的关键。 量的关键。

软件开发技术基础顾刚

软件开发技术基础顾刚
第*|83页
IEEE给出的定义
1983年IEEE给出的定义为: 以优质、高效、低成本为目标,研究开发、运行和维护软件以及使之退役的系统方法。
其中,“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。
第*|83页
教科书给出的定义
教科书中定义为: 运用系统的、规范的和可定量的方法来开发、运行和维护软件。
分两步骤: 可行性研究、制定软件开发计划
目的:要回答“要解决什么问题?”, 既系统”做什么?“。
结果: 可行性报告、软件计划、需求说明书
需求说明书是让用户理解: “什么是他们真正需要的”。
第*|83页
了解用户需求有关的问题
来自哪里? 来自用户,工业标准,和实践经验;
谁来做? 用户,工程管理人员,开发人员,维护人员。
缺少用户参与;
不完备的需求规范;
改变需求规范。
第*|83页
需求分析的难点
问题的复杂性。
涉及因素多而;如运行环境和系统功能等。
交流障碍。
涉及不同类型人员较多,知识背景、角度、角色的不同;
不完备性和不一致性。
用户对问题的陈述有矛盾、片面性等造成。
需求易变性。
需求是变化的。
第*|83页பைடு நூலகம்
需求工作的重要性
第*|83页
2、软件设计
任务:给出实现系统的实施蓝图。
目的:要回答“如何解决该问题?”, 既系统“怎样做?”。
步骤:
概要设计:解决系统的模块划分、模块的层次结构及数据库设计。
详细设计:解决每个摸块内部算法和数据结构。
结果: 系统设计说明书和模块功能说明书
第*|83页
软件设计工作

软件工程开题报告(范文)

软件工程开题报告(范文)

软件工程开题报告(范文)【第1篇】软件工程开题报告一、选题依据(拟开展研究项目的研究目的、意义)随着社会的进步、计算机技术的飞速发展,用计算机实现企业人事工资的管理势在必行。

对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件;而工资管理是一项琐碎、复杂而又十分细致的工作,工资计算、发放、核算的工作量很大,一般不允许出错,如果实行手工操作,每月发放工资须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,计算机进行工资发放工作,不仅能够保证工资核算准确无误、快速输出,而且还可以利用计算机对有关工资的各种信息进行统计,服务于财务部门其他方面的核算和财务处理,同时计算机具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高人事工资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。

所以人事工资管理系统应运而生,成为利用计算机实现企业人事工资管理的基本。

二、国内外研究现状随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。

建设一个科学高效的信息管理系统是解决这一问题的必由之路。

企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一、工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理系统来进行管理,那么势必会给管理人员带来种种麻烦,因此类似工资管理系统之类的财务软件的开发势在必行。

现在中国企业已进入'新管理时代',企业管理在经历了计划经济时期的'生产管理'时代,计划经济与市场经济相结合时期的'混合管理'时代后,从九十年代末进入全面市场经济时期的'新管理'时代.新管理时的中国企业管理是面向市场,基于现代企业制度,是中国模式,价值化,系统化,电脑化,国际化和普遍化管理的时代. 新管理时代的中国企业管理以建立竞争优势,提高企业竞争力为核心.要提高企业的竞争力就必须整合企业经营,全面强化企业管理,形成企业持久发展的'内功'.越来越多的质优企业舍得在管理系统上投资的举动,足以说明这一趋势.在市场竞争日益激烈,用户需求不断趋向多样化,企业间关联程度越来越密切的今天,要求企业行动必须快捷,灵敏,在管理的思想观念,方式方法上不断创新.人力已经很难完全达到要求,必须借助当代信息科技的最新成果,优化和加强企业的运营和管理.三、研究方案(主要研究内容、目标,研究方法、进度)主要内容:支持企业实现规范化的管理,支持企业高效率完成劳动人事管理的日常业务,包括新员工加入时认识档案的建立,老员工转出、辞职、退休等。

《软件工程》课件第2章 软件要求定义

《软件工程》课件第2章 软件要求定义

文档
通常表示打印输出,也可表示用打印终端输入数据
联机存储
表示任何种类的 联机存储 ,包括磁盘 、软盘和海 量存储 器件等
第2章 软件要求定义
符号
名称 磁盘
说明 磁盘输入/输出,也可表示存储在磁盘上的文件或数据库
显示
CRT 终端或类似的显示部件,可用于输入或输出,也可 既输入又输出
人工输入
人工输入数据的脱机处理,例如,填写表格
换页连接
说明 能改变数据值或 数据位置 的加工或部 件,例如, 程序模 块、处理机等都是处理 表示输入或输出(或既输入又输出),是一个广义的不指明 具体设备的符号 指出转到图的另 一部分或 从图的另一 部分转来, 通常在 同一页上
指出转到另一页图上或由另一页图转来
数据流
用来连接其他符号,指明数据流动方向
第2章 软件要求定义
系统流程图可用图形符号来表示系统中的各个元 素,例如,人工处理、数据处理、数据库、文件和设 备等。它表达了系统中各个元素之间的信息流动的情 况。
画系统流程图时,首先要搞清业务处理过程以及 处理中的各个元素,同时要理解系统的流程图的各个 符号的含义,选择相应的符号来代表系统中的各个元 素。所画的系统流程图要反映出系统的处理流程。
(8) 结论意见:说明项目是否能开发,还需什么 条件才能开发,对项目目标有何变动等。
第2章 软件要求定义
2.2 项目开发计划
经过可行性研究后,若一个项目是值得开发的, 则接下来应制定项目开发计划。软件项目开发计划是 软件工程中的一种管理性文档,主要是对开发的软件 项目的费用、时间、进度、人员组织、硬件设备的配 置、软件开发环境和运行环境的配置等进行说明和规 划,是项目管理人员对项目进行管理的依据,据此对 项目的费用、进度和资源进行控制和管理。

软件工程复习提纲(20160615)

软件工程复习提纲(20160615)

软件工程复习提纲Chapter11.开发文档都有哪些?用图来表示它们之间的关系。

2.说明软件工程研究的内容.3.软件工程的7条基本原理有何现实意义。

4.怎样理解ISO9000的文档体系?质量手册、程序文件、质量记录三者有何联系和区别?5.怎样理解CMMI,如何用CMMI去管理软件企业?6.是否存在这一种现象:搞系统软件的公司不需要采用CMMI和ISO9000模式?CMMI和ISO9000模式只适用于搞应用软件的企业?如果是,为什么,如果不是,又为什么?7.软件工程与信息系统工程有何异同?8.怎样理解元数据?Chapter21.为什么要选择软件开发模型?软件开发模型与软件生存周期有什么关系?2.简述瀑布模型、增量模型、迭代模型、原型模型的优缺点。

3.软件公司的ISO9000或CMM管理体系与软件开发模型有关吗,为什么?4.你对“生存周期模型裁剪指南"有什么看法?5.“图书馆信息系统”的开发选用什么开发模型合适?Chapter31.立项的具体表现形式是什么?2.立项建议书的编制者为什么主要是软件公司的市场销售人员,而不是开发人员?3.什么叫风险分析,技能风险与技术风险有何区别?3.合同、任务书、立项建议书三者有何异同?有何关系?4.对软件项目和产品的“功能、性能、接口"三项指标如何理解?Chapter41.需求分析的目的是什么,需求分析的难点在哪里?2.需求分析的理论基础有哪几条?3.为什么说需求分析是面向流程的?4.解释术语:元数据、实体、中间数据.5.用户需求报告与需求规格书有何差异?6.需求描述有哪几种工具?你喜欢哪一种,为什么?1.简述软件策划的步骤.2.简述软件策划的方法。

3.简述对软件工作产品规模进行量化估计的方法。

4.软件工作产品和软件产品有何异同?5.名称解释:直接人工、直接费用、间接成本、制造费用、管理费用、不可预见费用。

6.怎样理解软件中的度量,它有何作用?Chapter61.概要设计说明书和详细设计说明书有何区别?2.怎么理解“软件概要设计是系统总体结构设计或系统架构设计”?3.模块实现设计包括哪些内容?4.为什么软件设计要遵守“抽象、分解与模块化、低耦合高内聚、封装、接口和实现分离”的设计原理?Chapter71.简述UML的优缺点。

软件工程专业

软件工程专业

软件工程专业(专业代码:0835,授予工学硕士学位)一、学科专业及研究方向作为计算机科学与技术、数学、工程学、管理学等相关学科的交叉性学科,软件工程学科是以计算机软件与理论为基础、计算机应用技术为背景,应用数学、管理科学等学科的方法和原理,研究并实施软件系统开发与应用的学科。

本专业面向国民经济信息化建设和发展的需要、面向企事业单位对软件工程技术人才需要,培养掌握软件工程专业理论基础,能够独立从事相关领域的研究工作并胜任相关实务工作的高层次实用型、复合型软件工程技术和软件工程管理人才。

在研究方向上着重软件工程理论、软件工程技术、软件工程应用、软件服务工程。

在课程设置上注重学生科学研究能力和专业知识实践应用能力的培养,发挥学院和国外高校教师的优势,加强学生的科学研究和软件工程方法论等相关知识的基本训练,同时强调理论与实践的结合,在保持知识体系的前沿性和前瞻性的基础上,提高学生的科学研究和专业工作能力。

主要研究方向及其内容:1、软件工程理论:主要研究软件工程形式化方法、软件自动生成与演化、软件建模分析与验证、软件程序分析与验证等。

2、软件工程技术:主要研究需求工程、软件规范语言、软件体系结构、软件测试与质量保证、软件再工程、软件验证方法、软件工程环境与开发工具、面向领域的软件工程方法与技术及软件工程管理方法等。

3、软件工程应用:主要研究及运用软件工程理论、技术解决云计算、大数据等当前热点领域中的关键问题,构建高可靠性、稳定性的软件系统。

4、软件服务工程:主要研究软件服务的理论、方法、技术与应用,软件工程过程服务、面向服务的计算及服务工程。

二、培养目标本专业的培养目标是面向软件行业的发展趋势,针对企事业单位对软件工程专业人才的需求,培养掌握较为精深而系统的软件工程专业知识,具有从事软件工程领域研究能力、良好软件设计与实现能力、良好软件项目管理能力,具有良好沟通与组织协作能力,具有优秀职业素养,具有国际竞争能力的高层次、创新型、复合式、国际化专业人才。

第1章 软件工程概述

第1章 软件工程概述

因而软件成本相当昂贵;
(6)相当多的软件开发涉及到社会因素。
2017/10/26 第4页 软件工程
3、软件的分类:
(1)按功能分类 a、系统软件:支持计算机系统各个部件、相关的软件
和数据协调、高效地工作的软件。如:OS、DBMS、
DRIVER、COMMUNICATION-SYSTEM。 b、支撑软件:协助用户开发软件的工具性软件,文本 编辑软件。如:PSL/PSA(问题描述语言、问题描述分析 器)、图形软件包、预编译程序、静态分析程序。
是批处理还是人机交互,信息存储是采用文件系统还是数据库?),方案的级
别有:低、中、高等级,每种方案都用系统流程图或其它工具加以描述。推荐 一种方案。最后确定一种方案。 (4)完成的任务:可能的解法(每种解法的系统流程图和成本效益分析),推 荐的系统结构(层次图或结构图)。 总体设计结束的标志是提交总体设计说明书、数据库或数据结构说明书和 集成测试计划等文件。
软件工程
2017/10/26
第1页
软件工程
第一章 软件工程概述
软件 软件危机 软件工程
2017/10/26
第2页
软件工程
1.1 软
1、什么叫软件?

(1)广义软件:相对于有形物理实体,把技术条件、管理法
规以及人员素质等无形因素称为软件。 (2)计算机软件:是与计算机硬件相对应的计算机组成部分, 包括程序、数据及其相关文档的完整集合。 Boehm:“软件是程序以及开发、使用和维护程序所需的所有
2017/10/26
第6页
软件工程
(4)按功能软件服务对象分类 a、项目软件:受特定客户委托由一个或多个软件 开发机构在合同的约束下开发出来的软件。 b、产品软件:提供给市场的商品。

软件工程软件第1章

软件工程软件第1章
1. 软件工程关注于大型程序的构造
“大”与“小”的分界线并不十分清晰。通常 把一个人在较短时间内写出的程序称为小型程序, 而把多人合作用时半年以上才写出的程序称为大型 程序。传统的程序设计技术和工具是支持小型程序 设计的,不能简单地把这些技术和工具用于开发大 型程序。
事实上,在此处使用术语“程序”并不十分恰当, 现在的软件开发项目通常构造出包含若干个相关程发和维护还有 不少糊涂观念,在实践过程中或多或少地采用了错 误的方法和技术,这可能是使软件问题发展成软件 危机的主要原因。
一个软件从定义、开发、使用和维护,直到最 终被废弃,要经历一个漫长的时期,这就如同一个 人要经过胎儿、儿童、青年、中年和老年,直到最 终死亡的漫长时期一样。通常把软件经历的这个漫 长的时期称为生命周期。软件开发最初的工作应是 问题定义,也就是确定要求解决的问题是什么;然 后要进行可行性研究,决定该问题是否存在一个可 行的解决办法;接下来应该进行需求分析,也就是 深入具体地了解用户的要求,在所要开发的系统 (不妨称之为目标系统)必须做什么这个问题上和用 户取得完全一致的看法。
严重的问题是,在软件开发的不同阶段进行修 改需要付出的代价是很不相同的,在早期引入变动, 涉及的面较少,因而代价也比较低;而在开发的中 期软件配置的许多成分已经完成,引入一个变动要 对所有已完成的配置成分都做相应的修改,不仅工 作量大,而且逻辑上也更复杂,因此付出的代价剧 增;在软件“已经完成”时再引入变动,当然需要 付出更高的代价。根据美国一些软件公司的统计资 料,在后期引入一个变动比在早期引入相同变动所 需付出的代价高2~3个数量级。图1.1定性地描绘 了在不同时期引入一个变动需要付出的代价的变化 趋势。
这7条原理是互相独立的,其中任意6条原理的组合 都不能代替另一条原理,因此,它们是缺一不可的 最小集合,然而这7条原理又是相当完备的,人们 虽然不能用数学方法严格证明它们是一个完备的集 合,但是,可以证明在此之前已经提出的100多条 软件工程原理都可以由这7条原理的任意组合蕴含 或派生。

(完整版)《软件工程》作业及答案.

(完整版)《软件工程》作业及答案.

《软件工程》作业及答案1-1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机典型表现:对软件开发成本和进度的估计常常很不准确。

用户对“已完成的”软件系统不满意的现象经常发生。

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

软件常常是不可维护的。

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

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

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

产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。

软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。

管理和控制软件开发过程相当困难。

软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。

目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。

1-2 假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?答:软件工程是指导计算机软件开发和维护的一门工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

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

软件工程导论第2章可行性研究

软件工程导论第2章可行性研究

表 2.1 基本符号
符号
名称
说明
处理
能改变数据值或数据位置的加工或部件
输入/输出 连接 换页连接
表示输入或输出(或既输入又输出), 是一个广义的不指明具体设备的符号
指出转到图的另一部分或从图的另一部 分转来,通常在同一页上
指出转到另一页图上或由另一页图转来
人工操作 由人工完成处理
数据流
用来连接其他符号,指明数据流动方向
尽管系统流程图使用的某些符号和程序流程图所用 的符号相同,但系统流程图表达的是信息在系统中 各个部件之间流动的情况,而不是对信息进行加工 处理的控制过程。
例:库存清单系统
零件库存量的每一次变化称 为一个事务,由放在仓库中 的CRT终端输入到计算机 中。
系统中的库存清单程序对事 务进行处理,更新存储在磁 盘上的库存清单主文件,并 且把必要的定货信息写在磁 带上。最后,每天由报告生 成程序读一次磁带,并且打 印出定货报告。
习题
2-1 在软件开发的早期阶段为什么要进行可行性研究? 应该从哪些方面研究目标系统的可行性?
2-2 为方便储户,某银行拟开发计算机储蓄系统。储 户填写的存款单或取款单由业务员键入系统,如果是 存款,系统记录存款人姓名、住址、存款类型、存款 日期、利率等信息,并印出存款单给储户;如果是取 款,系统计算利息并印出利息清单给储户。 请写出问题定义并分析此系统的可行性。
2.1.2 问题定义的步骤
在问题定义阶段,系统分析员要深入现场,阅 读用户写的书面报告、听取用户对开发系统的 要求、调查开发系统的背景理由。
还要与用户负责人反复讨论,以澄清模糊的地 方、改正不正确的地方。
最后写出双方都满意的问题定义报告,并确定 双方是否可进行深入系统可行性研究的意向。

为什么要研究软件体系结构

为什么要研究软件体系结构

1、为什么要研究软件体系结构1.软件体系结构是系统开发中不同参与者进行交流和信息传播的媒介。

2.软件体系结构代表了早期的设计决策成果。

早期的决策最难处理、最难于改变、影响范围也最大。

3.软件体系结构可以作为一种可变换的模型。

4.系统体系结构的发展是与计算机抽象技术的发展同步的;5.大规模复杂软件系统的性能与质量对软件工程技术提出了新的要求。

2、软件体系结构的模型构件(component)可以是一组代码,如程序的模块;也可以是一个独立的程序(如数据库的SQL服务器);连接件(connector)是关系的抽象,用以表示构件之间的相互作用。

如过程调用、管道、远程过程调用等;限制(constrain):用于对构件和连接件的语义说明。

3、引入了软件体系结构以后,传统软件过程发生了哪些变化?这种变化有什么好处?答:软件体系结构的引入使软件设计开发更加具体和形象,它的模型更使得软件过程更加方便和多样化。

其好处在于:包括程序员在内的绝大多数系统的利益相关人员都借助软件体系结构来进行彼此理解、协商、达成共识或者相互沟通的基础,软件体系机构的模型可以应用到具有相似质量属性和功能需求的系统中,并能够促进大规模软件的系统级复用,在很多方面使得软件开发更加人性化。

4、区别体系结构语言更多的描述各构件之间的关系程序设计语言更注重功能描述。

5、核心模型软件结构的核心模型由5种元素组成:构件、连接件、配置、端口和角色。

其中,构件、连接件和配置是最基本的元素。

6、试分析和比较B/S,二层C/S和三层C/S,指出各自的优点和缺点。

答:二层C/S体系结构将应用一分为二,服务器负责数据管理,客户机完成与用户的交互任务。

优点(1)C/S体系结构具有强大的数据操作的事务处理能力,模型思想简单,易于人们理解和接受。

(2)对软硬件的变化有极大的适应性和灵活性,易于对系统进行扩充和缩小。

(3)系统中的功能构建充分隔离,节约大量费用。

缺点:(1)开发成本较高。

软件测试引论(1-2)

软件测试引论(1-2)

1
第1章 引论
2
1~2
第2章 软件测试的 基本概念
6
2~3
第3章 软件测试的 方法
课程安排 (2)
周次 4 教学章节 教学内容 第4章 软件测试依据 4.1 测试过程模型 和规范 4.2 测试过程改进模型 4.3 软件测试标准和规范 4.4 建立软件测试管理和评判体系 第5章 单元测试 5.1 5.2 5.3 5.4 5.5 5.6 5.7 6.1 6.2 6.3 6.4 什么是单元测试 单元测试的目标和任务 静态测试 驱动程序和桩程序 调试与评估 单元测试的管理 单元测试工具 系统集成的模式与方法 功能测试 回归测试 非功能性测试 建议学时 2
课程目标
通过本课程的学习,我们还可以了解并掌握:


有效的测试策略、方法和技术 测试计划和测试用例的设计


测试自动化的引入、应用
测试团队的建立和测试项目的管理 更清楚、准确地报告测试缺陷


对软件产品质量的正确评估
软件测试和质量保证的关系和区别
……
课程服务于
- 测试工程师 Test engineer
第7章 验收测试
8
第8章 面向对象软件 的测试
9
第9章 基于应用服务 器的测试
2
课程安排 (4)
周次 教学章节 10.1 10.2 10.3 10.4 11.1 11.2 11.3 11.5 11.6 11.7 11.8 11.9 10 第10章 软件本地化测试 教学内容 什么是软件本地化 翻译验证 本地化测试的技术问题 本地化的功能测试 测试自动化的内涵 测试自动化实现的原理 测试自动化的实施 功能测试工具 性能测试工具 安全性测试工具 缺陷跟踪系统 管理工具 建议学时 2

第1章初识软件工程

第1章初识软件工程
GXNU
软件工程
Software Engineering
李宁
Questions
❖ 什么是软件工程? ❖ 我们为什么要学习软件工程? ❖ 我们该如何学习和应用软件工程?
软件工程是什么?
❖ 用来指导软件开发的好的经验、方法和技术 ❖ 用工程化的东西来规范和指导软件企业的活动和
过程
我们自己做的网站
我们自己做的网站(2010级)
软件危机的典型表现(特征):
软件规模越来越大
Windows 95有1000万行代码 Windows 2000有5000万行代码 其中,Windows 2000开发人员结构
项目经理 开发人员 测试人员
约250人 约1700人 约3200人
软件危机的发展过程
计算机应用发展
软件数量多 软件成本高、
规模大
❖ 软件危机是指在计算机软件的开发和管理过程中 所遇到的一系列严重问题(正常、不正常运行软 件都具有这种问题) 。
2011年,甬温线特别重大铁路交通事故
2011年7月23日20时30 分05秒,甬温线浙江省 温州市境内D301次列 车与D3115次列车发生 动车组列车追尾事故。 造成40人死亡、172人 受伤,中断行车32小时 35分,直接经济损失 19371.65万元。
高校在每个学期考试结束后,要求教师在网上登 录成绩管理系统,输入本学期任教的课程的成绩 到系统中; 学生可以在线查询成绩; 院系教学管理人员可以在线统计分析成绩、在线 生成班级成绩报表等;
项目启动会
小组讨论,形成:
❖开发目标 ❖开发时间 ❖小组分工(任务) ❖实施步骤和思路 ❖其他要考虑的问题
对项目的思考
发生“软件危机”最突出的案例
IBM公司在1963年至1966年开发的IBM 360操 作系统。该项目花了5000人/年的工作量,得到的结 果却非常糟糕。

软件工程学概述

软件工程学概述

3. 实行严格的产品控制 基线配置管理(变动控制)
4. 采用现代程序设计技术 结构化分析、设计技术、结构化程序设计技术,面向对
象分析和设计技术。
实践表明,采用先进的技术不仅可以提高软件开发和 维护的效率,而且可以提高软件产品的质量。
5. 结果应该能够清楚地审查 依据开发项目的总目标和完成期限,规定开发小组的
易地改动。”
◦ “软件投入生产性运行以后需要的维护工作并不多,而且维护是一 种很容易做的简单工作。”软件维护的费用占软件总费用的55%- 70%
◦ 不完善的系统定义往往是导致软件项目失败的主要原因。 ◦ 只有质量差的软件产品才需要维护。
◦ 在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误 所花费的代价就会降低。
不全,坚持认为软件开发就是写程序、运行程序; (c)轻视软件维护。
不同阶段修改软件需付出的代价很不相同:
代价



早期 中期 后期 软件开发时期
引入同一修改的代价随时间变化的趋势
关于软件开发的常见观点:√ or X
◦ “有一个对目标的概括描述就足以着手编写程序了,许多细节可以 在以后再补充。”
◦ “所谓软件开发就是编写程序并设法使它运行。” ◦ “用户对软件的要求不断变化,然而软件是柔软而灵活的,可以轻
5. 详细设计 任务:怎样具体实现该系统 ◦ 详细地设计每个模块,确定实现模块功能所需要的算法和数 据结构。
结果: ◦ 每个模块的算法和数据结构(程序流程图、 N-S图、 PAD图
等)。
6. 编码和单元测试 任务:得到正确的程序模块 ◦ 选取一种适当的高级程序设计语言(必要时用汇编语言),把 详细设计的结果翻译成用选定的语言书写的程序; ◦ 并且仔细测试编写出的每一个模块。 结果: ◦ 代码和测试报告

软件工程中的软件工程可扩展性与可扩展性设计

软件工程中的软件工程可扩展性与可扩展性设计

软件工程中的软件工程可扩展性与可扩展性设计软件工程是一个涵盖开发、测试、维护和管理软件的学科领域。

在软件工程的实践中,可扩展性是一个非常重要的概念。

软件的可扩展性指的是软件系统能够在不失去核心功能的前提下,通过增加或改进功能来适应不断变化的需求。

而可扩展性设计则是指在软件的开发过程中,有意识地考虑和实现软件的可扩展性。

一、什么是软件工程可扩展性软件工程可扩展性是指软件系统能够有效地应对变化、增长和扩展的能力。

在软件系统的设计中,要考虑到系统未来的需求变化,以便能够在不大幅度修改或重构整个系统的情况下进行功能的扩展或改进。

可扩展性是软件工程中一个非常重要的质量属性,它直接关系到软件系统的可维护性、可重用性和可靠性。

二、为什么要关注软件工程可扩展性在软件开发过程中,往往会面临需求的变化、功能的增加、数据的增长等挑战。

如果软件系统的设计没有考虑到可扩展性,一旦需求发生变化,就会需要大量的修改和重构,甚至需要从头开始重新设计和开发。

这样不仅浪费了大量的时间和成本,也会降低软件的质量和可靠性。

而如果软件的设计具有良好的可扩展性,就可以根据需求的变化来灵活地进行功能的添加或改进,而不需要大规模地修改或重构整个系统。

这样可以大大提高软件开发的效率和质量,减少维护的成本。

三、软件工程可扩展性设计的原则1. 分层架构:将软件系统分为若干个层次,每个层次都应该具有相对独立的功能和责任。

这样,在需要添加功能或修改功能时,只需要对相应的层次进行修改,而不会对其他层产生太大的影响。

2. 模块化设计:将软件系统分解为若干个模块,每个模块都具有相对独立的功能和接口。

这样,在需要添加新功能时,只需要开发新的模块并与现有模块进行集成,而不需要修改已有模块的代码。

3. 接口设计:在进行模块化设计时,需要设计良好的接口。

接口应该尽可能地简单、清晰和稳定,以便能够适应未来的变化。

4. 松耦合:模块之间应该尽可能地减少依赖,避免出现过度的耦合关系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

12
软件工程的知识体系 软件工程的知识体系
软件工程管理学
计划管理 成本管理 人员组织 软件工程的知识体系
软件工程要素
从项目管理看,自然涉及到人员与组织、成本、风 险、软件配置项、基线、质量等要素 从技术看,会涉及到设计模式、编程语言、开发平 台、网络、通用组件、中间件、接口、数据库、人 机界面、服务器、客户端等要素 总体上看,有软件质量、标准、过程、方法、技术、 工具、团队等主要因素
17
软件工程的知识体系 软件工程的知识体系
软件工程知识体系的构成
18
软件工程的知识体系 软件工程的知识体系
知识域及其子域
19
现代软件工程
开源软件运动 SaaS 现代软件工程的基本思想
20
现代软件工程
开源软件运动(1998-2008)
OpenWisdom = Open Source = Community = Share
23
现代软件工程
开源软件开发的经验
早发布、常发布、听取用户的建议。 把用户当做协作开发者和测试人员 精妙的数据结构和笨拙的代码所构成的组合肯定好 于笨拙的数据结构和精妙的代码。 最好的设计是最精简的设计 好的程序员知道如何写代码,伟大的程序员知道重 用或重构代码
24
现代软件工程
SaaS
Software-as-a-Service的简称 新的软件应用模式 厂商统一部署应用软件 客户按需获得服务
21
现代软件工程--开源软件产品 现代软件工程 开源软件产品
22
现代软件工程
开源软件的特点
日常管理成本被最小化 开源软件的设计,努力提取其共性而形成参考体系结构,并 使其易于移植。 核心小组成员及其责任分配是自发形成的,并不是硬性指派 产生。 非正式交流(如邮件列表、论坛等)在开源软件开发的活动 中发挥着积极的重要作用 开源项目用户的参与度高 并不刻意遵循特定的软件工程方法和过程 采取独特的、灵活的方式来解决标、资源配置和进度安排等 问题,
28
为什么要研究软件工程? 为什么要研究软件工程
Q&A
谢谢
29
16
软件工程十个知识域 软件工程十个知识域
软件需求 (Software Requirements) 软件设计 (Software Design) 软件构造 ( Software Construction) 软件测试 (Software Testing ) 软件维护 (Software Maintenance) 软件配置管理 (Software Configuration Management) 软件工程管理 (Software Engineering Management) 软件工程过程 (~ Process) 软件工程工具和方法 (~ Tool and Method) 软件质量 (Software Quality
9
软件工程的知识体系 软件工程的知识体系
软件工程的不同视角
10
软件工程的知识体系 软件工程的知识体系
软件工程学的构成
11
软件工程的知识体系 软件工程的知识体系
软件工程方法学
软件方法学实际上就是研究在软件工程中可以采用 的软件方法、技术和工具,即完成软件构建和维护 所需要的有效方法和技术 软件方法学离不开软件过程,包括软件过程的定义、 监控、管理和改进 软件开发环境是方法和工具的结合
3
软件的问题在哪里? 软件的问题在哪里?
软件特性 软件业所面临的问题 软件问题的幽默画
4
软件问题的幽默画 软件问题的幽默画
5
软件工程的定义
F.L. Bauer:软件工程 软件工程是为了经济地获得能够 软件工程 在实际机器上高效运行的、可靠的软件而建立 和应用一系列坚实的软件工程原则 SEI: 软件工程 软件工程是以工程的形式应用计算机科学 和数学原理,从而经济有效地解决软件问题 IEEE: 软件工程 软件工程是将系统性的、规范化的、可 定量的方法应用于软件的开发、运行和维护
为什么要研究软件工程
《软件工程导论》第1章 Part II
2012-2-28
邢岳林 xingyl@
1
Agenda
软件危机 软件的问题在哪里? 软件工程的诞生 软件工程的命题 软件工程知识体系 现代软件工程
2
几个问题的回顾
软件(Software ) 软件危机 (Software Crisis) 软件存在的问题是什么? 什么是软件工程?
27
本章小结
只有技术路线 项目管理 质量管理 技术路线、项目管理 质量管理的有机结 技术路线 项目管理和质量管理 合,一个软件工程项目才能有序、有计划、高 质量地完成 工程需要规范和范型,需要建立相对应的标准 要系统、彻底地解决软件工程问题,需要借助 系统工程学、管理学、行为组织学、数学等多 个学科的帮助
25
现代软件工程
SaaS
26
现代软件工程
现代软件工程的基本思想
让过程作为指南,而不是“警察” 过程等于一组实践,不等于惯例 精益概念,摒弃复杂的公式化元模型,取而代之的 是简单的、可感知的分类法。 简炼的表示方法,使用卡片和指南表来提供实践及 相关工件的一致、简单的解释 专业人员是知识的主体 开放的和可扩展的
6
软件工程的内涵 软件工程的内涵
软件工程学科包含为完成软件需求、设计、构 建、测试和维护所需的知识、方法和工具。 软件工程不局限在理论之上,更重要在实践上, 能够帮助软件组织协调团队、运用有限的资源, 遵守已定义的软件工程规范,通过一系列可复 用的、有效的方法,在规定的时间内达到预先 设定的目标
7
软件工程-交叉性学科 软件工程 交叉性学科
软件工程由下列3部分组成:
计算机科学和数学用于构造软件的模型与算法 工程科学用于制定 规范、设计范型、 评估成本以及确定 权衡等 管理科学用于计划、 资源、质量、成本 等管理 。
8
软件工程的知识体系 软件工程的知识体系
软件工程知识体系的构成 软件工程要素 SWEBOK
14
软件工程的知识体系 软件工程的知识体系
软件工程基本要素
软件工程 = 思想 +流程 +方法 +工具 +最佳实践
思想
流程 最佳 实践 方法
工具
15
SWEBOK实施三阶段 实施三阶段
草人阶段( ~1997年5月 )产生软件工程本 草人阶段 体知识指南的雏型,主要是为该指南确定恰当 的组织结构。 石人阶段( 石人阶段 ~2001年4月18日),草稿完成、 进入试用阶段, SWEBOK 0.95版的发布标志 着该阶段结束。 铁人阶段( 铁人阶段 ~2004年),从正式版本——1.0 版开始到现在,包括最新的2004版本
相关文档
最新文档