3.系统设计知识
“怎么做”的物理模型
步骤:
1.概要设计:设计软件系统总体结构;数据结构及数据库设计(概念设计、逻辑设计、物理设计);编写概要设计文档(概要设计说明书、数据库设计说明书、用户手册、修订测试计划);评审
2.详细设计:每个模块详细的算法设计;模块内数据结构设计;数据库物理设计;其他设计(代码设计、输入输出格式设计、界面设计);详细设计说明书;评审
基本原理:抽象、模块化(可组合、分解、更换的单元);信息隐蔽;模块独立(耦合性、内聚性);
系统总体结构设计:
设计原则:分解-协调;自顶向下;信息隐蔽、抽象;一致性;明确性;模块扇入、扇出系数合理;模块规模适当
子系统划分原则:相对独立性;依赖尽量小;使数据冗余小;考虑管理发展;便于分阶段实现;各类资源的利用;
系统模块结构设计:
模块:逻辑模块、物理模块
要素:输入输出;处理功能;内部数据;程序代码
模块结构图:模块独立性;只能存在上下级间调用,不能有同级横向调用;呈树状结构;分类编码并归档。主要关心模块的外部属性(上下级模块,统计模块之间数据传递),并不关心模块的内部。
转接符号:为了避免涂上线条交叉、纸张上画不下。
数据存储设计:
数据结构组织、数据库、文件设计
数据的整体关系结构;数据资源分布;数据的安全保密(8个等级,4中方式(只读、只写、删除、修改))
结构化设计方法:
信息流:交换流、事务流
变换分析:分离出变换中心;第一级分解;第二级分解;
事务分析:确定事务中心和每条活动流的流特征;将事物流映射成高层的程序结构;进一步分解
面向数据结构的设计方法:
1.Jackson图
Parnas
提出了信息隐蔽原则:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于这些因素变化而需修改软件时,只需修改这些个别的模块,其它模块不受影响。
系统详细设计:
1.代码设计:唯一性;合理性;可扩充性;简单性;适用性;规范型;系统性。确定代码对象;考察是否已有标准代码;根据使用范围、时间、实际情况选择代码种类;检错功能;编写代码表
2.输出设计:确定输出内容;选择输出设备、介质;确定输出格式
3.输入设计:最小量;简单性;早检验;少转换。确定输入内容;输入方式;输入格式;校对方式
4.处理过程设计:用一种合适的表达方式描述每个模块的执行过程。流程图(程序框图)、盒图(NS图)、形式语言、决策树、决策表
5.用户界面设计:菜单方式、会话方式(会话方式、容错能力、系统的模块结构)、操作提示方式、操作权限管理方式
6.安全控制设计:环境性因素、数据处理因素
4.系统实施知识
开发工作的最后一个阶段。
任务:
1.按总体设计方案购置、安装计算机网络系统
2.软件准备
3.培训
4.数据准备
5.投入转换、试运行
步骤:
1.按总体设计方案购置、安装计算机网络系统
2.建立数据库系统
3.程序设计
4.手机有关数据并进行录入工作,然后进行系统测试
5.人员培训、系统转换、试运行
程序设计:
1.结构化程序设计方法
2.快速原型式程序开发方法
3.面向对象程序设计方法
系统的测试
软件测试、硬件测试、网络测试
原则:尽早、不断地测试;避免由开发人员承担;确定预期输出结果;包含不合理、失效的输入;是否做了不该做的事;严格按照测试计划进行;保存测试计划、测试用例;可重新测试、追加测试
过程:测试计划;测试大纲;测试用例,测试设计说明文档;实施测试;测试报告
策略:测试计划+测试用例+执行+结果收集、评估。
1.单元测试(模块测试):模块接口、局部数据结构、重要的执行路径
2.集成测试:非增量式集成、增量式集成。面向对象:基于线程的测试、基于使用的测试。
3.确认测试:有效性、软件配置审查、验收测试
4.系统测试:恢复测试;安全性测试;压力测试(强度测试);性能测试;可靠性、可用性、可维护性测试;安装测试
方法:
1.静态测试:人工检测、计算机辅助静态分析
2.动态测试:
黑盒测试法(功能测试):等价类划分、边界值划分、错误推测、因果图
白盒测试法(结构测试):逻辑覆盖、循环覆盖、基本路径覆盖
系统的调试
主要由开发人员进行
方法:
1.试探法:猜测错误位置
2.回溯法:适合小型程序
3.对分查找法:缩小错误范围
4.归纳法:分析不正确的数据,找出错误
5.演绎法:列出所有可能的原因,一个个排除
系统文档
包括:
1.开发过程中的文档(硬件采购、网络设计……)
2.系统建设过程中的各种往来文件、会议纪要、会计单据……(谈判、索赔的依据)
3.系统实施记录(程序资料、培训教程……)
作用:
1.用户与系统分析人员在系统规划、系统分析阶段进行沟通。可行性研究报告、总体规划报告、系统开发合同、系统方案说明书……
2.系统开发人员与项目管理人员在项目期内进行沟通。系统开发计划、系统开发月报、系统开发总结报告……
3.系统测试人员与系统开发人员进行沟通。系统方案说明书、系统开发合同、系统设计说明书、测试计划……
4.开发人员与用户在运行期间进行沟通。用户手册、操作指南
5.开发人员与维护人员进行沟通。系统设计说明书、系统开发总结报告
6.用户与维修人员在运行期间进行沟通。系统运行报告、维护修改建议。开发人员技术手册……
系统转换:
工作:
1.系统初始化,输入各种原始数据记录
2.记录系统运行的数据、状况
3.核对新系统的输出与旧系统输出
4.实际输入方式的考察
6.实际运行、相应速度进行实际测试
方式:
1.直接转换:处理过程不复杂,数据不重要
2.并行转换:核心系统。安全、可靠;费用、工作量大
3.分段转换:逐步转换、向导转换、试点过度法;子系统有一定独立性
系统阶段:厨师阶段;推广阶段;控制阶段;集成阶段;管理阶段;
5.系统运行和维护知识
系统维护
软件生命周期的最后一个阶段,不属于系统开发过程。
改正错误;满足新的需求
可维护性:可理解;可测试;可修改
软件文档:是软件可维护性的决定性因素
用户文档、系统文档
内容:硬件维护、软件维护(正确性、适应性、完善性、预防性)、数据维护
副作用:修改代码产生的错误;修改数据库中的数据,导致有些软件不可使用
系统评价
立项评价、中期评价、结项评价
指标:
经济学:成本、效益 、财务指标
评价对象:系统质量、技术水平;用户需求,运行质量;社会效益指标
组成部分:运行效果与需求;系统质量与技术条件