软件工程之软件设计方法
软件工程方案设计思路

软件工程方案设计思路一、引言随着信息技术的迅猛发展,软件应用已经成为人们日常生活和工作中不可或缺的一部分。
在这个背景下,软件工程方案设计显得尤为重要。
好的软件工程方案设计可以保证软件项目的顺利开发和成功上线,最终实现用户需求的满足和市场价值的最大化。
本文将从软件工程方案设计的基本思路入手,分析软件工程方案设计的基本原则和方法,并结合具体案例,探讨软件工程方案设计的具体逻辑和实施步骤。
二、软件工程方案设计的基本思路软件工程方案设计是在软件项目规划和需求分析的基础上,通过系统化的方法和技术,对软件系统进行全面设计和规划的过程。
一个成功的软件工程方案设计需要考虑以下几个方面的基本思路:1. 用户需求为中心:用户需求是软件工程项目的起点和终点,软件工程方案设计的首要任务是满足用户需求,因此,软件工程方案设计必须以用户需求为中心,深入了解用户需求,以用户体验为导向,确保设计出符合用户期望的软件产品。
2. 结构化设计原则:软件工程方案设计需要基于结构化设计原则进行,即将软件系统分解为若干个相互独立的子系统或模块,每个子系统或模块都有自己明确的功能和职责,使得软件系统的设计更加清晰和易于实施。
3. 模块化设计方法:在软件工程方案设计中,采用模块化设计方法是非常必要的,通过模块化设计,能够将复杂的软件系统分解成多个独立的模块,每个模块都有自己的独立性和可扩展性,可以更好地进行并行开发和维护。
4. 务实的设计策略:软件工程方案设计需要以务实的设计策略作为指导,充分考虑项目的实际情况和资源限制,设计出合理、可行的方案,避免过度设计和不切实际的要求。
5. 灵活的设计理念:在软件工程方案设计中,需要保持灵活的设计理念,充分考虑软件系统的可扩展性和适应性,以便未来能够应对用户需求的变化和技术发展的变革。
三、软件工程方案设计的具体原则和方法在软件工程方案设计中,需要遵循一些具体的原则和方法,以确保软件工程方案设计的合理性和有效性。
软件工程中的系统设计方法

软件工程中的系统设计方法在软件工程领域中,系统设计是开发高质量软件的关键步骤之一。
它涉及到定义系统的结构和组织,并确保软件能够满足用户需求、具备良好的可维护性和可扩展性。
为了有效地进行系统设计,软件工程师需要采用一些方法和技术来指导他们的工作。
本文将介绍一些常用的系统设计方法,以帮助读者更好地理解和应用于实践。
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结构是一种分布式模型,采用发请求、得结
软件工程第4章 软件设计

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

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

软件工程软件设计方法(二)引言概述:软件设计方法是软件工程领域中至关重要的一部分,它涉及到软件系统架构、模块设计、接口设计等多个方面。
本文将着重介绍软件设计方法的五个主要方面,包括需求分析、系统架构设计、模块划分、接口设计和可重用性。
正文:1. 需求分析- 确定用户需求:通过与用户沟通,明确软件系统的功能需求和性能需求。
- 业务流程分析:了解用户的业务流程,以便设计出符合实际业务需求的软件。
- 数据模型设计:根据需求对数据进行建模,定义数据实体、属性和关系。
2. 系统架构设计- 划分子系统:将整个软件系统分解为多个相对独立的子系统,每个子系统负责特定的功能。
- 确定系统层次:定义子系统之间的层次结构和依赖关系,保证系统的稳定性和可扩展性。
- 选择适当的架构风格:根据软件系统的特点和需求,选择适合的架构风格,如客户端-服务器、分层或微服务等。
3. 模块划分- 确定模块功能:根据系统需求和架构设计,将系统功能划分为不同的模块。
- 设计模块接口:定义模块之间的接口规范,确保模块之间的协同工作和信息交互。
- 模块详细设计:对每个模块进行详细设计,包括内部数据结构和算法的设计。
4. 接口设计- 定义接口规范:确定模块之间的接口规范,包括输入输出参数、数据格式等。
- 接口协议设计:设计合适的接口协议,包括数据传输格式、访问控制等。
- 接口测试和验证:进行接口测试,确保接口的正确性和稳定性。
5. 可重用性- 模块复用:设计和实现可重用的模块,以提高软件的开发效率和质量。
- 组件库开发:建立组件库,将常用的功能模块抽象为可重用的组件,方便后续开发过程中的重用。
- 框架设计:设计通用的框架,提供开发的基础设施和通用功能。
总结:通过本文对软件设计方法的介绍,我们可以看到,在软件工程中,软件设计方法的重要性不可忽视。
通过需求分析、系统架构设计、模块划分、接口设计和可重用性等方面的综合考虑,可以设计出高效、可靠、可维护的软件系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程之软件设计方法简介您是如何开始一个新工程的?是不是跳到计算机前,打开您喜爱的RAD工具开始输入代码?有没有想过程序会执行些什么或者系统是如何操纵数据的?有没有想过要记下些东西来帮助提醒您或阐明您已经开发的代码的逻辑实现?如果您对第一个问题答"不",而其他问题答"是"的话,您可以跳过这篇文档。
否则的话,请好好读读这篇文章。
您应该有个计划、蓝图,并且在手边有个对您的问题解决方案的简明安排。
"您必须知道您要去哪儿得到一切!"让我们来看看开发一个能实现您所设计的功能的程序时,什么最棘手。
(软件)设计是什么?E.S. Taylor给设计下的定义是:"…the process of applying various techniques and principles for the purpose of defining a device, a process or a system in sufficient detail to permit its physical realization. ""…应用各种各样的技术和原理,并用它们足够详细的定义一个设备、一个程序或系统的物理实现的过程。
"对任意的工程产品或系统,开发阶段绝对的第一步是确定将来所要构建的制造原型或实体表现的目标构思。
这个步骤是由多方面的直觉与判断力来共同决定的。
这些方面包括构建类似模型的经验、一组引领模型发展的原则、一套启动质量评价的标准、以及重复修改直至设计最后定型的过程本身。
计算机软件设计与其他工程学科相比还处在幼年时期,仍在不断变化中,例如更新的方法、更好的算法分析、以及理解力的显著进化。
软件设计的方法论的出现也只有三十年多一点,仍然缺乏深度、适应性和定量性质,通常更多的与经典工程设计学科相联系。
尽管如此,现今的软件技术已经存在、设计质量的标准也可使用、设计符号亦可以应用。
带着这些意见,我们一起来看看什么有助于程序员们找到他们的软件涅盘(天堂的意思)。
(软件)设计过程软件的设计是一个将需求转变为软件陈述(表达)的过程。
这种陈述给我们一个对软件的全局观点。
系统通过逐步求精使得设计陈述逐渐接近源代码。
这里有两个基本步骤;第一步是初步设计Preliminary design ,关注于如何将需求转换成数据和软件框架。
第二步是详细设计Detail design ,关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。
发生中的设计行为、数据、算法和程序设计都需要由现代程序所需的界面设计这一清晰的行为来结合起来。
界面设计Interface design 建立程序布局和人机交互机制。
贯穿设计过程的质量由一系列的正式技术评定formal technical reviews 或设计排演design walkthroughs 来评价。
良好的设计规范必须建立在对设计陈述(表达)的评估之上,以下是一些指导方针:1. 设计应该展现层次结构使得软件各部分之间的控制更明智。
2. 设计应当模块化;这就是说,软件应在逻辑上分割为实现特定的功能和子功能的部分。
3. 设计应当由清晰且可分离的数据和过程表达来构成。
4. 设计应使得模块展现独立的功能特性。
5. 设计应使得界面能降低模块之间及其与外部环境的连接复杂性。
6. 设计应源自于软件需求分析期间获得的信息所定之可重复方法的使用。
要拥有良好的设计特征不是靠碰运气,而在设计过程中通过综合运用基础设计原理、系统方法论、彻底的评定回顾可以有助于良好的设计。
软件设计方法每天都在进化,作为已经经过测试和细化的方法,良好的设计应具有以下的四种特性,并在所有这些特性之间保持一致。
1. 将信息领域的表达转换为软件设计的表达的机制。
2. 表示功能组件及其界面的符号。
3. 逐步求精和分割的试探。
4. 质量评估的指导方针。
开发软件的时候,不管采用何种设计方法您必须能够熟练运用一套关于数据、算法和程序设计的基本原理。
(软件)设计基础软件设计方法论的这套基本原理已经经过了多年的进化。
每种概念的影响程度不尽相同,但它们都经历了时间的洗礼。
基于这些基本原理设计者可以采用更多更成熟的设计方法。
这些基本原理有助于设计者回答以下的问题:1. 将软件分割成独立的组件时会采用何种标准?2. 怎样将软件的原则性表示详细分割成函数或数据结构?3. 有没有定义一个软件设计的技术质量的统一标准?M.A. Jackson曾经说过:"对一个计算机程序员来说,分辨让程序运行和让程序正确之间的差异是一个良好的开端。
"为了"使程序正确",基本设计原理提供了必须的框架。
因此让我们来对这些基本原理作个简短的检视。
抽象Abstraction 在最高层次上指的是使用待解决的问题领域内的术语描述的解决方案。
相对较低层次的抽象则更多的面向程序语言,最低层的抽象则是解决方案的可直接实现的方式描述。
软件设计的每一个步骤都是对相应层次解决方案的抽象的逐步求精。
求精Refinement 又叫做逐步求精指的是通过程序细节连续细化来开发程序体系的策略。
分步骤的对程序抽象进行分解直至成为编程语言的过程同时造就了程序的层次结构。
在这一点上要对细节多做考虑,这也展示了求精实际上是个苦心经营的过程。
模块化Modularity 指的是软件可被分割为分别命名并可寻址的组件(也叫做模块),将模块综合起来又可以满足问题的需求的性质。
"软件的模块化是允许智能化管理程序的唯一属性。
"换句话说,当您将一个复杂问题分解为一些小问题时会更容易解决。
需要重点解释的是即使一个系统必须象"单片机"一样来实现,它也可以采用模块化设计。
软件体系(架构)Software Architecture 涉及到程序的两个重要特性:1)模块的层次结构。
2)数据结构。
这源自于需求分析时将真实世界问题的含蓄定义与软件解决方案的要素关联起来的分割过程。
当问题的每个部分通过一个或多个软件要素得到解决后,与问题的定义和解决相一致软件和数据结构的进化就开始了。
这个过程代表了软件的需求分析和设计之间的位置。
控制层级Control Hierarchy 也称作程序结构,描述程序组件的组织并意味着控制层级。
它并不描述软件的程序方面,比如进程顺序、决定的事件/命令、或工作循环。
如下的层级图表展示了模块之间的通信流,并显示哪些模块是重复的(右上角变黑的块)。
这个图表描述了一个能够读文件,计算每个记录的值并书写报表来显示记录的信息和所完成的计算。
数据结构Data structure 描述了单个数据间的逻辑关系。
数据结构规定了数据的组织、访问方法、关联程度、和信息的选择处理。
数据结构的组织和复杂性只受限于设计者的灵活性。
唯一的限制就是经典数据结构的数量阻碍了更多的久经考验的结构出现。
软件程序Software Procedure 着重于处理每个模块的细节并必须提供一个精确的处理规范,包括事件顺序、准确的判定点、重复操作、甚至数据结构。
软件的程序表现是分层的,处理方法应该包括其所有子模块的参考。
信息隐藏Information Hiding 的法则建议由设计决定所刻划的模块特性应该对其余的模块不可见。
换句话说,模块应被设计和指定为包含在模块内部且其他模块不可访问的内容对其他模块来说是无需的。
隐藏意味着有效的模块性能够通过定义一套独立的模块来实现,这些模块相互之间的通信仅仅包括实现软件功能的所必须的信息。
将使用信息隐藏作为设计标准在测试或今后的维护期间需要修改系统时带来了最大的好处。
(软件)设计方法论让我们来遍历设计过程中用以促成模块化设计的四个区域:模块Modular、数据Data、体系Architectural 和程序Procedural 设计。
模块设计Modular design 减低了复杂性、便于修改、且使得支持系统不同部分的并行开发实现起来更容易。
模块类型提供的操作特性通过结合时间历史、激活机制、和控制模式来表现。
在程序结构内部,模块可以被分类为:1. 顺序sequential模块,由应用程序引用和执行,但不能从表观上中断。
2. 增量incremental模块,可被应用程序先行中断,而后再从中断点重新开始。
3. 并行parallel模块,在多处理器环境下可以与其他模块同时执行。
单独的模块更容易开发,因为功能可以被划分出来,而界面只是用来确保功能的独立。
功能的独立性可以使用两个定性的标准来衡量:凝聚性cohesion -衡量模块的功能强度的相关性,和耦合性coupling -衡量模块间的相互依赖的相关性。
数据设计Data design 首先并且有些人也坚信,是最重要的设计行为。
数据结构的影响和程序上的复杂性导致数据设计对软件质量有着深远的影响。
这种质量由以下的原理来实施:1. 适用于功能和行为分析的系统分析原理同样应该适用于数据。
2. 所有的数据结构,以及各自所完成的操作都应该被确定。
3. 创建数据词典并用来详细说明数据和程序的设计。
4. 底层的数据设计决定应该延迟至设计过程的后期。
5. 数据结构的陈述(具体说明)应该只被那些直接使用包含在此结构内的数据的模块所知道。
6. 有用的数据结构和操作库可以在适当的时候使用。
7. 软件设计和编程语言应该支持抽象数据类型的规范和实现。
体系设计Architectural Design 的主要目标是开发模块化的程序结构并表达出模块间的控制相关性。
另外,体系设计融合了程序结构与数据结构,以及使得数据得以在程序中流动的界面定义。
这种方法鼓励设计者关注系统的整体设计而不是系统中单独的组件。
选用不同的方法会采用不同的途径来接近体系的原点,但所有这些方法都应该认识到具有软件全局观念的重要性。
程序设计Procedural Design 在数据、程序结构、和陈述详细算法的说明都已使用类似英语的自然语言来呈现后,再确定程序设计。
使用自然语言来陈述的原因是当开发小组的绝大多数成员使用自然语言来交流的话,那么小组外的一个新手在不经学习的情况下会更容易理解这些说明。
这里有个问题:程序设计必须毫无歧义的来详细说明程序,但我们都知道不含糊的自然语言也就不自然了。
(软件)设计文档在任何系统中,开发文档都是有价值的东西。
现在已经有许多不同的经过发展的文档计划可供您在创建系统时候进行选择。
其中相当不错的一种模型就是所谓的设计规范(译者注:此处原有的超链接已经失效,所以无法得到其原始的模板。
但CKER还有一套被称作的APM 的文档模板似乎不错。
以后也许会翻给大家来看看……^_^)。
当您察看此文档的大纲的时候,请注意各级别的详细内容。