软件系统的目的是为了解决问题,因此在建模之初最重要的步骤是对问题的分析与定义,并在此基础上归结模型,这样才能够获得切实有效的模型。定义问题的过程包括:理解真实世界中的问题和用户的需要,并提出满足这些需要的解决方案的过程。
对于一个问题的完整定义,通常应包括目标、功能需求和非功能需求三个方面。
需求分析与软件设计是软件生存期中最重要的两个步骤,需求分析解决的是“做什么”的问题,系统设计则是解决“怎么做”的问题。
理想情况下,每一项用户、业务需求和功能需求都应具备下列性质。
①完整性:每一项需求都必须完整地描述即将交付使用的功能。
②正确性:每一项需求都必须正确地描述将要开发的功能。
③可行性:需求必须能够在系统及其运行环境的已知能力和约束条件内实现。
④必要性:每一项需求记录的功能都必须是用户的真正需要。
⑤无歧义:每一项需求声明对所有读者应该只有一种一致的解释。
⑥可验证性:如果某项需求不可验证,那么判定其实现的正确与否就成了主观臆断。
需求分析主要是确定待开发软件的功能、性能、数据、界面等要求。
静态分析通过解析程序文本从而识别出程序语句的各个部分,审查可能的缺陷和异常之处,静态分析包括五个阶段:
需求分类:
除了这三种需求之外,还有业务需求、用户需求、系统需求这三个处于不同层面的概念
需求工程:
需求工程就是包括创建和维护系统需求文档所必需的一切活动的过程,主要包括需求开发和需求管理两大工作。
需求分析方法:
需求验证: 通过需求评审和需求测试,以用户签字确认为验收标准之一
验证准则:
软件设计(又叫系统设计 )是一个把软件需求变换成软件表示的过程。
软件设计包括体系结构设计、接口设计、数据设计和过程设计。
外部设计处于软件设计的开始阶段,主要是按系统需求说明来确定此系统的软件结构和对应于系统需求说明,设计出各个功能部分的功能和接口。
内部设计处于软件工程中的概要设计阶段,按照外部设计中确立的系统软件结构,来细化此系统各个功能部件以及各个部件接口的设计,并且详细给出各个功能部件详细的数据输入、输出设计。内部设计细化外部设计中的各种功能。
结构化分析与设计方法是一种面向数据流的需求分析和设计方法,它适用于分析和设计大型数据处理系统,是一种简单、实用的方法,曾获得广泛的应用。
结构化分析方法的基本思想是自顶向下逐层分解。
结构化分析方法的特点是利用数据流图来帮助人们理解问题,对问题进行分析。
结构化分析方法把系统看作一个过程的集合体;而面向对象方法则把系统看成一个相互影响的对象集。
结构化分析一般包括以下工具:数据流图(Data Flow Diagram,DFD)、数据字典(DataDictionary,DD)、结构化语言、判定表、判定树。
结构化方法分析模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型(也称为状态模型)。
在实际工作中,一般使用E-R图表示数据模型,用DFD表示功能模型,用状态转换图表示行为模型。这三个模型有着密切的关系,它们的建立不具有严格的时序性,而是一个迭代的过程。
数据流图
DFD 是一种图形化的系统模型,它在一张图中展示信息系统的主要需求,即输入、输出、处理(过程)、数据存储。
Context 图。Context 图,也就是系统上下文范围关系图。这是描述系统最高层结构的 DFD 图。它的特点是,将整个待开发的系统表示为一个过程,将所有的外部实体和进出系统的数据流都画在一张图中。
Context 图用来描述系统有什么输入、输出数据流,与哪些外部实体直接相关,可以把整个系统的范围勾画出来。
结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模块化的过程。
概要设计阶段
主要任务是设计软件的结构、确定系统是由哪些模块组成,以及每个模块之间的关系。它采用结构图(包括模块、调用、数据)来描述程序的结构,此外还可以使用层次图和 HIPO(层次图加输入/处理/输出图)。
详细设计阶段
主要任务则是确定应该如何具体地实现所要求的系统,得出对目标系统的精确描述。它采用自顶向下、逐步求精的设计方式和单入口单出口的控制结构。常使用的工具包括程序流程图 PFD、盒图 NS、问题分析图 PAD、程序设计语言 PDL。
程序流程图和盒图都是用来描述程序的细节逻辑的
PAD 是问题分析图的缩写,(自顶向下、逐步求精、结构化程序设计的思想),能够很方便地转换为程序语言的源程序代码。
PDL 是语言描述工具的缩写,包括数据说明部分和过程部分,还可以带注解等成分,但它是不可执行的。PDL 是一种形式化语言,其控制结构的描述是确定的,但内部的描述语法是不确定的。PDL 通常也被称为伪码。
将一个待开发的软件分解成为若干个小的简单部分——模块,每个模块可以独立地开发、测试。
类与对象是抽象描述和具体实例的关系,一个具体的对象被称为类的一个实例。在系统设计过程中,类可以分为三种类型,分别是实体类、边界类和控制类。
UML的使用
接口设计主要包括三个方面的内容:一是设计软件构件间的接口;二是设计模块和其他非人的信息生产者和消费者(如外部实体)的接口;三是人(如用户)和计算机间界面设计。
用户界面设计的原则
用户界面设计过程(迭代)
分布式系统有两种完全不同的方式来进行协同和合作:
1、基于实例的协作 (“ 代理”、远程调用)
2、基于服务的协作 (接口、采用分层次的结构)
软件的运行环境是指系统运行的设备、操作系统和网络配置。
新开发的系统如何取代旧系统:
1、直接过渡
2、并行过渡
3、阶段过渡
(1)结构化建模方法
结构化建模方法是以过程为中心的技术可用于分析一个现有的系统以及定义新系统的业务需求,结构化建模方法所绘制的模型称为数据流图(DFD),对于流程较为稳定的系统可使用此方法
(2)信息工程建模方法(数据库建模方法)
信息工程建模方法是一种以数据为中心,但过程敏感的技术,它强调在分析和研究过程需求之前,首先研究和分析数据需求,信息工程建模方法所创建的模型称为实体联系图(ERD),用于数据建模。
(3)面向对象建模方法
面向对象建模方法将“数据”和“过程”集成到“对象”中,消除了数据和过程的人为分离现象,面向对象建模方法所创建的模型称为对象模型,并形成了面向对象的建模标准(UML),目前比较常用的建模方法