您的位置:首页 > 文旅 > 美景 > 【软件设计师】软件工程基础知识

【软件设计师】软件工程基础知识

2024/10/6 14:37:57 来源:https://blog.csdn.net/m0_62410106/article/details/137294006  浏览:    关键词:【软件设计师】软件工程基础知识

1.软件工程概述

1.1 模型

1.1.1 增量模型

        增量模型又称之为渐增模型,也称之为有计划的产品改进模型;可以在增量开发的过程中逐步理解需求。

        它从一组给定的需求开始,通过构造一系列可执行中间版本来实施开发活动,在上一版本基础上纳入一部分需求以完成下一版本,依次类推,直至系统完成(核心产品即优先级高的产品往往首先开发,因此经历最充分的“测试”,第一个可交付版本所需的成本低,时间少,不必等到整个系统开发完成就可以使用),需注意,不是每个增量都必须要进行风险评估

        增量模型是瀑布模型和原型进化模型的综合,对软件设计具有更高的技术要求,特别是对软件体系结构,要求它具有更好的开放性和稳定性,能够顺利地实施构件 的集成(容易理解,管理成本低)

        增量模型是把软件产品作为一系列增量构建来设计,编码,集成和测试,每个构建由多个相互作用的模块组成,并且能够完成特定的功能

        该模型的难点:如何进行模块的划分

        扩展:基于构件的软件开发,强调使用可复用的软件“构件”设计和构建软件系统,对所需的构件进行合格性检验,适应性修改,并把它集成到新系统中。

1.1.2 瀑布模型

        瀑布模型将开发过程描述为从一个阶段瀑布般转换到另一个阶段的过程,将软件生命周期各个活动定为线性顺序连接的若干阶段的模型,规定了由前至后的固定次序

        瀑布模型可以有效地捕获系统需求

1.1.3 原型模型

        开发人员快速地构造整个系统或者系统的一部分以理解或澄清问题。

        原型模型是快速构建软件的原型,从初始的原型逐步演化为最终软件产品,特别适用于对软件需求缺乏准确认识的情况。

 1.1.4 喷泉模型

        开发过程中以用户需求为动力,以对象为驱动,适合于面向对象的开发方法。

        克服了瀑布模型不支持软件重用和多项开发活动集成的局限性

1.1.5 螺旋模型

        是风险驱动的,将开发活动和风险管理结合起来,以减小风险。

        是一种演化软件开发过程模型,它兼顾快速原型的迭代特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件再无法排除重大风险时有机会停止,以减小损失。

        同时,再每个迭代阶段构建原型是螺旋模型用以减少风险的途径,螺旋模型更适合大型的昂贵的系统级别=的软件应用

1.1.6 演化模型

        在获取一组基本的需求后,通过快速分析构造出该软件的一个初始可运行版本,然后逐步演化成为最终软件产品

1.1.7 模型适用:

        瀑布模型不能适应变化的需求,原型,增量,喷泉均能适应变化的需求   

        原型模型不适合大规模软件的开发,瀑布,螺旋,喷泉均可以

        增量模型不适合大规模团队开发的项目,是适用于商业产品的创新模型试题

        需求清晰,交付时间有严格限制的,最适合瀑布模型

        技术含量高,与客户相关的风险也很多,最使用螺旋过程模型 

        需求不清晰(经常发生变化)且规模不太大(且不太复杂)时采用原型化方法最适合

        数据处理领域的不太复杂的软件(规模不大),适合结构化方法进行开发

        例题:全面采用新技术开发一个系统,以替换原有的系统,适合选用瀑布模型,开发的系统功能与多个部门业务相关,希望系统尽快投入使用并不断改善,这应该使用 迭代(演化)模型(其实也适合原型模型,但是原型模型更适用于需求不明确时以获取需求

        

1.2 体系结构

1.2.1 三层c/s体系结构

        三层c/s体系结构由逻辑上相互分离的表示层,业务层和数据层

        表示层向客户提供数据,业务层实施业务相数据规则,数据层定义数据访问标准。

        优点:逻辑上相对独立,不同层可以用不同的平台,软件和开发语言,而系统的安装,修改和维护在各层都可能进行。

1.3 软件工程的基本要素

        包括方法,工具和过程

        过程是将技术结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发,过程定义了一组关键过程区域,构成了软件项目管理控制的基础

        方法提供了构造软件在技术上需要“如何做”,它覆盖了一系列的任务,方法也依赖于一些基本原则,这些原则控制了每一个技术区域,而且包含建模活动和其他描述技术

        工具对过程和方法提供了自动或半自动的支持,如计算机辅助软件工程(CASE)。

1.4 软件设计的任务

        任务:基于需求分析的结果建立各种设计模型,给出问题的解决方案。

        从工程管理的角度,可以将软件设计分为概要设计阶段和详细设计阶段

        概要设计将需求转化为软件的模块划分,确定模块与模块之间的调用关系;详细设计将模块进行细化,得到详细的数据结构化和算法

        概要设计文档包含 系统架构,模块划分 ,系统接口,数据设计  这4个主要方面的内容(包括 体系结构设计,数据库设计,逻辑数据结构设计),特别注意,不包括模块内部的算法

        结构化设计方法中,概要设计阶段进行软件体系结构的设计,数据设计和结构设计;详细设计阶段进行数据结构和算法的设计

        面向对象设计方法中,概要设计阶段进行体系结构设计,初步类设计/数据设计,结构设计;详细设计阶段进行构件设计

        结构化设计和面向对象设计是两种不同的设计方法,结构化设计根据系统的数据流图进行设计,模块体现函数,过程和子程序;面向对象设计基于面向对象的基本概念进行,模块体现为类,对象和构件等

1.5 软件需求

        软件需求是软件系统必须完成的事以及必须具备的品质

        软件需求包括功能需求,非功能需求和设计约束三个方面

        功能需求是所开发的软件必须具备什么样的性能

        非功能需求是指产品必须具备的属性或品质,如可靠性,性能,响应时间和扩展性等到

        设计约束通常对解决方案的一些约束说明        

1.6 软件度量

        软件复杂性度量是软件度量的一个重要分支。

        软件复杂性度量的参数有很多,比如:

        1,规模,即指令数或源程序行数

        2,难度,通常由程序中出现的操作数所决定的量来表示

        3,结构,通常用与程序有关的度量来表示

        4,智能度,即算法的难易程度

1.7 其他知识

        软件的三种基本控制结构:顺序,选择,重复

        I/O软件隐藏I/O操作实现的细节,方便用户使用I/O设备;I/O软件向用户提供的是逻辑接口;I/O软件将硬件与较高层次的软件隔离开来,而最高层软件向应用提供一个友好的,清晰且统一的接口,方便用户使用

        可维护性:在系统分析阶段的复审过程中,应该指出软件的可移植性问题以及可能影响软件维护的系统界面;在系统设计阶段的复审期间,应该从容易修改,模块化和功能独立的目的出发,评价软件的结构和过程;在系统实施阶段的复审期间,代码复审应该强调编码风格和内部说明文档这两个影响可维护的因素。可测试性是可维护性的一个评价指标。

2. 软件工具与开发环境

        逆向工程从源代码得到软件系统的规格说明和设计信息,属于软件维护阶段行为,因此逆向工程工具属于软件维护工具

3.软件开发项目管理

        项目风险:

4 软件质量管理

5.软件过程管理

5.1 原型法

        原型方法(系统原型)适用于用户需求不清,需求经常变化的情况,可以帮助导出系统需求并验证需求的有效性。 原型法能够迅速地开发出一个让用户看得见的系统框架,可以用来支持用户界面设计,原型法不能用来指导代码优化。

        探索性原型的目的是弄清目标的要求,确定所希望的特性,并探讨多种方案的可行性,可以用来探索特殊的软件解决方案

5.2 极限编程

        极限编程是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式

        4大价值观:沟通、简单性、反馈、勇气

        5个原则:快速反馈,简单性假设,逐步修改,体长更改和优质工作

        12个最佳实践:计划游戏(快速指定计划,随着细节的不断变化而完善),小型发布(系统的设计要能够尽可能早地交付),隐喻(找到合适的比喻传达信息),简单设计(只处理当前的需求,使设计保持简单),测试先行(先写测试代码,然后再编写程序),重构(重新审视需求和设计,重新明确地描述他们以复合新的和现有的需求),结对编程(有一个非正式的代码审查过程,可以获得更高的代码质量,但是编码速度与传统的单人编程相当),集体代码所有制(任何开发人员可以对系统的任何部分进行改变),持续集成(可以按日甚至按小时为客户提供可运行的版本),每周工作40小时,现场客户和编码标准,系统最终用户代表应该全程配合Xp团队

5.3  CMM   

        CMM是软件过程能力成熟度模型,该模型按照软件过程的不同程度分为5个等级,1级被认为成熟度最低,5级被认为成熟度最高,一般来说,采用成熟度最高的软件过程模型,往往可以得到更高质量的软件产品

        1997年美国将已有的几个CMM模型结合在一起,构成"集成模型"(CMMi)

5.4 能力成熟度(CMMI)

        CMMI是若干个过程模型的综合和改进,提供了连续式模型和阶段式模型两种方法        

        连续式模型包括6个过程域能力等级

        CL0(未完成的):过程域未执行或未得到CL1种定义的所有目标        

        CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换为可标识的输出工作产品,以是西安支持过程域的特定目标

        CL2(已管理的):其共性目标是集中于已管理的过程的制度化。根据组织级政策规定过程的运作将使用哪个过程,项目遵循已文档化的设计和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控,控制,和评审

        CL3(已定义级的):其共性目标集中于已定义的过程的制度化。过程是按照组织的裁剪指南从组织的标准过程种裁剪得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进。

        CL4(定量管理):其共性目标集中于可定了管理的过程的制度化。使用测试和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的质量目标作为管理准则。

        CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户的该表和持续改进计划种的过程域的功效。

  5.5 敏捷过程

        在敏捷开发过程中,并列争球法使用了迭代的方法,其中,把每段时间(30天)一次迭代称为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行的递增实现产品。

        极限编程XP是激发开发人员创造性,使得管理负担最小的一组技术;

        水晶法Crystal认为每一个不同的项目都需要一套不同的策略、约定和方法论;      

        自适应软件开发(ASD)有6个基本的原则:

        1.在自适应软件开发中,有一个使命作为指导,它设立了项目的目标,但不妙时如何达到这个目标

        2.特征被视为客户键值的关键,因此,项目是围绕着构造的构建来组织并实现特征

        3.过程中的迭代是重要的,因此重做与做同样的重要,变化也包含其中

        4.变化不视为是一种更正,而是软件开发实际情况的调整,

        5.确定的交付时间迫使开发人员认真考虑每一个生产版本的关键需求

        6.风险也包含其中,它迫使开发人员首先跟踪最艰难的问题

5. 统一过程UP

        基本特征:以用例和风险驱动,以架构为中心,受控的迭代式的增量开发。

        

       

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com