软件工程考试复习

发布 2022-01-11 22:54:28 阅读 2597

软件:计算机系统与硬件相互相存的另一部分,是程序,数据及其文档的完整集合。

软件=程序(指令序列)+数据(数据结构)+文档(**资料)

软件的特点:

形态特征、生产特征、维护特征、复杂特征、智能特征、质量特征、环境特征、软件的管理特征、软件的废弃特征、应用特征、软件的成本比较高。

软件危机:软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

主要特征:1、软件开发进度难以**2、软件开发成本难以控制3、产品功能难以满足用户需求。

4、软件产品质量难以保证5、软件产品难以维护6软件缺少适当的文档资料。

具体表现:1、 软件产品的质量低、甚至开发过程中就夭折。

2、 软件生产率低、不能满足用户需求。

产生原因:1用户需求不明确2缺乏正确的理论指导3软件开发规模越来越大软件开发复杂度越来越高。

解决软件危机的方法:

1、消除错误的观点和做法,2、推广使用成功的开发技术和方法,3、使用软件工具和软件工程支持环境,4、加强软件工程管理。

软件工程:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。主要研究如何应用软件开发的资料学理论和工程技术来指导大型软件系统的开发。

软件工程研究的目标是“以较少的投资获取高质量的软件”。

软件工程的三要素:方法(开发方法)、工具(支持方法的工具)、过程(管理过程)。

1、 软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。

2、 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。软件开发环境又称case工具。case将各种软件工具、开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。

3、 软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。

软件工程的基本原则:

1、用分阶段的生命周期计划严格管理 2、坚持进行阶段评审。

3、实行严格的产品控制4、用现代程序设计技术

5、结果应能清楚地审查6、开发小组的人员应该少而精。

7、承认不断改进软件工程实践的必要性。

软件开发工具:

1需求分析工具2设计工具3编码及排错工具4测试工具。

软件生存周期:软件产生到报废的生命周期。由软件定义、软件开发和软件维护三个时期组成。

以时间过程可分为:计划、需求分析、总体设计、详细设计、程序编码、软件测试、运行维护七个阶段。

计划:包括问题定义和可行性研究。主要任务是确定要开发的总目标,给出他的功能。性能、可靠性及其接口等方面的设想。(《可行性报告》《项目开发计划》)

需求分析:主要任务是确定目标系统必须具备那些功能(《需求规格说明书》)

总体设计:把已确定了的各项需求转化为一个相应的体系结构,结构中每个组成部分都是意义明确的模块,每个模块与某些需求相对应。(《概要设计说明书》)

详细设计:设计人员用抽象概括的方式提出系统的体系结构和功能模块。主要任务将实现系统的步奏具体化。(《详细设计说明书》)

程序**:根据目标系统的性质和环境,选择一个高级程序语言,将详细设计的结果翻译成指定语言书写的程序,并仔细测试每个模块的功能。

软件测试:主要任务是通过各类型的测试,使软件符合预定的要求。《测试计划》《测试报告》

运行维护:主要任务是进行系统的日常管理,根据一定规格对系统进行必要的修改,评价系统的运行效率、工作质量和经济效益……(维护记录》)

软件过程:是指软件生存周期中的一系列相关过程。

与软件工程的关系:是软件工程发展到一定阶段时,传统的软件工程难以解决越来越复杂的软件开发问题而提出新的办法,它使软件工程环境进入过程驱动时代。软件过程有效推动了软件开发的高速发展。

软件生存周期各个过程可分成3类:

1主要生存周期过程2支持生存周期过程3组织的生存周期过程。

软件过程模型:所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。

过程模型总分为五大类:

1.惯例过程模型。2.瀑布模型(又叫作生命周期模型)。

3.增量过程模型: 包括增量模型、rad模型。

4.演化过程模型: 包括原型开发模型、螺旋模型、协同开发模型。

5.专用过程模型: 包括基于构件的开发模型、形式化方法模型、面向方面的软件开发模型。

瀑布模型、增量模型、原型模型、螺旋模型的优缺点。

一、瀑布模型。

缺点:1、实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。

2、 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。

3、 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。

4、采用这种线性模型,会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为“堵赛状态”。

优点:1、它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。

2、虽然有不少缺陷但比在软件开发中随意的状态要好得多。

二、原型模型。

缺点:1、没有考虑软件的整体质量和长期的可维护性。

2、大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。

3、由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。

优点:1、如果客户和开发者达成一致协议:原型被建造仅为了定义需求,之后就被抛弃或者部分抛弃, 那么这种模型很合适了。

2、迷惑客户抢占市场,这是一个首选的模型。

三、增量模型。

缺点:1、至始至终开发者和客户纠缠在一起,直到完全版本出来。

优点:1、人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。

2、当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。

3、具有一定的市场。

四、螺旋模型。

缺点:1、需要额外的谈判技巧。

优点:1、客户和开发者达到一种平衡。

软件工程改进:是指在软件开发过程中对当前过程的执行及其结果的改进的一系列活动,涉及至少三个层次:

1、 组织业务目标和方针2软件开发过程3过程活动中使用模板、方法、检查等。

过程改进帮助软件企业对其软件(制作)过程的改变(进)进行计划、(措施)制定以及实施。 他的实施对象就是软件企业的软件过程,也就是软件产品的生产过程,当然也包括软件维护之类的维护过程,而对于其他的过程并不关注。

可行性研究:

目的:可行性研究的目的不在于提出解决问题的方案,而在于研究解决问题的必要性和可能性。

可行性研究主要是从技术、经济和操作三个方面对软件项目的可行性进行分析。

技术可行性:是对技术解决方案的实用性、技术资源的可用性和设备条件做出评估。

经济可行性:要对项目的开发总成本与开发系统将带来的经济效益之间的差值进行度量,从经济的角度去判断是否值得为软件开发项目进行投资。

操作可行性:项目的系统操作方式在用户组织内是否行得通。

需求分析:软件定义的最后一个阶段。是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

任务:1通过对问题及其环境的理解,分析和综合建立分析模型。2在完全弄清用户对软件系统的确切要求的基础上。

用“软件需求规格说明书”把用户的需求表达出来。需求分析的任务就是为了明确要开发的是一个什么样的系统,而不是怎么去实现这个系统。

步骤:需求获取、分析建模、文档编写(软件需求说明书)、需求验证。

结构化设计:面向数据流的设计方法,以结构化分析阶段产生的文档为基础,自顶向下,逐步求精和模块化的过程。从管理角度上讲,软件设计分为概要设计和详细设计两个阶段。

抽象:即抽取事务最基本的特征和行为,忽略非基本的细节。

模块化:将程序划分成独立命名且可独立访问的模块,不同的模块通常具有不同的功能或职责(面向对象中,对象是模块;结构化方法中,模块是过程、函数和子程序)

模块独立性:模块化,抽象,逐步求精和信息隐藏等概念的直接结果,也是完成有效模块设计得基本标准。

模块独立性是指模块内部各部分及模块间的关系的一种衡量标准,由内聚和耦合来度量。(好的话是高内聚低耦合)

内聚:模块内部各个元素彼此结合的紧密程度的度量,模块内部各个元素之间的联系越紧密,则它的内聚性越高,相对地,他与其他模块间的耦合性就会降低,模块独立性就越强。

耦合:模块之间相互连接的紧密程度的度量,之间的连接越紧密,联系越多,耦合性就越高,模块独立性就越弱。

模块类型与模块独立性间关系(耦合性紧密到松散):内容耦合,公共耦合,控制耦合,标记耦合,数据耦合,例程调用耦合,类型使用耦合,包含/引入耦合,外部耦合。

内聚类型与模块独立性间关系(内聚性高到低):功能内聚,层内聚,通信内聚,顺序内聚,过程内聚,时间内聚,实用程序内聚。

体系结构概念:软件被分成许多模块,模块之间相互作用,组合起来就有了整体的属性,就具有了体系结构。一个程序或计算机系统的软件体系结构是指系统的一个或者多个结构。

结构中包括软件的构件、构件的外部可见属性以及它们间的相互关系。外部可见属性则是指软件构件提供的服务、性能、使用特性、错误处理、共享资源使用等。基本单位是软件构件。

这里主要看设计的的目的、任务和方法!!!

总体设计(得到软件的结构,对模块进行说明):把已确定了的各项需求转化为一个相应的体系结构,结构中每个组成部分都是意义明确的模块,每个模块与某些需求相对应。

目的:这个阶段必须回答的关键问题是:“应该如何解决这个问题?”

系统分析员应该使用系统流程图或其他工具描述每种可能的系统,估计每种方案的成本和效益;还应该在充分权衡各种方案利弊的基础上,推荐一个较好的系统,并且制定实现所推荐的系统的详细计划。

要完成上述任务,通常采用结构设计的一条基本原理就是程序应该模块化,因此,总体设计还应设计软件的结构,通常用软件结构图表示。

软件工程考试复习

征,指不同的对象收到同一个信息产生不同的结果。4 面向对象须识别的5个层次。1类与对象,类是具有某些特性的一类事物的总成,对象是某个具体的事物。2属性层,指类或对象的属性。3 类图的结构,类与类的关系 结构层。4方法层,解决问题的办法。5主题层。5 软件测试的4个阶段。单元测试 单元测试是在软件开发...

高级软件工程 考试复习

1.软件过程模型和主要模型的异同。软件过程模型是从一特定的角度对软件过程的本质描述,包括构成软件过程的各种活动 软件产品以及所有涉众。工作流模型 数据流或活动模型 角色 动作模型。瀑布模型 软件生命周期模型和线性顺序模型 问题定义 需求分析 概要设计 详细设计 编码 测试 维护。特点 阶段间具有顺序...

软件工程复习

单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...