软件工程基础知识
软件工程
软件工程概述
1.软件工程定义
软件工程指的是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,目的是提高软件生产率、提高软件质量、降低软件成本。
2.软件开发生命周期
软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题定义、可行性研究、需求分析等。
软件开发时期:
就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。
软件运行和维护:
就是把软件产品移交给用户使用。
3.软件系统文档
软件系统文档可以分为用户文档和系统文档两类,用户文档主要描述系统功能和使用方法,并不关系这些功能是怎样实现的;系统文档描述系统设计、实现和测试等各方面的内容。
4.软件工程过程
软件工程过程是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动,包括以下4个方面:
1)P(Plan):软件规格说明。规定软件的功能及其运行时的限制。
2)D(Do):软件开发。开发出满足规格说明的软件。
3)C(Check):软件确认。确认开发的软件能够满足用户的需求。
4)A(Action):软件演进。软件在运行过程中不断改进以满足客户新的需求。
5.软件设计
软件设计包括四个既独立又相互联系的活动,即数据设计、软件结构(体系结构)设计、人机界面(接口)设计和过程设计。
6.软件系统工具
软件系统工具按软件过程活动可分为:
软件开发工具:需求分析工具、设计工具、编码与排错工具、测试工具等。
软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。
例:
根据传统的软件生命周期方法学,可以把软件生命周期划分为(软件定义、软件开发、软件运行、软件维护)
软件过程模型
软件过程模型习惯上称为软件开发模型,它是软件开发全部过程、活动和任务的结构框架。典型的软件过程模型有瀑布模型、原型模型、螺旋模型、增量模型、喷泉模型、基于构件的开发模型、形式化方法模型、敏捷模型和统一过程模型等。
瀑布模型

原型模型

螺旋模型

增量模型

喷泉模型

基于构件的开发模型CBSD

形式化方法模型

例:
与瀑布模型相比,(增量式开发模型)降低了实现需求变更的成本,更容易得到客户对于已完成开发工作的反馈意见,并且客户可以更早地使用软件并从中获得价值。
例:
应用系统开发中可以采用不同的开发模型,其中,(螺旋模型)将整个开发流程分为目标设定、风险分析、开发和有效性验证、评审四个部分;
螺旋模型结合了瀑布模型和原型模型并增加了风险分析过程
(构件模型)则通过重用来提高软件的可靠性和易维护性,程序在进行修改时产生较少的副作用。
敏捷模型
敏捷开发宣言:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划。
1.敏捷方法的特点:
1)是“适应性”而非“预设性”
2)是“面向人的”而非“面向过程的”
2.敏捷方法的核心思想
1)敏捷方法是适应性而非可预测性。拥抱变化,适应变化。
2)敏捷方法是以人为本,而非以过程为本。发挥人的特性。
3)迭代增量式的开发过程。以原型开发思想为基础,采用迭代增量式开发,发行版本小型化。
3.主要的敏捷方法
1)极限编程(XP):四大价值观:交流、朴素、反馈和勇气。即任何一个软件项目都可以从4个方面入手进行改善:加强交流;从简单做起、寻求反馈;勇于实时求是。
2)水晶法(Crystal):与XP方法一样,都有以人为中心的理念,但在实践上有所不同。其目的是发展一种提倡“机动性”的方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。认为人对软件质量有重要的影响,随着开发人员素质的提高,项目和过程的质量也随之提高。
3)并列争球法(Scrum):一种迭代的增量化过程,把每段时间(如30天)一次的迭代称为一个“冲刺”(Sprint),并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。
4)特征驱动开发方法(FDD):是一个迭代的开发模型。FDD认为有效的软件开发需要3个要素:人、过程和技术。FDD有5个核心过程:开发整体对象模型,构造特征列表、计划特征开发、特征设计和特征构建。
例:
软件敏捷开发方法的核心思想
敏捷方法遵循迭代增量式的开发过程
敏捷方法以原型开发思想为基础
敏捷方法以人为本而非以过程为本
敏捷方法是适应型和非可预测型的
统一过程模型(RUP)
统一过程模型RUP描述了如何有效地利用商业的、可靠的方法开发和部署软件,是一种重量级过程。RUP类似一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针、模板以及事例支持。
1.RUP的生命周期
RUP软件开发生命周期是一个二维的软件开发模型,RUP中有9个核心工作流,这9个核心工作流如下。
业务建模(Business Modeling):理解待开发系统所在的机构及其商业运作,确保所有参与人员对待开发系统所在的机构有共同的认识,评估待开发系统对所在机构的影响。
需求(Requirements):定义系统功能及用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础。
分析与设计(Analysis&Design):把需求分析的结果转化为分析和设计模型。
实现(Implementation):把设计模型转化为实现结果,对开发的代码做单元测试,将不同实现人员开发的模块集成为可执行系统。
测试(Test):检查各系统之间的交互、集成,验证所有需求是否均被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。
部署(Deployment):打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。
配置与变更管理(Configuration&Change Management):跟踪并维护系统开发过程中产生的所有制品的完整性和一致性。
项目管理(Project Management):为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。
环境(Environment):为软件开发机构提供软件开发环境,即提供过程管理和工具的支持。
统一过程模型RUP把软件开发生命周期分为多个循环,每个循环生成产品一个新的版本,每个循环依次由4个连续的阶段组成,每个阶段完成确定的任务。这4个阶段如下:
1)初始阶段:定义最终产品视图和业务模型,并确定系统范围。
2)细化阶段:设计及确定系统的体系结构,制定工作计划及资源要求。
3)构造阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
4)移交阶段:把产品提交给用户使用。
2.RUP中的核心概念
RUP中定义了如下一些概念,理解这些概念对于理解RUP很有帮助。
角色(Role):Who的问题。角色描述某个人或一个小组的行为与职责。RUP预先定义了很多角色,如体系结构师(Architect)、设计人员(Designer)、实现人员(Implementer)、测试员(Tester)和配置管理人员(Configuration Manager)等,并对每一个角色的工作和职责都做了详尽的说明。
活动(Activity):How的问题。活动是一个有明确目的的独立工作单元。
制品(Artifact):What的问题。制品是活动生成、创建或修改的一段信息。也有些书把Aritifact翻译为产品、工作等,和制品的意思差不多。
工作流(Workflow):When的问题。工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。
3.RUP特点


软件能力成熟度模型
1.能力成熟度模型(CMM)

2.能力成熟度模型集成(CMMI)


逆向工程


例:
软件逆向工程就是分析已有的程序,寻求比源代码更高级别的抽象表现形式。在逆向工程导出信息的四个抽象层次中,
(结构级)包括反映程序各部分之间相互依赖关系的信息;
(功能级)包括反映程序段功能及程序段之间关系的信息。
逆向工程过程能够导出过程的设计模型(实现级)
UML状态图和部署图(领域级)
需求工程


需求管理的主要活动包括:变更控制、版本控制、需求跟踪、需求状态跟踪
需求获取

需求变更


需求变更管理是需求管理的重要内容。需求变更管理的过程主要包括问题分析和变更描述、(变更分析和成本计算)、变更实现。
需求跟踪

(需求跟踪)包括编制每个需求与系统元素之间的联系文档,这些元素包括其它需求、体系结构、设计部件、源代码模块、测试、帮助文件和文档等。
系统分析与设计

结构化开发方法






例:
软件设计过程中,可以用耦合和内聚两个定性标准来衡量模块的独立程度,耦合衡量不同模块彼此间互相依赖的紧密程度,应采用以下设计原则(尽量使用数据耦合、少用控制耦合和特征耦合、限制公共环境耦合的范围、完全不用内容耦合)
耦合度从高到低依次为:内容耦合、公共耦合、通信耦合、控制耦合、标记耦合、数据耦合、非直接耦合。
内聚衡量一个模块内部各个元素彼此结合的紧密程度,(功能内聚)属于高内聚。
内聚度从高到底依次为:功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚
数据流图(DFD)





数据字典(DD)


软件测试

测试方法

例:
软件测试是保障软件质量的重要手段。(静态测试)是指测试程序不在机器上运行,而采用人工监测和计算机辅助分析的手段对程序进行监测。
(黑盒测试)也称为功能测试,不考虑程序的内部结构和处理算法,只检查软件功能是否能按照要求正常使用。
测试阶段



例:
系统测试的依据是(软件需求规格说明书、开发合同)
(回归测试)的目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其它规定的要求的不损害性。
调试

软件度量


例:

软件维护
遗留系统演化策略

系统转换

系统维护


例:

净室软件工程


例:

基于构件的软件工程

构件与构件模型


CBSE过程

构件组装


例:
构件组装是指构件相互直接集成或是用“胶水代码”将其整合在一起来创造一个系统或另一个构件的过程。其中,构件组装常见的方式包括(顺序、层次、叠加)组装;
同时,构件组装中经常会面临接口不兼容的问题,如果一个构件的提供接口是另一个构件请求接口的一个子集,则属于(操作不完备)的情况。
软件项目管理
项目管理概述

软件进度管理



可能会有多条关键路径
例:

软件配置管理

软件质量管理


软件风险管理


本文来自博客园,作者:梦回大唐meng,转载请注明原文链接:https://www.cnblogs.com/BitX/p/18938645

浙公网安备 33010602011771号