软件工程概念思维导图.docx
- 格式:docx
- 大小:28.10 KB
- 文档页数:1
《系统集成项目管理工程师教材》第 3 版第五章《软件工程》的详细知识点一:软件工程定义1:概念:软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,目的是提高软件生产率、提高软件质量、降低软件成本:2:组成部分:由方法、工具和过程 3 个部分组成。
其中,方法是完成软件项目的技术手段,支持整个软件生命周期;工具是人们在开发软件活动中智力和体力的扩展与延伸,自动或半自动地支持软件的开发和管理以及各种软件文档的生成;过程贯穿于软件开发的各个环节,是指在软件工具的支持下,软件工程师完成的一系列软件工程活动,管理人员需对软件开发的质量、进度、成本进行评估、管理和控制。
·二:软件需求1:需求的层次①业务需求:反映组织机构或用户对系统、产品高层次的目标要求,从总体上描述为什么要达到某种效应,组织希望达到什么目标,通常来自项目投资人、客户、管理人员等,可确定项目视图和范围。
②用户需求:描述用户的具体目标,或用户要求系统必须能完成的任务和想要达到的结果,构成用户原始需求文档的内容,体现系统给用户带来的业务价值。
③系统需求:从系统的角度说明软件的需求,包括功能需求、非功能需求和约束等。
④功能需求:规定了开发人员必须在系统中实现的软件功能;⑤非功能需求:描述了系统展现给用户的行为和执行的操作等,可细分为软件质量属性和其他非功能需求;约束是对开发人员在软件产品设计和构造上的限制。
2:质量功能部署(QFD)是一种将用户要求转化成软件需求的技术,目的是提升用户满意度。
将软件需求分为常规需求、期望需求和意外需求。
①常规需求是用户认为系统应做到的功能或性能,实现越多用户越满意;②期望需求是用户想当然认为系统应具备的功能或性能,但不能正确描述,若未实现会让用户不满意;③意外需求是用户要求范围外的功能或性能,实现会让用户更高兴,不实现也不影响购买决策。
3:需求获取是开发者与用户之间为了定义新系统而进行的交流,是获得系统必要的特征或用户能接受的、系统必须满足的约束。
软件工程管理Software Engineering Management Software Engineering软件工程的基本概念2011.101软件工程的基本概念本章目标在于了解软件的概念,包括理解软件定义、应用分类、硬件与软件、制造与开发、磨损与失效、软件退化、失效曲线、遗留系统、软件神话、软件特殊性、软件演化等2主要内容•意外效应法则•软件的双重作用•什么是软件•软件的分类•软件的应用•硬件与软件•制造与开发•磨损与失效•程序与产品•软件的特殊性•遗留软件•E类型系统•软件演化•软件本身特点的需要•软件生产的现状•新型应用对软件的要求3意外效应法则(law of unintended consequences•意外效应法则–某些新科技的发明创造会给其他一些看似无关的技术领域,商业企业、公众甚至整个社会文化带来深远而出人意料的影响和作用•计算机软件已经成为世界舞台上最为重要的科技领域,并且是意外效应法则的一个最好的体现–软件促进了新科技的创新(例如基因工程–现代科技的发展(例如远程通信–传统技术向现代科技的过渡4意外效应法则•汽车–装备GPS,交通拥塞检测等软件设备–每辆汽车的代码量已经超出战斗机装备的代码量–GM生产的新型电动汽车仅用29个月就完成了设计开发工作,节约企业创新成本–宝马公司使用模拟实验改进汽车的防幢性能•进行了91次模拟和两次实际幢车试验•结果是使设计性能提高了30%•每次模拟幢车只用2.5天,而不是3.8个月(仅仅是简单测试•91次模拟幢车的成本比2次实际幢车试验的成本要低的多•医疗–心藏搭桥手术使死亡率减少6倍以上•金融–专家预测,到2020年,手机银行将成为最广泛使用的银行渠道5意外效应法则•西米克斯(SYMYX,一个医疗器公司创立并实行了高度集成、完善的工作流程,从而让科学家利用开阔的思维去发现和优化新材料,其速度比传统研究方法要快几百倍甚至几千倍。
这些工作流程包括机器人技术,它能在最小程度上合成一系列材料,在一个硅片上进行成千上万次微型试验,然后根据需要的物理功能和特性(包括化学、热学、光学、电子或者机械属性,对这些材料同时进行快速筛选,最后经结果记录到数据库系统中,从而累计大量的数据来帮助科学家对接下来的探索过程做出决策•西米克斯公司自诩其设备能让医药公司仅用1%的传统研究成本就可以使其测试速度提高100倍。
软件工程计算机软件系统软件应用软件工程/科学软件嵌入式软件产品线软件Web应用软件人工智能软件开放计算网络资源开源软件软件生命周期可行性分析与项目开发计划需求分析概要设计详细设计编码测试维护软件开发模型瀑布模型V模型是瀑布模型的变体增量模型原型模型探索型实验型演化型螺旋模型制定计划风险分析实施工程用户评估演化模型喷泉模型基于构件的开发模型形式化方法模型软件开发方法结构化方法结构化分析、结构化设计、结构化程序面向数据流自顶向下、逐层分解Jackson方法面向数据结构原型方法面向对象方法以对象作为最基本的元素敏捷方法尽可能早地、持续地对有价值的软件的交付极限编程(XP)水晶法(Crystal)并列争求法(Scrum)自适应软件开发(ASD)软件项目管理范围(4个P)人员person项目管理人员高级管理人员开发人员客户最终用户产品product过程procedure项目project进度管理基本原则划分相互依赖性时间分配工作了确认确定责任明确输出结果确定里程碑进度安排Gantt图PERT图软件质量管理软件质量特性功能性可靠性以使用性效率可维护性可移植性软件质量保证软件评审软件容错技术风险管理软件风险不确定性损失风险识别风险预测风险评估风险控制软件工程.mmap - 2015/4/22 - Mindjet。
我们通常都是对图形化的东西情有独钟,我们小时候的启蒙教育基本上也都是从图形化开始的,我们曾经看过的连环画、漫画、看图识字等等。
因为图形能将一个抽象的东西具体化、形象化,图形化的表述能将一个用文字语言无法表达清楚或很难表达的观点、事物、科学概念等清晰的呈现出来。
这就是为什么我们相比晦涩难懂文字更喜欢形象生动的图形的原因。
软件工程导论作为软件工程中非常重要的一门课程,通常因为其偏文科性、理论性、概念性而得不到人们的重视,但幸运的是在软件工程导论中有我们非常易于接受、理解的东西——图,否则我们自己会把自己害得很惨(软件工程导论真的很重要哦!)。
软件工程导论中一般把软件的开发分为八个阶段:1.问题定义2.可行性研究3.需求分析4.总体设计(概要设计)5.详细设计6.编码和单元测试7.综合测试8.软件维护。
下面我们就说说各个阶段中与图的难解难分。
1. 问题定义问题定义阶段主要是根据用户的需求来定义用户需要解决的问题,用户要实现哪些功能。
2. 可行性研究可行性研究阶段就是看是否有一种使其在最小的代价,尽可能短的时间内,利益最大化的情况下解决问题的方案。
这个阶段的分析主要涉及以下几个图形工具。
2.1 系统流程图系统流程图是描述系统物理模型的一种传统工具。
它是表达数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,它是物理数据流图而不是程序流程图。
系统流程图形象的呈现了软件的功能,即使不懂软件的人也可以轻松的看懂,可以说它是软件设计师与用户之间沟通、交流的有效工具。
2.2 数据流图数据流图是从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
如果说系统流程图能让用户更好的明白系统的功能,那么数据流图则让用户更加明白系统的工作原理。
2.3 数据字典数据字典就是数据的信息的集合,也可以说就是对上面提到的数据流图中的所有元素的定义的集合。
第一讲软件工程概述软件的定义软件是计算机系统中与硬件相互依存的另一局部,它是包括顺序,数据及其相关文档的完整集合。
顺序是按事前设计的功用和功用要求执行的指令序列数据是使顺序能正常操纵信息的数据结构文档是与顺序开发,维护和运用有关的图文资料软件危机软件危机是指计算机软件开发和维护进程中所遇到的一系列严重效果。
概括的说即为:能否满足对软件日益增长的需求?能否维护数量日益增长的现有软件?软件工程的定义B o e h m:运用现代迷信技术知识来设计并结构计算机顺序及为开发、运转和维护这些顺序所必需的相关文件资料I E E E:软件工程是开发、运转、维护和修复软件的系统方法F r i t z B a u e r:树立并运用完善的工程化原那么,以较经济的手腕取得能在实践机器上有效运转的牢靠软件的一系列方法软件工程要素三要素:方法、工具和进程(缺乏一个进程,洗厕所的都有方法和工具,但没有一个好的进程〕软件工程方法为软件开发提供了〝如何做〞的技术软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件生命周期〔Life Cycle〕软件有一个孕育、降生、生长、成熟、兴起的生活进程。
这个进程即为计算机软件的生命周期软件生活期的六个步骤,即制定方案、需求剖析、设计、完成、测试及运转维护软件生命周期:制定方案确定要开发软件系统的总目的给出功用、功用、牢靠性以及接口等方面的要求完成该软件义务的可行性研讨估量可应用的资源(硬件,软件,人力等)、本钱、效益、开发进度制定出完成开发义务的实施方案,连同可行性研讨报告,提交管理部门审查软件生命周期:需求剖析对用户提出的要求停止剖析并给出详细的定义,失掉系统逻辑模型,可用数据流程图、数据字典和简明算法加以表示。
编写软件需求说明书或系统功用说明书及初步的系统用户手册提交管理机构评审软件生命周期:软件设计概要设计—把各项需求转换成软件的体系结构。
结构中每一组成局部都是意义明白的模块,每个模块都和某些需求相对应。
软件工程学概述软件的概念和特点软件的定义程序能够完成预定功能和性能的可执行的指令序列数据使程序能够适当地处理信息的数据结构文档开发、使用和维护程序所需要的图文资料软件的发展个体化作坊式工程化产业化软件危机的产生定义在计算机软件的开发和维护过程中所遇到的一系列严重问题原因客观:软件本身特点逻辑部件规模庞大主观:不正确的开发方法忽视需求分析错误认为:软件开发=程序编写轻视软件维护软件工程定义I EEE计算协会(1)应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。
(2)对(1)中各种方法的研究目标给定时间和预算内,按照用户的需求,开发易修改、高效、可靠、可维护、适应力强、可移动、可重用的软件。
三要素工具方法过程软件过程软件过程概念软件过程在工作产品构建过程中,所需完成的工作活动、动作和任务的集合软件生命周期软件产品或软件系统从设计、投入到使用到被淘汰的全过程选择过程模型消除途径传统软件过程模型瀑布模型(经典生命周期模型)特点线性模型质量保证的观点(以文档为驱动)推迟实现缺点增加工作量开发风险大早期错误发现晚不适应需求变化适用于系统需求明确且稳定、技术成熟、工程管理较严格的场合,如军工、航天、医疗V模型原型模型特点优点减少需求不明确带来的风险缺点构造原型采用的技术或者工具不一定主流快速建立+连续修改可能导致质量下降设计者在质量和原型中进行折中客户意识不到一些质量问题适合客户定义一个总体目标集,但是不清楚系统的具体输入输出;或者开发者不确定算法的效率、软件与操作系统是否兼容以及客户与计算机交互的方式增量模型特点增量可能无法集成增量方式+迭代方式每个增量可用瀑布或快速原型模型优点不需要提供完整的需求,软件可以更早投入市场开放体系结构,便于维护在项目初始阶段不需要投入太多的人力资源产品逐步交付,软件开发能够较好地适应需求的变化缺点开发者很难根据客户的需求给出大小合适的增量软件必须具备开放式体系结构(困难)易退化成边做边改的方式,使软件过程控制失去整体性适用于让软件开发中需求可能发生变化、具有较大风险、或者希望尽早进入市场的项目。
计算机软件
软件生命周期
软件开发模型
软件工程
软件开发方法
软件项目管理
风险管理
系统软件
应用软件
工程 / 科学软件
嵌入式软件
产品线软件
Web 应用软件
人工智能软件
开放计算
网络资源
开源软件
可行性分析与项目开发计划
需求分析
概要设计
详细设计
编码
测试
维护
V模型是瀑布模型的变体
瀑布模型
探索型
原型模型实验型
演化型
增量模型制定计划
风险分析
螺旋模型
实施工程
用户评估演化模型
喷泉模型
基于构件的开发模型
形式化方法模型
结构化分析、结构化设计、结构化程序
面向数据流
结构化方法
自顶向下、逐层分解
面向数据结构
Jackson 方法
原型方法
以对象作为最基本的元素面向对象方法
尽可能早地、持续地对有价值的软件的交付
极限编程(XP )
水晶法(Crystal )
敏捷方法
并列争求法( Scrum )
自适应软件开发(ASD )
项目管理人员
高级管理人员
人员 person开发人员
客户范围 (4个 P)最终用户
产品 product
过程
procedure
项目
project
划分
相互依赖性
时间分配
基本原则工作了确认
确定责任进度管理
明确输出结果
确定里程碑
Gantt
图
进度安排
PERT图
功能性
可靠性
以使用性
软件质量特性
效率
可维护性软件质量管理
可移植性
软件质量保证
软件评审
软件容错技术
不确定性
软件风险损失
风险识别
风险预测
风险评估
风险控制
软件工程 .mmap - 2015/4/22 - Mindjet。