软件工程第8版部分课后习题答案

合集下载

软件工程---课后习题答案.doc

软件工程---课后习题答案.doc

软件工程---课后习题答案.doc第一章1.1什么是计算机软件?软件的特点是什么?计算机软件是指计算机系统中的程序及其文档软件的特点:●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。

●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。

●软件的使用没有硬件那样的机械磨损和老化问题。

1.2简述软件的分类,并举例说明1.系统软件系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。

例如:编译软件、操作系统。

2.支撑软件支撑软件是支撑软件的开发和维护的软件。

例如:数据库管理系统、网络软件、软件工具、软件开发环境。

3.应用软件应用软件是特定应用领域专用的软件。

例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。

1.3简述软件语言的分类,并举例说明。

1.需求定义语言是用于书写软件需求定义的语言。

例如:PSL/PSA。

2.功能性语言是用于书写软件功能规约的语言,通常又称为功能规约语言。

例如:广谱语言、Z语言。

3.设计性语言是用于书写软件设计规约的语言。

例如:PDL。

4.实现性语言也称为程序设计语言,是用于书写计算机程序的语言。

例如:C、java、PROLOG、FORTRAN、COBOL、Modula。

5.文档语言是用于书写软件文档的语言。

通常用自然语言或半形式化语言书写。

1.4什么是软件工程?软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。

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

1.5简述软件工程的基本原则。

软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。

1.选取适宜的开发模型必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。

2.采用合适的设计方法合适的设计方法有助于这些特征的实现,以达到软件工程的目标。

软件工程 课后习题答案

软件工程   课后习题答案

第一章1.1什么是计算机软件?软件的特点是什么?计算机软件是指计算机系统中的程序及其文档软件的特点:软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。

软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。

软件的使用没有硬件那样的机械磨损和老化问题。

1.2简述软件的分类,并举例说明1.系统软件系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。

例如:编译软件、操作系统。

2.支撑软件支撑软件是支撑软件的开发和维护的软件。

例如:数据库管理系统、网络软件、软件工具、软件开发环境。

3.应用软件应用软件是特定应用领域专用的软件。

例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。

1.3简述软件语言的分类,并举例说明。

1.需求定义语言是用于书写软件需求定义的语言。

例如:PSL/PSA。

2.功能性语言是用于书写软件功能规约的语言,通常又称为功能规约语言。

例如:广谱语言、Z语言。

3.设计性语言是用于书写软件设计规约的语言。

例如:PDL。

4.实现性语言也称为程序设计语言,是用于书写计算机程序的语言。

例如:C、java、PROLOG、FORTRAN、COBOL、Modula。

5.文档语言是用于书写软件文档的语言。

通常用自然语言或半形式化语言书写。

1.4什么是软件工程?软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。

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

1.5简述软件工程的基本原则。

软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。

1.选取适宜的开发模型必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。

2.采用合适的设计方法合适的设计方法有助于这些特征的实现,以达到软件工程的目标。

3.提供高质量的工程支撑软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。

软件工程课后习题答案(第八版)

软件工程课后习题答案(第八版)

软件工程课后习题:⏹What are the differences between generic software product development and custom software development?⏹Solution:The essential difference is that in generic software product development, the specification is owned by the product developer. For custom product development, the specification is owned by the customer. Of course, there may be differences in development processes but this is not necessarily the case.重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定。

⏹What are the four important attributes which all software products should have? Suggest four other attributes that may sometimes be significant.⏹Solution:For important attributes are maintainability可维护性,dependability 可靠性, performance(efficiency)有效性andusability可用性.Other attributes that may be significant could be reusability可复用性 (can it be reused in other applications),distributability 可分发性(can it be distributed over a networkof processors), portability可移植性 (can it operate onmultiple platforms) and inter-operability互用性 (can it workwith a wide range of other software systems).⏹What is the difference between a software process model and a software process? Suggest two ways in which a software process model might be helpful in identifying possible process improvements.⏹Solution:A software process is what actually goes on when software isdeveloped. A software process model is an abstraction andsimplification of a process. Process models can be used to helpunderstand real processes and to identify which aspects of theseprocesses could be supported by CASE tools. 软件过程就是指在软件开发过程中所做的一些事情。

软件工程第八版(英文)机械工业出版社 课后习题

软件工程第八版(英文)机械工业出版社  课后习题

Part 1 OverviewChapter 1 Introduction1.1 FAQs about software engineering1.2 Professional and ethical responsibility Chapter 2 Socio-technical systems2.1 Emergent system properties2.2 Systems engineering2.3 Organisations, people and computer systems 2.4 legacy systemsChapter 3 Critical systems3.1 A simple safety-critical system 463.2 System dependability 473.3 Availability and reliability 513.4 Safety 553.5 Security 58Chapter 4 Software processes4.1 Software process models 654.2 Process iteration 714.3 Process activities 744.4 The Rational Unified Process 824.5 Computer-Aided Software Engineering 85 Chapter 5 Project management 925.1 Management activities 945.2 Project planning 965.3 Project scheduling 995.4 Risk management 104 RequirementsChapter 6 Software requirements 6.1 Functional and non-functional requirements6.2 User requirements6.3 System requirements6.4 Interface specification6.5 The software requirements document Chapter 7 Requirements engineering processes7.1 Feasibility studies7.2 Requirements elicitation and analysis7.3 Requirements validation7.4 Requirements managementChapter 8 System models 8.1 Context models8.2 Behavioural models8.3 Data models8.4 Object models8.5 Structured methodsChapter 9 Critical systems specification9.1 Risk-driven specification9.2 Safety specification9.3 Security specification9.4 Software reliability specificationChapter 10 Formal specification 10.1 Formal specification in the software process 10.2 Sub-system interface specification10.3 Behavioural specificationPart 3 DesignChapter 11 Architectural design 11.1 Architectural design decisions11.2 System organisation11.3 Modular decomposition styles11.4 Control styles11.5 Reference architecturesChapter 12 Distributed systems architectures12.1 Multiprocessor architectures12.2 Client-server architectures12.3 Distributed object architectures12.4 Inter-organisational distributed computing Chapter 13 Application architectures13.1 Data processing systems13.2 Transaction processing systems13.3 Event processing systems13.4 Language processing systems Chapter 14 Object-oriented design14.1 Objects and object classes14.2 An object-oriented design process14.3 Design evolutionKey PointsFurther ReadingExercisesChapter 15 Real-time software design15.1 System design15.2 Real-time operating systems15.3 Monitoring and control systems15.4 Data acquisition systemsChapter 16 User interface design 36216.1 Design issues 36616.2 The UI design process 37616.3 User analysis 37816.4 User interface prototyping 38116.5 Interface evaluation 383Part 4 Development 389 Chapter 17 Rapid software development 39117.1 Agile methods 39617.2 Extreme programming 39817.3 Rapid application development 40517.4 Software prototyping 409Chapter 18 Software reuse 415 18.1 The reuse landscape 41818.2 Design patterns 42118.3 Generator-based reuse 42318.4 Application frameworks 42618.5 Application system reuse 428 Chapter 19 Component-based software engineering19.1 Components and component models 19.2 The CBSE process19.3 Component compositionChapter 20 Critical systems development20.1 Dependable processes20.2 Dependable programming20.3 Fault tolerance20.4 Fault-tolerant architecturesChapter 21 Software evolution 21.1 Program evolution dynamics21.2 Software maintenance21.3 Evolution processes21.4 Legacy system evolutionPart 5 Verification and ValidationChapter 22 Verification and validation22.1 Planning verification and validation 22.2 Software inspections22.3 Automated static analysis22.4 Verification and formal methods Chapter 23 Software testing23.1 System testing23.2 Component testing23.3 Tes1 case design23.4 Tes1 automationChapter 24 Critical systems validation24.1 Reliability validation24.2 Safety assurance24.3 Security assessment24.4 Safety and dependability case's ManagementChapter 25 Managing people25.1 Selecting staff25.2 Motivating people25.3 Managing groups25.4 The People Capability Maturity Model Chapter 26 Software cost estimation 61226.1 Software productivity 61426.2 Estimation techniques 62026.3 Algorithmic cost modelling 62326.4 Project duration and staffing 637 Chapter 27 Quality management 64127.1 Process and product quality 64427.2 Quality assurance and standards 645 27.3 Quality planning 65227.4 Quality control 65327.5 Software measurement and metrics 655 Chapter 28 Process improvement 66528.1 Process and product quality 66728.2 Process classification 66928.3 Process measurement 67228.4 Process analysis and modelling 67328.5· Process change 67828.6 The CMMI process improvement framework 680Chapter 29 Configuration management29.1 Configuration management plclnning 29.2 Change management29.3 Version and release management 29.4 System building29.5 CASE tools for configuration managementEmerging TechnologiesSecurity engineering30.1 Security concepts30.2 Security risk management 30.3 Design for security 30.4 System survivabilityService-oriented software e:ngineering31.1 Services as reusable components 31.2 Service engineering31.3 Software development with servicesAspect-oriented software development32.1 The separation of concerns 32.2 Aspects, join points and pointcuts 32.3 Software engineering with aspectsChapter 1 ' IntroductionChapter 2 Socio-technical systemsChapter 3 iii Critical systemsChapter 6 • Software requirementsChapter 7 Requirements engineering processesChapter 8 System modelsChapter 9 Critical systems specificationChapter 10 Formal specificationChapter 11 Architectural designChapter 12 Distributed systems architecturesChapter 13 Application architecturesChapter 14 Object-oriented designChapter 15 Real-time software designChapter 16 User interface designChapter 17 Rapid software developmentChapter 18 Software reuseChapter 19 Component-based software engineeringChapter 20 Critical systems developmentChapter 21 Software evolutionChapter 22 Verification and validationChapter 23 Software testingChapter 24 Critical systems validationChapter 25 Managing people。

软件工程课后习题答案中文翻译版(第八版)

软件工程课后习题答案中文翻译版(第八版)

软件工程课后习题:1.解释为什么专业化软件不仅仅包括为用户所开发程序?专业化软件在开发上与在与软件就有所不同。

专业软件通常是由团队开发而非个人,除了开发者外还有其他的用户使用。

如果你的软件有别的用户,别的工程师会去修改的话,你就必须提供除了程序源码之外的其它附带信息。

因此,系统通常除了包含一些单独的程序还有用于这些程序的配置文件,可能还包括描述系统结构的系统文档和解释如何使用该系统的用户文档,以及告知用户下载最新产品的Web站点。

2.通用软件产品开发和定制软件开发直接有什么不同?这在实际应用中对通用软件产品用户意味着什么?(1)重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定开发者必须按客户要求进行开发。

(2)意味着通用软件很难满足通用软件客户的特殊需求。

如可靠性、安全性、快捷性。

3.软件产品应该具有与的4重要属性是那些?另外列举出4个可能有意义的属性。

重要属性:可维护性、可依赖性和安全性、有效性和可用性。

可能有意义的属性:可复用性、可分发性、可移植性和互用性。

4.除了异质性挑战、业务和社会的变革、安全和可信,说出软件工程在21世纪的可能面临的其它问题和挑战。

交付上的挑战:许多传统的软件工程技术需要耗费大量的时间,用于提高软件质量。

而今天的软件制作必须响应快、更换迅速,支持软件也必须同样快地进行更换。

交付上的挑战是:在不损及系统质量的前提下,缩短大型、复杂系统的移交时间。

5.参论的应用类型,照1.1.2节讨举例介绍为什么设计和开发不同类型的应用需要专门的软件技术。

如汽车上年的嵌入式控制系统对安全性要求极高,在车上安装是要烧制到ROM 中在这里的交互在这里是很少的(或许根本就没有)。

基于Web式系统更适合用于迭代式开发和交互。

而基于Web的系统编程使用的如Ruby一类的脚本语言,完全不适合嵌入式系统工程。

6.解释为什么软件工程的基本思想适用于所有的软件系统。

软件工程课后参考答案

软件工程课后参考答案

第一章课后参考答案1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机?“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。

这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。

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

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

出现软件危机的原因(1)开发人员与客户认识之间的矛盾(2)开发人员能力与开发目标之间的矛盾(3)预估与实际工作量之间的矛盾(4)客户认识的提高与软件维护之间的矛盾(5)遗产系统与实施软件之间的矛盾2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。

一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机?软件工程是指导知道计算机软件开发和维护的一门工程学科。

软件工程课后参考答案

软件工程课后参考答案

软件工程课后参考答案第一章课后参考答案1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机?“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。

这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。

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

出现软件危机的主要原因(1)与软件本身的特点有关(2)与软件开发和维护过程中使用的方法不正确有关2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。

一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机?软件工程是指导知道计算机软件开发和维护的一门工程学科。

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

软件工程课后习题集答案解析

软件工程课后习题集答案解析

软件工程课后习题答案习题1 略。

习题2 略。

习题3 略。

习题42.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准那么?人们在理解用自然语言描述的规格说明时,容易产生二义性。

为了克制非形式化方法的缺点,人们把数学引入软件开发工程,创造了基于数学的形式化说明技术。

应用形式化方法的准那么:〔1〕应该选用释放的表示方法;〔2〕应该形式化,但不要过分形式化;〔3〕应该估算本钱;〔4〕应该有形式化方法参谋随时提供咨询;〔5〕不应该放弃传统的开发方法;〔6〕应该建立详尽的文档;〔7〕不应该放弃质量标准;〔8〕不应该盲目依赖形式化方法;〔9〕应该测试、测试再测试;〔10〕应该重用。

4.用有穷状态机说明自动化图书馆流通系统习题5 略。

习题6 略。

习题7 略。

习题8 略。

习题91.什么是面向对象方法学?它有哪些优点?面向对象方法学,是尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程,从而使得实现解法的解空间〔也称为求解域〕与描述问题的问题空间〔也称为问题域〕在构造上尽可能一致。

优点:1.与人类习惯的思维方法一致;2.稳定性好;3.可重用性好;4.较易开发大型软件产品;5.可维护性好10.建立订货系统的用例模型。

分析如下:从对这个订货系统的需求可以知道,仓库管理员通过放在仓库中的终端把零件入库/出库市事务报告给订货系统,系统承受到事务信息之后应该处理事务;采购员需要使用订货系统提供的产生报表功能,以获取订货报表。

综上所述,用例如下:习题101.用面向对象方法分析研究本书习题2第2题中描述的储蓄系统,试建立它的对象模型、动态模型和功能模型。

对象模型参考:以上还需将关联关系说明补全。

动态模型参考:(1)脚本正常情况脚本:●储户有存款要求,填写存款单,包含储户个人信息,存款金额和存款类型;●业务员查收存款,审核存款与存款单存款金额吻合;●存款单生效;●储户有取款要求,填写取款单,包含个人账号、密码〔待定〕和存款金额;●业务员审核存款,验证储户身份,确定储户存款金额 > = 取款金额;●审核通过,取款单生效;●系统打印利息清单,业务员把本金和利息返回储户。

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

课后习题:⏹What are the differences between generic software product development and custom software development?⏹Solution:The essential difference is that in generic software product development, the specification is owned by the product developer. For custom product development, the specification is owned by the customer. Of course, there may be differences in development processes but this is not necessarily the case.重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定。

⏹What are the four important attributes which all software products should have? Suggest four other attributes that may sometimes be significant.⏹Solution:For important attributes are maintainability可维护性,dependability 可靠性, performance(efficiency)有效性andusability可用性.Other attributes that may be significant could be reusability可复用性 (can it be reused in other applications),distributability 可分发性(can it be distributed over a networkof processors), portability可移植性 (can it operate onmultiple platforms) and inter-operability互用性 (can it workwith a wide range of other software systems).⏹What is the difference between a software process model and a software process? Suggest two ways in which a software process model might be helpful in identifying possible process improvements.⏹Solution:A software process is what actually goes on when software isdeveloped. A software process model is an abstraction andsimplification of a process. Process models can be used to helpunderstand real processes and to identify which aspects of theseprocesses could be supported by CASE tools. 软件过程就是指在软件开发过程中所做的一些事情。

软件过程模型是过程的抽象和简化。

过程模型可用于帮助理解真正的过程,并可用于识别过程中的哪些方面可用CASE工具支持。

⏹Giving reasons for your answer based on the type of system being developed, suggest the most appropriate generic software process model that might be used as a basis for managing the development of the follow systems:1) Anti-lock braking system2) Virtual reality system3) University accounting system4) Interactive timetableSolution:(a) Anti-lock braking system: Safety-critical 安全鉴定system somethod based on formal transformations with proofs ofequivalence等价 between each stage.(b) Virtual reality system: System whose requirements cannot bepredicted预知 in advance预先地 so exploratory programmingmodel is appropriate.(c) University accounting system: System whose requirements shouldbe stable because of existing system therefore waterfall modelis appropriate.(d) Interactive timetable交互式时间表: System with a complex userinterface but which must be stable and reliable. Should be basedon throw-away prototyping to find requirements then eitherincremental development or waterfall model.⏹Why a software system that is used in a real world environment must change or become progressively(日益增多地) less useful?⏹Solution:Systems must change because as they are installed in an environment the environment adapts to them and this adaptation naturallygenerates new/different system requirements. 这种适应自然生成新的系统需求Furthermore, the system's environment is dynamic and constantly generates new requirements as a consequence of changes to thebusiness, business goals and business policies.商务的目标以及政治相关Unless the system is adapted to reflect theserequirements, its facilities will become out-of-step with thefacilities needed to support the business and, hence, it willbecome less useful.⏹Why a good programmers is not always be a good software managers?⏹Solution:Management activities such as proposal writing, project planning and personal selection require a set of skill includingpresentation 表述能力and communication skills交流的能力.Organizational skills组织能力 and the ability to communicatewith other project team members.Programming skills are distinct from these, it is common that they lack human communication skills他们缺乏交流技巧是一个普遍的事实. So it does not follow that good programmers canre-orient their abilities to be good managers.管理活动包括提出书面建议,项目规划和进度,人员选择和评价,项目监督和评审,和其他队友的交流能力等。

程序设计者的任务就不是这些,他们不需要和人交流的能力,如果按照做好一个程序设计者的要求去做管理者的话,他肯定不是一个号的管理者。

⏹Why the process of project planning is iterative and why a plan must be continually不断地reviewed during a software project.⏹Solution:Project planning can only be based on available information. At the beginning of a project, there are many uncertainties in theavailable information and some information about the project andthe product may not be available. As the project develops, moreand more information becomes available and uncertainties areresolved. The project plan therefore must be reviewed andupdated regularly to reflect this changing informationenvironment.软件项目地规划取决于有用地信息。

相关文档
最新文档