软件工程(钱乐秋)第04章-设计工程
《软件工程》各章课后习题答案

《软件工程》各章课后习题答案软件工程是计算机科学与技术的一门重要学科,旨在研究和应用工程原则和方法来开发高质量的软件系统。
课程中的习题对于加深学生对软件工程理论和实践的理解至关重要。
下面是对《软件工程》各章课后习题的答案,希望能够帮助你更好地掌握软件工程的知识。
第一章:软件工程导论1. 软件工程的定义:答:软件工程是通过应用系统化、规范化和可量化的方法进行软件开发、运行和维护的学科。
2. 软件工程的目标:答:软件工程的目标是提高软件开发的质量、效率和可靠性,使得软件能够满足用户的需求和期望。
3. 软件生命周期模型:答:常见的软件生命周期模型包括瀑布模型、迭代模型、敏捷模型等。
每个模型都有其独特的特点和适用场景。
4. 软件过程模型:答:软件过程模型描述了软件开发过程中的一系列活动和阶段,常见的软件过程模型包括瀑布模型、迭代模型、敏捷模型等。
5. 软件工程的基本原则:答:常见的软件工程基本原则包括分阶段、逐步求精、持续集成、迭代开发、需求优先等。
第二章:软件项目管理1. 软件项目管理的定义:答:软件项目管理是指对软件开发过程中的资源、进度、质量等进行有效管理,以确保软件项目能够按时、按质地完成。
2. 软件项目管理的内容:答:软件项目管理包括项目计划、需求管理、项目进度管理、资源管理、风险管理等方面。
3. 软件项目管理的方法:答:常见的软件项目管理方法包括敏捷项目管理、水平项目管理、里程碑项目管理等。
4. 软件项目管理的工具:答:常用的软件项目管理工具包括甘特图、PERT/CPM网络图、项目管理软件等。
第三章:软件需求分析与规格说明1. 软件需求的定义:答:软件需求是指用户对软件系统的要求和期望,包括功能需求、性能需求、接口需求等方面。
2. 软件需求分析的方法:答:常用的软件需求分析方法包括面向对象分析法、数据流图法、用例分析法等。
3. 软件需求规格说明的格式:答:常见的软件需求规格说明的格式包括自然语言描述、结构化描述、图形描述等。
软件工程(钱乐秋版)重点

软件工程第一章概述1、定义: 软件 == 程序 + 数据 + 文档1.数据:程序加工处理的对象。
包括数据的表示、组织与存储。
数据 == 初始化数据 + 测试数据2.文档(document):开发、使用和维护程序所需的图文资料。
文档 == 开发文档 + 管理文档。
3.程序(program):能完成预定功能和性能的指令集合。
4.软件和程序的区别程序只是完整软件产品的一部分。
编写程序只是软件开发过程数据中的一个阶段,一般来说,其工作量仅仅是软件开发全部工作量的10%-20%2、软件的特点:抽象性、可复制性、无折旧、受硬件制约、未完全摆脱手工工艺、开发费用高3、软件按适用范围分:定制软件和通用软件4、计算机软件发展的三个时期1. 早期时代(60年代中期之前)程序设计阶段硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人)。
2. 第二代(60年代中期-70年代中期)程序系统阶段出现“软件作坊”、产品软件;“个体化”开发方法。
3. 第三代(70年代中期之后)软件工程阶段软件开发成为一门新兴的工程学科——软件工程。
5、解决软件危机的途径1. 技术措施◆消除错误的概念和做法◆使用更好的软件开发方法和开发工具2. 组织管理措施◆软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
6、软件工程定义:软件工程是指导计算机软件开发和维护的工程学科。
它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
7、软件生存周期:软件生存周期一般分为:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码和单元测试、综合测试)、软件维护等三个时期。
8、能力成熟度模型CMM:CMM(Capability Maturity Model)即能力成熟度模型,用于评价软件机构的软件过程能力成熟度的模型。
软件工程导论第六版课后习题答案完整版

软件工程导论第六版课后习题答案完整版首先,感谢您对软件工程导论课后习题答案的需求。
以下是软件工程导论第六版课后习题的完整答案。
第一章:软件工程概述1.1 问题1. 什么是软件工程?答:软件工程是一种应用工程原理、方法和工具来开发和维护高质量软件的学科。
1.2 问题1. 什么是软件?答:软件是一系列按照特定顺序组织的计算机数据和指令。
第二章:软件过程模型2.1 问题1. 软件过程模型有哪些类型?答:常见的软件过程模型包括瀑布模型、迭代模型、螺旋模型和敏捷开发模型等。
2.2 问题1. 瀑布模型的特点是什么?答:瀑布模型是一种线性顺序模型,以阶段划分为基础,每个阶段的任务在进入下一个阶段前必须完成。
第三章:需求分析与规格说明3.1 问题1. 软件需求描述包括哪些方面的内容?答:软件需求描述需要包括功能性需求、非功能性需求、用户需求和系统需求等。
3.2 问题1. 什么是需求跟踪?答:需求跟踪是指在软件开发过程中,通过建立需求和软件项目中其他相关工件之间的关联,确保需求的准确实现和变更的有效管理。
第四章:软件设计4.1 问题1. 软件设计的目标是什么?答:软件设计的目标是通过确定软件的整体结构和组成部分,确保软件满足需求并具有良好的可维护性和可重用性。
第五章:软件测试与维护5.1 问题1. 什么是软件测试?答:软件测试是一种评估和改进软件质量的过程,目的是发现错误并提高软件的可靠性和可用性。
5.2 问题1. 什么是软件维护?答:软件维护是指在软件交付后的整个生命周期中对软件进行修改和改进,以满足用户需求和修复错误。
第六章:软件配置管理6.1 问题1. 软件配置管理的目标是什么?答:软件配置管理的目标是确保软件在开发和维护过程中的可控性和可追踪性,以及保持软件配置的稳定性和一致性。
6.2 问题1. 软件版本控制是什么?答:软件版本控制是指对软件的不同版本进行管理,包括版本的创建、检出、合并和更新等操作。
至此,我们完成了软件工程导论第六版课后习题的完整答案。
软件工程-课后小节

第一章本章简要阐述了软件开发的本质,即实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。
在此基础上,概括地介绍了实现这一映射的基本途径,即系统建模。
所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构一系统模型。
因此,模型是一个抽象。
该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。
在软件开发领域,系统模型分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。
软件模型又可进一步分为设计模型、实现模型和部署模型等。
总之,正确认识软件开发的本质,认识建模的意义,了解模型概念以及模型分类,直接关系到对软件工程开发逻辑、开发途径有关知识的理解、掌握和正确应用。
正如章首语所言:“正确认识软件开发,是从事软件开发实践和软件工程项目管理的思想基础。
”第二章本章首先介绍了需求的定义,即“一个需求是一个‘要予构造’的陈述,描述了待开发产品(或项)功能上的能力、性能参数或者其他性质”,并指出了需求的5个必备的基本性质:必要的(Necessary),即该需求是用户所要求的;无歧义的(Unambiguous ),即该需求只能用一种方式解释;可测的(Testable),即该需求是可进行测试的;可跟踪的(Trace-able),即该需求可从一个开发阶段跟踪到另一个阶段;可测量的(Measurable ),即该需求是可测量的。
需求的5个基本性质可作为需求发现和评估的基础。
其次,为了更好地理解需求,介绍了需求的分类。
软件需求可以分为功能、性能、外部接口、设计约束和质量属性,并把性能、外部接口、设计约束和质量属性这4类需求统称为非功能需求。
除此之外,还给出了功能需求和非功能需求的基本关系。
然后,介绍了5种常用的需求发现技术:自悟(Introspection )、交谈(Individual in-terview )、观察(Observation )、小组会(Group session)和提炼( Extraction),并指出采用系统化方法,例如,结构化方法和面向对象方法,可使发现的需求基本满足以上5个性质。
软件工程课后答案(清华大学出版社--钱乐秋)

(2)如果一条指令的长度为一个字,则使存储器装满程序共 需4474263条指令。
在1985年一名程序员每天可开发出10条指令,如果每月 有20个工作日,则每人每月可开发出10×20条指令。
为了开发出4474263条指令以装满存储器,需要的工作量
D2存款利率
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
19
作业及解答(第3章)
E1 储户
F7密码
F2取款单
P3.1 输入取款信息
无效取款信息
F5存款信息 D1存款信息
P3.2 密码校验
F7密码
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
D3生理信息
F4警告信息
F2生理信号
P1 接收信号
定时的生理信号
P5 更新日志
F2生理信号 定时的 生理信号
E1 护士
E3 时钟
F3日前、时间
P4 定时取样 生理信号
F6日志
F6日志
D1患者日志
E1
护士
F1要求报告
P6
13:07:42
重庆工学产院生计病算情机报科告学与工程学院 李梁(liliang@)
定时的生理信号 F6日志
P5 更新日志
D1患者日志
E1 护士
13:07:42
F6日志 F1要求报告
P6 产生病情报告
重庆工学院计算机科学与工程学院 李梁(liliang@)
11
E2 病人
P2 分析信号
F2生理信号 F5安全范围
危及病人信息 D2患者安全范围
软件工程第4章 软件设计

5. 设计软件结构 通常程序中的一个模块完成一个适当的子功能。应 该把模块组织成良好的层次系统,顶层模块调用它 的下层模块以实现程序的完整功能,每个下层模块 再调用更下层的模块,从而完成程序的一个子功能, 最下层的模块完成最具体的功能。
6. 设计数据库 对于需要使用数据库的那些应用系统,软件工程师 应该在需求分析阶段所确定的系统数据需求的基础 上,进一步设计数据库。
高内聚也有两类:如果一个模块内的处理元素和同 一个功能密切相关,而且这些处理必须顺序执行 (通常一个处理元素的输出数据作为下一个处理元 素的输入数据),则称为顺序内聚。根据数据流图 划分模块时,通常得到顺序内聚的模块,这种模块 彼此间的连接往往比较简单。如果模块内所有处理 元素属于一个整体,完成一个单一的功能,则称为 功能内聚。功能内聚是最高程度的内聚。
(2) 用户手册根据总体设计阶段的结果,修改更正 在需求分析阶段产生的初步的用户手册。
(3) 测试计划包括测试策略,测试方案,预期的测 试结果,测试进度计划等等。 (4) 详细的实现计划 (5) 数据库设计结果
9. 审查和复审 最后应该对总体设计的结果进行严格的技术审查, 在技术审查通过之后再由使用部门的负责人从管理 角度进行复审。
为什么模块的独立性很重要呢?主要有两条理由: 第一,有效的模块化(即具有独立的模块)的软件比 较容易开发出来。这是由于能够分割功能而且接口 可以简化,便于多人分工合作开发同一个软件。
第二,独立的模块比较容易测试和维护。这是因为 相对说来,修改设计和程序需要的工作量比较小, 错误传播范围小,需要扩充功能时能够“插入”模块。
(2)详细设计。详细设计阶段的根本目标是确定 应该怎样具体地实现所要求的系统,也就是说,经 过这个阶段的设计工作,应该得出对目标系统的精 确描述,从而在编码阶段可以把这个描述直接翻译 成用某种程序设计语言书写的程序。 详细设计阶段的任务还不是具体地编写程序,而是 要设计出程序的“蓝图”,结果基本上决定了最终 的程序代码的质量。
软件工程课后习题答案(钱乐秋版)

软件工程课后习题答案(钱乐秋版)
2015 给力复习加速版 小桥流水人家整理
第1章
1.1 什么是计算机软件?软件的特点是什么? 答:计算机软件指计算机系统中的程序及其文档。 软件的特点是: A 软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确得估算; B 软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大; C 软件的使用没有硬件那样的机械磨损和老化问题。 1.2 简述软件的分类,并举例说明。 答:在《计算机科学技术百科全书》中,将软件分为系统软件、支撑软件和应用软件 3 类。 A 系统软件:系统软件居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。系统软件 与具体的应用领域无关。例如:编译程序、操作系统等。 B 支撑软件:支撑软件是支撑软件的开发和维护的软件。例如:数据库管理系统、网络软件、软件工具、软件开 发环境等。 C 应用软件:应用软件是特定应用领域专用的软件。例如:工程/科学计算软件、嵌入式软件、产品线软件、Web 应用软件、人工智能软件。 1.4 什么是软件工程? 答:在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。 1.5 简述软件工程的基本原则。 答:软件工程原则包括围绕工程设计、工程支持和工程管理提出的以下 4 条基本原则: 第一条:围绕适宜的开发模型; 第二条:采用合适的设计方法; 第三条:提供高质量的工程支撑; 第四条:重视软件工程的管理。 1.6 软件生存周期分哪几个阶段?分别简述各个阶段的任务。 答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护 6 个阶段。 A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系, 进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行 的解决方案,并在若干个可行的解决方案中做出选择。 B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需 求规约。 C 软件设计只要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计和详细设计。系统设计的任务 是设计软件系统的体系结构,包括软件系统组成成分、各成分的功能和接口、成分间的连接和通信,同时设计 全局数据结构。详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。 D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。 E 测试阶段的任务是发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。 F 软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏 的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。 1.9 简述各类软件过程模型的特点。 答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的 开发模型和形式方法模型等。 A 瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是: 接受上一阶段活动的结果作为本阶段活动的输入;
软件工程-课程目录-大纲视图(全国高等教育自学考试指定教材-计算机网络专业-独立本科)

第一章绪论1.1 软件工程概念的提出与发展1.2 软件开发的本质1.3 本章小结第二章软件需求与软件需求规约2.1 需求与需求获取2.1.1需求定义2.1.2 需求分类2.1.3 需求发现技术2.2 需求规约2.2.1 需求规约定义2.2.2 需求规约(草案)格式2.2.3 需求规约(规格说明书)的表达2.2.4 需求规约的作用2.3 本章小结第三章结构化方法3.1 结构化需求分析3.1.1 基本术语1.数据流2.数据存储3.数据源和数据谭3.1.2 系统功能模型表示数据流图(Dataflow Diagram)3.1.3 建模过程1.建立系统环境图, 确定系统语境2.自顶向下, 逐步求精, 建立系统的层次数据流图3.定义数据字典数据流条目给出所有数据流的结构定义数据存储条目给出所有数据存储的结构定义数据项条目给出所有数据项的类型定义4.描述加工(1)结构化自然语言(2)判定表(3)判定树3.1.4 应用中注意的问题(1)模型平衡问题(2)信息复杂性控制问题3.1.5 需求验证3.2 结构化设计3.2.1 总体设计1.总体设计的目标及其表示(1)Yourdon提出的模块结构图(2)层次图(3)HIPO图2.总体设计步骤(1)变换型数据流图——变换设计(2)事物型数据流图——事物设计3.模块化及启发式规则(1)模块化1)耦合①内容耦合②公共耦合③控制耦合④标记耦合⑤数据耦合2)内聚①偶然内聚②逻辑内聚③时间内聚④过程内聚⑤通信内聚⑥顺序内聚⑦功能内聚(2)启发式规则1)改进软件结构, 提高模块独立性2)力求模块规模适中3)力求深度、宽度、扇出和扇入适中4)尽力使模块的作用域在其控制域之内5)尽力降低模块接口的复杂度6)力求模块功能可以预测3.2.2 详细设计1.结构化程序设计2.详细设计工具(1)程序流程图(2)盒图(N-S图)(3)PAD图(Problem Analysis Diagram)(4)类程序设计语言IPO图、判定树和判定表等也可以作为详细设计工具3.3 本章小结第四章面向对象方法——UML 4.1 UML术语表4.1.1 表达客观事物的术语1.类与对象1)类的属性(Attribute)2)类的操作3)关于类语义的进一步表达①详细叙述类的职责(Responsibility)②通过类的注解和/或操作的注解, 以结构化文本的形式和/编程语言, 详述注释整个类的语义和/或各个方法③通过类的注解或操作的注解, 以结构化文本形式, 详述注释各个操作的前置条件和后置条件, 甚至注释整个类的不变式④详述类的状态机⑤详述类的内部结构⑥类与其他类的协作4)类在建模中的主要用途①模型化问题域中的概念(词汇)②建立系统的职责分布模型③模型化建模中使用的基本类型2.接口(Interface)(1)采用具有分栏和关键字《interface》的矩形符号来表示(2)采用小圆圈和半圆圈来表示3.协作(Collaboration)4.用况(Use Case)5.主动类(Action Class)6.构件(Component)7.制品(Artifact)8.节点(Node)4.1.2 表达关系的术语1.关联(Association)(1)关联名(Name)(2)导航(3)角色(Role)(4)可见性(5)多重性(Multiplicity)(6)限定符(Qualifier)(7)聚合(Aggregation)(8)组合(Composition)(9)关联类(10)约束①有序(ordered)②无重复对象(set)③有重复对象(bag)④列表(list)或序列(sequence)⑤只读(readonly)2.泛化(Generalization)①完整(Complete)②不完整(Incomplete)③互斥(Disjoint)④重叠(Overlapping)3.细化(Realization)4.依赖①绑定(Bind)②导出(Derive)③允许(Permit)④实例(InstanceOf)⑤实例化(Instantiate)⑥幂类型(Powertype)⑦精化(Refine)⑧使用(Use)可模型化以下各种关系(1)结构关系1)以数据驱动2)以行为驱动(2)继承关系(3)精化关系(4)依赖关系4.1.3 表达组合信息的术语——包1)访问(Access)2)引入(Import)4.2 UML模型表达格式1.类图(Class Diagram)(1)模型化待建系统的概念(词汇), 形成类图的基本元素(2)模型化待建系统的各种关系, 形成该系统的初始类图(3)模型化系统中的协作, 给出该系统的最终类图(4)模型化逻辑数据库模式2.用况图(Use Case Diagram)所包含的内容(1)主题(Subject)(2)用况(Use Case)(3)参与者(Actor)(4)关联、泛化与依赖模型化工作1)关于系统/业务语境的模型化①系统边界的确定②参与者与用况的交互③参与者的语义表达④参与者的结构化处理2)关于系统/业务需求的模型化①确定系统/业务的基本用况②用况的结构化处理③用况的语义表达3.状态图(1)状态1)名字2)进入/退出效应(Effect)①entry②exit③状态内部转移3)do动作或活动4)被延迟的事件(2)事件1)信号(Signal)事件2)调用(Call)事件3)时间事件4)变化事件(3)状态转移①源状态②转移触发器③监护(guard)条件④效应(effect)⑤目标状态实际应用中, 使用状态图的作用①创建一个系统的动态模型②创建一个场景的模型4.顺序图(1)术语解析1)消息2)对象生命线3)聚焦控制(the Focus of Control)(2)控制操作子1)选择执行操作子(Operator for Optional Execution)2)条件执行操作子(Operator for Conditional Execution)3)并发执行操作子(Operator for Parallel Execution)4)迭代执行操作子(Operator for Iterative Execution)4.3 本章小结第五章面向对象方法——RUP5.1 RUP特点1.以用况为驱动2.以体系结构为中心3.迭代增量式开发5.2 核心工作流5.2.1 需求获取1.列出候选需求2.理解系统语境(1)业务用况模型(2)业务对象模型3.捕获系统功能需求(1)活动1: 发现并描述参与者(2)活动2: 发现并描述用况(3)活动3: 确定用况的优先级(Priority)(4)活动4: 精化用况(5)活动5: 构造用户界面原型1)用户界面的逻辑设计2)物理用户界面的设计3)开发用户界面原型并演示为了执行该用况, 用户怎样使用该系统(6)活动6: 用况模型的结构化5.2.2 需求分析1.基本术语(1)分析类(Analysis Class)1)边界类(Boundary Classes)2)实体类(Entity Classes)3)控制类(Control Classes)(2)用况细化(Use Case Realization)(3)分析包(Analysis Package)2.分析模型的表达3.分析的主要活动(1)活动1: 体系结构分析(Architectural Analysis)1)任务1: 标识分析包2)任务2: 处理分析包之间的共性3)任务3: 标识服务包4)任务4: 定义分析包的依赖5)任务5: 标识重要的实体类6)任务6: 标识分析包和重要实体类的公共特性需求(2)活动2: 用况分析1)任务1: 标识分析类①标识实体类②标识边界类③标识控制类2)任务2: 描述分析(类)对象之间的交互(3)活动3: 类的分析1)任务1: 标识责任2)任务2: 标识属性①关于实体类属性的标识②关于边界类属性的标识③关于控制类属性的标识3)任务3: 标识关联和聚合①关于关联的标识②关于聚合的标识③关于泛化的标识(4)活动4: 包的分析4.小结(1)关于分析模型1)分析包2)分析类3)用况细化(2)关于分析模型视角下的体系结构描述(3)用况模型和分析模型比较(4)分析模型对以后工作的影响1)对设计中子系统的影响2)对设计类的影响3)对用况细化[设计]的影响5.2.3 设计1.设计层的术语(1)设计类(Design Class)(2)用况细化[设计](3)设计子系统(4)接口(Interface)2.设计模型、部署模型以及相关视角下的体系结构描述(1)设计模型及其视角下的体系结构描述1)子系统结构2)对体系结构有意义的设计类3)对体系结构有意义的用况细化[设计](2)部署模型及该模型视角下的体系结构描述3设计的主要活动(1)活动1: 体系结构的设计1)任务1: 标识节点和它们的网络配置2)任务2: 标识子系统和它们的接口①标识应用子系统②标识中间件和系统软件子系统③定义子系统依赖④标识子系统接口3)任务3: 标识在体系结构方面有意义的设计类和它们的接口4)任务4: 标识一般性的设计机制①标识处理透明对象分布的设计机制②标识事务管理的设计机制(2)活动2: 用况的设计1)标识参与用况细化的设计类2)标识参与用况细化的子系统和接口(3)活动3: 类的设计1)任务1: 概括描述设计类2)任务2: 标识操作3)任务3: 标识属性4)任务4: 标识关联和聚合5)任务5: 标识泛化6)任务6: 描述方法7)任务7: 描述状态(4)活动4: 子系统的设计1)任务1: 维护子系统依赖2)任务2: 维护子系统所提供的接口3)任务3: 维护子系统内容4.RUP设计小结1)RUP设计的突出特点2)关于RUP的设计方法①给出用于表达设计模型中基本成分的4个术语, 包括子系统, 设计类, 接口, 用况细化[设计]②规约了设计模型的语法, 指导模型的表达③给出了创建设计模型的过程以及相应的指导3)RUP的设计模型①设计子系统和服务子系统②设计类(其中包括一些主动类), 以及他们具有的操作、属性、关系及其实现需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模块化
• 模块化,即把软件按照规定原则,划分为 一个个较小的,相互独立的但又相互关联 的部件,实际上是系统分解和抽象的过程。
• 模块是数据说明、可执行语句等程序对象 的集合,它是单独命名的,并且可以通过 名字来访问
• 不等式(4.3)表达出了一个对于模块化和软件 具有十分重要意义的结论(即,模块化的论 据):将复杂问题分解成可以管理的片断会更 使解决问题更加容易。
• 如果我们无限制地划分软件,开发它所需 的工作量会变得小到可以忽略?!
• 事实上,影响软件开发的工作量的因素还 有很多,例如模块接口费用等等
• 上述不等式只能说明,当模块的总数增加 时,单独开发各个子模块的工作量之和会 有所减少
• 过程抽象(也称功能抽象)是指任何一 个完成明确定义功能的操作都可被使用 者当作单个实体看待,尽管这个操作实 际上是由一系列更低级的操作来完成的
• 数据抽象是指定义数据类型和施加于该 类型对象的操作,并限定了对象的取值 范围,只能通过这些操作修改和观察数 据
逐步求精
• 逐步求精,把问题的求解过程分解成若干 步骤或阶段,每步都比上步更精化,更接 近问题的解法
3)设计应从实现角度出发,给出与数据、功能、 行为相关的软件全貌。
衡量设计的技术标准
1) 设计出来的结构应是分层结构,从而建立 软件成份之间的控制。
2) 设计应当模块化,从逻辑上将软件划分为 完成特定功能或子功能的部件。
3) 设计应当既包含数据抽象,也包含过程抽 象。
4) 设计应当建立具有独立功能特征的模块。 5) 设计应当建立能够降低模块与外部环境之
抽象化与逐步求精
• 抽象,是在软件设计的规ห้องสมุดไป่ตู้逐渐增 大的情况下,控制复杂性的基本策 略。
• 抽象的过程是从特殊到一般的过程, 上层概念是下层概念的抽象,下层 概念是上层概念的精化和细化。
• 软件工程过程的每一步都是对较高 一级抽象的解作一次具体化的描述
• 软件设计中主要抽象手段有:过程抽象 和数据抽象
间复杂连接的接口。 6) 设计应能根据软件需求分析获取的信息,
建立可驱动、可重复的方法。
软件设计的过程
1) 制定规范 2) 体系结构和接口设计 3) 数据/类设计 4) 部件级(过程)设计 5) 编写设计文档 6) 设计评审
内容摘要
• 软件设计工程概述 • 软件设计原则 • 软件体系结构设计 • 部件级设计技术 • 设计规约与设计评审
• 如果模块是相互独立的,当模块变得越 小,每个模块花费的工作量越低;
• 但当模块数增加时,模块间的联系也随 之增加,把这些模块联接起来的工作量 也随之增加。
信息隐藏
• 每个模块的实现细节对于其它模块来说应 该是隐蔽的
• 块中所包含的信息(包括数据和过程)不 允许其它不需要这些信息的模块使用
• 从类为基础的模型、流模型、行为模 型中得到的信息是部件设计的基础。
软件设计的目标
• 在进行软件设计的过程中,我们要密切关 注软件的质量因素。
• McGlanghlin 软件设计过程的目标:
1)设计必须实现分析模型中描述的所有显式需 求,必须满足用户希望的所有隐式需求。
2)设计必须是可读、可理解的,使得将来易于 编程、易于测试、易于维护。
内容摘要
• 软件设计工程概述 • 软件设计原则 • 软件体系结构设计 • 部件级设计技术 • 设计规约与设计评审
内容摘要
• 软件设计工程概述 • 软件设计原则 • 软件体系结构设计 • 部件级设计技术 • 设计规约与设计评审
软件设计工程概述
• 软件需求分析解决“做什么”的问题,软 件设计过程则解决“怎么做”的问题
• 数据设计的过程包括以下两步 :
– 首先,为在需求分析阶段所确定的数据对象选择逻 辑表示,需要对不同结构进行算法分析,以便选择 一个最有效的设计方案;
– 然后,确定对逻辑数据结构所必需的那些操作的程 序模块,以便限制或确定各个数据设计决策的影响 范围。
2)体系结构设计
• 体系结构设计定义了软件的整体结构, 它由软件部件、外部可见的属性和它 们之间的关系组成。
– 例如,过程。函数、子程序、宏等
• 设C(x)是描述问题x 复杂性的函数,E(x) 是解决问题x 所需工作量(按时间计算)的 函数。对于两个问题p1 和p2,如果
• C(p1)>C(p2) (4.1a)
• 那么
• E(p1)>E(p2) (4.1b)
• 即问题越复杂,解决问题所需要的花费 更多。
• 体系结构设计:体系结构设计定义了软 件的整体结构
• 接口设计:接口设计描述了软件内部、 软件和协作系统之间以及软件同人之间 如何通信
• 部件级设计:部件级设计将软件体系结 构的结构性元素变换为对软件部件的过 程性描述
1)数据/类设计
• 在类和由CRC中定义的数据对象和关系以及数 据字典中描述的详细数据内容提供了数据设计 活动的基础
• 通过对人解决问题的实验,又存在另一个有趣 的规律:
• C(p1+p2)>C(p1)+C(p2) (4.2)
• 方程式(4.2)意味着p1 和p2 组合后的复杂性 比单独考虑每个问题时的复杂性要大。考虑方 程式(4.2)和方程式(4.1)隐含的条件,我们可 以得出
• E(p1+p2) > E(p1)+E(p2) (4.3)
• 体系结构设计表示可以从系统规约、 分析模型和分析模型中定义的子系统 的交互导出。
3)接口设计
• 接口设计主要包括三个方面:
– 设计软件模块间的接口 – 设计模块和其他非人的信息生产者
和消费者(比如外部实体)之间的接 口 – 设计人(用户)和计算机间的接口
4)部件级设计
• 部件级设计将软件体系结构的结构性 元素变换为对软件部件的过程性描述。
• 软件设计是把软件需求变换成软件表示的 过程,它主要包含两个阶段:软件体系结 构设计阶段和部件级设计
软件设计的任务
• 使用一种设计方法,软件分析模型中通过数据、 功能和行为模型所展示的软件需求的信息被传 送给设计阶段,产生数据/类设计、体系结构 设计、接口设计、部件级设计
• 数据/类设计:将分析-类模型变换成类 的实现和软件实现所需要的数据结构