中级——010 系统开发和运行知识

软件生存周期
1、可行性分析与项目开发计划:确定软件的开发目标及可行性,给出关于问题定义、可行性分析和项目开发计划。
2、需求分析:确定软件系统的功能、性能、数据和界面等要求。
3、概要设计:将确定的功能需求转换成相应的开发模块,明确模块的层次以及功能。
4、详细设计:对每个模块完成的功能进行具体描述,设计出程序的详细规格说明。
5、编码和单元测试:把每个模块的控制结构转换成计算机程序代码。
6、综合测试:完成测试使软件达到预定的要求。最基本的测试是集成测试和验收测试。
7、维护:每一项维护活动应记录下来,作为正式的文档资料加以保存。
软件生存周期模型——瀑布模型
优点:容易理解,管理成本低,强调开发阶段性早期计划及需求调查和产品测试。
缺点:客户需对需求十分明确,并且可以把控进度。系统问题前期无法捕捉,只有在集成测试时可以看到,风险控制能力弱,项目常延期,导致开发费用高。

image

软件生存周期模型——增量模型
优点:第一版交付版本所花成本和时间少,系开发风险小,需求变更小
缺点:需对用户的变更要求进行规划卡控,否则回影响后期的计划,管理发生的成本、进度和配置的复杂性,对管理人员的组织能力要求高

image

软件生存周期模型——演化模型
对象:事先需求不明确
优点:一开发马上可以测试
缺点:需控制用户接触开发中尚未稳定的功能,对开发人员和用户有一定的负面影响
软件生存周期模型——螺旋模型
对象:复杂的大型软件
1、制定计划:确定软件的目标,选定实施方案,明确项目开发的限制条件
2、风险分析:分析所选方案,识别风险,消除风险
3、实施工程:实施软件开发,验证阶段性产品
4、用户评估:评价开发工作,提出修正建议,建立下一个周期的开发计划
优点:强调风险分析,降低软件开发的风险
缺点:过多的迭代次数会增加开发成本,延迟提交时间

image

软件生存周期模型——喷泉模型
对象:面向对象开发
优点:提高软件的开发效率,节省开发时间
缺点:需要大量开发人员应对无间隙迭代,管理我呢的困难,审核需求难度大

image

典型的软件开发方法
1、结构化开发方法:自顶向下,逐层分解,适用于数据处理领域,不适合解决大规模、复杂的项目。
2、原型化开发方法:适合需求不确定或易变的情况,适用于规模不大且不复杂的项目。
3、面向对象开发方法:按照人类认识世界的方法和思维来分析和解决问题,有Booch方法、Coad方法、OMT方法。
4、敏捷方法:尽可能早、持续地有价值的软件的交付,方法包括:极限编程、水晶法、并列争求法、自适应软件开发
软件项目管理
1、成本估算
	成本估算方法:有自顶向下估算、自底向上估算、差别估算、其他估算(专家估算、类推估算、算式估算)
	成本估算模型:Putnam模型(动态多变量模型)、COCOMO模型(基本COCOMO模型、中级COCOMO模型、详细COCOMO模型)(精确,易使用)
2、风险分析
	风险识别:产品规模、商业影响、客户特性、过程定义、开发环境、构建的技术、人员数目及经验。
	风险预测:建议尺度或标准,反映风险发生的可能性、描述风险的后果、估计风险对项目和产品的影响、标注风险预测的整体精确度,以免产生误解。
	风险评估:成本、性能、进度三维度考量
3、进度管理
	Gantt图:优点:反映任务的进展及并行性,缺点:不能反映任务之间的依赖关系,难以确定项目的关键所在。
	PERT图:优点:反映任务之间的依赖关系,展示工程的关键路径,缺点:不能反映任务之间的并行关系
4、人员管理
	主程序员组、无主程序员组、层次式程序员组

image

系统分析基础知识
1、系统分析的任务:形成系统方案说明书
2、系统分析的主要阶段:范围定义、问题分析、需求分析、逻辑设计、决策分析
3、需求分析的任务:确定待开发软件的功能、性能、数据和界面等要求
4、需求的分类:功能需求、非功能需求、设计约束
5、结构化分析方法:面向数据流的方法,适用于大型数据处理系统
6、面向对象分析方法:运用OO方法,对问题进行分析和理解。
系统设计基础知识
概要设计
	1、设计软件系统的总体结构
	2、数据库结构及数据库设计
	3、编写概要设计文档
	4、评审
详细设计
	1、对每个模块进行详细的算法设计
	2、对模块内的数据结构进行设计
	3、对数据库进行物理设计,确定数据库的物理结构
	4、其他设计(代码设计、输入输出设计、用户界面设计)
	5、编写详细的设计说明书
	6、评审
系统设计的基本原理
1、抽象
2、模块化
3、信息隐蔽
4、模块独立
结构化设计方法
1、信息流的类型(变换流、事务流)
2、变换分析
	确定输入流和输出流,分离出变换中心
	第一级分解
	第二级分解
3、事务分析
	确定事务中心和每条活动流的流特性
	将事务流型DFD映射成高层的程序结构
	进一步分解
4、SD方法的设计步骤
	复查并精细化数据流图
	确定DFD的信息流类型
	根据流类型分别实施变换分析或事务分析
	根据系统设计的原则对程序结构图进行优化
面向对象设计方法
1、设计软件类(实体类、边界类、控制类)
2、面向对象设计过程
	对用例模型加以精炼以反映实现环境
	建模支持用例情景的对象交互、行为和状态
	修改对象模型以反映实现环境
系统测试基础知识
1、系统测试的意义:发现错误而执行程序的过程
2、系统测试的目的:以最小的人力和时间发现潜在的各种错误和缺陷
3、系统测试的原则
	1、应尽早并不断地进行测试
	2、测试工作应该避免由原开发软件的人或小组承担
	3、设计测试方案时,不仅要确定输入数据,而且还要根据系统功能确定预期输出结果
	4、在设计测试用例时,不仅要设计有效合理的输入条件,也要包含不合理、失效的输入条件
	5、在测试程序时,不仅要校验程序是否做了该做的事,还要检验程序是否做了不该做的事
	6、严格按照测试计划进行,避免测试的随意性
	7、妥善保存测试计划、测试用例,作为软件文档的组成部分,为维护提供方便
	8、测试例子都是精心设计出来的,可以为重新测试或追加测试提供方便
4、测试过程
	1、制定测试计划
	2、编制测试大纲
	3、根据测试大纲设计和生成测试用例
	4、实施测试
	5、生成测试报告
5、软件测试策略:单元测试、集成测试、确认测试、系统测试
6、软件测试方法:黑盒测试法(功能测试)、白盒测试(结构测试)
	黑盒测试技术:有等价类划分、边界值分析、错误推测和因果图
		1、是否由错误的功能或遗漏的功能
		2、界面是否有误?输入是否正确接收?输出是否正确?
		3、是否有数据结构或外部数据库访问错误?
		4、性能是否能够接受?
		5、是否有初始化或终止性错误?
	白盒测试技术:逻辑覆盖、循环覆盖、基本路径测试
		1、程序模块的所有独立路径至少执行一次
		2、在所有的逻辑判断中,取“真”和取“假”的两种情况至少都能执行一次
		3、每个循环都应在边界条件和一般条件下各执行一次
		4、测试程序内部数据结构的有效性
系统运行与维护基础知识
1、系统可维护性的评价指标:可理解性、可测试性、可修改性
2、维护与软件文档:维护内容需记录在文档中
3、软件文档的修改:及时修改技术文档
4、系统维护的内容:硬件维护、软件维护(正确性维护、适应性维护、完善性维护、预防性维护)、数据维护
5、系统评价:立项评价、中级评价、结项评价
软件开发方法新进展
1、面向方面的方法
2、软件复用与构件化的方法
	基于构件的软件开发和复用
	基于开源软件的软件开发和复用
	知识驱动的软件开发和复用
3、服务化方法
	软件服务
	服务化方法的主要角色和开发过程
	微服务
posted @ 2023-05-01 15:34  快乐小狗呀  阅读(17)  评论(0)    收藏  举报