2024年软件设计师中级(软考中级)详细笔记【5】软件工程基础知识上(分值10+)


前言

在备考软件设计师中级考试的过程中,我遇到了些许挑战,也收获了宝贵的经验。为了帮助其他同样正在为这门考试(证书)奋斗的朋友们,我决定将我的笔记整理出来,与大家分享。这些笔记不仅包含了书本上的知识,还加入了我对重点和难点的个人理解以及考试技巧,力求帮助大家更加高效地复习。我希望这份笔记能够成为你备考路上的一份支持,也祝愿你在考试中取得理想的成绩👍👍👍

如果有写的不好或者需要改进的地方,恳请在评论区指正!🤓🤓🤓

  • 需要官方资料教材可以在评论区留言或者私信,看见了就发~更新文章才会在线,感谢理解!b( ̄▽ ̄)d

第5章 软件工程基础知识(上)(分值10+)

概念偏多,逻辑较少,以背为主,分值较多
分为上下两部分进行更新!

5.1 软件工程概述

5.1.4 软件过程

  1. 能力成熟度模型(CMM)
    CMM 将软件过程改进分为以下5个成熟度级别。

    1. 初始级 (Initial)
      软件过程的特点是杂乱无章,有时甚至很混乱,几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄式核心人物的作用

    2. 可重复级(Repeatable)
      建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性,有必要的过程准则来重复以前在同类项目中的成功。

    3. 已定义级
      管理和工程两方面的软件过程己经文档化、标准化,并综合成整个软件开发组织的标准软件过程。所有项目都采用根据实际情况修改后得到的标准软件过程来开发和维护软件。

    4. 已管理级( Managed)
      制定了软件过程和产品质量的详细度量标准软件过程的产品质量都被开发组织的成员所理解和控制关注产品和过程质量

    5. 优化级 (Optimized)
      加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能不断持续地改进

    6. 软件能力成熟度模型(CMM)将软件能力成熟度自低到高依次划分为5级。目前,达到 CMM 第3级(己定义级〉是许多组织努力的目标,该级的核心是(29)。(2009年上半年)
      A.建立基本的项目管理和实践来跟踪项目费用、进度和功能特性
      B. 使用标准开发过程(或方法论)构建(或集成)系统
      C.管理层寻求更主动地应对系统的开发问题
      D.连续地监督和改进标准化的系统开发过程

    答案:B;A是第二级可重复级;C是已管理级;D第五级优化级

  2. 软件能力成熟度模型(CMM)的第4级(已管理级)的核心是_(29)_。(2009年下半年)
    (29) A. 建立基本的项目管理和实践来跟踪项目费用、进度和功能特性
    B.组织具有标准软件过程
    C.对软件过程和产品都有定量的理解和控制
    D. 先进的新思想和新技术促进过程不断改进

    答案:C,是已管理级 ;A是可重复级第2级;B是已定义级第3级;D是优化级第5级

  3. SEI 能力成熟度模型(SE1 CMM)把软件开发企业分为5 个成熟度级别,其中(32)重点关注产品和过程质量。(2013年下半年)
    (32〉A. 级别2:重复级
    B. 级别3:确定级
    C. 级别4:管理级
    D.级别5:优化级

    答案:C;记忆关键字,级别2重复级(跟踪);级别3确定级(标准);级别4管理级(质量);级别5优化级(改进)

  4. 能力成熟度模型集成(CMMI)【上半年考,下半年大概率一定考】
    CMMI提供了两种表示方法:阶段式模型和连续式模型。

    1. 阶段式模型(熟悉)
      阶段式模型的结构类似于 CMM,它关注组织的成熟度。CMMI-SE/SW/IPPD 1.1 版中有5个成熟度等级。
      • 初始的:过程不可预测且缺乏控制。
      • 已管理的:过程为项目服务。
      • 已定义的:过程为组织服务。
      • 定量管理的:过程已度量和控制。
      • 优化的:集中于过程改进。
    2. 连续式模型(掌握)
      • C L 0 CL_0 CL0(未完成的):过程域未执行未得到 CL1中定义的所有目标。
      • C L 1 CL_1 CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程的特定目标。
      • C L 2 CL_2 CL2(已管理的):其共性目标集中于己管理的过程的制度化。根据组织级政策规定过程的运作将使用哪个过程,项目遵循己文档化的计划和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控、控制和评审
      • C L 3 CL_3 CL3(已定义级的):其共性目标集中于己定义的过程的制度化。过程是按照组织的剪裁指南从组织的标准过程集中剪裁得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进。
      • C L 4 CL_4 CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化。使用测量和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的定量目标作为管理准则。
      • C L 5 CL_5 CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户要求的改变和持续改进计划中的过程域的功效。

习题:

  1. [特殊题]能力成熟度集成模型 CMMI 是 CMM 模型的最新版本,它有连续式和阶段式两种表示方式。基于连续式表示的 CMMI 共有6个(0~5)能力等级,每个能力等级对应到一个一般目标以及一组一般执行方法和特定方法,其中能力等级(31)主要关注过程的组织标淮化和部署。(2010 年上半年)
    (31) A. 1 B. 2 C. 3 D. 4

    答案:C
    解析:能力等级0指未执行过程,表明过程域的一个或多个特定目标没有被满足:能力等级!指过程通过转化可识别的输入工作产品,产生可识别的输出工作产品,关注于过程域的特定目标的完成:能力等级2 指过程作为已管理的过程制度化,针对单个过程实例的能力;能力等级 3 指过程作为己定义的过程制度化,关注过程的组织级标准化和部署:能力等级4 指过程作为定量管理的过程制度化:能力等级5指过程作为优化的过程制度化,表明过程得到很好地执行且持续得到改进。

  2. 关于过程改进,以下叙述中不正确的是(30)。(2011年上半年)

(30)A. 软件质量依赖于软件开发过程的质量,其中个人因素占主导作用
B. 要使过程改进有效,需要制定过程改进日标
C.要使过程改进有效,需要进行培训
D. CMMI 成熟度模型是一种过程改进模型,仅支持阶段性过程改进而不支持连续性过程改进
答案:D;应该是既支持,也支持

  1. 能力成熟模型集成(CMMI)是若干过程模型的综合和改进。连续式模型和阶段式模型是 CMMI 提供的两种表示方法。连续式模型包括6 个过程域能力等级 (CapabilityLevel,CL)其中(30)的共性日标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定日标。(2018年上半年)
    (30) A. CL1(已执行的)
    B. CL2(己管理的)
    C. CL3(已定义的)
    D. CL4(定量管理的)

答案: A

  1. 能力成熟度模型集成(CMMI)是若干过程模型的综合和改进。连续式模型和阶段式模型是 CMMI提供的两种表示方法,而连续式模型包括6 个过程域能力等级,其中_(30)_使用量化(统计学)手段改变和优化过程域,以应对客户要求的改变和持续改进计划中的过程域的功效。(2018 年下半年)
    (30) A. CL2(已管理的) B. CL3(己定义级的) C. CL4(定量管理的) D. CL5(优化的)

答案:D

5.2 软件过程模型

5.2.1 瀑布模型 (Waterfall Model)

  • 瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。它规定了由前至后、相互街接的固定次序,如同瀑布流水逐级下落,如图5-2所示。
    图5-2 瀑布模型

  • 瀑布模型为软件的开发和维护提供了一种有效的管理模式,根据这一模式制定开发计划,进行成本预算,组织开发力量,以项目的阶段评审文档控制为手段有效地对整个开发过程进行指导,所以它是以文档作为驱动、适合于软件需求很明确的软件项目的模型

  • 瀑布模型假设,一个待开发的系统需求是完整的、简明的、一致的,而且可以先于设计和实现完成之前产生。

  • 瀑布模型的优点是,容易理解,管理成本低;强调开发的阶段性早期计划及需求调查和产品测试。不足之处是,客户必须能够完整、正确和清晰地表达他们的需要;在开始的两个或3个阶段中,很难评估真正的进度状态;当接近项目结束时,出现了大量的集成和测试工作:直到项目结束之前,都不能演示系统的能力。在瀑布模型中,需求或设计中的错误往往只有到了项目后期才能够被发现,对于项目风险的控制能力较弱,从而导致项目常常延期完成,开发费用超出预算。

  • 瀑布模型的一个变体是V模型,如图5-3 所示。【一般干扰选项出现
    V模型描述了质量保证活动和沟通、建模相关活动以及早期构建相关的活动之间的关系。随着软件团队工作沿着V模型左侧步骤向下推进,基本问题需求逐步细化,形成问题及解决方案的技术描述。一旦编码结束,团队沿着V模型右侧的步骤向上推进工作,其实际上是执行了一系列测试(质量保证活动),这些测试验证了团队沿着 V模型左侧步骤向下推进过程中所生成的每个模型。V模型提供了一种将验证确认活动应用于早期软件工程工作中的方法。

图5-3 V模型

习题:

  1. 若全面采用新技术开发一个大学记账系统,以替换原有的系统,则宜选择采用(30)进行开发。(2011年下半年)
    (30) A. 瀑布模型 B. 演化模型 C. 螺旋模型 D. 原型模型

    答案:A;替换原有=需求明确,相当于更新

  2. 假设某软件公司与客户签订合同开发一个软件系统,系统的功能有较清晰的定义,且客户对交付时间有严格要求,则该系统的开发最适宜采用_(30)_。(2012年上半年)
    (30)A. 瀑布模型 B. 原型模型 C. V模型 D. 螺旋模型

    答案:A;关键点:系统的功能有较清晰的定义,且顾客有严格要求

  3. 某开发小组欲开发一个规模较大、需求较明确的项目。开发小组对项目领域熟悉且该项目与小组开发过的某一项日相似,则适宜采用_(29)开发过程模型。(2012年下半年)
    (29) A. 瀑布 B.演化 C.螺旋 D. 喷泉

    答案:A

5.2.2 增量模型

增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一系列增量产品,每一增量可以分别开发。该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”,如图 5-4 所示。当使用增量模型时,第1个增量往往是核心的产品。客户对每个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。

增量模型作为瀑布模型的一个变体,具有瀑布模型的所有优点。此外,它还有以下优点:第一个可交付版本所需要的成本和时间很少;开发由增量表示的小系统所承担的风险不大;由于很快发布了第一个版本,因此可以减少用户需求的变更;运行增量投资,即在项目开始时,可以仅对一个或两个增量投资。

增量模型有以下不足之处:如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;管理发生的成本、进度和配置的复杂性可能会超出组织的能力。

习题:

  1. 软件开发的增量模型(29)。(2012年上半年)
    A. 最适用于需求被清晰定义的情况
    B.是一种能够快速构造可运行产品的好方法
    C. 最适合于大规模团队开发的项日
    D.是一种不适用于商业产品的创新模型

    答案:B

  2. (30)不是增量式开发的优势。(2013年下半年)
    A.软件可以快速地交付
    B. 早期的增量作为原型,从而可以加强对系统后续开发需求的理解
    C.具有最高优先级的功能首先交付,随着后续的增量不断加入,这就使得更重要的功能得更多的测试
    D.很容易将客户需求划分为多个增量

    答案:D,并没有很容易,只是能划分多个增量

  3. 以下关于增量模型的叙述中,正确的是_(29)_。(2014年下半年)
    A. 需求被清哳定义 B. 可以快速构造核心产品
    C. 每个增量必须要进行风险评估 D. 不适宜商业产品的开发

    答案:B,A是瀑布,C是螺旋,D应改为适宜

  4. 以下关于增量开发模型的叙述中,不正确的是(30)。(2016年上半年)
    A.不必等到整个系统开发完成就可以使用
    B.可以使用较早的增量构件作为原型,从而获得稍后的增量构件需求
    C.优先级最高的服务先交付,这样最重要的服务接受最多的测试
    D.有利于进行好的模块划分

>  答案:D
  1. 以下关于增量模型的叙述中,不正确的是_(29)。(2018 年上半年)
    (29) A. 容易理解,管理成本低
    B. 核心的产品往往首先开发,因此经历最充分的“测试”
    C.第一个可交付版本所需要的成本低,时间少
    D.即使一开始用户需求不清晰,对开发进度和质量也没有影响

    答案:D

  2. 以下关于增量模型优点的叙述中,不正确的是_(29)。(2021年下半年)
    (29) A. 强调开发阶段性早期计划
    B.第一个可交付版本所需要的时间少和成本低
    C. 开发由增量表示的小系统所承担的风险小
    D. 系统管理成本低、效率高、配置简单

    答案:D,D是缺点,管理发生的成本、进度和配置的复杂性可能会超出组织的能力。

5.2.3 演化模型

演化模型是迭代的过程模型,使得软件开发人员能够逐步开发出更完整的软件版木。演化模型特别适用于对软件需求缺乏准确认识的情况。典型的演化模型有原型模型和螺旋模型等。

  1. 原型模型(Prototype Model)
    并非所有的需求都能够预先定义,大量的实践表明,在开发初期很难得到一个完整的、准确的需求规格说明。这主要是由于客户往往不能准确地表达对未来系统的全面要求,开发者对要解决的应用问题模糊不清,以至于形成的需求规格说明常常是不完整的、不准确的,有时甚至是有歧义的。此外,在整个开发过程中,用户可能会产生新的要求,导致需求的变更。而瀑布模型难以适应这种需求的不确定性和变化,于是出现了快速原型(Rapid Prototype)这种新的开发方法。原型方法比较适合于用户需求不清、需求经常变化的情况。当系统规模不是很大也不太复杂时,采用该方法比较好。
    原型是预期系统的一个可执行版本,反映了系统性质的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。当然,能够采用原型方法是因为开发工具的快速发展,使得能够迅速地开发出一个让用户看得见、摸得着的系统框架。这样,对于计算机不是很熟悉的用户就可以根据这个框架提出自己的需求。开发原型系统首先确定用户需求,开发初始原型,然后征求用户对初始原型的改进意见,并根据意见修改原型。原型模型如图5-5 所示。可以有效捕获系统需求
    图5-5 原型模型

    原型模型开始于沟通,其目的是定义软件的总体目标,标识需求,然后快速制订原型开发的计划,确定原型的目标和范围,采用快速射击的方式对其进行建模,并构建原型。被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下一轮中对原型进行改进。在前一个原型需要改进,或者需要扩展其范围的时候,进入下轮原型的迭代开发。
    根据使用原型的目的不同,原型可以分为探索型原型、实验型原型和演化型原型3种。探索型原型的目的是要弄清目标的要求,确定所希望的特性,并探讨多种方案的可行性。实验型原型的目的是验证方案或算法的合理性,是在大规模开发和实现前,用于考查方案是否合适、规格说明是否可靠等。演化型原型的目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目标系统。

    习题:

    1. 为了有效地捕获系统需求,应采用(29)。(2011年上半年)
      A. 瀑布模型 B. V模型 C. 原型模型 D.螺旋模型
      答案:C
    2. 某开发小组欲开发一个超大规模软件:使用通信卫星,在订阅者中提供、监视和控制移动电话通信,则最不适宜采用(29)过程模型。(2015年下半年)
      (29) A. 瀑布 B. 原型 C.螺旋 D.喷泉
      答案:B
    3. 某企业拟开发一个企业信息管理系统,系统功能与多个部门的业务相关。现希望该系统能够尽快投入使用,系统功能可以在使用过程中不断改善。则最适宜采用的软件过程模型为(29)。(2018 年下半年)
      (29) A. 瀑布模型 B. 原型模型 C.演化(迭代〉模型 D.螺旋模型
      答案:C
  2. 螺旋模型(Spiral Model)【多了风险分析】
    对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。
    螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,如图 5-6所示。每个螺旋周期分为如下4个工作步骤。

    1. 制订计划。确定软件的目标,选定实施方案,明确项目开发的限制条件。
    2. 风险分析。分析所选的方案,识别风险,消除风险。
    3. 实施工程。实施软件开发,验证阶段性产品。
    4. 用户评估。评价开发工作,提出修正建议,建立下一个周期的开发计划。
      图5-6 螺旋模型

    螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做出应有的反应。因此,该模型特别适用于庞大、复杂并且具有高风险的系统
    与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供了方便,有助于提高软件的适应能力,并且为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发的风险。在使用螺旋模型进行软件开发时,需要开发人员具有相当丰富的风险评估经验和专门知识。另外,过多的迭代次数会增加开发成本,延迟提交时间。
    习题:

    1. 某公司计划开发一种产品,技术含量很高,与客户相关的风险也很多,则最适于采用(29) 开发过程模型。(2015年上半年)
      A. 瀑布 B. 原型 C.增量 D.螺旋
      答案:D
    2. 以下关于螺旋模型的叙述中,不正确的是(29)。(2017年上半年)
      A. 它是风险驱动的,要求开发人员必须具有丰富的风险评估知识和经验
      B. 它可以降低过多测试或测试不足带来的风险
      C. 它包含维护周期,因此维护和开发之间没有本质区别
      D. 它不适用于大型软件开发
      答案:D

5.2.4 喷泉模型(Water Fountain Model)

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性,如图 5-7 所示。迭代意味着模型中的开发活动常常需要重复多次,在迭代过程中不断地完善软件系统。无间隙是指在开发活动(如分析、设计、编码)之间不存在明显的边界,也就是说,它不像瀑布模型那样,在需求分析活动结束后才开始设计活动,在设计活动结束后才开始编码活动,而是允许各开发活动交叉、迭代地进行。

喷泉模型的各个阶段没有明显的界线,开发人员可以同步进行。其优点是可以提高软件项目的开发效率,节省开发时间。由于喷泉模型在各个开发阶段是重叠的,在开发过程中需要大量的开发人员不利于项目的管理。此外,这种模型要求严格管理文档,使得审核的难度加大。
图5-7 喷泉模型

喷泉模型是一种适合于面向_(29)_开发方法的软件过程模型。该过程模型的特点不包括(30)。(2020年下半年)
(29) A. 对象B. 数据 C. 数据流 D.事件
(30) A. 以用户需求为动力
B. 支持软件重用
C.具有迭代性
D.开发活动之问存在明显的界限
答案:A;D

5.2.7 统一过程(UP)模型

统一过程模型是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由UML方法和工具支持。每个“袖珍项目”都包含正常软件项目的所有元素:计划、分析和设计、构造、集成和测试,以及内部和外部发布。

  1. 起始阶段
    • 专注于项目的初创活动
  2. 精华阶段
    • 进行需求分析和架构演进
  3. 构建阶段
    • 关注系统的构建,产生实现模型
  4. 移交阶段
    • 关注于软件提交的方面的工作,产生软件增量。

在每个迭代中有5个核心工作流。

● 初始阶段:生命周期目标。
● 精化阶段:生命周期架构。
● 构建阶段:初始运作功能。
● 移交阶段:产品发布。

【直接看习题】

  1. 一个软件开发过程描述了“谁做”、“做什么”、“怎么做”和“什么时候做”,RUP 用(16)来表述“谁做”。(2009 年上半年)
    (16) A. 角色 B. 活动 C. 制品 D. 工作流

    试题(16) 分析
    本题考查 RUP 对软件开发过程的描述。RUP 应用了角色、活动、制品和工作流4种重要的模型元素,其中角色表述“谁做”,制品表述“做什么”,活动表述“怎么做”,工作流表述“什么时候做”。
    参考答案(16) A

  2. RUP 在每个阶段都有主要目标,并在结束时产生一些制品。在(30)结束时产生“在适当的平台上集成的软件产品”。 (2009 年上半年)
    (30) A. 初启阶段 B. 精化阶段 C.构建阶段 D. 移交阶段

    试题(30)分析
    本题考查 RUP 中每个阶段产生的制品。初启阶段结束时产生一个构想文档、一个有关用例模型的调查、一个初始的业务用例、一个早期的风险评估和一个可以显示阶段和迭代的项目计划等制品:精化阶段结束时产生一个补充需求分析、一个软件架构描述和一个可执行的架构原型等制品;构建阶段结束时的成果是一个准备交到最终用户手中的产品,包括具有最初运作能力的在适当的平台上华成的软件产品、用户于册和对当前版本的描述:移交阶段结束时产生移交给用户产品发布版本。
    参考答案(30) C

5.2.8 敏捷方法(Agile Development)

敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。通过在软件开发过程中加入灵活性,敏捷方法使用户能够在卡法周期的后期增加或改变需求。
敏捷过程的典型方法有很多,每一种方法基于一套原则,这些原则实现了敏捷方法所宣称的理念。

  1. 极限编程(XP)【重点】
    XP 是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式。它由价值观、原则、实践和行为4个部分组成,彼此相互依赖、关联,并通过行为贯穿于整个生存周期。

    • 【掌握】4大价值观:沟通、简单性、反馈和勇气。
    • (了解)5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作。
    • 12 个最佳实践:计划游戏(快速制定计划、随着细节的不断变化而完善)、小型发布(系统的设计要能够尽可能早地交付)、隐喻(找到合适的比喻传达信息)、简单设计(只处理当前的需求,使设计保持简单)、测试先行(先写测试代码,然后再编写程序)、重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)、结对编程、集体代码所有制、持续集成(可以按日甚至按小时为客户提供可运行的版本)、每周工作 40 个小时、现场客户(系统最终用户代表应全程配合XP团队)和编码标准。
  2. 水晶法(Crystal)
    水晶法认为每一个不同的项目都需要一套不同的策略、约定和方法论【具体问题具体分析】

  3. 并列争求法(Scrum)
    并列争求法使用迭代的方法,其中,把每30 天一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品。多个自组织和自治的小组并行地递增实现产品。协调是通过简短的日常情况会议来进行,就像橄榄球中的“并列争球”。

  4. 自适应软件开发(ASD)
    ASD 有6个基本的原则:有一个使命作为指导;特征被视为客户价值的关键点;过程中的等待是很重要的,因此“重做”与“做”同样关键;变化不被视为改正,而是被视为对软件开发实际情况的调整;确定的交付时间迫使开发人员认真考虑每一个生产的版本的关键需求;风险也包含其中。

  5. 敏捷统一过程(AUP)
    敏捷统一过程(Agile Unified Process, AUP) 采用“在大型上连续”以及在“在小型上迭代”的原理来构建软件系统。采用经典的 UP 阶段性活动(初始、精化、构建和转换),提供了一系列活动,能够使团队为软件项目构想出一个全面的过程流。在每个活动里,一个团队迭代使用敏捷,并将有意义的软件增量尽可能快地交付给最终用户。每个 AUP迭代执行以下活动:

    • 建模。建立对商业和问题城的模型表述,这些模型“足够好” 即可,以便团队继续前进。
    • 实现。将模型翻译成源代码。
    • 测试。像 XP 一样,团队设计和执行一系列的测试来发现错误以保证源代码满足需求。
    • 部署。对软件增量的交付以及获取最终用户的反馈。
    • 配置及项目管理。者眼于变更管理、风险管理以及对团队的任一制品的控制。项目管理追踪和控制开发团队的工作进展并协调团队活动。
    • 环境管理。协调标准、工具以及适用于开发团队的支持技术等过程基础设施。

5.3 需求分析

5.3.1 软件需求【过一遍】

  1. 功能需求。考虑系统要做什么,在何时做,在何时以及如何修改或升级。
  2. 性能需求。考虑软件开发的技术性指标。例如,存储容量限制、执行速度、响应时间及吞吐量。
  3. 用户或人的因素。考虑用户的类型。例如,各种用户对使用计算机的熟练程度,需要接受的训练,用户理解、使用系统的难度,用户错误操作系统的可能性等。
  4. 环境需求。考虑末来软件应用的环境,包括硬件和软件。对硬件设备的需求包括机型、外设、接口、地点、分布、湿度、磁场干扰等;对软件的需求包括操作系统、网络、数据库等。
  5. 界面需求。考虑来自其他系统的输入,到其他系统的输出,对数据格式的特殊规定,对数据仔储介质的规定。
  6. 文档需求。考虑需要哪些文档,文档针对哪些读者。
  7. 数据需求。考虑输入、输出数据的格式,接收、发送数据的频率,数据的准确性和精度,数据流量,数据需保持的时间。
  8. 资源使用需求。考虑软件运行时所需要的数据、其他软件、内存空间等资源;软件开发、维护所需的人力、支撑软件、开发设备等。
  9. 安全保密要求。考虑是否需要对访问系统或系统信息加以控制,隔离用户数据的方法,用户程序如何与其他程序和操作系统隔商以及系统备份要求等。
  10. 可靠性要求。考虑系统的可靠性要求,系统是香必须检测和隔离错误;出错后,重启系统允许的时间等。
  11. 软件成本消耗与开发进度需求。考虑开发是香有规定的时间表,软/硬件投资有无限制等。
  12. 其他非功能性要求。如采用某种开发模式,确定质量控制标准、里程碑和评审、验收标准、各种质量要求的优先级等,以及可维护性方面的要求。这些需求可以来自于用户(实际的和潜在的)、用户的规约、应用领城的专家、相关的技术标准和法规:也可以来自于原有的系统、原有系统的用户、新系统的潜在用户:甚至还可以来自于竞争对手的产品。

5.4 系统设计

5.4.1 概要设计

  1. 设计软件系统总体结构【重点】
    其基本任务是采用某种设计方法,将一个复杂的系统按功能划分成模块:确定每个模块的功能:确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。
    软件系统总体结构的设计是概要设计关键的一步,直接影响到下一个阶段详细设计与编码的工作。软件系统的质量及一些整体特性都在软件系统总体结构的设计中决定。
    注意:设计软件系统总体结构在概要设计里!

  2. 数据结构及数据库设计【了解】

    1. 数据结构的设计。逐步细化的方法也适用于数据结构的设计。在需求分析阶段,已经通过数据字典对数据的组成、操作约束和数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。在概要设计阶段,宜使用抽象的数据类型。
    2. 数据库的设计。数据库的设计是指数据存储文件的设计,主要进行以下几方面设计。
      ① 概念设计。在数据分析的基础上,采用自底向上的方法从用户角度进行视图设计,一般用 E-R模型来表述数据模型。E-R模型既是设计数据库的基础,也是设计数据结构的基础。
      ②逻辑设计。E-R 模型是独立于数据库管理系统(DBMS)的,要结合具体的 DBMS 特征来建立数据库的逻辑结构。
      ③ 物理设计。对于不同的 DBMS,物理环境不同,提供的存储结构与存取方法各不相同。物理设计就是设计数据模式的一些物理细节,如数据项存储要求、存取方法和索引的建立等。本节对数据库技术不做详细讨论,详细内容参见本书第7章。
  3. 编写概要设计文档【熟悉】
    文档主要有概要设计说明书、数据库设计说明书、用户手册以及修订测试计划。

  4. 评审【了解】
    对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方法的可行性,关键的处理及内外部接口定义的正确性、有效性、各部分之间的一致性等都一一进行评审。

5.4.2 详细设计

  1. 对每个模块进行详细的算法设计,用某种图形、表格和语言等工具将每个模块处理过程的详细算法描述出来。
  2. 对模块内的数据结构进行设计。
  3. 对数据库进行物理设计,即确定数据库的物理结构。
  4. 其他设计。根据软件系统的类型,还可能要进行以下设计。【了解】
    ① 代码设计。为了提高数据的输入、分类、存储和检索等操作,节约内存空间,对数据库中某些数据项的值要进行代码设计。
    ② 输入/输出格式设计。
    ③ 用户界面设计。
  5. 编写详细设计说明书。
  6. 评审。对处理过程的算法和数据库的物理结构都要评审。
    系统设计的结果是一系列的系统设计文件,这些文件是物理实现一个信息系统(包括硬件设备和编制软件程序)的重要基础。
  • 对总体进行按功能划分模块是概要设计
  • 对模块进行算法设计就是详细设计

习题:

  1. 概要设计文档的内容不包括(32)。(2018年上半年)
    (32)A. 体系结构设计 B.数据库设计 C. 模块内算法设计 D. 逻辑数据结构设计

    答案:C,属于详细设计阶段的文档

  2. 软件详细设计阶段的主要任务不包括_(32)。(2021年上半年)
    (32) A.数据结构设计 B.算法设计 C. 模块之间的接口设计 D.数据库的物理设计

    答案:C


结语

这份笔记由我在备考软件设计师中级考试的过程中编写,包含了我对知识点的理解与总结。如果您觉得这份笔记对您有帮助,并希望分享给更多的人,我十分乐意。但请在转载时务必注明出处,以尊重作者的劳动成果,感谢您的理解与支持

在此特别强调,本人编写笔记的所需部分资源均源于网络公开资源,旨在为大家提供一个学习和交流的内容,未经原作者授权,如若不慎侵犯您的合法权益,请您立即通过有效联系方式通知我,并附上相关证明材料。一旦核实无误,我将在第一时间删除涉事资源,全力保障您的合法权利不受损害。


  • 每篇一句:“人生没有如果,只有后果和结果。少问别人为什么,多问自己凭什么”
  • 如果觉得对您有用,请点个赞或者收藏鼓励我持续更新吧!
  • 恭喜您,已挑战成功第五关上,请前往第五关下进行挑战吧【整理中……】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值