软件工程学

河海大学软件工程学硕考研上岸经验分享 声明:本文原创首发公众号:大巴考研,未经允许,不可转载。首先说一下,我是2019年考研上岸的。在这里分享一下我的考研复试经验,希望能帮到你。我复试那天,天气比较冷,比较紧张,提醒:一定要看天气穿衣服!英语面试: 由于天气有些冷,穿的少加之紧张,发挥得不是很好。跑到阳台上去小晒了会太阳,没想到前一个人时间很短,很快轮到我(再次提醒不要乱跑)有点小紧张…进去之后问好后便坐下了,三个老师,左边和中间的老师很和蔼,右边老师全程无表情,开始自我介绍,由于只有左边的老师注视着我,我边介绍边注视着他以至于我把背的很熟的自 阅读详情

目录

 软件工程学概述

 可行性研究

 需求分析

 形式化说明技术

 总体设计

 详细设计

 实现—编码、测试

 维护

 面向对象方法学引论

 面向对象分析

 面向对象设计

 面向对象实现

 软件项目管理


软件工程学概述

  1. 软件危机:
    是指在计算机软件开发和维护过程中遇到的一系列严重问题,包括如何开发软件、如何维护已有软件。
  2. 软件危机产生的原因:
    与软件本身、软件开发和维护的方法都有关系,软件开发进展不同、质量难以评价、程序规模导致复杂性。
  3. 什么是软件:
    软件是程序、数据以及相关文档的完整集合,程序是完成预定功能的可执行指令序列,数据是程序处理信息的数据结构,文档是开发、使用和维护程序所需要的图文资料。
  4. 软件工程:
    指导计算机软件开发和维护的一门工程学科,采用工程的概念原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
  5. 软件工程学3要素:
    方法、工具、过程。方法是完成软件开发的各项技术方法;工具是使用方法的支撑环境;软件过程是为了获得高质量软件所需要的一系列任务的框架,它规定了各项任务的工作步骤,通常使用生命周期模型描述软件过程。
  6. 面向对象方法学:
    把数据和行为同等重视,以数据为主线,把数据和操作紧密结合起来。包含4个要点:对象、类、继承、消息通信
  7. 软件生命周期:
    由软件定义、软件开发、软件维护3个时期组成,每个时期可以进一步细分为不同阶段。
    软件定义——又称为系统分析,由系统分析员实现,分为问题定义、可行性研究、需求分析3个阶段。
    软件开发——包括系统设计(总体设计、详细设计)、系统实现(编码和单元测试、综合测试)
    软件维护——使软件持久满足用户的不同时期、不同功能的需求。
  8. 传统的瀑布模型的特点:
    ①前后阶段之间有严格的顺序性和依赖性;
    ②推迟编码实现,确保前期设计过程扎实;
    ③每个阶段都必须完成规定的文档,每个阶段结束前都要对所有完成的文档进行评审;
  9. 实际的瀑布模型——带“反馈环”:
    传统的模型过于理想化,常常会在后面阶段中发现前面阶段的错误,需要沿着反馈线返回到前面的阶段,再回到后面的阶段继续任务。
     
  10. 瀑布模型的优缺点:
    优点:文档驱动型,强迫开发人员使用规范的方法,每个阶段编写文档并评审,使得软件维护容易实现、减低维护成本。
    缺点:产品交付前,用户只能通过文档了解产品,不切实际,使用户很难全面认识自己的产品,不满足用户的需要。
  11. 快速原型模型:
    快速建立最终产品的一个部分功能的原型产品,通过用户试用并给出修改意见。
    优点:不带反馈环,线性开发,快速,可以获取用户的真正需求。
  12. 增量模型:
    将软件产品作为一系列增量构件来设计、编码、集成和测试,第一个增量构件往往是最核心的功能模块。
    优点:瀑布模型和快速原型都是一次性把满足所有需求的产品交付,但是增量模型是分批提交。在开发的早期使投资获得明显回报、较易维护。
    缺点:当增量构建集成时,必须保证不破坏以开发的产品。甚至构件最终根本无法集成。
  13. 螺旋模型:
    风险驱动型,及时识别和分析风险,使用原型和其他方法尽量降低风险,适用于内部开发的大规模软件项目(只有内部开发的项目,才能在风险过大时方便中止项目)
    缺点:只有在开发人员具有风险分析和排除风险的专门知识时,该模型才能获得成功。
  14. 喷泉模型:
    面向对象,“喷泉”体现了面向对象的迭代和无缝特性


     
  15. 极限编程(eXtreme Programming,XP)
    敏捷过程:由软件专家联合起草的在软件开发过程中的优秀价值观,具有对变化和不确定性的更快速、更敏捷的反应。
    敏捷过程的适用范围:商业竞争环境下的小型项目的有限资源和有限开发时间。
    极限编程便是敏捷过程中的一个,指把好的开发实践应用到极致。如:客户作为开发团队的成员、结对编程、测试驱动开发、持续集成

 可行性研究

  1. 在软件开发的早期为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?
    确定问题是否有可行的解,是否值得去解,避免时间、人力等资源的浪费。
    从技术可行性、经济可行性、操作可行性
  2. 系统流程图:
    在可行性研究时,概括出现有系统的逻辑模型;在设计阶段将构想出新系统的逻模型转化为物理模型。系统流程图就是概括地描绘物理系统的工具,表达数据在系统各部件之间的流动情况。
  3. 数据流图:
    描绘数据在软件中流动和被处理的逻辑过程,在数据流图中必须描绘出所有可能的数据流向。包括4种成分:源点或终点、处理、数据流、出局存储。数据存储和数据流都是数据,仅仅是所处的状态不同,一个是静态,一个是动态。
     * :表示数据流之间的“与“关系
     +:表示数据流之间的“或”关系
    ⊕:表示数据流之间的”互斥“关系(只能存在一个)
  4. 数据字典:
    数据字典是关于数据的信息的集合,对数据流图中包含的所有元素的定义的集合,给人提供关于数据的描述信息。
    数据流图和数据字典构成系统的逻辑模型,说明系统的规格信息。

     

 需求分析

  1. 为什么要进行需求分析?通常对软件系统有哪些需求?
    确定系统必须完成哪些工作,对目标系统提出完整、准确、清晰、具体的要求。在需求分析结束前,应该写出软件需求规格说明书,以书面形式描述软件需求。
    包括功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求等
  2. 怎样与用户有效地沟通以获取用户的真实需求?
    传统的访谈、面向数据流自顶向下求精的结构化分析方法、面向团队的简易的应用规格说明技术、快速建立软件原型(是最准确、最有效和最强大的需求分析技术)
  3. 结构化分析方法:
    就是面向数据流自顶向下逐步求精进行需求分析的方法。需求分析过程应该建立3种模型,数据模型(E-R图)、功能模型(数据流图)、行为模型(状态转换图)
  4. 数据模型的3种成分:
    实体、属性、联系
  5. 数据规范化:
    为了减少数据冗余,避免出现插入、删除异常,通常需要把数据结构规范化。使用”范式“定义消除冗余的程度。
    1NF:冗余程度最大,属性不可再分
    2NF:满足1NF并且非主属性对码是完全函数依赖
    3NF:满足1NF并且非主属性对码不是传递依赖或部分依赖,大多数场合已经适用
     
  6. 状态转换图:
    通过描绘系统的状态及引起状态转换的事件,来表示系统的行为。
  7. 从哪些方面验证需求分析的正确性:
    一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾
    完整性:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能
    现实性:现有的硬件和软件技术可以实现
    有效性:必须证明需求是正确有效的,确定能解决用户面对的问题。

形式化说明技术

  1. 对比形式化和非形式化的优缺点: 
    非形式化:如使用自然语言描述需求规格说明书。可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。
    形式化:如有限状态机。使用数学描述需求,消除了二义性、可以使用数学方法验证;但是难以学习,对问题的时序、控制和行为等方面的需求表示不够。

 总体设计

  1. 为什么在详细设计前进行总体设计?
    可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。
  2. 总体设计的2个阶段:
    系统设计阶段:确定系统的具体实现方案
    结构设计阶段:确定软件结构,程序由哪些模块组成,以及模块间的关系。
    (过程设计阶段:属于详细设计,确定每个模块的处理过程)
  3. 软件设计中的设计原理:
    ①模块化:把程序划分为独立命名且可独立访问的模块,每个模块完成一个子功能,最后把这些模块集成为一个整体。优点:结构清晰方便理解阅读、便于测试和调试、提高软件的可靠性和可修改性、有助于组织管理。
    ②抽象:抽出事物的本质特性而暂时不考虑细节,并用层次的方式自顶向下由抽象到具体。优点:简化了软件的设计和实现,提高了软件的可理解性和可测试性,使软件易于维护。
    ③逐步求解:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。Miller法则:一个人在任何时候都只能把注意力集中在(7±2)个知识点上。求精是细化过程,与抽象互补,提供越来越多的细节描述。
    ④信息隐藏:使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问的。
    ⑤局部化:指把一些关系密切的软件元素物理相邻,局部化有利于信息隐藏。
    模块独立:模块独立是模块化、抽象、信息隐藏和局部化的直接结果。
  4. 模块的独立的2个定性标准度量:
    内聚:衡量一个模块内部各个元素互相联系的紧密程度。
    耦合:衡量不同模块间互相联系的紧密程度。
    高内聚、低耦合
  5. 耦合:
    ①数据耦合:两个模块交换的信息仅仅是数据,属于低耦合。
    ②控制耦合:交换的信息中有控制信息,属于中等程度耦合。
    ③特征耦合:被调模块需要使用作为参数传递进来的部分数据时,可以使用的数据多于实际需要的数据,导致对数据的访问失去控制,不安全。
    ④公共环境耦合:多个模块通过一个公共数据环境相互作用时。
    ⑤内容耦合:一个模块访问另一个模块的内部数据。一个模块不通过正常入口而转到另一个模块内部;两个模块有部分程序代码重叠;一个模块有多个入口,耦合程度最高。
    设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
  6. 内聚:
    内聚和耦合都是模块化设计的有利工具,实践证明内聚更为重要,应该重点提高模块的内聚程度。
    ①偶然内聚:低内聚,如果一个模块完成一组任务,这些任务间即使有关系,关系也很松散。如代码重复部分用函数实现。
    ②逻辑内聚:低内聚,如果一个模块完成的任务在逻辑上属于相同或相似的一类。如一个模块产生各种类型的全部输出。
    ③时间内聚:低内聚,如果一个模块包含的任务必须在同一段时间内执行。如模块完成各种初始化工作。
    ④过程内聚:中内聚,如果一个模块内的处理元素是相关的,而且必须以特定次序执行。
    ⑤通信内聚:中内聚,如果模块中所有元素都使用同一个输入数据或产生同一个输出数据。
    ⑥顺序内聚:高内聚,如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行。
    ⑦功能内聚:最高内聚,如果模块内所有处理元素都属于一个整体,完成一个单一的功能。

 详细设计

  1. 详细设计的目标以及逻辑基础:
    目标是确定应怎样具体地实现所要求的系统,得出对目标系统的精确描述。
    逻辑基础是结构程序设计技术。
  2. 结构程序设计的定义:
    结构程序设计是尽可能少用GO TO 语句的程序设计方法。最好仅在检测出错误时才使用GO TO 语句,而且应该总是使用前向GO TO 语句。
  3. 3种基本控制结构:
    顺序、循环(DO_WHILE)、选择(IF_THEN_ELSE)
  4. 程序流程图:
    优点:历史最悠久、使用最广泛、对控制流程的描绘很直观,便于初学者掌握。
    缺点:
    ①诱使程序员过早地考虑程序的控制流程而不是全局结构;
    ②程序员可能会用箭头随意控制转移,不符合结构程序设计的精神
    ③程序流程图不易表示数据结构
  5. 盒图的特点:
    ①没有违背结构程序设计的精神
    ②功能域明确,很容易确定局部和全局数据的作用域
    ③不可能任意转移控制
    ④容易表现嵌套关系和模块的层次结构

实现—编码、测试

  1. 软件测试的目的和时期:
            目的:在软件投入运行之前,尽可能发现软件中的错误,它是对软件规格说明、设计和编码的最后复审。
            单元测试:通常在编写出每个模块后就做必要的测试,模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一阶段。
            综合测试:对软件进行全面的综合测试,是一个独立的阶段,由专门的测试人员承担这项工作。(因为心理学告诉我们,由程序的编写者自己进行测试是不恰当的,可能不承认错误)
    调试:通过测试发现软件中的错误以后必须诊断并改正错误,是测试阶段最困难的工作。
  2. 软件测试的两种方法:
            ①黑盒测试:把程序看成一个黑盒子,完全不考虑程序内部结构和处理过程。假定已知产品的功能,黑盒测试是在程序接口进行的测试,只检测产品的功能是否能按照规格说明书的规定正常使用,又称为功能测试。
            ②白盒测试:把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理过程,检查产品内部的动作是否按照规格说明书的规定正常运行,又称为结构测试。
  3. 大型软件系统的测试过程:

    ①模块测试:保证每个模块作为一个单元能正确运行,又称为单元测试。
    ②子系统测试:把经过单元测试的模块集成为一个子系统来测试,主要测试模块间接口的协调和通信。
    ③系统测试:把经过测试多个子系统集成为一个完整的系统来测试。
    ④验收测试:在用户和实际数据的参与下,把系统软件作为单一的实体进行测试,又称为确认测试。

  4. 白盒测试中的逻辑覆盖有哪些?
    ①语句覆盖:使程序中每条语句至少执行一次;很弱的覆盖
    ②判定(分支)覆盖:不仅每条语句至少执行一次,而且每个判定的每个分支都至少执行一次;比语句覆盖强,仍然不高。
    ③条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。比判定覆盖强。
    ④判定/条件覆盖:因为判定覆盖不一定包含条件覆盖,条件覆盖不一定包含判定覆盖。所以判定/条件覆盖同时满足两种覆盖标准,使判定表达式的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。有时判定/条件覆盖不一定比条件覆盖强。
    ⑤条件组合覆盖:使得每个判定表达式中条件的各种可能组合都至少出现一次。逻辑覆盖更强。满足条件组合覆盖一定满足判定/条件、条件、判定覆盖,但是不一定满足路径覆盖。
    ⑥点覆盖:使得执行路径至少经过流图的每一个结点一次,等价于语句覆盖。
    ⑦边覆盖:使得执行路径至少经过流图的每一条边一次,等价于判定覆盖。
    ⑧路径覆盖:使得每条可能的路径都至少执行一次(如果由环,则每个环至少经过一次)

  5. 白盒测试的控制结构测试:
    基本路径测试:保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真、假两种值。
    条件测试:检查程序中的每个条件中的错误。
    循环测试:专注于测试循环结构的有效性,分为简单循环、嵌套循环、串接循环。

  6. 黑盒测试技术方案:
        ①等价划分:把程序的输入域划分为若干个数据类,每个数据类选取一组数据(有效等价类、无效等价类)作为测试用例。力图设计出能发现若干类程序错误的测试用例,从而减少必须设计的测试用例的数目。
        ②边界值分析:使程序运行在边界附近,着重测试输入/输出等价类的边界。
        (等价划分和边界值分析都是孤立地考虑单个测试用例,而没有考虑多个输入数据的组合效应。)
        ③错误推测:依靠测试人员的经验和直觉,列举出程序中可能有的错误和容易发生错误的特殊情况,并选择测试方案。选择输入组合利用判定树或判定表为工具,为判定表的每一列设计至少一个测试用例。

  7. 白盒测试和黑盒测试的区别?
    白盒测试:测试的早期;测试程序的内部逻辑;通常为单元测试,测试员与程序员是同一人。
    黑盒测试:测试的后期;测试程序的功能;通常为确认测试,测试会有用户的参与。
     

  8. 什么是软件的可靠性呢?什么是软件的可用性?
    可靠性:是指程序在给定的时间间隔内,按照规格说明书的规定成功运行的概率。可靠性随着给定时间间隔的加大而减少。
    可用性:程序在给定的时间点,按照规格说明书的规定成功运行的概率。

维护

  1. 什么是软件维护?软件维护的4项活动?
    软件生命周期的最后一个阶段,保证软件在交付后的相当长的时间内能够正常运行。
    改正性维护:在程序的使用期间,由用户发现并反馈给维护人员。
    适应性维护:为了使用环境变化适当地修改软件
    完善性维护:用户提出新功能或修改已有功能
    预防性维护:为了改进未来地可维护性或可靠性,预先打好基础。
  2. 软件的可维护性?它的决定因素?
    软件的可维护性:指维护人员能够理解、改正、改进这个软件的难易程度。
    决定因素:可理解性、可测试性、可修改性、可移植性、可重用性。
     
  3. 软件开发过程中,应该采用哪些措施来提高软件产品的可维护性?
    提高可理解性:模块化、结构化设计、使用高级程序设计语言
    提高可测试性:良好的文档。
    提高可修改性:高内聚低耦合、局部化、信息隐藏
    提高可移植性:把因为环境变化将会修改的程序局限在少数模块,减少修改。
    软件重用技术能从根本上提高软件可维护性,面向对象的软件技术是最成功的软件重用技术。

面向对象方法学引论

  1. 传统方法学和面向对象方法学的区别?
        传统方法仅描述了实体的静态属性,没有动态行为;面向过程设计,以算法为核心,将数据和过程分离,忽略了数据和操作之间的联系。
        与传统方法相比,面向对象是一种以数据为主线的,把数据和处理相结合的方法,它不是被动等待外界对它施加操作,而是作为主体发消息主动请求别的对象施加操作。
  2. 什么是面向对象方法学?它有哪些优点?
    面向对象方法学:
    对象+类+继承+消息传递,把分析、设计和实现结合在一起。
    优点:

        ①与人类习惯的思维一致,自然表达现实世界
        ②稳定性好,当系统的功能需求变化时不会引起软件结构的整体变化
        ③可重用性好,灵活适用提高生产率。
        ④可维护性好,易于理解、测试和调试、修改等。

  3. 什么是“对象”?它与传统的数据有什么异同?
    对象是描述该对象属性的数据以及对数据施加的所有操作封装的统一体。
    对象的特点有:以数据为中心,对象是主动的、实现数据封装、对象之间是并行的、模块独立性好

  4. 什么是“类”?
    类是对具有相同数据和相同操作的一组对象的描述,类是支持继承的抽象数据类型,而对象就是类的实例。

  5. 什么是“封装(encapsulation)”?
    把数据和实现操作的代码集中存放在对象内部,外界不能直接访问和修改这些数据和代码,外界通过该对象提供的接口进行访问。

  6. 什么是“继承(inheritance)”?
    继承是子类自动地共享全部基类中定义的数据和方法的机制。
    子类也可以有自己的特性。继承具有传递性。在程序执行期间,对对象某一性质的查找是从当前层次逐层向上进行的。

  7. 什么是“多态性(polymorphism)”?
    多态性是指子类对象可以在不同层次使用同名的方法,然而不同层次中的每个类却各自按照自己的需要来实现这个具体行为。

  8. 什么是“重载(overload)”?
    函数重载是指在同一作用域内若干个参数特征不同的函数可以使用相同的函数名。如fun(int a ); fun (float a);
    运算符重载是指在同一个运算符施加不同类型的操作数。如 1+'a' ; 1.0+1;

  9. 什么是模型?开发软件为何需要建模?
        模型是为了理解事物而作出的一种抽象,是对事物的一种无歧义的书面描述。模型可以帮助人们更加透彻地理解问题,方便后续解决问题。
        建模:对于特别复杂而不能直接理解的系统,需要使用建模减少系统的复杂程度,方便开发人员处理信息。

  10. 用面向对象方法开发软件时需要建立3种模型:
    对象模型:描述系统数据结构
    动态模型:描述系统控制结构
    功能模型:描述系统功能

  11. 什么是对象模型?建立对象模型时主要使用哪些图形符号?
    对象模型表示静态的、结构化的系统的“数据”结构,它是对对象和对象之间联系的映射。
    通常使用UML的类图来建立对象模型。类图描述类与类之间的静态关系,是一种静态模型。
    类图中的属性/服务的可见性有3种:公有的(public)、私有的(private)、保护的(protected)
    类与类之间的关系有4种:关联、泛化(继承)、依赖、细化。

  12. 什么是动态模型?建立动态模型时主要使用哪些图形符号?
    动态模型表示瞬时的、行为化的系统的“控制”结构,规定了对象模型中的对象的合法变化序列。各个对象相互触发就形成了系列的变化序列。
    通常使用UML的状态图来建立状态模型。状态图描绘对象的状态、触发事件和对象的响应。

  13. 什么是功能模型?建立功能模型时主要使用哪些图形符号?
    功能模型表示变化的系统的“功能”性质,指明系统“应该做什么”,直接反应用户需求。
    通常使用数据流图来建立功能模型,也可以使用UML的用例图;用例图中的元素包括系统、行为者、用例、用例间的关系。
    用例是行为者可以感受到的、系统的一个完整功能,用例是一个类,代表了一类功能。

  14. 什么是用例模型?为什么要使用用例模型代替功能模型?
        使用UML的用例图进行需求分析和建立功能模型的系统称为用例模型,用例模型描述的是外部行为者所理解的系统功能,是开发者和用户对需求规格所达成的共识。
        当软件系统的用户数量庞大时,每个用户只知道自己如何使用系统,没有人能准确知道系统的整体运行情况,使用用例模型代替功能模型能更好地获取用户需求,它回答了“系统应该为每个用户做什么”。

面向对象分析

  1. 3个模型4个子系统5个层次:
    面向对象开发时3种模型:对象模型、动态模型、功能模型
    目标系统的4个组成子系统:人机交互子系统、问题域子系统、任务管理子系统、数据管理子系统。
    大型、复杂的对象模型的5个层次组成:主题层、类与对象层、结构层、属性层、服务层
  2. 什么是分析模型?
        分析模型是系统分析员同用户及专家交流时有效的通信手段 ,一个好的分析模型应该正确全面反映问题的本质属性,且不包含与问题无关的内容、不涉及具体实现。

面向对象设计

  1. 面向对象设计应该遵循哪些准则?
    抽象:类是一种抽象数据类型,对外提供开放的公共接口,外界可以使用接口对数据进行操作,支持过程抽象、数据抽象、参数抽象。
    模块化:对象就是模块,它把数据结构和操作紧密结合
    可重用:重用已有的类、新建可以重用的类,提高开发的生产率和软件质量。
    信息隐藏:封装实现,类结构分离了外部接口与内部实现。
    强内聚低耦合:模块之间相互影响降到最低,模块内元素之间紧密结合。

     
  2. 为什么说类构件是目前比较理想的可重用软构件?它有哪些重用方式?
        类构件满足可重用软构件所要求的特点,因为类构件同样具有模块独立性强,高度可塑性,接口清晰、简明、可靠的特点。
        重用方式:实例重用、继承重用、多态重用

面向对象实现

  1. 软件测试的经典策略?
           从“小型”测试开始,逐步过渡到“大型测试”,即从单元测试开始,逐步进入集成测试,最后进行确认测试和系统测试。
            
  2. 测试面向对象软件时,单元测试、集成测试、确认测试有哪些新特点?
        面向对象的单元测试中,最小测试单元变为了封装起来的类和对象,不能再像传统一样孤立地测试单个操作,应该把操作看成类的一部分,测试整个类。
        面向对象的集成测试中,因为层次间的控制结构已经不存在,所以传统的一次集成没有意义,应该基于线程测试(把某个事件响应的所有类集成起来并测试)、基于使用测试(首先测试独立类,再测试依赖类)。
        面向对象的确认测试中,和传统差不多,检查用户可见的动作和输出。

软件项目管理

  1. 软件规模的估算方法有哪些?
        代码行定量估算、功能点技术
  2. 进度计划管理方法有哪些?
        估算开发时间、Gantt图、工程网络图、估算工程进度、关键路径、机动时间。
  3. 什么是软件质量?影响软件质量的因素有哪些?
    软件质量是软件与明确的、隐含的需求相一致的程度。
        正确性、健壮性、效率、安全性、可用性、可理解性、可维护性、可移植性、可测试性、可重用性等。
  4. 什么是软件质量保证?有哪些措施?
        软件质量保证(software quality assurance,SQA):正式技术复审(走查、审查)、软件测试程序正确性证明。复审主要用于在编码之前对各阶段产生的文档的质量进行检查;基于执行的软件测试是在编码之后进行的,是确保软件质量的最后一道防线;程序的正确性证明使用数学方法严格验证程序是否与规格说明一致。
第1章 软件工程学概述 文章目录1.1 软件危机1.1.1 软件危机的介绍1.1.2 产生软件危机的原因1.1.3 消除软件危机的途径1.2 软件工程1.2.1 软件工程介绍1.2.2 软件工程基本原理1.2.3 软件工程方法学1.3 软件生命周期1.4 软件过程1.4.1 瀑布模型1.4.2 快速原型模型1.4.3 增量模型1.4.4 螺旋模型1.4.5 喷泉模型1.4.6 Rational统一过程1.4.7 敏捷过程与极限编程1.4.8 微软过程1.5 小结 1.1 软件危机 1.1.1 软件危机的介绍 1.1.2 产生软件危 阅读详情

相关推荐

第1章 软件工程学概论

目录 1.1软件危机 1.1.1软件危机的介绍 1.1.2产生软件危机的原因(2个) 1.2软件工程 1.3软件生命周期(三个时期八个阶段) 1.4软件过程 1.4.1瀑布模型 1.4.2快速原型模型 1.4.3增量模型 1.4.4螺旋模型 1.4.5喷泉模型 1.4.6 Rational统一过程 1.1软件危机 1.软件的定义:软件是计算机系统中与硬件相互依存的一部分,他是包括程序(Program)、数据(Data)及其相关文档(Document)的完整集合。即软件=程序+数据

qq_63505430的博客 925

【软件工程】一篇入门软件工程

软件工程包括什么项目管理层面的内容技术研发层面的内容软件工程学范畴内的知识点了解软件工程(用工程方法、工程思想完成软件开发)的实际操作流程了解工程问题如何解决采用高质量的环境及工具,使软件能够按照某种能够反映软件开发规律的规范/模式来开发。研究规范/模式。这个规范/模式能够体现软件开发过程的自然规律,并通过遵循开发过程的自然规律达到提升软件质量/开发效率的效果。从词汇本意出发软件工程= 软件+工程定义一:用系统化、工程化方法解决软件开发问题从问题论角度出发。

十二月的猫 1万+

一、软件工程学概述

指在计算机软件的和过程中所遇到的一系列严重问题。:1 对软件开发成本和进度的估计常常很不准确。2. 用户对“已完成”的软件系统不满意的现象经常发生。3. 软件产品的质量往往靠不住。4. 软件常常是不可维护的。5. 软件通常没有适当的文档资料。6. 软件成本在计算机系统总成本中所占的比例逐年提升。7. 软件开发生产率提高的速度,远远跟不上需求。:1软件本身的特点有关2软件开发和维护的方法不正确(忽视需求分析,轻视软件维护)3面对日益增长的软件需求,人们显得力不从心。......

qq_53906512的博客 486

软件工程—软件工程学概述

软件工程(software):是指导计算机软件开发和维护的一门工程学科

weixin_58548978的博客 847

软件工程——第1章软件工程学概述知识点整理

软件工程导论第1章软件工程学概述主要知识点整理

人生处处是围城,一切都是最好的安排! 3522

深入STM32 USB OTG FS:从官方MSC例程到实战双存储设备移植全记录

本文详细解析了STM32 USB OTG FS在双存储设备开发中的实战应用,从协议栈底层机制到SD卡/SPI Flash同步挂载的实现。通过优化SDIO接口和SPI Flash驱动,结合USB MSC类的关键实现,提供了完整的解决方案和性能优化策略,适合嵌入式开发者参考。

weixin_28366475的博客 368

软件工程专业介绍(非常详细)零基础入门到精通,收藏这一篇就够了_软件工程 专业认知

小编估计,以后计算机会烂大街,成为英语,驾照一样的技能,普通人都会的技能,甚至是未来社会评判是否文盲的标准(文盲标准一直提升,从建国初的认识字,到后来的会写字,会算数,会英语,会开车,会使用智能手机,会计算机编程,会人工智能应用)。比如,以前的塞班工程师。所以,真正的程序员,周末,晚上都是在自学,在编程学习。工作环境一般都很棒,大公司,比如TX这种巨无霸,一套升降桌椅价值过万,地面有地毯,公司有咖啡机,冷热水,几栋楼都是腾讯自己盖的,在深圳总部,甚至有个岛,里面都是TX的办公大楼,俗称企鹅岛。

2401_84618514的博客 6079

VSCode关联VIVADO编辑Verilog

有时候接手别人的代码,或者从网上找的开源代码,每个人风格不一致,对齐缩进也不一样,阅读起来很累。有没有什么方法能快捷地格式化代码呢。下面我们利用VSCode插件来实现这个需求。Vivado是Xilinx公司提供的逻辑开发平台(之一),如果不喜欢Vivado自带的文本编辑器,可以选择第三方的文本编辑器VSCode。

小王在努力...的博客 7150

软件工程专业介绍(非常详细)零基础入门到精通,收藏这一篇就够了

软件工程专业的学习内容相当丰富,涵盖了从基础知识到专业技能的多个方面。以下是对软件工程专业全部课程的详细归纳:一、公共基础课程● 高等数学:包括微积分、线性代数、概率论与数理统计等,为后续的专业课程提供数学基础。● 大学外语:提高外语能力,为阅读外文文献和进行国际交流打下基础。● 马克思主义理论:学习马克思主义的基本理论和思想,培养正确的世界观和价值观。● 大学物理及其实验:了解物理学的基本知识和实验技能,为理解计算机硬件和软件工程中的物理原理提供基础。二、专业基础课程。

2301_76225313的博客 2880

局域网tcp通信实验

IPv4 地址 . . . . . . . . . . . . : 192.168.92.79。IPv4 地址 . . . . . . . . . . . . : 192.168.92.59。子网掩码 . . . . . . . . . . . . : 255.255.255.0。子网掩码 . . . . . . . . . . . . : 255.255.255.0。使用这篇文章的小工具。

weixin_51883798的博客 433

计算机考研408复试题汇总

TCP连接是全双工的,两端都可以先挥手 其中一端完成数据发送任务后,发送一个FIN包来终止,另一端针对这个FIN包回复确认包, 直到另一端也发送请求终止数据包FIN,另一端作出确认应答,并且还要发送一个ACK=1表示确认号有效,如果没有收到这个就可以进行重传.

ca1m4n的博客 1万+

软件工程学复习笔记

软件工程期末考试复习笔记

weixin_51277037的博客 5940

FPGA资料分享——FPGA开发板入手指南

FPGA学习,开发板怎么选,看这里,就一个通透

weixin_51627076的博客 7297

软件工程学概述

软件工程导论 第一章

don_the_in的博客 793

《FreeRTOS 入门与实战》第2章:开发环境搭建(实战)

STM32CubeIDE工程创建与FreeRTOS移植J-Link调试环境搭建SystemView可视化跟踪配置。

2301_79143213的博客 1733

【DRAM存储器二】Sense Amplifier

详述DRAM颗粒中感应放大器功能、电路结构、工作原理和操作波形

highman110的博客 7199

985复旦大学,软件工程学硕停止招生!

复旦大学位于上海市,是一所985大学,计算机学科评估B+,软件工程学科评估B+,仅仅是985中的中游水平。但是由于学校本身实力很强,名气很大,因此每年也吸引很多同学报考。复旦大学主要有计...

计算机与软件考研 2490

2025华为杯第二十二届中国研究生数学建模竞赛C题:围岩裂隙精准识别与三维模型重构 - 完整解题分析+完整MATLAB源码!(下篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1619

软件工程学之软件过程(软件工程实践之二)

软件工程学之软件过程                        --------软件过程及过程模型                                 作者:Make 发表时间:2005-06-27导读1.概述2.软件工程再定义3.软件工程与软件过程4.软件过程模型5.过程模型关系图示 一、概述软件过程-我很喜欢的解释就是软件从最初想法到使用灭亡的一个过程。那么很自然人们就会想到,

6441

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

用于防御系统的软件工程学新方法

用于防御系统的软件工程学新方法: Detail:用于防御系统的软件工程学新方法[@more@] ...

64

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

软件工程学基础(初学 连载中)

第一章 软件工程学概述 第一节 软件危机 一. 软件· 定义: 软件: 软件包括程序·相关数据·说明文档; 程序:按事先设计的功能和性能要求执行的指令序列; 数据:是使程序能正常操纵信息的数据结构; 文档:是与程序开发、维护和使用有关的图文材料。 二. 软件· 特点: 软件是一种逻辑实体,具有抽象性; 软件是开发的,而不是制造的; 在软件的运行和使用期间,没有硬件那样的机械磨损,老 化问题...

weixin_44800962的博客 631

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

软件工程(一)软件工程学简述

在了解软件工程之前,我们首先要明白一个很重要的问题 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。简而言之,可以表述为 软件 = 程序 + 数据 + 文档 软件危机 它的起因: 软件需求量增加,规模也日益增加,带来了它的复杂度的增加,质量难以保证 大型软件的开发费用经常超出预算,完成时间也常常脱期 软件维护费用上升...

低吟不作语的博客 1277

【软件工程】第一章 软件工程学概述

2、必须把软件的体系结构设计的便于按照这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。2、面向对象方法学:把数据和行为看成是同等重要的。2、软件工程是a.把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件b.研究a中提到的途径。:是快速建立起来的一个可以在计算机上运行的程序,她所完成的功能往往是最终产品能完成的功能的一个子集。1、软件工程是为了经济的获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。

m0_62995855的博客 510
上一篇: 数据库系统(4)
下一篇: 计算机组成原理
Valois
博客等级 码龄8年 74粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值