软件工程设计方法概述
软件工程中的系统设计方法

软件工程中的系统设计方法在软件工程领域中,系统设计是开发高质量软件的关键步骤之一。
它涉及到定义系统的结构和组织,并确保软件能够满足用户需求、具备良好的可维护性和可扩展性。
为了有效地进行系统设计,软件工程师需要采用一些方法和技术来指导他们的工作。
本文将介绍一些常用的系统设计方法,以帮助读者更好地理解和应用于实践。
1. 结构化分析和设计方法(SA/SD)结构化分析和设计方法是一种传统的系统设计方法,旨在通过将系统分解为不同的模块来帮助软件工程师理清软件的逻辑结构。
在SA/SD方法中,软件工程师使用数据流图和数据字典来描述系统的功能和数据流动。
通过这种方式,他们能够构建出一个层次化的系统结构图,从而更好地理解系统的各个部分。
2. 面向对象分析和设计方法(OOAD)面向对象分析和设计方法是一种现代的系统设计方法,它将系统视为由对象组成的集合。
在OOAD方法中,软件工程师使用用例图、类图、时序图等工具来描述系统的需求和行为,并通过面向对象的概念来设计系统的结构。
相对于SA/SD方法,OOAD方法更加注重系统的可扩展性和可复用性,因为它通过面向对象的封装和继承机制来实现代码的模块化和重用。
3. 基于组件的设计方法基于组件的设计方法是一种将软件系统看作由可独立部署和替换的组件构成的方法。
在这种方法中,软件工程师将系统分解为不同的组件,并定义它们之间的接口和依赖关系。
通过这种方式,系统可以更容易地进行扩展和维护,因为每个组件都可以单独开发、测试和部署。
此外,基于组件的设计方法还促进了软件的可复用性,因为组件可以在不同的系统中重复使用。
4. 面向服务的设计方法(SOAD)面向服务的设计方法是一种将系统拆分为一些可独立运行的服务的方法。
每个服务都提供特定的功能,并通过网络进行通信。
在SOAD方法中,软件工程师使用服务描述语言(如WSDL)来定义各个服务的接口和数据格式,并通过服务总线(如ESB)来协调和管理这些服务。
软件工程 软件设计方法

限制和确定各个数据设计决策的影 响范围 若需要与操作系统或调度程序接口 所必须的控制表等数据时,确定其 所必须的控制表等数据时, 详细的数据结构和使用规则 数据的保护性设计
防卫性设计: 防卫性设计:在软件设计中就插 入自动检错, 入自动检错,报错和纠错的功能
14
一致性设计: 一致性设计: 保证软件运行过程中所使用的数 据的类型和取值范围不变 在并发处理过程中使用封锁和解 除封锁机制保持数据不被破坏 冗余性设计:针对同一问题, 冗余性设计:针对同一问题,由两 个开发者采用不同的程序设计风格 不同的算法设计软件, 不同的算法设计软件,当两者运行 结果之差不在允许范围内时, 结果之差不在允许范围内时,利用 检错系统予以纠正, 检错系统予以纠正,或使用表决技 术决定一个正确结果。 术决定一个正确结果。
27
① 模块:模块用矩形框表示,并用 模块:模块用矩形框表示, 模块的名字标记它。 模块的名字标记它。
28
② 模块的调用关系和接口:模块之 模块的调用关系和接口: 间用单向箭头联结, 间用单向箭头联结,箭头从调用模 块指向被调用模块。 块指向被调用模块。
29
③ 模块间的信息传递:当一个模块 模块间的信息传递: 调用另一个模块时, 调用另一个模块时,调用模块把数 据或控制信息传送给被调用模块, 据或控制信息传送给被调用模块, 以使被调用模块能够运行。 以使被调用模块能够运行。而被调 用模块在执行过程中又把它产生的 数据或控制信息回送给调用模块
11
3. 处理方式设计
确定为实现系统的功能需求所必需 算法, 的算法,评估算法的性能 确定为满足系统的性能需求所必需 的算法和模块间的控制方式 周转时间 响应时间 吞吐量 精度 确定外部信号的接收发送形式
软件工程概要设计和详细设计

•过程设计则是把结构成份转换成软件的过程性描述。
•界面设计是对系统边界的描述,用户界面是用户和 系统进行交互的工具,人机接口直接影响软件的寿命。
ClientA
ClientB
ClientC
ClientD
第三级
客
户 机
business logic node(商业逻辑结点)
Security
(安全)
Event
(事件)
Search
(搜索)
服
务
器
Database management node
(数据库管理结点)
第二级 第一级
软件工程概要设计和详细设计
现在越来越多的应用采用多层结构,以适应不断 变化的用户需求。
软件工程概要设计和详细设计
四、分布式对象结构(Distributed Objects Architecture)
在C/S模型中,客户和服务器在服务/请求上的差别, 在一定程度上限制了系统的灵活性和可扩展性。
采用分布式对象结构 :
“对象(Object)”——提供服务的系统组件(System Component)。
② 安全性:网络环境面临着各种威胁,如病毒、 木马、非法访问,安全问题十分突出
③ 可管理性:开放性造成异构性,造成管理困难 ④ 不可预知性:系统响应时间受网络负载等网络
环境的影响。
软件工程概要设计和详细设计
三、 客户机/服务器模型(Client/Server Architectural Model) C/S结构是一种分布式模型,采用发请求、得结
软件工程之系统设计概述

软件工程之系统设计概述1. 引言系统设计是软件工程的重要阶段之一,它是在需求分析的基础上,对软件系统进行总体架构设计和详细设计的过程。
系统设计的目标是定义系统的功能、性能、安全性、可靠性、可维护性等方面的要求,确定系统的组成部分和模块间的接口,为软件的实现和测试提供指导。
2. 系统设计流程系统设计通常包括以下几个阶段:2.1 需求分析和需求规格说明书在系统设计开始之前,需要进行详细的需求分析工作。
需求分析的目标是理解用户的需求,并将其转化为可操作的需求规格说明书。
需求规格说明书包括功能需求、性能需求、界面需求等方面的要求。
2.2 总体架构设计总体架构设计是系统设计的第一步,它确定系统的整体结构和模块间的关系。
在总体架构设计阶段,需要定义系统的各个子系统和模块,并确定它们之间的接口和通信方式。
2.3 详细设计详细设计是系统设计的核心部分,它针对总体架构设计给出的模块和接口进行详细的设计。
在详细设计阶段,需要定义每个模块的功能、数据结构、算法、接口等细节,以及模块间的通信和数据流程。
2.4 用户界面设计用户界面设计是系统设计的重要组成部分,它关注用户与系统之间的交互方式。
在用户界面设计阶段,需要考虑用户的使用习惯和心理需求,设计出符合用户期望的界面布局、操作流程和交互方式。
2.5 数据库设计如果系统需要使用数据库来存储和管理数据,那么在系统设计阶段还需要进行数据库设计。
数据库设计包括确定数据模型、数据表结构、数据关系等方面的内容。
3. 系统设计原则和方法在进行系统设计时,需要遵循一些原则和方法,以确保设计的质量和可行性。
3.1 模块化设计模块化设计是将系统划分为相互独立、具有明确功能的模块的过程。
模块化设计可以降低系统的复杂性,提高系统的可维护性和扩展性。
在模块化设计中,需要考虑模块的耦合度和内聚度,使得模块之间的耦合度尽量低,模块内部的内聚度尽量高。
3.2 面向对象设计面向对象设计是一种以对象为中心的设计方法。
软件工程中几种常用软件设计方法的概述研究

软件工程中几种常用软件设计方法的概述研究【摘要】在软件开发时期中,设计阶段是最富有活力、最需要发挥创造精神的阶段。
本文通过对常用几种软件设计方法的研究,对软件的开发有进一步的认识。
同时,也能通过对比得出哪些设计方法对某一软件的开发有更大的优势,可以更好的指导我们实践。
【关键字】软件开发、常用设计方法一、引言在软件开发时期中,设计阶段是最富有活力、最需要发挥创造精神的阶段,软件设计方法对软件的开发以及投放市场有着重要的作用。
在日常生活中,常用的软件工程设计方法有Parnas方法、Jackson (JSP/JSD) 方法、问题分析方法(PAM)、面向对象的软件开发方法(OO)、形式化方法、可视化方法、软件重用。
下面对这几种方法进行分析研究。
二、Parnas方法最早软件开发方法是由D.Parnas在1972年提出。
由于当时软件在可维护性和可靠性方面存在着严重问题,因此Parnas提出的方法是针对这两个问题的。
首先,Parnas提出了信息隐蔽原则:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。
这样,在将来由于这些因素变化而需修改软件时,只需修改个别的模块,其它模块不受影响。
信息隐蔽技术不仅提高了软件的可维护性,而且也避免了错误的蔓延,改善了软件的可靠性。
现在信息隐蔽原则已成为软件工程学中的一条重要原则。
Parnas提出第二条原则是在软件设计时应对可能发生的种种意外故障采取措施。
软件是很脆弱的,很可能因为一个微小的错误而引发严重的事故,所以必须加强防范。
如在分配使用设备前,应该取设备状态字,检查设备是否正常。
此外,模块之间也要加强检查,防止错误蔓延。
Parnas对软件开发提出了深刻的见解。
遗憾的是,他没有给出明确的工作流程。
所以这一方法不能独立使用,只能作为其它方法的补充。
三、Jackson (JSP/JSD) 方法1975年,M.A.Jackson提出了一类至今仍广泛使用的软件开发方法。
软件工程 软件设计方法

引言概述:软件工程是一门综合性学科,涉及软件开发的各个方面。
软件设计是软件工程中非常重要的一环,它涉及到软件系统的整体架构、模块设计以及算法设计等方面。
软件设计方法是指在软件设计过程中,采用的一系列可以帮助开发人员完成设计工作的方法和技术。
本文将介绍几种常见的软件设计方法,并对每种方法的优缺点进行详细分析。
正文内容:1.结构化设计方法1.1功能分解1.2数据流图设计1.3控制流图设计1.4层次化设计1.5模块化设计结构化设计方法是一种将软件系统划分为若干个层次的方法,可以帮助开发人员将复杂的系统分解为可管理的模块。
其中,功能分解是将系统划分为若干个功能模块的过程,数据流图和控制流图则用于描述模块之间的数据流和控制流。
层次化设计则是将系统划分为多个层次,并通过接口进行层次间的通信。
模块化设计则是将系统分解为相互独立的模块,可以独立实现和测试。
2.面向对象设计方法2.1类图设计2.2对象图设计2.3继承和多态设计2.4设计模式应用2.5UML建模面向对象设计方法是一种以对象为中心的设计方法,强调对象之间的关系和交互。
在面向对象设计中,类图和对象图是常用的设计工具,它们用于描述系统中的类和对象及其之间的关系。
继承和多态是面向对象的两个重要概念,可以提高代码的复用性和扩展性。
设计模式是一套被广泛接受和应用的设计经验总结,可以解决软件设计中的一些常见问题。
UML是一种常用的面向对象建模语言,可以帮助开发人员在设计过程中进行可视化建模。
3.原型设计方法3.1快速原型设计3.2用户界面原型设计3.3迭代设计方法3.4用户反馈和迭代改进3.5原型与最终产品之间的转换原型设计方法是一种通过创建可演示的原型来快速验证设计想法的方法。
快速原型设计是一种快速搭建出系统原型的方法,可以帮助开发人员快速了解用户需求和系统交互。
用户界面原型设计则着重于用户界面的设计和交互效果的展示。
迭代设计方法是一种逐步完善和改进设计的方法,通过用户反馈和迭代改进,逐步推进系统的发展。
软件工程 软件设计方法(二)2024

软件工程软件设计方法(二)引言概述:软件设计方法是软件工程领域中至关重要的一部分,它涉及到软件系统架构、模块设计、接口设计等多个方面。
本文将着重介绍软件设计方法的五个主要方面,包括需求分析、系统架构设计、模块划分、接口设计和可重用性。
正文:1. 需求分析- 确定用户需求:通过与用户沟通,明确软件系统的功能需求和性能需求。
- 业务流程分析:了解用户的业务流程,以便设计出符合实际业务需求的软件。
- 数据模型设计:根据需求对数据进行建模,定义数据实体、属性和关系。
2. 系统架构设计- 划分子系统:将整个软件系统分解为多个相对独立的子系统,每个子系统负责特定的功能。
- 确定系统层次:定义子系统之间的层次结构和依赖关系,保证系统的稳定性和可扩展性。
- 选择适当的架构风格:根据软件系统的特点和需求,选择适合的架构风格,如客户端-服务器、分层或微服务等。
3. 模块划分- 确定模块功能:根据系统需求和架构设计,将系统功能划分为不同的模块。
- 设计模块接口:定义模块之间的接口规范,确保模块之间的协同工作和信息交互。
- 模块详细设计:对每个模块进行详细设计,包括内部数据结构和算法的设计。
4. 接口设计- 定义接口规范:确定模块之间的接口规范,包括输入输出参数、数据格式等。
- 接口协议设计:设计合适的接口协议,包括数据传输格式、访问控制等。
- 接口测试和验证:进行接口测试,确保接口的正确性和稳定性。
5. 可重用性- 模块复用:设计和实现可重用的模块,以提高软件的开发效率和质量。
- 组件库开发:建立组件库,将常用的功能模块抽象为可重用的组件,方便后续开发过程中的重用。
- 框架设计:设计通用的框架,提供开发的基础设施和通用功能。
总结:通过本文对软件设计方法的介绍,我们可以看到,在软件工程中,软件设计方法的重要性不可忽视。
通过需求分析、系统架构设计、模块划分、接口设计和可重用性等方面的综合考虑,可以设计出高效、可靠、可维护的软件系统。
软件工程 软件设计方法

软件工程软件设计方法软件工程: 软件设计方法软件设计是软件工程中至关重要的一部分,它涉及到将软件需求转化为可执行的软件系统的过程。
软件设计方法是一系列的原则、技术和工具,用于指导软件设计过程,并确保最终的软件系统能够满足用户需求。
1. 瀑布模型瀑布模型是软件工程中最经典的软件设计方法之一。
它将软件开发过程分为一系列的阶段,如需求分析、设计、编码、测试和维护等。
每个阶段都有明确的输入和输出,且顺序逐步推进。
瀑布模型的优势在于能够提供清晰的项目计划和可控的进度管理。
它的刚性顺序和缺乏反馈机制可能导致需求变更成本高昂,并且无法快速适应变化。
2. 敏捷方法敏捷方法是一组迭代和增量的软件设计方法,强调团队合作、灵活性和持续反馈。
敏捷方法包括Scrum、XP和Kanban等。
与瀑布模型相比,敏捷方法更加适应需求变化和快速迭代的工作环境。
它注重通过短周期的迭代开发来快速适应客户需求,也强调开发团队之间的协作和透明度。
,敏捷方法也存在一些挑战,需要高度的团队合作和协作能力,以及对变化的快速响应能力。
3. 面向对象设计面向对象设计是一种以对象为核心的软件设计方法。
它将软件系统看作由一系列相互关联的对象组成,并通过定义对象之间的属性和行为来描述系统的功能。
面向对象设计提供了一种结构化和模块化的方法来组织软件系统,使得系统更易于理解、扩展和维护。
它还提供了封装、继承和多态等特性,使得系统更具灵活性和可重用性。
4. UML建模UML(统一建模语言)是一种常用的图形化建模语言,用于描述软件系统的结构和行为。
UML提供了一系列的图形符号和标记,如用例图、类图、时序图和活动图等。
使用UML进行软件设计可以帮助开发团队更好地理解和沟通需求和设计方案。
它提供了一种标准化的表示方法,使得不同开发者可以共享相同的设计语言和视图。
5. 设计模式设计模式是在软件设计中经常使用的一种解决方案模板。
它通过提供一系列的设计模式,如单例模式、观察者模式和工厂模式等,来解决常见的设计问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东轻工业学院教师授课教案课程名称:软件工程课程代码:0310040学分: 3课程类别:选修课开课单位: 信息科学与技术学院授课班级:计科07-12授课教师:赵培英山东轻工业学院教务处制第四章设计•软件设计原则•软件体系结构设计•部件级设计技术•人机界面设计•设计规约与设计评审一、软件设计工程概述•软件设计的任务•软件设计的目标•软件设计的过程1.软件设计的任务•设计过程解决“怎么做”的问题,把软件需求变换成软件表示的过程,主要包含两个阶段:➢软件体系结构设计(概要设计)➢部件级设计(详细设计)•根据用信息域表示的软件需求,以及功能和性能需求,产生➢数据/类设计➢体系结构设计➢接口设计➢部件级设计1)数据/类设计•类模型=>类实现(数据结构)•在类和由CRC(类-责任-协作者)中定义的数据对象和关系以及数据字典中描述的详细数据内容提供了数据设计活动的基础2)体系结构设计•定义软件的整体结构•由软件部件、外部可见的属性和它们之间的关系组成。
•体系结构设计表示可以从系统规约、分析模型和分析模型中定义的子系统的交互导出。
3)接口设计•描述软件内部、与协作系统之间、与人之间如何通信,主要包括三个方面:➢设计模块间接口➢设计外部接口➢设计人机接口4)部件级设计•软件体系结构的结构性元素=>软件部件的过程性描述。
•在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。
•部件设计的基础:从类为基础的模型、流模型、行为模型中得到的信息2.软件设计的目标1)设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。
2)设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护。
3)设计应从实现角度出发,给出与数据、功能、行为相关的软件全貌。
3.软件设计的过程1) 制定规范2) 体系结构和接口设计3) 数据/类设计4) 部件级(过程)设计5) 编写设计文档6) 设计评审4.软件设计原则(1)抽象化•软件系统进行模块设计时,可有不同的抽象层次。
•在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。
•在较低的抽象层次上,则采用过程化的方法。
•包括过程抽象和数据抽象1) 过程的抽象:在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。
❒需求分析阶段,用“问题所处环境的为大家所熟悉的术语”来描述软件解决方法。
❒从概要设计到详细设计的过程中,抽象化的层次逐次降低。
❒当产生源程序时到达最低抽象层次。
•2) 数据抽象:在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。
(2)逐步求精•将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构•逐步求精与抽象是一对互补的概念(3)模块化•模块化:指整个软件被划分成若干单独命名和可编址的部分,称之为模块。
这些模块可以被组装起来以满足整个问题的需求。
•把问题/子问题的分解与软件开发中的系统/子系统或系统/模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。
•模块化的理论根据-“分而治之”(P66)(4)信息隐藏•每个模块的实现细节对于其它模块来说应该是隐蔽的。
即:块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用•通过信息隐蔽,可使错误局部化(5)模块独立•模块独立:是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的•一般采用两个准则度量模块独立性。
即模块间耦合和模块内聚:•内聚(cohesion)是一个模块内部各个元素彼此结合的紧密程度的度量•耦合(coupling)是模块之间互相连接的紧密程度的度量•模块独立性比较强的模块应是高内聚低耦合的模块。
1)内聚•内聚性分七种类型①.功能内聚(Functional Cohesion):模块中各部分都是完成某一具体功能必不可少的组成部分。
②.顺序内聚(Sequential Cohesion):一个模块完成多个功能,各个功能必须顺序执行。
③.通信内聚(Communication Cohesion):一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据。
④.过程内聚(Procedural Cohesion):一个模块完成多个任务,这些任务必须按指定的过程进行。
⑤.时间内聚(Classical Cohesion):模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。
例如初始化模块和终止模块。
⑥.逻辑内聚(Logical Cohesion):这种模块把几种相关的功能组合在一起,调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。
⑦.巧合内聚(Coincidental Cohesion):巧合内聚又称为偶然内聚。
模块内各部分之间没有联系,或者即使有联系也很松散。
2)耦合•模块间的耦合方式①.非直接耦合(Nondirect Coupling):两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的。
②.数据耦合(Data Coupling):模块间仅通过参数表传递简单数据参数(不是控制参数、公共数据结构或外部变量) 交换信息。
③.标记耦合(Stamp Coupling):模块间通过参数表传递一个数据结构的一部分(不是简单变量。
④.控制耦合(Control Coupling):如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
⑤.外部耦合(External Coupling):一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
⑥.公共耦合(Common Coupling):若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。
公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
公共耦合的复杂程度随耦合模块的个数增加而显著增加。
若只是两模块间有公共数据环境,则公共耦合有两种情况。
松散公共耦合和紧密公共耦合。
⑦.内容耦合(Content Coupling):如发生下列情形,两个模块之间就发生了内容耦合:a)一个模块直接访问另一个模块的内部数据;b)一个模块不通过正常入口转到另一模块内部;c)两个模块有一部分程序代码重迭(只可能出现在汇编语言中);d)一个模块有多个入口。
二、软件体系结构设计•软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能否达到体系结构级的软件重用•软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
1.软件体系结构的风格(1)仓库风格体系结构•以数据为中心,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存贮上执行,仓库与外构件间的相互作用在系统中会有大的变化•例子:数据库,黑板系统(2)数据流风格的体系结构•输入数据被一系列的构件变换成输出数据。
•构件被称为过滤器,连接件为管道•过滤器必须是独立的实体,它不能与其它的过滤器共享数据,而且一个过滤器不知道它上游和下游的标识•例:编译程序(3)调用和返回风格的体系结构•非常容易修改和扩充的体系结构。
•包含:主程序/子程序风格体系结构和远程过程调用风格的体系结构•在这里要了解几个概念:➢程序结构的深度:程序结构的层次数称为结构的深度。
结构的深度在一定意义上反映了程序结构的规模和复杂程度。
➢程序结构的宽度:层次结构中同一层模块的最大模块个数称为结构的宽度。
➢模块的扇入和扇出:扇出表示一个模块直接调用(或控制)的其它模块数目。
扇入则定义为调用(或控制)一个给定模块的模块个数。
多扇出意味着需要控制和协调许多下属模块。
而多扇入的模块通常是公用模块。
(4)面向对象风格的体系结构•系统部件封装数据表示和数据操作。
•部件之间通过消息来交互和协调。
(5)层次式风格的体系结构•定义不同的层次,每一层为上层服务,并作为下层客户二、评估可选的体系结构•同一软件需求,不同设计方法,导出不同的软件结构。
•同一问题的不同软件结构:体系结构权衡分析法(A TAM,architecture trade-off analysis method)•在进行软件体系结构设计时,可以参考如下规则:(1) 改进软件结构提高模块独立性(2) 模块适当的深度、宽度、扇出和扇入(3) 模块判断作用范围应在其控制作用范围内(4) 力争降低模块接口的复杂度(5) 设计单入口单出口的模块(6) 模块功能应该是可以预测的模块大小适中(7) 一般一个模块包含的语句在30~50条左右较好。
(8) 一个设计好的软件结构,通常顶层扇出比较高,中层扇出比较少,底层有高扇入。
三、部件级设计技术•结构化程序设计方法1.部件级设计技术在部件级设计阶段,主要完成如下工作:•为每个部件确定采用的算法,选择某种适当的工具表达算法的过程,编写部件的详细过程性描述;•确定每一部件内部使用的数据结构;•在部件级设计结束时,应该把上述结果写入部件级设计说明书,并且通过复审形成正式文档,作为下一阶段(编码阶段)的工作依据。
2.结构化程序设计方法•结构化程序设计的定义:➢“如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连结,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的”。
•结构化程序设计方法➢自顶向下,逐步求精➢随着面向对象和软件复用的发展,更现实、更有效的开发途径可能是自顶向下和自底向上两种方法有机的结合。
3.部件描述方式•图形表示:程序流程图,N-S图,PAD•表格表示:判定表•语言表示:PDL四、人机界面设计1.人机界面设计中人的因素•人对感知过程的认识•用户的技能和行为方式•用户所要求完成的整个任务以及用户对人机界面部分的特殊要求2.人机界面设计中涉及的模型•设计模型(design model):软件工程师创建的,整个系统设计模型包括对软件的数据结构、体系结构、界面和过程的表示。
界面设计往往是设计模型的附带结果。
•用户模型(user model):人机工程师创建的,用户模型描述系统终端用户的特点。
设计前,应对用户分类,了解用户的特点,包括年龄、性别、实际能力(physical abilities)、教育、文化和种族背景、动机、目的以及个性。
•用户的模型(user´s model)或系统感觉(system perception):终端用户主观想象的系统映象,描述了期望的系统能提供的操作。
•系统映象(system image):系统实现者创建的,包括基于计算机的系统的外在表示(界面的观感)和用来描述系统语法和语义的支撑信息(书、手册、录像带、帮助文件)。