1、什么是软件应用系统的系统设计?
所谓软件系统设计,实际上就是利用特定的平台来实现软件系统项目的总体软件功能和性能。 从软件工程管理的角度来看,一个软件系统项目的设计过程主要分两步完成。
(一)外形设计
将软件系统项目的需求转化为系统的数据结构和软件系统的整体结构——这个设计阶段的重点是软件系统项目的静态结构设计,以及各个物理组成元素的设计构成软件系统项目——程序模块、数据库表结构、测试用例、各种设计文档文件等。
当然,软件系统项目的系统概要设计所需的各种信息主要来自于软件系统项目的需求分析的结果。
(2)详细设计
在前期系统概要设计完成软件系统项目总体结构设计的基础上,通过对软件系统项目结构中各物理组成元素的进一步设计细化和完善,得到了更加详细的软件数据结构和数据结构最终得到系统工程。 算法、用户界面设计、关键技术问题的解决方案(包括开发环境和工具、运行环境和平台等)以及相应的实现技术等。
2、软件系统总体设计阶段的主要工作重点
(1)设计所需的各种信息主要来源于软件系统项目的需求分析结果。
(2)概述设计工作的重点内容:设计软件系统项目的系统架构。
(3)系统架构设计工作的基本流程如下。 这一阶段是软件系统项目的系统架构师发挥作用的主要阶段。
因此软件设计开发说明书,软件系统项目的系统设计者在设计软件应用系统时,需要完成以下三个步骤:
1)描述系统要求;
2)描述系统结构;
3) 描述系统行为。
因此,可以看出,这三个步骤中,步骤1和步骤2是静态的,其建模方法一般称为静态建模; 而步骤3是动态的,他们的建模方法称为动态建模。 模具。 在UML分析和设计建模技术的实现中,静态建模可以用UML示例图、类图等UML标准图形来表示; 而动态建模可以用UML中的状态图、序列图和活动图来表示。 和其他图形表示。 可见,静态建模机制和动态建模机制是UML的两种主要类型。
3、软件系统详细设计阶段的主要重点
(一)软件系统详细设计涉及的主要工作内容
1)用户界面设计,以及各模块组件的设计与实现技术(对软件结构中各模块的内部流程进行描述)
2)模块内部算法设计
(2) 基本要求——一般来说,需要描述类的方法和属性,但这些方法的实现不需要做。
4、为什么要进行(或正在进行)软件应用系统的设计阶段?
(一)主要原因
通过对软件应用系统的用例分析,软件系统分析人员和设计人员可以产生系统分析模型,但设计人员很少直接基于这种分析模型来完成程序的开发和实现。 为什么? 下图是某BBS论坛系统的系统后台管理用例图的部分截图:
首先,我们不要想象,画出分析类后,我们就可以直接根据它来编码。
其次,我们应该明白,从用例图中得到的分析模型仅仅表达了系统中的一些关键概念,而不能表达系统中的性能和系统的外观。
最后,系统分析模型对于系统的结构设计往往过于简单软件设计开发说明书,这种模型无法考虑复用和调试。
因此,我们有必要对前面的分析模型进行进一步的设计,最终产生软件系统的最终设计模型。
5、进行软件应用系统的系统设计工作的主要目的
进行或进行软件应用系统的系统设计的主要目的是指定一个可以方便地转化为代码的工作方案,也是对前一阶段分析工作的进一步细化——即进一步细化软件系统分析阶段。 提取类(包括它们的操作和属性),并添加新类来处理数据库、用户界面、通信、设备等技术领域的问题。
之所以如此,是因为软件系统的系统设计是对问题域之外可见的行为的规范,并添加了实际计算机系统实现所需的细节,包括人机交互、任务管理和数据管理的细节。 以下是应用系统中数据库表结构定义的部分截图:
6、软件应用系统设计的基本要求
设计软件应用系统时要考虑的主要问题是:处理什么? 怎么处理呢? 如何使用?
因此,设计软件应用系统时需要注意的方面可以归纳为以下三类:
(1)处理的对象是数据。
(2)处理方法,即我们的系统如何处理系统逻辑。
(3)如何互动。 这种交互包括用户(users)和外部系统。
7. 读者需要区分软件设计和软件编程实现
(1)软件设计以面向数据为主,面向功能、面向对象为辅;
(2)软件的编程实现以面向对象为主,数据和面向功能为辅。
8、软件应用系统设计应注意的要点
(1)核心问题——是否可以使用重复的架构模式
即能否实现结构级的软件复用——即同一架构能否在不同的软件系统中使用。 比如我们经常谈论的C/S、B/S架构等问题。 因为架构是从更高的层面考虑问题——关注的问题体现在“不变”的因素上。 架构一般关心应用模型,更多体现在利用技术来解决这些业务差异带来的各种问题。 种影响。
比如我们关心是否是分布式应用,系统分层是如何设计的,我们也关心性能和安全性。 因此,在这种情况下,我们会考虑使用集群、负载均衡、故障迁移等一系列技术。 。 下图是一个在系统架构设计中应用MVC架构模式的软件应用系统的分层设计结果的部分图:
(二)软件系统设计工作应遵循的“3W”原则
谁(它是为谁设计的,用户是谁)
What(要解决用户的什么问题----功能、性能)
Why(为什么要解决这些问题----给用户带来价值、降低开发者成本等)
其实,“3W”的本质就是要求软件应用系统的系统设计者围绕“用户”而不是围绕“我们”或“时尚技术”来进行软件应用系统的设计工作,以满足需求。 “用户”,方便用户使用,同时使开发的技术尽可能简单,从而降低软件应用系统开发的总体成本。”这是软件应用系统设计者应该追求的设计目标。
9、软件应用系统设计中的系统概要设计——总体结构设计
(1)软件应用系统的系统概要设计应在什么时期进行?
在明确了软件系统的需求分析并对软件应用系统的系统需求进行领域建模后,需要进行进一步的系统概要设计工作,因为软件应用系统的系统概要设计对于后续的软件应用系统的系统概要设计至关重要。软件应用系统的开发、测试和实施。 、维护等方面的工作都有着关键的影响。 因此,软件应用系统的设计者需要重点关注并认真周到地开展相关工作。
(2)注重软件应用系统的总体设计
如何使系统概要设计工作适应具体的实施环境和部署环境? 系统总体设计工作的核心应该是规划方案的构建,在揭示实施细节的基础上获得设计方案的详细对象模型。 下图是某软件应用系统部署环境的部分截图:
(3)软件应用系统概要设计的重要性
1)分析和设计模型是交错迭代的
2)软件应用系统概要设计的重要性主要体现在它是将软件应用系统的需求转化为软件应用系统的开发和实现过程中最重要的环节,软件应用系统的系统设计最终结果的质量,也从根本上决定了软件应用系统的整体质量。
10、软件应用系统设计中系统概要设计涉及的主要内容
(一)制定开发规范
制定本软件应用系统的各项开发规范,是项目开发团队今后联合开发的基础。 有了这个开发规范以及程序模块之间、项目成员之间的接口规则、方法和方法,开发团队的每个成员也就有了共同的工作语言和共同的工作平台,这样整个软件开发工作就可以进行了协调有序。 本规范的制定涉及的主要内容包括:
1)代码体系、接口规范、命名规则
2)明确设计文件的编制标准。
3) 指定与硬件和操作系统的接口规范和命名规则。
(2)软件系统的架构设计(architecture design)
架构是复杂软件系统的抽象,例如客户端/服务器(C/S)和浏览器-Web服务器-数据库服务器(B/W/S)结构。 同时,架构设计中还应考虑框架技术的形式和服务器平台类型。
(3)划分软件应用系统中的各个模块并设计组件类
功能模块根据用户需求进行功能划分。 在模块设计中,应遵循“功能独立的单一职责原则(SRP,Single-Responsibility Principle)”,这是模块化设计的基本原则。 因为“功能独立”的模块可以降低软件应用系统在开发、测试、维护等阶段的成本。
(4)数据结构与算法设计
设计高效的程序是基于良好的数据结构和算法,而不是编程技能。 因为数据结构和算法是一类数据及其相关操作的表示。 确定软件系统涉及的文件系统的结构和数据库中的数据访问方式,设计数据的完整性和安全性,确定输入输出文件的详细数据结构是现阶段需要考虑的问题。
(5)数据库逻辑设计和系统数据流图(DFD)。 下图是蓝梦CRM管理系统系统数据结构设计阶段涉及的系统数据流图(DFD)设计结果的部分图。
(6)其他设计方面,如可靠性等。
软件系统运行过程中,为了适应环境的变化和用户新的功能需求,需要对软件进行频繁的改造、修改和完善。 在软件开发之初,应确定软件的可靠性等质量指标,并考虑相应的措施,使软件易于修改和维护。
11、掌握软件应用系统的系统概要设计所涉及的系统设计的一些基本原理
(一)先进性
在设计思想、系统架构、技术采用和平台选择上要有一定的先进性、前瞻性和可扩展性。 尤其要考虑一定时期内的业务增长和应用趋势。 在充分考虑技术先进性的同时,尽量采用技术成熟、市场占有率高的产品,确保搭建的网站系统具有良好的稳定性、可扩展性和安全性。
(2)实用性
在尽可能满足业务功能需求的前提下,要适应各个业务角色的工作特点,做到简单、易用、人性化。 实现统一身份和资源管理、统一认证、统一内容管理、个性化界面和内容定制。
(3) 可靠性
由于企业应用不可避免地涉及不同的用户群体(操作层、管理层、业务层等),因此构建的信息服务网站系统必须保证构建平台上系统的可靠性和安全性。 系统设计时应有适当的冗余等保护措施,平台和应用软件应具有容错、容灾能力。
(四)开放性
在系统架构、技术采用、平台选择等方面要有良好的开放性。 特别是在选择产品时,必须符合开放性要求,遵循国际标准化组织的技术标准。 所选产品不仅具有自己独特的优势,而且还可以与许多其他优秀产品相结合,形成开放的、易于扩展的、稳定的、统一的软件系统。
(5)可维护性
系统设计应标准化、规范化,以分层设计和软件实现为基础。 采用的软件组件开发方法必须满足以下要求:一是系统结构分层,业务与实现分离; 二是以统一的服务接口规范为核心,采用开放标准; 第三,组件语义描述必须形式化; 第四,精细化 封装元件必须标准化。
(6) 可扩展性
考虑到一般企业应用网站系统的在线业务建设是一个循序渐进、不断扩展的过程,因此系统必须采用积木式结构。 整体架构必须与现有系统无缝衔接,为未来系统扩展和集成留有空间。 还有扩展空间。
(7) 便携性
在选择应用平台进行开发时,应考虑能否构建一套平台无关、具有统一服务接口规范、连接各种数据库的应用组件。
12、软件应用系统系统概要设计阶段最终重要输出结果
(1)软件应用系统的总体设计规范一般需要包括以下主要内容:
1)编码规范:信息形式、接口规范、命名规则;
2)物理模型:部件图、配置图;
3)不同角度的架构视图:用例视图、逻辑视图、流程视图、部署视图、实现视图、数据视图(可选);
4)系统的总体布局:由哪些部分组成以及各部分之间的物理和逻辑关系;
(2)数据库设计说明
(3) 用户手册
(4)制定初步测试计划