软件评测师-软件工程基础知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件评测师-软件⼯程基础知识
⼀、信息系统⽣命周期
1.软件⼯程基本原理:⽤分阶段的⽣命周期计划严格管理、坚持进⾏阶段评审、实现严格的产品控制,采⽤现代程序设计技术、结果应能清楚的审查、开发⼩组的⼈员应少⽽精、承认不断改进软件⼯程实践的必要性
2.软件⼯程的基本要素:⽅法、⼯具、过程
3.软件⽣产周期:可⾏性分析与项⽬开发计划、需求分析、概要设计(系统解决⽅案,规划⼦系统)、详细设计(设计⼦系统内部具体实现),编码、测试、维护
4.信息系统⽣命周期
系统规划阶段:初步调查,对建设新系统的需求做出分析和预测,输出可⾏性研究报告、系统设计任务书
系统分析阶段:对现⾏系统进⾏详细调查,提出新系统的逻辑模型,也称为逻辑设计阶段,整个系统建设的关键阶段,也是信息系统建设与⼀般⼯程项⽬的重要区别所在,输出:系统说明书
系统设计阶段:要回答的问题是怎么做,具体设计实现逻辑模型的技术⽅案,设计新系统的物理模型,称为物理设计阶段,分为总体设计(概要设计)和详细设计,输出:系统设计说明书(概要设计、详细设计说明书)
系统实施阶段:将设计的系统付诸实施的阶段,输出:实施进展报告、系统测试分析报告
系统运⾏和维护阶段:记录系统运⾏的情况,评估系统的⼯作质量和经济效益
⼆、能⼒成熟度模型
1.能⼒成熟模型
2.呢李成熟模型集成CMMI:是若⼲过程模型的综合改进,⽀持多个⼯程学科和领域的,它关注组织的成熟度
3.2-5级对应的过程域
三、软件过程模型
1.瀑布模型(SDLC):可⾏性分析、需求分析、软件设计、编码、测试、运⾏维护
2.瀑布模型特点:从上⼀项开发活动接受该项活动的⼯作对象作为输⼊;实施该项活动应完成的⼯作内容;⼯作成果作为输出;对该项活动的实施⼯作成果进⾏评审
3.螺旋模型是⼀个演化软件过程模型,将原型实现的迭代特征与线性顺序模型中控制的和系统化的⽅⾯结合,软件开发是⼀系列的增量发布
开发过程具有周期性重复的螺旋线状,每个周期分四阶段:制定计划、风险分析、实施⼯程和客户评估,强调了风险分析,特别适⽤于庞⼤⽽复杂得、⾼风险的系统
4.V模型:
单元测试:针对编码过程中可能村咋的各种错误
集成测试:针对详细设计中可能存在的问题
系统测试:主要针对概要设计,检查系统作为⼀个整体是否有效的运⾏
验收测试:由业务专家或⽤户进⾏,确认产品能真正符合⽤户业务的需求
v模型⽤于需求明确和需求变更不频繁的情形
5.原型化模型:第⼀步就是创建⼀个快速原型,能满⾜项⽬⼲系与未来的⽤户可以与原型进⾏交互,再通过与相关⼲系⼈进⾏充分的讨论和分析,最终弄清楚当前系统的需求
特点:
实际可⾏
具有最终系统的基本特征
构造⽅便、快速、造价低,对⽤户的需求是动态响应,逐步纳⼊
6.增量模型:⾸先开发核⼼模块功能,与⽤户确认后,再次开发次核⼼模块功能,每次开发⼀部分功能,并与⽤户需求确认,最终完成项⽬开发,优先级最⾼的服务最先交付
缺点:不利于模块划分,如何将客户需求划分为多个增量
优点:增量模型的每⼀次增量版本都可以作为独⽴可操作的作品,原型的构造⼀般是为了演⽰
7.喷泉模型:以⽤户需求为动⼒,以对象作为驱动的模型,适合于⾯向对象的开发⽅法,使开发具有迭代性和⽆间隙性
基于构件的开发模型CBSD:利⽤预先包装的构件来构造应⽤系统,增强了复⽤性
8.形式化⽅法模型,建⽴在严格数学基础上的⼀种软件开发⽅法,主要活动是⽣成计算机软件形式化的数学规格说明
四、信息系统开发⽅法
1.结构化⽅法(⽣命周期法):⼀种传统的信息开发⽅法,由结构分析、结构化设计、结构化程序设计三部分组成
特点:
开发⽬标清晰化,⽤户第⼀原则
开发⼯作阶段化:根据阶段⼯作⽬标和要求进⾏审查
开发⽂档规范化:按照要求完成相应的⽂档
设计⽅法结构化:系统分析与设计,⾃顶向下地分解;系统实现时,⾃底向上逐步实现整个系统
缺点:
开发周期长:按顺序经历各个阶段,直⾄实施阶段结束后,⽤户才能使⽤系统
难以适应需求变化:不适⽤⽉需求不明确或经常变更的项⽬
很少考虑数据结构化:结构化⽅法是⼀种⾯向过程,⾯向数据流开发⽅法
使⽤⼯具:数据流图、数据字典、结构化语⾔、判断表以及判定树
2.⾯向对象:任何事物都是对象,每⼀个对象都有⾃⼰的运动规律和内部状态,属于某个对象类
特点:使⽤00⽅法构造的系统具有更好的复⽤性,⽤例模型和分析模型
优点:普遍适⽤于各类信息系统的开发
缺点:必须依靠⼀定的⾯向对象技术⽀持,在⼤型项⽬的开发上具有⼀定的局限性,不能涉⾜系统分析以前的开发环节
3.原型化⽅法:快速建⽴⼀个系统模型展⽰给⽤户
按是否实现功能分类:分为⽔平原型、垂直原型
按最终结果分类:抛弃式原型、演化式原型
特点:使系统开发的周期缩短,成本和风险降低,速度加快,获得较⾼的综合开发效益
不⾜:开发环境要求⾼,管理⽔平要求⾼
优点:能更有效地确认客户需求,使⽤需求不明确的系统开发,分析层⾯难度⼤、技术层⾯难度不⼤的系统
4.敏捷开发:以⼈为核⼼、迭代、循序渐进的开发⽅法,强调程序员团队与业务专家之间的紧密协作、⾯对⾯的沟通(认为⽐书⾯的⽂档有效)、频繁交付新的软件版本,能很好的适应需求变化的代码编写额团队组织⽅法,更注重软件开发中⼈的作⽤
结对编程:⼀个程序员开发、另⼀个程序员在⼀旁观察审查代码
⾃适应开发:侧重为软件的重要性提供最根本的基础
⽔晶⽅法:每⼀个不同的项⽬需要⼀套不同的策略、约定和⽅法论
特性驱动开发:针对中⼩型软件开发项⽬的开发模式,是⼀个模型驱动的快速迭代开发过程,他强调的是简化、实⽤、易于被开发团队接受,适⽤于需求经常变动的项⽬
极限编程XP:核⼼是沟通、简明、反馈和勇⽓,XP⽆需开发⼈员在软件开始初期做出很多⽂档,提倡测试先⾏
并列争球法SCRUM:是⼀种迭代的增量化过程,把每段时间⼀次的迭代称为⼀个冲刺
统⼀过程:
分派任务和责任的纪律化⽅法,在可预见的⽇程和预算前提下,确保满⾜最终⽤户需求的⾼质量产品
3个显著特点:⽤例驱动、以架构为中⼼、迭代和增量
4个流程:初始阶段、细化阶段、构建阶段和交付阶段
适⽤:⼀个通⽤过程框架
五、系统分析设计概述
1.软件需求:⽤户对系统在功能、⾏为、性能、设计约束等⽅⾯的期望,是指⽤户解决问题或达到⽬标所需的条件或能⼒,是系统或系统部件需要满⾜合同、标准、规范或其他正式规定⽂档所需具有的条件或能⼒,以及反映这些条件或能⼒的⽂档说明
2.需求开发和需求管理
3.系统设计主要⽬的:为系统制定蓝图,在各种技术和实施⽅法汇总权衡利弊,合理使⽤各种资源,最终勾画出新系统的详细设计⽅法
设计⽅法:结构化设计⽅法、⾯向对象设计⽅法
设计主要内容:概要设计、详细设计
概要设计基本任务:系统总体结构设计,形成软件的模块结构图,即系统结构图
详细设计基本任务:模块内详细算法设计,模块内数据结构设计、数据库的物理设计、其他设计(代码、输⼊\输出格式、⽤户界⾯)
4.系统设计基本原理
抽象化
⾃顶⽽下,逐步求精
信息隐蔽
模块独⽴(⾼内聚,低耦合)
5.系统设计原则
保持模块的⼤⼩适中
尽可能减少调⽤的深度
多扇⼊、少扇出
单⼊⼝,单出⼝
模块的作⽤域应该在模块之内
功能应该是可预测的
6.耦合性与内聚性
7.耦合程度⾼低
六、结构化开发⽅法
1.结构化⽅法的分析结果:⼀套分层的数据流图、⼀本数据词典、⼀组⼩说明、补充材料
2.数据流图DFD
基本图形元素:
1)数据流:数据流的流向必须经过加⼯
2)加⼯:描述了输⼊数据流到输出数据流之间的变换,常见错误三种
⿊洞:有输⼊没有输出
奇迹:有输出但没有输⼊
灰洞:输⼊不⾜以产⽣输出
3)数据存储:⽤来存储数据
4)外部实体:存在于软件系统之外的⼈员或组织,它指系统所需数据的发源地和系统所产⽣的数据归宿地
3.数据字典DD:数据字典就是为了数据流图中的每个数据流、⽂件、加⼯、以及组成数据流或⽂件的数据项做出说明
有⼀下4类条⽬:数据流、数据项、数据存储和基本加⼯
常⽤的加⼯逻辑⽅法:结构化语⾔、判定表和判定树
七、系统运⾏与维护
1.遗留系统:基本上不能进⾏修改和演化以满⾜新的变化了的业务需求的信息系统
不能满⾜需求、技术已经过时、维护⼯作⼗分困难、很难理解
2.系统转换:新系统开发完毕,投⼊运⾏,取代现有系统的过程
直接转换:现有系统被新系统直接取代,风险⼤,优点是节约成本
并⾏转换:新系统和⽼系统并⾏⼯作⼀段时间,风险⼩,使⽤⼤型系统,缺点是耗费⼈⼒和时间资源,难以控制两个系统间的数据转换
分段转换:分期分批逐步转换,将⼤型系统分为两个⼦系统,⼀次运⾏每个⼦系统,耗时,现有系统和新系统间混合使⽤,需要协调号接⼝等问题
数据转换与迁移:系统切换前通过⼯具迁移,系统切换前采⽤⼿⼯录⼊,系统切换后通过新系统⽣成
3.可维护性:维护⼈员理解、改正、改动和改进这个软件的难以程度
易分析性:诊断软件中的缺陷或失效原因或识别修改部分的能⼒
易改变性:使指定的修改可以被实现的能⼒,包括编码,设计和⽂档的更改
稳定性:避免由于软件修改⽽造成意外结果的能⼒
易测试性:已修改软件能被确认的能⼒
维护性的依从:遵循与维护性相关的标准或约定的能⼒
4.软件维护类型
正确性维护:发现了Bug⽽进⾏修改
适应性维护:由于外部环境发⽣了改变,被动进⾏的对软件的修改和升级
完善性维护:增加更多的功能,使其⽐之前的软件功能、性能更⾼、更加完善
预防性维护:对未来可能发⽣的bug进⾏预防性的维护。