1、 软件开发周期
定义:定义问题,可行性研究,需求分析
开发:概要设计,详细设计,编码,测试
运维:更正性维护,适应性维护,预防性维护,完善性维护
消亡:报废,遗留问题
2、 需求工程(1)
需求工程包括需求开发和需求管理
需求开发:获取需求、需求分析、需求定义、需求验证
需求管理:定义需求基线、处理变更控制、版本控制、需求跟踪、需求状态跟踪
获取需求:用户访谈、问卷调查、采样、情节串联版、JPR联合需求计划
需求变更过程:识别出问题需求->问题分析与变更描述->变更分析与成本计算->变更实现->修改后的需求
需求分析
结构化分析:自顶向下,逐层分解、模块化、面向数据流。
工具和技术:DFD数据流图、状态转换图、ER图
面向对象分析:复用性好。
工具和技术:顶层架构图、用例与用例图、领域概念模型
基于UML的需求分析过程的基本步骤分为利用用例及用例图表示需求,利用包图及类图表示目标软件系统的总体架构
3、 系统(软件)设计(2)
软件设计包括四个既独立又相互联系的活动,即高质量的数据设计将改善程序结构和模块划分,降低过程复杂性;软件结构设计的主要目标是开发一个模块化的程序结构,并表示出模块间的控制关系;人机界面设计描述了软件与用户之间的交互关系
概要设计:主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图(系统结构图)
详细设计:在概要设计中,将系统开发的总任务分解成许多个基本的、具体的任务,为每个具体任务选择适当的技术手段和处理方法的过程成为详细设计。根据任务的不同,详细设计又可分为多种,例如网络设计、代码设计。输入输出设计、处理流程设计、数据库存储设计、用户界面设计、安全性和可靠性设计等。
处理流程设计:主要目的是确定各个系统模块的内部结构,即内部执行过程,包括局部数据组织和控制流,以及每个具体加工过程和实施细节。
数据存储设计:依据数据处理要求、处理方式、存储的信息量大小、数据使用的频率和所能提供的设备条件等
用户界面设计:置于用户控制之下、减轻用户的记忆负担、保持界面一致性
4、 结构化方法(2-4 大概率)
结构化方法由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。适用于数据处理领域的问题,不适合解决大规模的、特别复杂的项目,且难以适应需求的变化
结构化分析
结构化分析是根据分解与抽象的原则,按照系统中的数据处理流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。结构化分析模型的核心是数据字典,围绕这个核心,有3个层次的模型,分别是数据模型、功能模型和行为模型(也称状态模型)。一般使用E-R图表示数据模型,用DFD表示功能模型,用状态转换图表示行为模型。
结构化分析工具:数据流图DFD、数据字典、结构化语言、判定表、判定树
数据流图:数据流、加工、数据存储、外部实体
数据字典:数据流、数据项、数据存储、基本加工
结构化设计SD
结构化设计是一种面向数据流的方法,包括体系结构设计、接口设计、数据设计和过程设计等任务。以SRS(软件需求说明书)和SA(结构化分析)阶段所产生的数据流图和数据字典等文档为基础转化为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计,结构化设计使用三种基本控制结构构造程序,任何程序都可以由顺序、选择和重复三种基本控制结构构造,是一个自顶向下、逐步求精和模块化的过程。
基本思想:是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段,其中概要设计的主要任务是确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系;详细设计的主要任务是为每个模块设计实现的细节。
结构化设计原则:抽象化(过程的抽象、数据抽象、控制抽象)、自顶向下,逐步细化、信息隐蔽、模块独立(高内聚,低耦合)
通过信息隐蔽可以提高软件的可修改性、可测试性和可移植性,它也是现代软件设计的一个关键性原则。
模块:组成系统的基本单位
模块的四要素:输入/输出、处理功能、内部数据、程序代码。
模块设计原则:模块大小适中、模块的扇入(调用上级模块数量,扇入大表明模块的扇入程度高)扇出(调用下级模块的数量,扇出大表明复杂程度高,缺乏中间层)要合理、深度和宽度适当
模块结构图SC:又称系统结构图,软件概要设计阶段的工具,反应系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的整体结构。SC包括模块、模块之间的调用关系、模块之间的通信和辅助控制符号四部分