精华内容
下载资源
问答
  • 数据流图(DFD:Data Flow Diagram)就是组织中信息运动的抽象,是信息逻辑系统模型的主要形式。这个模型不涉及硬件、软件、数据结构与文件组织,它与对系统的物理描述无关,只是一种图形及与此相关的注释来表示...
  • 数据流图(DFD:Data Flow Diagram)就是组织中信息运动的抽象,是信息逻辑系统模型的主要形式。这个模型不涉及硬件、软件、数据结构与文件组织,它与对系统的物理描述无关,只是一种图形及与此相关的注释来表示...
  • 数据流图(DFD:Data Flow Diagram)就是组织中信息运动的抽象,是信息逻辑系统模型的主要形式。这个模型不涉及硬件、软件、数据结构与文件组织,它与对系统的物理描述无关,只是一种图形及与此相关的注释来表示...
  • 软件工程

    2021-03-22 10:07:17
    1、什么软件工程?基本原理有哪些? 软件工程是指导计算机软件开发和维护的工程学科。 分阶段的生命周期计划管理、...出定货系统基本数据流图符号描绘信息在系统中流动的情况,源点、终点、处...
    1、什么是软件工程?基本原理有哪些?
     

    软件工程是指导计算机软件开发和维护的工程学科。

    用分阶段的生命周期计划管理、坚持阶段评审、实行严格产品控制、采用现代设计技术、结果审查、开发小组人员少而精、并不断改进方法。

    2、成本_效益分析可用哪些指标进行度量?(写出公式)
     

    可用投资回收期、纯收入、投资回收率指标,通过 P=F/(1+i)n计算求得。

    3、什么是数据流图?其中的基本符号各表示什么含义?画出定货系统基本数据流图。
     

    用符号描绘信息在系统中流动的情况,源点、终点、处理、数据存储、数据流。

    4、非渐增式测试与渐增式测试有什么区别?
     

    两种都用于集成测试。渐增式是把下一个要测试的摸块同已经测试好的模块结合起来进行测试,每次增加一个模块。非渐增式先分别测每个模块,再把所有模块按设计要求放在一起结合成所要的程序。

    5、试从基本符号和设计方法分析 HC 图与 JACKSON 图异同点
     

    HC 图是面向 DFD,而 JACKSON 图是面向数据结构的。符号省略。

    6、软件测试的目的是什么?
     

    测试的目的是为了发现错误.

    7 结构化程序设计的思想是什么?
     

    自上而下,逐步求精

    8、请解释极限编程和自适应软件开发,并说明其异同?
     

    极限编程和自适应软件开发都属于敏捷过程模型。极限编程是应用最广泛的敏捷过程。按照计划、设计、编码和测试四个框架活动组织。极限编程建议一系列新颖和有力的技术,保证敏捷团队创建能力体现客户指定优先级特征和功能的频繁软件开发。自适应软件开发强调人的合作和团队的组织,按思考、协作和学习的三个框架活动组织,其使用迭代过程。该过程由自适应循环计划、相对严格的需求收集方法和一个迭代开发循环构成。

    9、需求工程的起始阶段,需求工程师的主要工作是?
     

    需求工程的起始阶段,工程师的主要工作为:

    1)建立基本的问题需求

    2)定义最重要的项目约束以及陈述主要的特征和功能

    3)与共利益的各方建立基本的谅解

    10、请画出“在餐厅使用信用卡付费”这一活动的完整用例图?(略)
         
     
    11、 分析说明结构化分析和面向对象分析的区别?
     

    分析建模的目标是创建各种表现形式,以描述软件信息、功能和行为的需求。为实现这一目标,可采用结构化分析和面向对象分析方法。结构化分析把软件看作信息装换器,辅助软件工程师识别数据对象、对象间的联系以及这些数据对象流经软件处理功能时转换的方式。面向对象分析就是检查定义为一组用例的问题域,尽量提取定义问题的类。

    12 请简要给出评价软件设计质量的标准?
     

    评价软件设计质量的标准如下:

    1)设计必须实现所有包含在分析模型中的明确需求,以及用户期望的所有隐含需求

    2)对于那些生成代码的人和那些进行代码测试以及随后维护软件的人而言,设计必须是可读、可理解的指南

    3)设计必须提供软件的全貌,从实现的角度水明数据域、功能域和行为域

    13、一个良好的设计类需要满足四个特点,请详细描述这四个特点?
     

    答:一个良好的设计类需要满足:

    1)完整性和充分性

    2)原始性

    3)高内聚性

    4)低耦合性

    14、面向对象设计的准则是什么?
     

    准则:模块化、抽象、信息隐蔽、高内聚、低耦合、可重用

    15、简述软件工程目标和面临的主要问题。

    目标:支付较低的开发成本、达到要求的软件功能、获取较好的软件性能、开发的软件易于移植、需要较低的维护费用、能按时完成开发任务,几时交付使用、开发的软件可靠性高

    面临的主要问题是:软件费用 软件可靠性 软件维护 软件生产率 软件重用。

    16、简述软件工程过程。
     

    软件工程过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。软件工程过程通常包含四种基本的过程活动:

    P(Plan):软件规格说明。规定软件的功能及其运行的限制;

    D(Do):软件开发。产生满足规格说明的软件;

    C(Check):软件确认。确认软件能够完成客户提出的要求;

    A(Action):软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。

    事实上,软件工程过程是一个软件开发机构针对某一类软件产品为自己规定的工作步骤,它应当是科学的、合理的,否则必将影响到软件产品的质量。

    17、简述模块独立性的原则。
     

    模块独立性是指软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的模块独立性的概念是模块化、抽象、信息隐蔽和局部话概念的直接结果由耦合和内聚 2 个标准度量

    18、简述结构化程序设计方法的基本要点
     

    1.采用自顶向下,逐步求精的程序设计方法 在需求分析,概要设计中,都采用了自顶向下,逐层细化的方法。

    2.使用三种基本控制结构构造程序 任何程序都可由顺序、选择、重复三种基本控制结构构造。

       1)用顺序方式对过程分解,确定各部分的执行顺序。

       2)用选择方式对过程分解,确定某个部分的执行条件。

       3)用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。

       4)对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。

    3. 主程序员组的组织形式

    19、简述软件生命周期开发方法的基本过程及每个阶段的任务。
     

    (1)问题定义阶段,尽可能清楚地描述问题,搞清楚要解决的问题是什么;

    (2)可行性研究阶段,主要是确定待解的问题是否有可行的解决办法。需要做经济可行性分析、技术可行性分析、操作可行性分析和法律可行性分析;

    (3)需求分析阶段,主要是确定目标系统必须具备的功能。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。

    (4)总体设计阶段,从总体上解决问题,确定可实现的方案,并设计出软件的层次结构图;

    (5)详细设计,把解法具体化,确定如何具体地实现这个系统。针对每个模块设计相应的算法;

    (6)编码和单元测试阶段,把详细设计的结果翻译成选定的语言所写的程序,并对每个模块进行单元测试。

    (7)测试阶段,系统地设计测试用例,尽可能多地发现软件中的错误,并调试改正软件中的错误;

    (8)软件维护阶段,主要目的是通过修改软件使所开发的软件能够持久地满足用户的需要。

    20、复印机的工作流程大致如下:
     

    未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作又回到闲置状态,等待下一个复印命令:如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。试用状态转换图描绘复印机的行为。

    从问题陈述可知,复印机的状态主要有闲置、复印、缺纸和卡纸。引起状态转换的事件主要是复印命令、完成复印命令、发现缺纸、装满纸、发生卡纸故障和排除了卡纸故障

     
    21、简述文档在软件工程中的作用。
     

    1、提高软件开发过程的能见度

    2、实现对软件开发的工程管理

    3、提高开发效率

    4、作为开发人员在一定阶段的工作成果和结束标志

    5、提供软件运行、维护和培训有关资料

    6、记录开发过程中有关信息便于协调以后的软件开发使用和维护

    7、便于用户了解软件功能、性能。

    22、简述系统分析员应该具备的主要知识结构和基本素质。
     

    系统分析员应该既是信息系统专家,又是企业管理专家,同时还应该是优秀的领导者。系统分析员应该具有的知识结构为:首先应该具有深入扎实的信息系统方面的专业知识和实践经验, 即他们必须具有计算机软硬件的知识和开发应用的实践经验,以及信息处理,包括MIS、网络、通讯、数据库等方面的知识和实践经验;其次,应该具有经济管理或企业管理方面较丰富的理论知识和实践经验; 同时应该具有优秀领导者的素质、才能和领导艺术,在信息系统开发的实践中不断丰富自己、提高自己,使自己的知识结构更趋于合理。

    23、简述何谓软件开发方法?请列举四种主要方法。
     

    软件开发方法是一种使用定义好的技术集和符号表示组织软件生产的过程。

    结构化方法、jackson 方法、维也纳开发方法、面向对象开发方法

    24、简述单元测试的基本内容。
     

    测试构造软件系统的模块(对象和子系统)

    模块接口:主要检查数据能否正确通过模块;属性及对应关系是否一致

    局部数据结构:说明不正确或不一致;初始化或缺省值错误;变量名未定义或拼写错误;数据类型不相容;上溢下溢或地址错误等

    重要的执行路径:重要模块要进行基本路径测试,仔细地选择测试路径是单元测试的一项基本任务

    错误处理:主要测试程序对错误处理的能力,应检查是否不能正确处理外部输入错误或内部处理引起的错误;对发生的错误不能正确描述的内容,难以理解;在错误处理之前,系统已经进行干预等

    边界条件:程序最容易在边界上出错,如输入输出数据的等价类边界,选择条件和循环条件的边界,复杂数据结构的边界等都应进行测试

    25、什么是软件生存周期模型?请至少列举四种主要模型?
     

    软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。软件生存周期模型确立了软件开发和演绎中各阶段的次序限制以及各阶段或机动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调,便于各种人员的有效通信,有利于活动重用,有利于活动管理。

    常见的软件生存周期模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。

    26、衡量模块独立的两个标准是什么?它们各表示什么含义?
     

    两个定性的度量标准:耦合与内聚性

    耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。

    内聚性:也称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。模块内元素联系越紧密,内聚性越高。

    27、简述白盒测试的思想,并列举两种典型的测试技术。
     

    白盒测试又称结构测试,它把测试对象看作一个透明的盒子。测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态和预期的状态是否一致

    典型测试技术:逻辑驱动、基本路径测试等。

    28、简述 CMM(软件能力成熟度模型)5 个等级的含义?
     

    第一级 基本集 -- 软件工程是混乱无序的,对工程几乎没有定义,成功依靠的是个人的才能和经验,管理方式属于反应式

    第二级 重复级 --  建立了基本的项目管理来跟踪进度。费用和功能特征,制定了必要的项目管理,能够利用以前类似的项目应用取得成功

    第三级 确定级 --  已经将软件管理和过程文档化,标准化,同时综合成该组织的标准软件过程,所有的软件开发都使用该标准软件

    第四级 管理级 --  收集软件过程和产品质量的详细度量,对软件过程和产品质量有定量的理解和控制。

    第五级 优化级 --  软件过程的量化反馈和新的思想和技术促进过程的不断改进

    29、简述软件维护的定义
     

    在软件运行或维护阶段对软件产品所进行的修改,这些修改可能是改正软件中的错误,也可能是增加新的功能以适应新的需求,但一般不包括软件系统结构上的重大改变。

    30、简述软件测试的定义
     

    广义:软件产品生存周期内所有的检查评审和确认活动

    狭义:对软件产品质量的检验和评价,一方面检查软件产品质量中存在的质量问题同时对产品质量进行客观的评价。

    31、 UML 建模中主要包括哪九种图?并说明类图的定义及其中常见的关系有哪些?
     

    用例图 类图 对象图 状态图 顺序图 协作图 活动图 组件图 分布图

    类图描述系统的的静态结构。表示系统中类、类与类之间的关系以及类的属性和操作。

    常见关系:关联(分为聚合和组合)、范化、依赖、实现

     
    32、什么是字据字典?其作用是什么?它有哪些条目?
     

    数据字典是用于定义数据流图中的各个成分的具体含义。它以一种准确的无二义的说明方式为系统的分析设计及维护提供了有关元素的一致的定义和详细的描述

    有 4 类条目:数据流、数据存储、数据项和加工。

    33、软件工程的两大范型分别是什么?它们有什么不同?
     

    分别是传统的结构化范型和面向对象范型。结构化范型要么面向行为要么面向数据,但没有既面向数据又面向行为的;而面向对象范型把数据和行为看成同等重要,即将对象视作一个融合了数据及在其上操作的行为的统一的软件组件。面向对象相对于结构化技术,无论对象的内部细节如何变化,只要对象提供的方法即接口保持不变,则整个软件产品的其他部分就不会受到影响,不需要了解对象内部的变化。

    34、如何画分层数据流图?
     

    第一步,画子系统的输入输出:把整个系统视为一个大的加工,然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到那些外部实体,就可以画出输入输出图。这张图称为顶层图。

    第二步,画子系统的内部:把顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。这张图称为 0 层图。从一个加工画出一张数据流图的过程就是对加工的分解。

    35、面向对象程序设计有哪些优点?
     

    1)易维护采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。

    2)质量高在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。

    3)效率高在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。

    4)易扩展由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。

    36、在软件测试中,应注意哪些原则?
     

    1)认真执行测试计划

    2)“尽早和不断地进行软件测试/评审”

    3)优选测试工具、技术和方法

    4)精心设计测试用例

    5)交叉进行软件检测

    6)重点测试群集现象

    7)全面检查并分析测试结果

    8)妥善保管测试文档

    37、程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。要从哪几个方面进行注意?
     

    要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。

    38、面向对象分析与面向对象设计的关系?
     

    面向对象分析与面向对象设计的任务相同,面向对象分析的结果可以作为开始面向对象设计的模型,面向对象的设计结果可以作为蓝图,利用面向对象编程方法最终实现一个系统。

    39、成本-效益分析的目的是什么?可用哪些指标进行度量?
     

    成本/效益分析的目的是从经济角度论证开发一个特定的新系统开发是否划算,是决定是否投资开发新系统的依据。

    (1)货币的时间价值:货币的价值本身随时间的增加而产生增值

    (2)投资回收期:累计的经济效益等于最初的投资所需的时间。

    (3)纯收入:在整个生存周期内系统的累计经济效益(折合现在的钱)与投资之差。

    (4)投资回收率----投资的年利率

    40、软件设计分哪几个阶段,它们的主要任务是什么?
     

    软件设计可以分为概要设计和详细设计两个阶段。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。

    41、用户需求和系统需求各有什么特点?
     

    用户需求是从用户角度来描述系统功能和非功能需求,以便让不具备专业技术方面知识的用户能看懂。 用户需求是描述系统的外部行为,用自然语言、图表和直观的图形来叙述。系统需求是比用户需求更详细的需求描述,是系统实现的基本依据,因此,是一个完全的、一致的系统描述,是软件工程人员系统设计的起点。

    系统需求描述可能包括许多不同的模型,如对象模型和数据流模型。

    42、面向对象设计的准则?
     

    1)模块化

    2)抽象

    3)信息隐藏

    4)弱耦合

    5)强内聚

    6)可重用

    43、需求分析过程主要有哪几个步骤?
     

    需求分析过程主要有沟通、导出需求、分析与精化、可行性研究、协商与沟通、规格说明、需求验证、变更管理等步骤。

    44、软件设计分哪几个阶段,它们的主要任务是什么?
     

    总体设计——概要设计、软件结构设计、高层设计,仔细地分析需求规格说明,研究开发产品的模块划分。

    详细设计——(模块)过程设计、低层设计,为结构设计中的各个模块设计过程细节,确定模块所需的算法和数据结构等。

    设计测试——测试和复审,确保设计的正确和优化。

    45、什么是软件结构图?
     

    软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。

    46、面向对象方法的特点是什么?为什么要用面向对象方法开发软件?
     

    面向对象方法的特点是:

        方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。 从生存期的一个阶段到下一个阶段的高度连续性,即生存期后一阶段的成果只是在前一阶段成果的补充和修改。

        把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段。

    使用面向对象方法开发软件的好处是: 开发方法的唯一性,开发阶段的高度连续性,表示方式的一致性;问题空间实体的自然表示,减轻了设计者的负担,在设计系统之初不必考虑一个很完整的解决方案。建立稳定的系统结构,可促进复用性,易于维护,易于修改,可合理利用共同性,减少复杂性。

    47、什么是编码风格?请根据自己的编程经验编写一个编程注意事项。
     

    编码风格是指一个人编制程序时所表现出来的特点、习惯和逻辑思路等。

    注意事项:源程序文档化、数据说明、语句构造、输入输出、追求效率等。

    1)源程序文档化

        (1)标识符应按意取名。

        (2)程序应加注释。

    2)数据说明原则

       (1)数据说明顺序应规范,使数据的属性更易于查找,从而有利于测试、纠错与维护。例如按以下顺序:常量寿命、类型说明、全程量说明、局部量说明。

       (2)一个语句说明多个变量时,各变量名按字典序排列。

       (3)对于复杂的数据结构,要加注释,说明在程序实现时的特点。

    3)语句构造原则:简单直接,不能为了追求效率而使代码复杂化

    4)输入输出原则

      (1)输入操作步骤和输入格式尽量简单。

      (2)应检查输入数据的合法性、有效性,报告必要的输入状态信息及错误信息。

      (3)输入一批数据时,使用数据或文件结束标志,而不要用计数来控制。

      (4)交互式输入时,提供可用的选择和边界值。

      (5)当程序设计语言有严格的格式要求时,应保持输入格式的一致性。

      (6)输出数据表格化、图形化。

    5) 追求效率原则

      (1)效率是一个性能要求,目标在需求分析给出。

     (2)追求效率建立在不损害程序可读性或可靠性基础上,要先使程序正确,再提高程序效率,先使程序清晰,再提高程序效率。

    48、软件生命期各阶段的任务是什么?
     

    软件生命期分为 7 个阶段:

    1、问题定义:要解决的问题是什么

    2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性

    3、需求分析:系统必须做什么

    4、总体设计:系统如何实现,包括系统设计和结构设计

    5、详细设计:具体实现设计的系统

    6、实现:编码和测试

    7、运行维护:保证软件正常运行。

    49、非渐增式测试与渐增式测试有什么区别?
     

    (1)非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试往往把单元测试与集成测试和在一起,同时完成。

    (2)非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。

    (3)渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。

    (4)渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。

    (5)渐增式比较彻底,已测试的模块和新的模块再测试。

    (6)渐增式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。

    (7)非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。

    50、模块间的耦合性有哪几种?(耦合度由高到低)
     

    (1) 内容耦合

    (2) 公共耦合

    (3) 外部耦合

    (4) 控制耦合

    (5) 标记耦合

    (6) 数据耦合

    (7) 非直接耦合

    51、软件开发步骤包括哪些过程?
     

    需求分析--解决系统做什么的问题

    概要设计--解决系统怎么做

    详细设计--每个模块内部过程的描述具体化 设计软件详细规格说明书

    编码设计--根据详细设计说明书 写出程序模块

    系统测试--发现和排除错误 写出软件测试报告

    52、数据字典有哪几类元素构成?
     

    数据流,在一个数据流中数据以数据流为单位进行传输

    数据元素,也称数据项,数据的最小单位

    数据存储,数据保留或保存的地方处理,一段程序

    外部实体,系统的人机界面,数据流从外部实体流入,又从系统向外部实体流出

    53.大型软件系统的设计思想是什么?
     

    一个大型的软件系统是变换型结构和事务型结构的混合结构,通常采用变幻设计为主,事物设计为辅的方式进行软件结构设计,以达到高内聚低耦合,具有独立性,便于修改的目的。

    54、数据库设计一般分为哪几个阶段?形成哪三种模式?
     

    数据库的设计分为四个阶段:需求分析,概念设计,逻辑设计,物理设计。

    形成概念模式,内模式,外模式三种模式。

    55、什么是软件危机?其产生的原因是什么?
     

    当软件开发技术跟不上硬件技术的进步,不能满足开发的要求时,导致软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,从而导致了软件危机。

    原因:1 软件的规模越来越大,结构越来越复杂。2 软件开发管理困难且复杂。3 软件开发费用不断增加。4 软件开发技术落后。5 生产方式落后。6 开发工具落后,生产效率缓慢。

    56、概要设计的原则?
     

    概要设计的原则的基本思想是:模块化设计,自顶向下逐步求精,模块独立性,信息隐蔽性。模块化就是将程序划分成若干模块,每个模块完成某个子功能,然后吧这些模块集合起来组成一个整体,可以完成指定的功能来解决问题的要求。自顶向下逐步求精是先设计顶层结构,在逐层向下设计。模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系少且接口简单, 独立性较强的模块应该是高内聚低耦合的模块。 信息隐蔽是指在设计和确定模块时,使得一个模块内包含的信息,对于不需要这些信息的其他模块来说是不能访问的。

    57、阐述结构化设计的主要思想?
     

    结构化设计方法是基于模块化,自顶向下逐步求精,结构化程序设计等程序设计技术发展起来的。结构化设计可以非常方便的进行数据流框图到软件架构的转换。在结构化设计中,模块结构图能够表示出一个软件系统的层次分解关系,模块调用关系,模块之间数据流和控制信息流的传递关系,是结构化设计的主要工具。模块结构图是有数据流图转换而得到的。在将数据流图转换成软件结构之前,首先要进一步细化数据流图,然后对数据流图分类,确认是事务型还是变换型,不同的数据流图采用不同的设计过程。

    58、软件工程主要研究哪些领域?
     

    1.软件工程方法学。在软件开发生存周期全过程使用的一套技术的集合

    2.软件工具和软件支撑环境,软件工具是用来帮助开发,测试,分析维护其他计算机程序及其文档资料的一类程序。

    3.软件管理是软件工程中的一项非常重要的工作,许多软件项目的开发失败的主要原因就是管理不善。

    4.软件的规范与标准指软件开发过程中的作业标准化。

    59、简述容错技术的四种主要手段,并解释。
     

    结构冗余:包括静态冗余、动态冗余和混合冗余。

    信息冗余:为检测或纠正信息在运算或传输中的错误,须外加一部分信息。

    时间冗余:指重复执行指令或程序来消除瞬时错误带来的影响。

    冗余附加技术:指为实现上述冗余技术所需的资源和技术。

    60、以 G.J.Myers 的观点,简述对软件测试的目的。
     

    软件测试是(1)为了发现错误而执行程序的过程;(2)一个好的用例能够发现至今尚未发现的错误的测试。(3)一个成功的测试是发现至今尚未发现的错误的测试。

    61、就程序设计语言的工程特性而言,对程序编码有哪些要求?
     

    就程序设计语言的工程特性而言,对程序编码有如下要求:

    (1)可移植性 (2)开发工具的可利用性 (3)软件的可重用性 (4)可维护性

    62、模块的内聚性包括哪些类型?
     

    模块的内聚性包括: (1)偶然内聚(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚

    63、可行性研究报告的主要内容有哪些?
     

    一个可行性研究报告的主要内容如下:

    (1)引言:说明编写本文档的目的;项目的名称、背景;本文档用到的专门术语和参考资料。

    (2)可行性研究前提:说明开发项目的功能、性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。

    (3)对现有系统的分析:说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需要各类专业技术人员的数量;所需要各种设备;现有系统存在什么问题。

    (4)所建议系统的技术可行性分析:所建议系统的简要说明;处理流程和数据流程;与现有的系统比较的优越性;采用所建议系统对用户的影响;对各种设备、现有软件、开发环境、运行环境的影响;对经费支出的影响;对技术可行性的评价。

    (5)所建议系统的经济可行性分析:说明所建议系统的各种支出,各种效益;收益投资比;投资回收周期。

    (6)社会因素可行性分析:说明法律因素,对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。

    (7)其他可供选择方案:逐一说明其他可供选择的方案,并说明未被推荐的理由。

    (8)结论意见:说明项目是否能开发;还需要什么条件才能开发;对项目目标有什么变动等。

    64、系统设计的内容是什么?
     

    系统设计阶段先从高层入手,然后细化。系统设计要决定整个结构及风格,这种结构为后面设计阶段的更详细策略的设计提供了基础。

    (1)系统分解。系统中主要的组成部分称为子系统,子系统既不是一个对象也不是一个功能,而是类、关联、操作、时间和约束的集合。每次分解的各子系统数目不能太多,最底层子系统称为模块。

    (2)确定并发性。分析模型、现实世界及硬件中不少对象均是并发的。系统设计的一个重要目标就是确定哪些是必须同时动作的对象,哪些不是同时动作的对象。后者可以放在一起,而综合成单个控制线或任务。

    (3)处理器及任务分配。各并发子系统必须分配给单个硬件单元,要么是一个一般的处理器,要么是一个具体的功能单元,必须完成下面的工作:估计性能要求和资源需求,选择实现子系统的硬软件, 将软件子系统分配给各处理器以满足性能要求和极小化处理器之间的通信,决定实现各子系统的各物理单元的连接。

    (4)数据存储管理。系统中的内部数据和外部数据的存储管理是一项重要的任务。通常各数据存储可以将数据结构、文件、数据库组合在一起,不同数据存储要在费用、访问时间、容量以及可靠性之间做折中考虑。

    (5)全局资源的处理。必须确定全局资源,并且制定访问全局资源的策略。全局资源包括:物理资源,如处理器、驱动器等;空间,如盘空间、工作站屏等;逻辑名字,如对象标识符、类名、文件名等。如果资源是物理对象,则可以通过建立协议实现对并发系统的访问,以达到自身控制;如果资源是逻辑实体,如对象标识符,那么在共享环境中有冲突访问的可能,如独立的事务可能同时使用同一个对象标识符,则各个全局资源都必须有一个保护对象,由保护对象来控制对该资源的访问。

    (6)选择软件控制机制。分析模型中所有交互行为都表示为对象之间的事件。系统设计必须从多种方法中选择某种方法来实现软件的控制。

    (7)人机交互接口设计。设计中的大部分工作都与稳定的状态行为有关,但必须考虑用户使用系统的交互接口。

    65、什么是软件危机?软件危机的表现是什么?其产生的原因是什么?
     

    软件发展第二阶段的末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高,生产成本显著下降,这为计算机的广泛应用创造了条件。一些复杂的、大型的软件开发项目提出来了,但是,软件开发技术的进步一直未能满足发展的需要。在软件开发中遇到的问题找不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。

    软件危机表现在以下四个方面:

    (1)经费预算经常突破,完成时间一再拖延。由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。主观盲目制定计划,执行起来与实际情况有很大差距,使得开发经费一再突破。由于对工作量估计不足,对开发难度估计不足,进度计划无法按时完成,开发时间一再拖延。

    (2)开发的软件不能满足用户要求。开发初期对用户的要求了解不够明确,未能得到明确的表达。 开发工作开始后,软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,导致开发的软件不能满足用户的要求,因而导致开发失败。

    (3)开发的软件可维护性差。开发过程中没有同意的、公认的规范,软件开发人员按各自的风格 工作,各行其是,开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。程序结构不好,运行时发现错误也很难修改,导致维护性差。

    (4)开发的软件可靠性差。由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。造成软件危机的原因是: (1)软件的规模越来越大,结构越来越复杂。(2)软件开发管理困难而复杂。(3)软件开发费用不断增加。(4)软件开发技术落后。(5)生产方式落后。6)开发工具落后,生产率提高缓慢。

    66.软件质量保证应做好哪几方面的工作?
     

    软件质量保证是软件工程管理的重要内容,软件质量保证应做好以下几方面的工作:

    (1)采用技术手段和工具。质量保证活动要贯彻开发过程始终,必须采用技术手段和工具,尤其是使用软件开发环境来进行软件开发。

    (2)组织正式技术评审。在软件开发的每一个阶段结束时,都要组织正式的技术评审。国家标准要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。

    (3)加强软件测试。软件测试是质量保证的重要手段,因为测试可发现软件中大多数潜在错误。

    (4)推行软件工程规范(标准)。用户可以自己制定软件工程规范(标准),但标准一旦确认就应贯彻执行。

    (5)对软件的变更进行控制。软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件的修改和变更。

    (6)对软件质量进行度量。即对软件质量进行跟踪,及时记录和报告软件质量情况。

    67、软件复用是什么?
     

    是指在两次或多次不同的软件开发过程中重复使用相同或相似的软件元素。包括软件开发中的文档、设计过程、程序代码、测试用例等。

    68、Case 技术是什么?

    是一组工具和方法的集合,可以辅助软件生命周期各个阶段进行软件开发。一个完整的 CASE 系统支持所有的软件系统开发工作,它可以驻留在多种硬件平台上。

    69、请说明软件文档的作用?软件开发项目生存期各阶段都包含哪些文档?
     

    软件文档的作用是:提高软件开发过程的能见度;提高开发效率;作为开发人员阶段工作成果和结束标志;记录开发过程的有关信息便于使用与维护;提供软件运行、维护和培训有关资料;便于用户了解软件功能、性能。软件开发项目生存期各阶段应包括得文档以及与各类人员的关系如下:可行性研究报告、项目开发计划、软件需求说明书、数据要求说明书、测试计划、概要设计说明书、详细设计说明书、用户手册、操作手册、测试分析报告、开发进度月报、项目开发总结、程序维护手册(维护修改建议)。

    70、什么是数据字典?其作用是什么?它有哪些条目?
     

    数据字典(简称 DD)是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。他和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的,因此也像普通字典一样,要把所有条目按一定的次序排列起来,以便查阅。数据字典有以下四类条目:数据流、数据项、数据存储、基本加工。数据项是组成数据流和数据存储的最小元素。 源点、终点不在系统之内,故一般不在字典中说明。

    71、采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?
     

    (1)等价类划分。等价类划分是将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其它值的测试。

    (2)边界值分析。该方法是将测试边界情况作为重点目标,选取正好等于,刚刚大于或刚刚小于边界值的情况,根据这些情况选择测试用例。

    (3)错误推测。错误推测法没有确定的步骤,凭检验进行。它的基本思想是列出程序中可能发生错误的情况,根据这些情况选择测试用例。㈣因果图。因果图能有效的检测输入条件的各种组合可能会引起的错误。因果图的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。

    72、何谓软件生存周期?其可以划分为几个时期?每个时期又可分为几个阶段?每个阶段的主要任务是什么?
     

    一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存期也可以分为三个时期:计划时期、开发时期和运行时期。软件生存周期一般可分为以下几个阶段:

    (1)问题定义

    问题定义阶段必须回答的关键问题是“要解决的问题是什么?”,正确理解用户的真正需求。

    (2)可行性研究

    这个阶段要回答的关键问题是:对于上一个阶段所确定的问题“有行得通的解决办法吗?” ,可行性研究阶段应该导出系统的高层逻辑模型(通常用数据流图表示),准确地估计系统的成本和效益。

    (3)需求分析

    需求分析阶段的任务,主要是确定目标系统必须具备的功能,得出经用户确认的系统逻辑模型。根据该系统逻辑模型,准确地回答“为了解决这个问题,目标系统必须做什么”。

    (4)总体设计

    也叫概要设计或初步设计。这个阶段必须回答的是“概括地说,应该如何解决这个问题”。总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求。

    (5)详细设计

    详细设计阶段的任务是把解法具体化,也就是回答“应该怎样具体地实现这个系统”。详细设计亦即模块设计。它是在算法设计和结构设计的基础上,针对每个模块的功能、接口和算法定义,设计模块内部的算法过程及程序的逻辑结构,并编写模块设计说明。

    (6)编码

    这个阶段的任务,是根据详细设计的结果,选择一种适合的程序设计语言,把详细设计的结果翻译成程序的源代码。

    (7)测试

    以便尽早发现程序中的错误和缺陷而进行的一个过程,有单元测试、集成测试、确认测试和系统测试 4 种。

    (8)运行与维护

    通过各种必要的维护措施支持软件系统能持久地满足用户的需要。

    73、如何做好软件质量保证工作?
     

    软件质量保证工作是软件工程管理的重要内容,软件质量保证应做好以下几个方面的工作:

    <1>采用技术手段和工具。质量保证活动要贯彻开发过程始终,必须从采用技术手段和工具,尤其是使用软件开发环境来进行软件开发。

    <2>组织正式技术评审,在软件开发的第一个阶段结束时,都要组织正式的技术评审。国家标准要求单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来保证质量。

    <3>加强软件测试。软件测试是质量保证的重要手段,因为测试可发现软件可发现软件中大多数潜在错误。

    <4> 推选软件工程规范(标准)。用户可以自己指定软件工程规范(标准),但标准一旦确认就应贯彻执行。

    <5>对软件的变更进行控制。软件的修改和变更常常会引起潜伏的错误,因此必须严格控制软件的修改和变更。

    <6>对软件质量进行度量。即对软件质量进行跟踪,及时记录和报告软件质量情况。

    74、什么是软件工程?什么是软件危机?

    软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。软件危机指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

    75、软件的可行性研究主要研究哪些问题?并对此进行说明。
     

    可行性研究主要做四个方面的研究:①经济可行性:进行成本/效益分析。从经济角度判断系统开发是否“合算”。②技术可行性:进行技术风险评价。从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条件下成功的可能性。③法律可行性:确定系统开发可能导致的任何侵权、妨碍和责任。④方案的选择:评价系统或产品开发的几个可能的候选方案。最后给出结论意见。

    76、什么是黑盒测试,适用的方法有哪些?什么是白盒测试,适用的方法有哪些?
     

    黑盒测试是从用户观点,按规格说明书要求的输入数据与输出数据的对应关系设计测试用例,是根据程序外部特征进行测试。设计黑盒测试的技术主要有:等价划分、边界值分析、错误推测。

    白盒测试是根 据被测程序的逻辑结构设计测试用例,力求提高测试覆盖率。设计白盒测试的技术主要有:逻辑覆盖和控制结构测试。

    77、什么是软件维护?软件维护包括哪四类活动?
     

    软件维护是在软件交付使用之后,为了改正错误或满足新的需要而修改软件的过程。它包含改正性维护,适应性维护,完善性维护和预防性维护四类活动。

    78、请将下述有关模块独立性的各种模块内聚,按其内聚度(强度)从高到低排列起来。
     

    ① 巧合内聚

    ② 时间内聚

    ③ 功能内聚

    ④ 通信内聚

    ⑤ 逻辑内聚

    ⑥ 信息内聚

    ⑦ 过程内聚

    ③、⑥、④、⑦、②、⑤、①

    展开全文
  • 工作之后接触硬件相关的工作就很少了,不过看到各种硬件的板子还是有点小兴奋,看来还是很喜欢折腾这些的,自己焊接个板子,真的还挺开心。所以打算自己弄一点硬件玩玩纯粹当爱好了。 关于这个东西需要有什么...
  • 由于系统究竟包括哪些功能可能一时难于弄清楚可使范围尽量大一些把可能有的内容全部都包括进去此时应该向用户了解系统从外界接受什么数据系统向外界送出什么数据等信息然后根据用户的答复数据流图的外围 ...
  • 图表报告如果在数据分析到位之后可以做到漂亮的展现,肯定没有人会拒绝。所以,数据可视化愈加流行,当这个需求被广泛发酵,商家也会出产大量对...一是“艺术”能力,即知道什么样的数据用什么形式去表现最合适,该用柱
    图表报告如果在数据分析到位之后可以做到漂亮的展现,肯定没有人会拒绝。所以,数据可视化愈加流行,当这个需求被广泛发酵,商家也会出产大量对大众口味的产品。但是理智的消费者,是否可视化数据分析软件真的是我们需要的呢?
      所谓数据可视化是指把数据以图形动画以及地图等形式呈现出来,这样即直观又美观,要做好数据可视化,需要两方面的能力。一是“艺术”能力,即知道什么样的数据用什么形式去表现最合适,该用柱图时不能用饼图,颜色搭配也要合理,…;另一个是“技术”能力,设计好的呈现方案还要能真的做出来,并且要把成本控制在可接受范围内。我们此篇不深究艺术,从考察和选择可视化技术上介绍些常见误区,正确认识数据可视化与数据分析。

      误区1:选购报表品牌,挑可视化技术最好的?

      所有人都钟情可视化报表,那是否可视化数据分析软件就是最好的,就是毋庸置疑就该选的?这种想法对于大多数产品是正确的,但在考察报表工具的可视化技术就不是这样。

      随着技术的提升,可视化领域有一批无私奉献的团队在免费提供开源图形包(含动画、地图等),所以,集成了开源包的可视化产品在技术上没有差别,最终产品的技术差异还是在于比数据规整和传递手段等集成方案,和可视化技术本身没多大关系。

      可视化数据分析软件如果只是图形需求,那直接使用开源包也可以。不过可视化呈现常常需要图表混合,而开源包的报表能力一般很弱甚至没有,并且也要借助报表的格式和计算能力对原始数据做对齐整理,所以这时候要对比的还是报表工具本身的能力。

      为了可视化能力而去购买某种报表工具可以说是花冤枉钱。还有些可视化产品使用自己的技术而不是开源包,但丰富程度和开源包没法比,功能还要更弱,再考虑到价格,更是不值。

      误区2:厂商演示漂亮,我们就能漂亮?

      在与厂商洽谈时很多人都会陷入一个迷雾中,为了迎合用户口味,厂商会试图通过把可视化效果演示得很完美,让用户动心并满心以为买了产品我们也能做出类似效果,然后迅速达成合作。

      这里真的要把这个开诚布公地与大家聊一下,避免以后再掉坑里。如前所述,既然采用开源包的可视化产品的技术能力是一样的,那为何还会出现厂商演示效果有高低之分?因为这些并不是技术所造成,而是一开始提到的“艺术”能力,具体说就是行业知识和美术感觉。比如国外几家产品的可视化效果都很好。就是艺术能力很强。

      但是关键问题就在于这里,艺术效果不是购买了就附带的,而是需要有人跟踪服务,而不是仅仅提供模板就能直接套出来的。所以不要片面相信厂商演示时多么炫酷的可视化效果。
      总言之,商业智能解决方案对于一些企业,可能是欺骗性的解决方案。许多企业声称商业智能软件解决方案实际上只能提供所需功能和效果的一半。因为厂商提供的可能是前端的解决方案,而不是处理准备所有数据的工具和算法的端到端的解决方案,

      追求可视化数据分析软件没有错,但不能成为商业智能分析软件选型的冲动而武断的决定因素。深入到企业大数据分析平台构建,你还需考虑其它更多的因素。数据可视化与数据分析的认识篇,希望这篇文章对大家选型有帮助。

      原文出处:http://www.powerbi.com.cn/page103?article_id=301
      奥威Power-BI免费教程视频:http://www.powerbibbs.com/forum-206-1.html
    展开全文
  • 画数据流图的基本步骤:自外向内、自顶向下、逐层细化、完善求精;  数据流图的父图与子图要平衡, 即输入和输出的数据流一致;  数据流图中的每个加工至少有一个输入数据流和一个输出数据流;  局部的数据...
  • 中的示例使用的是Ant-Design的Cascader组件。 要实现这一功能,我需要类似这样的数据结构: <pre><code> js var data = [{ "value": "浙江", "children": [{ "...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    顺序、协作:单例中几个对象的行为 顺序突出顺序,协作着重对象间链接关系 项目三 项目市场调研 任务1. 系统的研发背景 任务2. 软件开发计划 油画创作背景 波洛克 《1948年第五号》 1.4亿$,最昂贵画作...
  • 总的原则是:至顶而下,逐层分解(分层数据流图)。 比较复杂的系统不能在一张纸上,逐层分解的画法可以控制每一层的复杂度。 顶层:将整个系统作为一个加工,描述系统边界(输入与输出)。 中间层:表示某个...
  • 当前,它支持折线,饼图,条形和堆积的条形。 可视化 观看您的股票达到新的高度。 您也可以将鼠标悬停在图表上以获取详细信息。 最流行的图表,带有惊人的扇出动画。 您还可以爆炸某些扇区以突出显示它们。...
  • 软件界面设计工具_3款合集

    千次下载 热门讨论 2010-06-29 03:52:47
    预制了六十多个界面元素,从简单的输入框,下拉框,到经常得到的导航条,日历,表格,到复杂的Tag Cloud,Cover Flow, 地图,WYSWYG的格式工具栏等,有了这些不用从头起,其实比白板都快; 界面元素的修改很...
  • MikroTik RouterOS是一种路由操作系统,并通过该软件将标准的PC电脑变成专业路由器,在软件RouterOS 软路由的开发和应用上不断的更新和发展,软件经历了多次更新和改进,使其功能在不断增强和完善。特别在无线、...
  • 可以在表格内自由线和擦线,加入表题和表体,表体内可以灌入各种数据库数据,表格可自动填充数据,表格数据可以生成直观醒目的图表,如折线或圆饼。表内数据计算有 10多种运算公式,您甚至可以自定义算式...
  • 网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...
  • 16.2.6Rational Rose画用 16.2.7用例规约 16.3一个案例 16.3.1案例描述 16.3.2 16.3.3写出用例描述 16.4小结 第17章类图和对象 17.1认识类图 17.1.1为什么需要类图 17.1.2什么是类图 ...
  • 论文画图工具

    千次阅读 2012-09-24 09:03:00
    matplotlib(Python) corelDraw Windows画图:屏幕截图,然后进行简单的处理 MS VISIO:在发现DIA之前一直VISIO各种图,例如体系结构图、模块图、数据流图等等。 DIA:类似VISIO的画图软件,不过它们最大的...
    • matplotlib(Python)
    • corelDraw
    • Windows画图:屏幕截图,然后进行简单的处理
    • MS VISIO:在发现DIA之前一直用VISIO画各种图,例如体系结构图、模块图、数据流图等等。
    • DIA:类似VISIO的画图软件,不过它们最大的区别就是DIA是开源的,原先是Gnome下的一个项目,后来把它移植到Win下了。提供的链接是Win版本的链接(为什么没用Linux?其实我还是一直在斗争究竟平时该用哪个系统,Win+VituralBox或者Linux+WINE+VirtualBox,宋大侠给过建议,不过我还是自己先用着看吧,Linux非常喜欢,特别是在开发的时候,高效、简单,而且系统可以随我定制,最喜欢Debian了;Win下就是没法割舍那些好用的、庞大的软件,像TC、Source Insight,可能有人会说对应的软件Linux都有,由于我目前使用最频繁的还是Win,所以这些软件还不知道。哎,再说再说吧,折腾系统也是挺费时间的,很多时候想想够我使用就行,比如在Win下我要用Linux环境,我会打开Cygwin,或者ssh到自己管理的Linux服务器,或者到Unix-Center的SUN Solaris服务器。跑远了,赶紧拉回来)
    • Excel:做一些数据图,不如后面几个软件看上去美观、专业。
    • Matlab:常用的工具。
    • GUN PLOT:适合做大数据量分析图。
    • GUN R:数理统计分析和制图工具。
    展开全文
  • 每周必写

    2016-05-11 19:47:00
    没有学习新的课程,课上老师复习了前几节课上学过的知识点并且布置了作业,练习画数据流图,ER图和数据定义。 这周我阅读了《代码大全》第二章隐喻来更充分地理解软件开发 什么是隐喻? 通过生活中或者工作中...

    没有学习新的课程,课上老师复习了前几节课上学过的知识点并且布置了作业,练习画数据流图,ER图和数据定义。

    这周我阅读了《代码大全》第二章用隐喻来更充分地理解软件开发

    什么是隐喻? 通过生活中或者工作中一些现有的事物作为模型,来描述那写未知的,或者不正确的事物,以期望在钻研的路上,得到指引,得到方向,得到目标。

    1. 隐喻的重要性

       在人类发展史上,很多的成就是在隐喻的帮助下出现的,比如气体的分子运动来至一个叫“撞球”的运动,光的波动理论来至声音的波动传播,等等。

       隐喻并不是总是带来好处的,有的时候,也会将我们带入歧途。那么如何找到一个恰当的隐喻帮助我们实现目标,就是最重要的地方了。我想,这应该也是本章的重点。

    2. 如何使用软件隐喻

      作者将隐喻起到的作用比作是一个启示的,启发的过程。

    然后花了很大篇幅来描述启发和算法的异同点

    这章概况的来说写了6点观点:

    (1)隐喻是启示而不是算法,因此它们往往有一点随意。

    (2)隐喻把软件开发过程与其他你熟悉的活动联系在一起,帮助你更好的理解。

    (3)有些隐喻比其他一些隐喻更贴切。

    (4)通过把软件的构建过程比作是房租的建设过程,我们可以发现,仔细的准备是必要的,而大型项目和小型项目之间也是有差异的。

    (5)通过把软件开发中的实践比作是智慧工具箱中的工具,我们又可以发现,每位程序员都有很多工具,但并不存在能适用于所有工作的工具,因地制宜地选择正确工具是成为能有效编程的程序员的关键。

    (6)不同的隐喻彼此并不排斥,应当使用对你最有益处的某种隐喻组合。

    转载于:https://www.cnblogs.com/mybelieve/p/5483336.html

    展开全文
  • C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,C语言明显优于其它高级语言,许多大型应用软件都是C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统...
  • (1)文件头描述块(Header)定义GIF数据流(GIF Data Stream),它的结构如1-02所示。文件头描述块(Header)由GIF标记域(Signature)和版本号(Version)域组成,是一个由6个固定字节组成的数据块,它们用来说明使用的文件...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 158
精华内容 63
关键字:

数据流图用什么软件画