这一部分的内容是概念比较多,不要理解,去感受。
涉及的知识点是嵌入式系统开发和维护的部分,也就是和管理相关的,而不是具体如何进行嵌入式系统开发的细节。
系统开发生命周期
按照顺序有下面几个阶段,我们主要要记住的是各个周期的产出。
系统规划:初步调查,分析系统目标,拟实施方案,可行性研究等。产出系统设计计划书。
系统分析:业务流程分析,软件需求分析,网络需求分析,数据流程分析等。产出系统需求规格说明书,软件需求规格说明书,确认测试计划,系统测试计划。
系统设计:软件架构设计,软件概要设计,详细设计等。产出架构设计文档,概要设计说明书,测试计划,各类的设计图。
系统实施:软件编码,各种测试。产出源码,各种测试报告,操作手册。
系统验收:确认测试,试运行。产出的测试报告,项目验收报告。
能力成熟度模型
软件能力成熟模型(CMM,Capability Maturity Model)规定了软件研制和软件测试中的主要软件管理过程和工程过程的实践。
按照能力级从低到高的顺序我们依次说说不同级别的特点。软考选择题一般会问我们什么什么关键过程属于哪一个级别,我们能够分辨即可。
初始级:最低级别的软件能力,几乎没有明确定义的步骤(我们自己动手做的小项目就属于这个水平。。。)
可重复级:建立了基本的项目管理过程和实践,可以重复以前在同类项目中的成功,也就是有项目配置管理,软件质量保证,软件需求管理等。
已定义级:管理和工程两方面的软件过程已经文档化和标准化。可以进行同行评审,组间协调,集成软件管理等。
已管理级:制定了软件过程和产品质量的详细度量标准。拥有软件质量管理和定量过程管理。
优化级:最高级。加强了定量分析,通过来自过程质量反馈和来自新观念,新技术的反馈使得过程能不断持续地改进,拥有过程更改管理,技术改革管理和缺陷预防。
软件开发模型
我们写程序的时候可以借鉴别人的框架,在软件开发的过程中也有可以借鉴的框架,那就是软阿金开发模型。
接下来介绍一下几个常见的模型。
瀑布模型:开发流程如图瀑布一样一步一步往下走直到项目开发完成。适合需求明确或者是二次开发的项目。
原型:先快速构建一个功能模型,给用户演示并且根据用户需求更改模型,最终设计出项目。适合需求不明确的项目,不适合超大项目开发。
增量模型:先开发出核心功能模块,和用户确认过后再增加一部分内容,直到项目完成。
螺旋模型:原型+瀑布,螺旋模型采用一种周期性的方法来进行系统开发,其开发过程呈螺旋形,每一个周期都包括需求定义、风险分析、工程实现和评审四个阶段。这四个阶段不断迭代进行,每次迭代都会使软件开发前进一步。在每个阶段结束时,都会进行评审和确认,必要时返回上一个阶段进行调整和修改。适合需求不明确的项目,也适合大型项目的开发。
V模型:在开发的各个阶段中增加测试项,可以看作是瀑布中穿插着测试项目。
系统测试
软件测试的目的是为了发现软件中存在的错误(不是修改错误)。
测试分为动态测试和静态测试。
动态测试
动态测试就是我们正常地去运行被测试的程序,通过输入输出数据来判断是否和预期一样。动态测试包括确认与接口测试,覆盖率分析,性能分析等。
动态测试中也包含了多种测试方法:
黑盒测试:功能性测试,不需要了解软件的代码,直接使用测试用例去测试。
白盒测试:结构性测试,根据代码路基去设计测试用例去测试。
灰盒测试:黑盒+白盒。
静态测试
静态测试就是我们并不真正地去运行程序。静态测试包括代码检查,静态结构分析,代码质量度量等。
静态测试也包含了多种测试方法:
桌前检查:程序员自己检查自己的程序(我的程序怎么可能出错)
代码审查:找来多个程序员组个小组来检查。
代码走查:让测试人员提供测试用例,让程序员手动运行测试用例检查代码逻辑。