软件工程 订阅
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。 展开全文
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。
信息
外文名
Software Engineering
简    称
SE
类    别
学科
中文名
软件工程
相关专业
通信工程、计算机科学与技术
软件工程定义内涵
软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都 分别给出了自己认可的定义: [1]  BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。IEEE:在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究FritzBauer:在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。ISO 9000对软件工程过程的定义是:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。 [2]  其它定义:1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。2.程序能够满意地处理信息的数据结构。3.描述程序功能需求以及程序如何操作和使用所要求的文档。以开发语言作为描述语言,可以认为:软件=程序+数据+文档。 [2]  一、软件工程过程是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动,包括以下四个方面:1、P(Plan)——软件规格说明。规定软件的功能及其运行时的限制。2、D(DO)——软件开发。开发出满足规格说明的软件。3、C(Check)——软件确认。确认开发的软件能够满足用户的需求。4、A(Action)——软件演进。软件在运行过程中不断改进以满足客户新的需求。二、从软件开发的观点看,它就是使用适当的资源(包括人员,软硬件资源,时间等),为开发软件进行的一组开发活动,在活动结束时输入(即用户的需求)转化为输出(最终符合用户需求的软件产品)。三个阶段:定义阶段:可行性研究初步项目计划、需求分析;开发阶段:概要设计、详细设计、实现、测试;运行和维护阶段:运行、维护、废弃原则:1、抽象;2、信息隐蔽;3、模块化;4、局部化;5、确定性;6,一致性;7、完备性;8、可验证性
收起全文
精华内容
下载资源
问答
  • 软件工程知识点复习总结

    万次阅读 多人点赞 2018-01-06 14:18:14
    软件工程

    Software:

    如果有想要内推字节跳动或者腾讯的小伙伴,欢迎加我的wx: dHR5czIwMTU=(base64)

    (1)指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求;
    (2)数据结构,使得程序可以合理利用信息
    (3)软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序操作和使用


    Software Engineering:

    软件工程是:
    (1)将系统化的、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
    (2)在(1)中所述方法的研究

    What the difference between software and hardware?
    1.软件是设计开发的,而不是传统意义上生产制造的。
    2.软件不会“磨损”
    3.大多数软件根据实际的顾客需求定制的。

    Why does software need Change or Evolved?
    软件必须适应新的计算环境或技术的需要。
    必须增强软件来实现新的业务需求。
    软件必须扩展到与其他更现代的系统或数据库进行互操作。
    必须重新构建软件,使其在网络环境中可行。
    列表内容
    支持软件工程的根基在于质量关注点(quality focus)
    是对软件的组织承诺,是支持软件工程的基石
    软件工程的基础是过程(process)层。软件过程将各个技术层次结合在一起,使得合理、及时地开发计算机软件成为可能。
    软件工程**方法(method)**为构建软件提供技术上的解决方法。方法包括:沟通、需求分析、设计模型、编程、测试和技术支持。


    Software Process :

    **软件过程:**软件过程是工作产品构建时所执行的一系列活动、动作和任务的集合。

    Generic Framework Activity
    适用于所有软件项目,无论其规模和复杂程度如何
    **1.沟通(Communication):**目的是理解利益相关者的项目目标,并收集需求以定义软件特性和功能。
    **2.策划(Planning):**定义和描述了软件工程工作,包括需要执行的技术任务、可能的风险、资源需求、工作产品和工作进度计划。
    **3.建模(Modeling):**利用模型哎更好地理解软件需求并完成符合这些需求的软件设计。
    **4.构建(Construction):**它包括编码和测试以发现编码中的错误。
    **5.部署(Deployment):**软件交付到用户,用户对其进行评测并给出反馈意见。

    Umbrella Activities(普适性活动):
    普适性活动贯穿软件项目始终。
    **1.软件项目跟踪和控制:**项目根据计划评估项目进度,并且采取必要的措施保证项目按进度计划进行。
    **2.风险管理:**对可能影响项目成果或者产品质量的风险进行评估。
    **3.软件质量保证:**确定和执行软件质量保证的活动
    **4.技术评估:**评估软件工程产品、尽量在错误传播到下一个活动之前,发现并清除错误。
    **5.测量:**定义和收集过程、项目和产品的度量,以帮助团队在发布软件的时候满足利益相关者要求。同时,测量还可以与其他框架活动和普适性活动配合使用。
    **6.软件配置管理:**在整个软件工程中,管理变更所带来的影响。
    **7.可复用管理:**定义产品复用的标准,并且建立构建复用机制。
    **8.工作产品的准备和生产:**包括了生产产品所必需的活动。


    Process Flow

    **过程流:**描述了在执行顺序和执时间上,如何组织框架中的活动,动作,任务。
    **线性过程流(Liner process flow):**从沟通到部署顺序执行五个框架活动。
    这里写图片描述
    **迭代过程流(iterative process flow):**在执行下一个活动前重复执行之前一个或多个活动。
    这里写图片描述
    **演化过程流(evolution process flow):**采取循环的方式执行各个活动。
    这里写图片描述
    **并行过程流(parallel process flow):**将一个或是多个活动与其他活动并行执行。
    这里写图片描述


    **过程模式(process pattern)😗*描述了软件工程工作中遇到的过程相关的问题、明确了问题环境并给出了针对该问题的一种或几种可证明的解决方式。


    Process Model

    惯用过程模型是为了改变软件开发的混乱状态,促使软件开发更加有序。
    **瀑布模型(waterfall model):**又被称为经典生命周期(classic life cycle),它提出了一个系统的、顺序的软件开发方法。
    优点:
    有利于大型软件开发过程中人员的组织、管理,从而提高了大型软件项目开发的质量和效率。
    当需求确定、工作采用线性的方式完成的时候瀑布模型是一个很有用的过程模型。
    一个有用的过程模型,其中需求是固定的,工作将以线性方式完成。
    缺点:
    过于理想,缺乏灵活性,容易产生需求偏差。
    实际的项目很少遵守瀑布模型提出的顺序。
    客户通常很难清除的描述所有的需求。
    客户必须要有耐心,因为只有在项目接近尾声的时候,他们才能的带执行的程序。
    **适用范围:**需求确定,工作能够采用线性的方式完成的软件。
    这里写图片描述
    V模型(V-model):
    描述了质量保证动作同沟通、建模相关动作以及早期构建相关的动作之间的关系。
    V模型强调软件开发的协作和速度,将软件实现和验证有机地结合起来,在保证较高的软件质量情况下缩短开发周期。
    **优点:**适合工程量小、人力资源少并且开发过程中改动不大的项目
    **缺点:**错误发现时间迟,产生的风险代价高
    这里写图片描述

    增量过程模型(Incremental Model)
    增量过程模型侧重于每一个增量都提交一个可以运行的产品。
    优点:
    1.能在较短的时间内向用户提交可完成部分工作的产品。
    2.逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个 全新的软件可能给客户组织带来的冲击。
    3. 规避技术风险
    4. 可并行开发构件,加快开发的进度
    5. 对于在业务截止日期之前完全实施的人员配置非常有用。
    缺点:
    (1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;
    (2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。
    适用范围:
    (1)进行已有产品升级或新版本开发,增量模型是非常适合的; (2)对完成期限严格要求的产品,可以使用增量模型;
    (3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。
    (4) 项目在既定的商业要求期限之前不可能找到足够的开发人员
    这里写图片描述

    演化过程模型(Evolutionary Model)
    演化模型是迭代的过程模型。
    原型开发(prototyping ):当需求很模糊的时候,原型开发可以帮助软件开发人员和利益相关者更好地理解究竟需要做什么。
    优点:
    开发者与用户充分交流,可以澄清模糊需求,需求定义比其他 模型好得多
    开发过程与用户培训过程同步
    为用户需求的改变提供了充分的余地
    开发风险低,产品柔性好
    开发费用低,时间短
    系统易维护,对用户更友好

    缺点:
    1、 没有考虑软件的整体质量和长期的可维护性。
    2、 大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工 具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。
    3、 由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。
    适用范围:
    尽管原型可以用作独立的流程模型,但它更常用作一种可以在任何流模型的上下文中实现的技术。
    这里写图片描述
    螺旋模型(Spiral Model)
    螺旋模型是一种风险驱动型的过程模型生成器,对于软件集中的系统,它可以指导多个利益相关者的协同工作。
    优点:
    它结合了原型的迭代性质和瀑布模型的系统性和可控性特点。

    1. 强调风险
    2. 强调阶段质量
    3. 提供纠错的机会
    4. 使用原型作为风险降低机制,进一步使开发人员能够在产品演变的任何阶段应用原型方法。
      缺点:
    5. 每个阶段都要提出被选方案,进行风险分析,研发周期长,效率低
    6. 必须要转业的风险分析人员的参与
    7. 如果没有发现和管理重大风险,问题无疑将会发生。
      **适用范围:**大型项目
      这里写图片描述

    协同模型(concurrent development model)
    有时候又称为协同工程,它允许软件团队表述本章所描述的任何模型中的迭代和并发元素。
    协同建模提供了项目当前状态的准确画面。
    适用范围:所有类型的软件开发,协同模型通常更适合涉及不同工程团队的产品工程项目。
    这里写图片描述

    统一过程(Unified Process)
    统一过程模型
    统一过程模型是一种“用例驱动、以体系结构为核心、迭代及增量”的软件 过程框架,由 UML 方法和工具支持。它是一种增量模型,定义了五个阶段:
    a、起始阶段,包括用户沟通和计划活动,强调定义和细化用例
    b、 细化阶段,包括用户沟通和建模活动,重点是创建分析和设计模型。
    c、构件阶段,细化模型设计,并将设计模型转化为软件构件实现
    d、 转化阶段,将软件从开发人员传递给最终用户,并由用户完成 beta 测试和验 收测试
    e、生产阶段,持续地监控软件的运行,并提供技术支持。
    优点:

    1. 任何功能开发后就进入测试过程,及早进行验证
    2. 早期风险识别,采取预防措施

    缺点:

    1. 需求必须在开始之前完全弄清楚,否怎有可能在架构上出现错误
    2. 必须有严格的过程管理,以免使过程退化为原始的试→错→改模式
      3.如果不加控制的让用户过早接触没有测试完全,版本不稳定的产品可能对用 户和开发团队都带来负面的影响。
      这里写图片描述

    Agile Development

    敏捷宣言(Agile development manifesto):
    个人和这些个人之间的交流胜过了开发过程和工具
    可运行的软件胜过了宽泛的文档
    客户合作胜过了合同谈判
    对变更的良好响应胜过了按部就班地遵循计划

    极限编程(Extreme Programming (XP))
    极限编程是敏捷软件开发使用最广泛的一个方法。

    极限编程过程:
    1.策划:
    开始创造“用户故事”
    敏捷团队评估每个故事并分配一个成本(开发周数)
    故事被分组到一个可交付增量
    承诺在交付日期进行
    在第一次递增之后,“项目速度”用于帮助估计后续发行版本的发布日期和进度安排,确定是否对整个开发项目中的所有故事有过分承诺。
    2.设计
    遵循KIS(保持简洁)原则
    鼓励使用CRC(类-责任-协作者)卡(见第8章)
    对于困难的设计问题,建议创建“尖峰解决方案” - 一个设计原型
    鼓励“重构”: 重构是以不改变代码外部行为而改进其内部结构的方式来修改软件系统的过程。
    3.编码
    在编码开始之前,建议对故事进行单元测试
    鼓励“结队编程”
    4.测试
    所有的单元测试每天都执行
    “验收测试”,由客户规定技术条件,并且着眼于客户可见的、可评审的系统级的特征和功能。
    这里写图片描述

    工业极限编程(Industrial XP (IPX))
    IXP是XP的一种有机进化。它由XP的最低限要求、以客户为中心、测试驱动精神组成。IXP和XP的主要差别在于其管理具有更大的包容性,它扩大了用户角色,升级了技术实践。
    IXP合并了六个新实践
    Readiness assessment(项目准备)
    Project community(项目社区)
    Project chartering(项目承租)
    Test-driven management (测试驱动管理)
    Retrospectives.(回顾)
    Continuous learning (持续学习)

    需求工程(Requirement engineering)

    七个任务
    **1.起始(Inception):**在项目起始阶段,要建立基本的理解,包括对问题、谁需要解决方案、所期望解决方案的性质、与项目利益相关者和开发人员之间达成初步交流合作的效果。
    **2.导出(Elicitation –gathering requirements):**询问客户、用户和其他人,系统或产品的目标是什么,想要实现什么,系统和产品如何满足业务的要求,最终系统或产品如何利用于日常工作。
    **3.精化(Elaboration-requirement modeling):**在起始和导出阶段获得的信息将在精化阶段进行扩展和提炼该任务集中于开发一个精确的需求模型。
    **4.协商(Negotiation-win-win):**使用迭代的方法给需求排序,评估每项需求对项目产生的成本和风险,表述内部冲突,删除、组合和修改需求,以便参与各方均能达到一定的满意度,实现双赢。
    **5.规格说明(Specification-document,Model,prototype):**一个规格说明可以是一份写好的文档、一套图形化的模型、一个形式化的数学模型、一组使用场景、一个原型或上述各项的任意组合。
    **6.确认(Validation-Quality assess):**在确认这一步对需求工程的工作产品进行质量评估。
    **7.需求管理(Management-Change):**基于计算机的系统其需求会变更,并且变更的要求贯穿于系统的整个生存期。需求管理是用于帮助项目组在项目进展中标识、控制和跟踪需求以及需求变更的一组活动。

    需求建模的元素

    这里写图片描述
    这里写图片描述

    基于场景建模(功能)

    使用基于场景的方法可以从用户的视角描述系统。
    开发用例图时,应列出特定参与者执行的功能或活动。
    例:
    这里写图片描述

    UML活动图在特定场景通过提供迭代流的图形表示来补充用例。
    例:
    这里写图片描述

    UML泳道图是活动图的一种有用变化,可以让建模人员表示用例所描述的活动流,同时指示哪个参与者或分析类是由活动矩形所描述的活动来负责。
    这里写图片描述

    基于类的建模

    基于类建模表示了系统操作的对象、应用于对象间能有效控制的操作、这些对象间的关系以及已定义类之间的协作。
    基于类的分析模型包括类和对象、属性、操作、类的职责协作者(CRC)模型、协作图和包。

    识别分析类
    外部实体(其他系统、设备、人员),产生或实验基于计算机系统的信息。
    事物(报告、显示、字母、信号),问题信息域的一部分。
    偶发事件或事件(所有权转移或完成机器人的一组移动动作),在系统操作环境内发生。
    角色(经理,工程师,销售人员),由和系统交互的人员扮演
    组织单元(部门,组,团队),和某个应用系统相关
    场地(制作车间或码头),建立问题的环境和系统的整体功能
    结构(传感器、交通工具、计算机),定义了对象的类或与对象相关的类。
    例:
    这里写图片描述
    这里写图片描述

    类-职责-协作者建模(CRC)
    CRC模型实际上是表示类的标准索引卡片的集合。
    顶部写类名,左侧列出类的职责,右侧部分列出了类的协作者。
    这里写图片描述

    类:
    Entity classes 实体类:一般代表保存在数据库中和贯穿应用程序的事物。
    Boundary classes 边界类:创建用户可见的和在使用软件时交互的接口
    Controller classes 控制类:管理“控制单元”

    职责:
    职责的基本原则:
    属性:描述了已经选择包含在需求模型中的类
    操作:定义了某个对象的行为。
    5个指导原则:
    1.智能系统应分布哎所有类中以求最佳地满足问题的需求。
    2.每个职责的说明应尽可能具有普遍性。
    3.信息和与之相关的信息应局限于一个类中而不要分布在多个类中。
    4.信息和与之相关的行为应该放在同一类中。
    5.适合时,职责应由相关类共享。

    生成行为模型

    生成行为模型的步骤:
    1.评估所有的用例,以保证完全理解系统内的交互顺序
    2.识别驱动交互顺序的事件,并理解这些事件如何与特定的对象相互关联
    3.为每个用例生成序列
    4.创建系统状态图
    5.评审行为模型以验证准确性和一致性。

    状态图:
    UML状态图就是一种行为模型,该图为每个类呈现了主动状态和导致这些主动状态变化的事件。
    例:
    这里写图片描述
    顺序图:
    表明事物引发从一个对象到另一个对象的转移。
    这里写图片描述

    软件设计(Software Design)

    这里写图片描述
    设计概念

    1.抽象(Abstraction):
    过程抽象是指具有明确和有限的指令序列(描述动作)
    数据抽象是描述数据对象的冠名数据集合(描述动作怎么做)

    2.体系结构(Architecture):软件的整体结构和这种结构为系统提供概念完整方式。构件表示主要的系统元素及其交互。

    3.模式(Patterns):模式承载了已证实的解决方案的精髓。设计模式描述了在某个特定场景与可能影响模式应用和使用方法的“影响力”中解决某个特定的设计问题的设计结构。

    4.关注点分离(Separation of concerns):它表明任何复杂问题如果被分解为可以独立解决和优化的若干块,该复杂问题能够更容易的被处理。

    5.模块化(Modularity):模块化是关注点分离最常见的表现。模块化设计使得开发工作更易规划。

    6.信息隐蔽(Hiding):隐蔽意味着通过定义一系列独立的模块可以得到有效的模块化,独立模块互相之间只交流实现软件功能所必须的那些信息。隐蔽定义并加强了对模块内过程细节的访问约束和对模块所使用的任何局部数据结构的访问约束。

    7.功能独立(Functional independence):开发具有“专一”功能和低耦合性的模块即可实现功能独立。

    8.求精(Refinement):通过连续精化过程细节层次来实现程序的开发,通过逐步分解功能的宏观陈述直到形成程序设计语言的语句来进行层次开发。
    抽象和精化是互补的概念。

    9.方面(Aspects):一个方面作为一个独立的模块进行实施,而不是作为“分割的”或者和许多构件“纠缠的”软件片段进行实施。设计体系结构应当支持定义一个方面,该方面即一个模块,该模块能够使该关注点经过它横切的所有其他关注点而得到实施。

    10.重构(Refactoring):重构是使用这样一种方式改变软件系统的过程:不改变代码的外部行为而是改进其内部结构。

    11.面向对象的设计概念(OO design concepts):
    面向对象概念(类、对象、继承、消息和多态)

    12.设计类(Design Class):提供设计细节,使程序得以实施。

    设计概念强调了:
    (1)抽象的必要性,它提供了一种创造可重用软件构件的方法
    (2)体系结构的重要性,它使得能够更好地理解系统整体结构
    (3)基于模式的工程的有益性,它是一项用于已证明能力的软件的设计技术
    (4)关注点分离和有效的模块化的价值,他们使得软件更容易理解、更容易测试以及更容易维护。
    (5)信息隐藏的直接作用,当错误发生时,它能够减少负面影响的传播
    (6)功能独立的影响,他是构造有效模块的标准
    (7)求精作为一种设计方法的作用
    (8)横切系统需求方面的考虑
    (9)重构的应用,他是为了优化已导出的设计
    (10)面向对象的类和与类相关特征的重要性

    设计模型(design model)

    数据设计元素:数据设计创建在高级抽象级上表示的数据模型和信息模型。
    体系结构设计元素:体系结构设计元素通常描述为一组相互关联系统的子系统,且常常从需求模型中的分析包中派生出来。
    接口设计元素:软件接口设计元素描述了信息如何流入和流出系统以及被定义为体系结构一部分的构件之间是如何通信的。
    接口设计有3个重要的元素:
    (1)用户界面
    (2)和其他系统、设备、网络或其他信息生成者或使用者的外部接口
    (3)各种设计构件之间的内部接口
    构件级设计元素:软件的构件级设计完整地描述了每个软件构件的内部细节。构件级设计为所以局部数据对象定义数据结构,为所有在构件内发生的处理定义算法细节,并定义允许访问所有构件操作的接口。
    **部署级设计元素:**部署级设计元素指明软件功能和子系统将如何在支持软件的物理计算环境内分布。

    体系结构设计

    程序或计算机系统的软件体系结构是指系统的一个或者多个结构,它包括软件构件、构件的外部可见属性以及它们之间的相互联系
    体系结构并非可运行的程序。
    确切的说,它是一种表达,是能够:
    (1)对设计在满足既定需求方面的有效性进行分析
    (2)在设计变更相对容易的阶段,考虑体系结构可能的选择方案
    (3)降低与软件构造相关的风险

    体系结构重要的3个关键原因
    1.软件体系结构的表示有助于对计算机系统开发感兴趣的各方展开交流。
    2.体系结构突出了早期的设计决策,这些决策对随后所有的软件工程工作有深远影响,同时对系统作为一个可运行实体的最后成功有重要作用。
    3.体系结构“构建了一个相对小的、易于理解的模型,该模型描述了系统如何构成以及其构件如何一起工作”

    体系结构风格
    1.以数据为中心的体系结构。
    2.数据流体系结构。
    3.调用和返回体系结构
    4.面向对象体系结构
    5.层次体系结构

    体系结构环境图(ACD)
    上级系统:这些系统把目标系统作为某些高层处理方案的一部分
    下级系统:这些系统被目标系统使用,并为完成目标系统的功能提供必要的数据和处理
    同级系统:这些系统在对等的基础上相互作用
    参与者:通过产生和消耗必要处理所需的信息,实现与目标系统交互的实体(人,设备)
    这里写图片描述
    这里写图片描述

    构件级设计

    构件的概念:
    1.构件是计算机软件中的一个模块化的构造块。
    2.OMG定义构件:系统中模块化的、可部署的和可替换的部件,该部件封装了实现并暴露一组接口。
    **面向对象的观点(Object-Oriented view):**构件包括一组协作的类。
    **传统观点(Traditional View):**一个构件就是程序的一个功能要素,程序由处理逻辑及实现处理逻辑所需的每部数据结构以及能够保证构件被调用和实现数据传递的结构构成。

    基本设计原则

    **开闭原则(Open-Closed Principle ,OCP):**模块应该对外延具有开放性,对修改具有封闭性。
    **依赖倒置原则(Dependency Inversion Principle ,DIP):**依赖于抽象,而非具体实现。

    **Liskov替换原则(Liskov Substitution Principle (LSP)):**子类可以替换他们的基类。
    **接口分离原则(The Interface Segregation Principle (ISP)):**多个客户专用接口比一个通用接口好
    **发布复用等价性原则(The Release Reuse Equivalency Principle,REP):**复用的粒度就是发布的粒度
    **共同封装原则(The Common Closure Principle (CCP)):**一同变更的类应该合在一起
    **共同复用原则(The Common Reuse Principle (CRP)):**不能一起复用的类不能被分到一组

    **内聚性(Cohesion):**内聚性意味着构件或者类只封装那些相互关联密切,以及与构件或类自身有亲密关系的属性和操作。
    功能内聚:主要通过操作来体现,当一个模块只完成某一组特定操作并返回结果时,就称此模块是功能内聚的。
    分层内聚:高层能够访问低层的服务,但低层不能访问高层的服务。
    通信内聚:访问相同数据的所有操作被定义在同一个类中。(数据的查询,访问,存储)

    耦合性(Coupling):
    耦合是类之间彼此联系程度的一种定性度量。
    随着类(构件)相互依赖越来越多,类之间的耦合程度亦会增加。
    内容耦合:暗中修改其他构件的内部数据,这违反了信息隐蔽原则
    公用耦合:当大量的构件都要使用同一个全局变量时发生这种耦合
    控制耦合:当操作A调用操作B,并向B传递控制标记时,就会发生这种耦合。
    标记耦合:当类B被声明为类A某一操作中的一个参数类型时,就会发生这种耦合。
    数据耦合:当操作需要传递长串的数据参数时,就会发生这种耦合。
    例程调用耦合:当一个操作调用另一个操作时,就会发生这种耦合。
    类型使用耦合:当构件A使用了在构件B中定义的一个数据类型时,就会发生这种耦合。
    包含或者导入耦合:当构件A引入或者包含一个构件B的包或者内容时,就会发生这种耦合。
    外部耦合:当一个构件和基础设施构件进行通信和协作时,就会发生这种耦合。

    为什么要高内聚?  
     模块之间的关系越紧密,出错就越少!
     为什么要低耦合?  
     子程序间的关系越复杂,就会产生更多的意想不到的错误!会给以后的维护工作带来很多麻烦!
      高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。

    用户界面设计

    黄金准则

    1.用户操纵控制
    (1)以不强迫用户进入不必要的或不希望的动作的方式来定义交互模式
    (2)允许用户交互被中断和撤销
    (3)当技能级别增长时可以使交互流线化并允许定制交互
    (4)使用用户与内部技术细节隔离开来
    (5)设计应允许用户与出现在屏幕上的对象直接交互
    2.减少用户的记忆负担
    (1)减少对短期记忆的要求
    (2)建立有意义的缺省
    (3)定义直观的快捷方式
    (4)以不断进展的方式揭晓信息
    3.保持界面一致
    (1)允许用户当前任务放入有意义的环境中
    (2)在应用系统家族内保持一致性
    (3)如果过去的交互模型已经建立起了用户期望,除非有迫不得已的理由,doze不要改变它。

    可用性

    可用性是指用户在使用高科技产品所提供的功能和特性时,对使用的容易程度和有效程度的定量测量。

    用户界面的分析与设计

    工程师建立用户模型。软件工程师创建设计模型。最终用户在脑海中对界面产生映像,称为用户的心理模型或系统感觉。系统的实现者创建实现模型
    **用户模型:**确定了系统最终用户的轮廓。
    **设计模型:**用户界面的设计
    **心理模型:**最终用户在脑海里对系统产生的印象。
    **实现模型:**组合了计算机系统的外在表现,结合了所有用来描述系统语法和语言的支撑信息。

    用户界面的分析和设计过程是迭代的,用户界面分析和设计过程开始于螺旋模型的内部,并且包括4个阶段:(1)界面分析及建模。(2)界面设计。(3)界面构造。(4)界面确认。

    这里写图片描述

    界面设计的目标是定义一组界面对象和动作,使得用户能够以满足系统所定义的每个使用目标的方式完成所有定义对的任务。

    界面分析

    在用户界面的设计中,理解问题就意味着了解:
    (1)通过界面和系统交互的人
    (2)最终用户为完成工作要执行的任务
    (3)作为界面的一部分而现实的内容
    (4)任务处理的环境

    界面分析:
    (1)用户分析:
    设计师能够将用户心理模型与设计模型聚合在一起的唯一办法就是努力了解用户,以及了解用户是如何使用系统的。
    可以从各种途径获得信息
    用户访谈:软件团队(代表)与用户讨论。
    销售输入:销售人员与用户定期见面。
    市场输入:市场分析,分析/理解市场每个部分使用软件的细微差别。
    支持输入:技术支持人员与用户访谈。

    (2)任务分析与建模
    任务分析的目标就是将这些技术应用到用户界面:
    **a.用例:**用例描述了参与者和系统的交互方式。从用例描述中,软件工程师可以提炼出任务、对象和整个的交互过程。
    **b.任务细化:**改进了交互流程。任务细化有两种方法:
    1.理解实现活动目标而必须完成的任务
    2.研究已有的基于计算机的解决方案的规格说明,并且得到一个适应于用户模型、设计模型和系统感觉的用户任务集合。
    逐步细化。
    **c.对象细化:**对象细化标识了接口对象
    **d.工作流分析:**工作流分析定义了涉及多个人(和角色)时工作流程是如何完成的。
    e.层次分析:
    用户任务:请求重新填写处方
    提供识别信息。
    指定名称。
    指定用户ID。
    指定PIN和密码。
    指定处方号码。
    指定日期重填是必需的。

    测试

    **测试:**测试是在交付给最终用户之前以特定意图找出错误为目的来执行程序的过程。
    验证与确认(Verification and Validation,V&V):
    验证是指确保软件正确地实现某一特定功能的一系列活动。
    确认是指确保开发的软件可追溯到客户需求的另外一系列活动。

    测试策略

    从小到大

    这里写图片描述

    传统的测试策略

    单元测试

    单元测试侧重于软件设计的最小单元(软件构件或模块)的验证工作。
    单元测试侧重于构件的内部处理逻辑和数据结构。
    可以对多个构件并行执行。
    测试模块的接口是为了保证被测试程序单元的信息能够正常地流入和流出;
    检查局部数据结构以确保临时存储的数据在算法的整个执行过程中能维持其完善性。
    执行控制结构中的所有独立路径(基本路径)以确保模块中的所有语句至少执行一次。
    测试边界条件确保模块在到达边界值得极限或受限处理的情形下仍能正确执行。
    最后要对所有的错误处理路径进行测试。
    这里写图片描述
    在单元测试期间,选择测试的执行路径是最基本的任务。
    边界测试时最重要的单元测试任务之一。

    单元测试过程
    这里写图片描述
    驱动模块:接收测试用例数据,将这些数据传递给被测模块,并输出结果。
    桩:替换那些从属于被测模块的模块
    当设计高内聚的构件时,就可以简化单元测试。当构件只强调一个功能时,测试用例数就会降低,且比较容易预见错误和发现错误。

    集成测试

    集成测试时构造软件体系结构的系统化技术,同时也是进行一些旨在发现与接口相关的错误的测试。
    集成测试的目标是利用单元测试的构件建立设计中描述的程序结构。

    **自顶向下集成:**自顶向下集成测试是一种构造软件体系结构的增量方法。
    **深度优先:**深度优先集成是首先集成位于程序结构中主控路径上的所有控件。
    **广度优先:**广度优先集成首先沿水平方向,将属于同一层的构件集成起来。
    自顶向下集成过程:
    1.主控模块作为测试驱动模块,用桩模块代替直接附属的下层模块;
    2.根据所选的集成策略(深度优先/广度优先),每次用一个实际模块替换一个桩模块;
    3.每集成一个模块都进行测试;
    4.完成每个测试集之后,用实际模块替换另一个桩模块;
    5.可以进行回归测试(即全部或部分地重复已做过的测试),以避免引入新错误。
    回到第2步继续执行此过程,直到完成整个程序结构的构造。

    **自底向上集成测试:**就是从原子模块(程序结构的最底层构件)开始进行构造和测试。
    自底向上集成测试过程:
    1.连接底层构件以构成完成特定子功能的簇。
    2.编写驱动模块(测试的控制程序)以协调测试用例的输入和输出
    3.测试簇
    4.去掉驱动程序,沿着程序结构向上逐步连接簇
    这里写图片描述

    回归测试

    回归测试重新执行已测试过的某些子集,以确保变更没有传播不期望的副作用。
    回归测试有助于保证变更不引入无意思行为或额外的错误。
    回归测试可以手工进行,方法是重新执行所以测试用例的子集,或者利用捕捉/回放工具自动进行。

    面向对象软件的测试策略

    面向对象软件的类测试等同于传统软件的单元测试。
    不同的是:
    传统软件单元测试侧重于模块的算法细节和模块接口数据;
    面向对象类的测试侧重于封装在该类中的操作和类的状态行为。
    封装的类是单元测试的重点,但不再孤立地对单个操作进行测试,而是将其作为类的一部分。
    簇测试时面向对象软件集成测试中的一个步骤。

    确认测试(Validation Testing)

    确认测试准则:软件确认是通过一系列表明与软件需求相符合的测试而获得的。

    **α测试(Alpha testing):**α测试测试是由代表性的最终用户在开发者的场所进行。软件在自然的环境下使用,开发者站在用户的后面观看,并记录错误和使用问题。α测试在受控的环境下测试。

    β测试(Beta testing)(又称客户验收测试,Acceptance testing):β测试在一个或多个最终用户场所进行。与α测试不通过,开发者通常不在场,因此,β测试是在不为开发者控制的环境下软件的“现场”应用。是在不可控的环境下测试。

    系统测试

    系统测试实际上是对整个基于计算机的系统进行一系列不同考验的测试。所有测试都是为了验证系统成分已经正确地集成在一起,并且完成了指派的功能。

    **恢复测试(Recovery testing)😗*通过各种方式强制让软件以各种方式失败并验证恢复是否正确执行。
    **安全测试(Security testing):**安全测试验证建立在系统内的保护机制是否能够实际保护系统不受非法入侵。
    **压力测试(Stress testing):**压力测试的目的是是软件面对非正常的情形。是一种要求以非正常数量、频率或容量的方式进行彻底评估。
    **性能测试(Performance testing):**性能测试用来测试软件在集成环境中的运行性能。
    **部署测试(Deployment testing):**部有时也将署测试称为配置测试,是在软件将要在其中运行的每一种环境中测试软件。

    测试传统的应用系统

    **白盒测试:**白盒测试有时也称为玻璃盒测试,是一种测试用例设计方法,它利用作为构件层设计的一部分描述的控制结构来生成测试用例。
    白盒测试是在了解模块内部结构的情况下进行的测试。
    利用白盒测试方法导出的测试用例可以:
    (1)保证一个模块中的所有独立路径至少被执行一次。
    (2)对所有的逻辑判定均需要测试取真和取假两个方面。
    (3)在上下边界及可操作的范围内执行所有的循环。
    (4)检验内部数据结构以确保其有效性。

    基本路径测试(Basic path testing)
    基本路径测试时由TOM首先提出的一种白盒测试技术。
    流图(程序图)是一种简单的控制流表示方法。
    流程图用于描述程序的控制结构,流程图映射为相应的流图。
    圆称为流图结点(flow graph node),表示一个或多个过程语句。处理框序列和一个菱形判定框可以映射为单个节点。
    流图中的箭头称为边或者连接,标识控制刘,类似于流程图中的箭头。
    由边和结点限定的区域称为域。当计算域时,将图的外部作为一个域。
    包含条件的结点称为判定结点,其特征是由它发射出两条或多条边。
    这里写图片描述
    这里写图片描述
    独立路径是指任何贯穿程序的、至少引入一组新语句或一个新条件的路径。
    如果设计测试用例强迫执行这些路径(基本集合),就可以保证程序中的每条语句至少执行一次,同时,每个条件判断的真和假都被执行。
    这里写图片描述
    环复杂度(Cyclomatic Complexity )计算方法:
    这里写图片描述
    V(G)的值提供了组成基本集合的独立路径的上街,并由此得出覆盖所有程序语句所需设计和运行的测试数量的上界。

    黑盒测试

    黑盒测试也称为行为测试,侧重软件的功能需求。
    黑盒测试使软件工程师能设计出将测试程序所有功能需求的输入条件集。
    黑盒测试不是白盒测试的替代品,而是作为发现其他类型错误的辅助方法。
    黑盒测试试图发现以下类型的错误:
    (1)不正确或遗漏的功能
    (2)接口错误
    (3)数据用在测试的后期阶段
    (4)行为或性能错误
    (5)初始化和终止错误
    黑盒测试的方法:
    Graph-based testing methods 基于图的测试方法
    Equivalence partitioning 等价类划分
    Boundary value analysis 边界值分析
    Orthogonal array testing 正交数组测试

    黑盒测试的例子:
    这里写图片描述
    这里写图片描述
    这里写图片描述

    展开全文
  • 软件工程

    千次阅读 2021-01-03 15:17:08
    一、单选 2020最新软件工程导论期末考试题库及答案 二、判断 2020最新软件工程导论期末考试题库及答案 三、名词解释 软件工程名词解释 计算机英语名词解释之软件工程篇 四、简答 1.软件部署对软件设计的影响。 安装...

    一、单选

    2020最新软件工程导论期末考试题库及答案

    二、判断

    2020最新软件工程导论期末考试题库及答案

    三、名词解释

    软件工程名词解释
    计算机英语名词解释之软件工程篇

    NATO 北大西洋公约组织
    CMM-SW 能力成熟度模型 - capability maturity model for software
    KPA 关键过程域 - key process area
    SEPG 软件工程过程组 
    CASE 计算机辅助软件工程 - computer aided software engineering
    CMMI 能力成熟度模型集成 
    FAST 便利的应用规约技术 - facilitated application specification techniques
    Use Case 用况 
    SA 面向数据流的结构化分析方法
    ATAM 体系结构权衡分析法 - architecture trade-off analysis method
    PAD 流程框图演化而来,用结构程序设计思想表现程序逻辑结构的图形工具 - problem analysis diagram
    PDL 设计性语言、伪代码 - program design language
    SA 结构化分析 - structured analysis
    SD 结构化设计 - structured design
    SP 结构化程序设计 - structured programming
    DFD 数据流图 - data flow diagram
    JSP Jackson结构程序设计方法 - Jackson system programming
    JSD Jackson系统开发方法 - Jackson system development
    OOA 面向对象的分析方法 - object-oriented analysis
    OOD 面向对象设计 
    OMT 对象建模技术
    OOSE 对象软件工程
    UML 统一建模语言 - unified modeling language
    CRC 类-责任-协作者 - class-responsibility-collaborator
    ASD 自适应软件开发 - adaptive software development
    DSDM 动态系统开发方法 - dynamic system development method
    UIDS 用户界面工具箱 - 
    BRO 分支与关系运算符 - 
    BPR 业务过程再工程、业务过程重组 - business process reengineering
    PMI 项目管理协会 - Project Management Institute
    4P People、Product、Process、Project - 人员、产品、过程、项目
    McCall模型 -  软件质量度量模型框架
    McCabe环形复杂性度量
    Halstead复杂性度量
    CAD 计算机辅助设计
    IBM估算模型
    CoCoMo模型 构造性成本模型 - constructive cost model
    PERT 计划评审技术 - program evaluation and review technique                                                                                             
    CPM 关键路径方法 - critical path method
    RMMP 风险管理及监控计划 - risk management and monitoring plan
    SQA 软件质量保证 - software quality assurance
    
    ISO - 国际标准化组织 - International Organization for Standardization
    IEC - 国际电工委员会 - International Electrotechnical Commission
    waterfall model 瀑布
    evolutionary model 演化
    incremental model 增量
    prototype 原形
    fountain model 喷泉
    

    四、简答

    1.软件部署对软件设计的影响。

    安装说明书
    操作系统、内存、磁盘

    • 操作系统:win10
    • 内存:>4G
    • 编译环境:JDK1.8
    • 数据库:MySQL 5.*

    用户说明书 - 培训

    系统的交付
    用户培训:介绍系统的主要功能以及访问它们的需要,以便让用户理解这些功能是什么和怎样去执行它们。
    操作员培训:熟悉系统的支持功能,了解系统是怎样工作的,而不是系统是做些什么。
    
    用户手册应从需求分析出发进行编写,同测试人员为系统和验收测试编写脚本。
    系统需求和设计的改变应在文档和培训材料中有所体现。
    

    2.面向对象的核心思想和局限性。

    同构功能
    解决问题的分析过程

    面向对象的核心思想

    核心思想
    将对象作为程序的基本单元,将程序和数据封装在其中以提高软件的复用性、灵活性和扩展性。
    三大特性:封装、继承、多态
    围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统
    
    局限性:方法冗余、杂乱
    紧耦合——两个部件之间有间接的关联
    低内聚——执行核心功能的方法被分散到了多个类中
    

    内聚:一个模块内部各个元素彼此结合的紧密程度的度量

    3.用户体验与需求分析。

    使用感受 94%
    体验 -> 功能 <- 需求

    (课程管理系统)
    体验:系统运行过程中,系统不会轻易出现闪退、页面无法访问或访问等待时间过长的问题。
    功能:
    老师通过账号密码登入后,可以对学生的学籍、课程和成绩进行统一管理。
    学生通过账号密码登入后,可以对自己的学籍、课程安排和成绩进行查询浏览。
    

    4.软件项目管理的体会。

    角色不同,体会不同

    作为项目管理者应懂得如何管理项目,使项目按期高质量地完成。
    作为项目参与者,应该了解项目管理的各项活动,并积极的参与到项目管理中去。
    

    5.软件体系结构的意义。

    组成方式

    软件体系结构的作用和意义

    软件体系结构在软件开发的各个阶段都起到了十分重要的作用。
    它不但可以控制软件的复杂性和提供高层次的复用,
    而且作为工程计划的前期工作,
    软件体系结构可以使开发者更早的从全局考虑关键性设计问题,
    从而保持整个软件系统的一致性。
    

    6.软件工程产生背景。

    标准 & 效率

    几十年前,软件行业很不规范,小程序虽然个人能很好完成,但缺乏良好的代码管理;大程序设计人员多,工程复杂,由于缺乏相关理论知识和经验,导致很多失败的大项目产生,为了解决这种情况诞生了软件工程。
    软件工程产生的背景

    7.编码风格与开发效率。

    规定

    软件的生命周期贯穿产品的开发,测试,生产,用户使用,版本升级和后期维护等过程,只有易读,易维护的软件代码才具有生命力。
    如何打造团队的代码风格统一以及开发效率的提升

    良好的编码风格有助于编写出可靠而又容易维护的程序,
    编码风格在很大程度上决定着程序的质量。
    
    结构的标准和指导方针
    易于调用和复用
    标准的使用促进了小组成员之间的交流
    常用的设计技术和策略的使用让代码更易于测试、维护和复用
    

    8.软件项目开发中各角色之间的关系。

    运维 - DBA
    根据需求分析与后端开发人员一同绘制数据库ER图(概念设计)和数据库关系图(物理设计)。
    安装数据库。
    根据数据库关系图库建库建表。
    同测试人员一同进行数据库的压力测试。
    负责数据库监控、管理和性能分析。
    负责数据库备份恢复。
    负责数据库集群负载均衡和故障转移。

    软件开发过程中的团队成员角色
    数据库设计(概念模型CDM和物理模型PDM)

    搭建项目运行环境(操作系统、数据库和JDK),将项目打包部署在服务器上。
    维护操作系统和数据库。
    

    部署项目

    9.软件测试在软件开发各阶段中的体现。

    软件测试贯穿软件开发的整个过程。
    测试人员在软件开发各阶段中的作用

    需求分析:考虑软件失效时有的状态信息和数据。
    设计:使用错误树分析、失效模式和因果分析以及其他技术,来避免失效或减轻失效的后果。
    代码编写:构建一个安全性实例,以确信软件是高度可靠地、将产生用一个安全的系统。
    测试:仔细考虑所有可能的测试实例、在适当的时候采用自动工具、确保设计考虑所有的危险。
    
    集成测试 - 设计说明
    功能测试 - 系统功能需求
    性能测试 - 其他软件需求
    验收测试 - 顾客需求说明
    安装测试 - 用户环境
    

    参考评分标准:结合具体实验项目6w(4分);理论部分(3分);联系实际部分(3分)。
    6w
    1、市场需要什么(What)——有关产品(Objects)是什么。通过分析消费者希望购买什么,为什么需要这种商品而不是需要那种商品,研究企业应如何提供适销对路的产品去满足消费者的需求。
    2、为何购买(Why)——购买目的(Objectives)是什么。通过分析购买动机的形成(生理的、自然的、经济的、社会的、心理因素的共同作用),了解消费者的购买目的,采取相应的市场策略。
    3、购买者是谁(Who)——购买组织(Organizations)是什么。分析购买者是个人、家庭还是集团,购买的产品供谁使用,谁是购买的决策者、执行者、影响者。根据分析,组合相应的产品、渠道、定价和促销。
    4、如何购买(How)——购买组织的作业行为(Operations)是什么。分析购买者对购买方式的不同要求,有针对性地提供不同的营销服务。在消费者市场,分析不同的类型消费者的特点,如经济型购买者对性能和廉价的追求,冲动性购买者对情趣和外观的喜好,手头拮据的购买者要求分期付款,工作繁忙的购买者重视购买方便和送货上门等。
    5、何时购买(When)——购买时机(Occasions)是什么。分析购买者对特定产品的购买时间的要求,把握时机,适时推出产品,如分析自然季节和传统节假日对市场购买的影响程度等。
    6、何处购买(Where)——购买场合(Outlets)是什么。分析购买者对不同产品的购买地点的要求,如消费品种的方便品,顾客一般要求就近购买,而选购品则要求在商业区(地区中心或商业中心)购买,一边挑选对比,特殊品往往会要求直接到企业或专业商店购买等。

    展开全文
  • 软件工程 毕业设计题目

    万次阅读 多人点赞 2019-05-23 14:45:04
    软件工程毕业设计 题目汇总 【不断更新中】 1.微信小程序 校园表白墙微信小程序 2.房屋租赁管理系统 3.航空售票管理系统 4.高校会议室管理系统 5.高校就业管理系统 6.失物招领系统 7.图书销售系统 8.微信小程序 ...

    软件工程毕业设计 题目汇总 【不断更新中】

    1. 微信小程序 校园表白墙微信小程序  【地址:程序地址
    2. 房屋租赁管理系统 【地址:程序地址
    3. 航空售票管理系统
    4. 高校会议室管理系统
    5. 高校就业管理系统
    6. 失物招领系统
    7. 图书销售系统
    8. 微信小程序 商城系统 
    9. 微信小程序 资料分享系统   【地址:程序地址
    10. 微信小程序 校园点歌系统 【地址:程序地址
    11. 校园资料分享系统  【地址:程序地址
    12. 电影网站系统  
    13. 人事管理系统
    14. 视频教学网站
    15. 网上花店系统
    16. 在线考试系统 
    17. 个人博客网站
    18. 班级作业管理系统 
    19. crm客户关系管理系统
    20. 课程评价系统 【地址:程序地址
    21. 学生管理系统
    22. 工程财务管理辅助系统
    23. 【校园】新闻网站系统
    24. 停车位管理系统
    25. 基于协同过滤算法课程推荐系统 【地址:程序地址
    26. 基于协同过滤算法和KNN 图书馆借阅推荐系统
    27. 大学生健康管理系统 【地址:程序地址
    28. 在线答题微信小程序【地址:程序地址
    29. 选课微信小程序【地址:程序地址
    30. 仓库管理系统
    31. 医药管理系统
    32. 校园招聘信息管理系统
    33. 校园论坛系统
    34. 二维码门禁管理系统
    35. 酒店后台管理系统
    36. 校园二手交易网
    37. 大学生宿舍管理系统
    38. 奖学金申请系统
    39. 企业进销存系统
    40. 校园报修平台
    41. 防疫登记系统

    微信扫描下方二维码,查看相关系统演示

    展开全文
  • 软件工程经典教程之[1]软件工程概述PPT

    千次下载 热门讨论 2014-10-13 22:30:15
    1.0 计算机基础 1.1 软件的概念 1.2 软件危机 1.3 软件工程 1.4 软件生命周期 1.5 软件开发过程模型 1.6 软件开发方法简述
  • 软件工程工程伦理案例分析A CASE (Computer-Aided Software Engineering) tool is a non-exclusive term used to indicate any form of automated support for software engineering. In an increasingly ...

    软件工程工程伦理案例分析

    A CASE (Computer-Aided Software Engineering) tool is a non-exclusive term used to indicate any form of automated support for software engineering. In an increasingly prohibitive sense, a CASE tool implies any tools used to automate some action related to software development. Many CASE tools are available to make software engineering development easy and efficient.

    CASE(计算机辅助软件工程)工具是一个非排他性术语,用于指示对软件工程的任何形式的自动化支持。 在日益禁止的意义上,CASE工具意味着任何用于自动化与软件开发相关的操作的工具。 许多CASE工具可用来使软件工程开发变得容易和高效。

    A portion of these CASE tools aid stage-related undertakings, for example, specification, structured analysis, design, testing, coding, feedback, etc. and others to non-stage exercises, for example, project management and configuration management.

    这些CASE工具的一部分有助于阶段相关的工作,例如规范,结构化分析,设计,测试,编码,反馈等,以及其他一些非阶段性的工作,例如项目管理和配置管理。

    为什么我们需要案例工具? (Why do we need Case Tools?)

    The major objective of using case tools is to,

    使用案例工具的主要目的是,

    1. Increase the efficiency and productivity

      提高效率和生产力

    2. To make software's cost-efficient

      使软件具有成本效益

    3. To make Good Quality of software

      制作高质量的软件

    案例环境 (Case Environment)

    Individual CASE tools are valuable, the genuine intensity of a toolset can be acknowledged just when these sets of tools are incorporated into a typical system or condition. CASE tools are portrayed by the stage or phases of SDLC (software development life cycle) on which they center. Since various tools covering various stages share regular data, it is necessitated that they incorporate through a few focal repositories to have a predictable perspective on data related to the software development artifacts. This focal repository is generally an information word reference containing the meaning of all composite and basic information things. Through the focal repository, all the CASE tools in the CASE environment share normal data among themselves. Thus, a CASE situation office the automation of bit by bit techniques for programming advancement. A schematic portrayal of a CASE environment is mentioned below,

    单独的CASE工具是有价值的,只有在将这些工具集合并到典型系统或条件中时,才能确认工具集的真正强度。 CASE工具以其为中心的SDLC(软件开发生命周期)的阶段来描述。 由于涵盖各个阶段的各种工具共享常规数据,因此有必要将它们通过几个焦点存储库合并以对与软件开发工件相关的数据具有可预测的观点。 该焦点库通常是一个信息词参考,其中包含所有复合信息和基本信息事物的含义。 通过焦点存储库,CASE环境中的所有CASE工具之间都可以共享常规数据。 因此, CASE情境处处实现了用于编程发展的点对点技术的自动化。 下面提到了CASE环境的示意图:

    CASE Tools in Software Engineering


    Image source: https://www.careerride.com/page/case-tools-663.aspx

    图片来源:https://www.careerride.com/page/case-tools-663.aspx

    案例的好处 (Benefits of Case)

    There are several benefits of using Case tools and working with the case environment,

    使用案例工具和使用案例环境有很多好处,

    1. A key advantage emerging out of the utilization of a CASE environment is cost efficiency through all software advancement stages. Various studies complete to quantify the effect of CASE put the cast decrease between 30% to 40%.

      利用CASE环境产生的一个关键优势是在所有软件改进阶段的成本效率。 各种量化CASE效果的研究都完成了,使投放量减少了30%至40%。

    2. The utilization of CASE tools prompts extensive upgrades quality. This is mainly due to the realities that one can easily emphasize through the various periods of software development and the odds of human blunder are impressively decreased.

      CASE工具的使用提示了广泛的升级质量。 这主要是由于人们可以在软件开发的各个阶段轻松强调的现实,并且人为失误的几率大大降低了。

    3. CASE tools help produce high caliber and steady archives. Since the significant information identifying with a product item is kept up in a focal repository, excess in the put-away information is diminished and in this way, odds of conflicting documentation are decreased.

      CASE工具有助于生成高质量和稳定的档案。 由于标识产品的重要信息保留在焦点存储库中,因此减少了多余信息的存储量,从而减少了发生冲突的文档的几率。

    4. The presentation of a CASE environment affects the style of working of an organization and makes it situated towards the organized and methodical methodology.

      CASE环境的呈现方式会影响组织的工作方式,并使之趋于有组织和有条理的方法论。

    5. CASE tools have prompted progressive cost-efficiency in software maintenance endeavors. This emerges not just because of the huge estimation of a CASE environment in traceable errors and consistency checks, yet likewise, because of the deliberate data catch during the different periods of software development as a consequence of holding fast to a CASE environment.

      CASE工具已促使软件维护工作逐步实现成本效益。 出现这种情况,不仅是因为对CASE环境进行了可追溯的错误和一致性检查的巨大估计,而且还因为在软件开发的不同时期中有意捕获数据而导致了对CASE环境的快速掌握。

    翻译自: https://www.includehelp.com/basics/case-tools-and-their-scopes-in-software-engineering.aspx

    软件工程工程伦理案例分析

    展开全文
  • 软件工程导论》学习笔记·

    万次阅读 多人点赞 2019-03-04 11:53:18
    第一章,软件工程导论: 软件危机:计算机软件开发维护过程中所遇到得一系列严重的问题。 软件危机的典型表现: 对软件开发成本和进度的估计常常很不准确。 用户对以完成的软件系统不满意的现象经常发生。 软件...
  • 软件工程 - 软件工程思想
  • 软件工程导论

    千次阅读 热门讨论 2020-11-08 17:20:10
    软件工程(Software Engineering),是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户需求的软件产品的工程,或以此为研究对象的学科。
  • 软件工程导论习题

    万次阅读 2020-09-08 20:48:17
    软件工程软件工程专业的一门重要学科,掌握好软件工程原理是开发软件的重要基础知识。本博客对软件工程导论部分习题解释,以更加深理解。
  • 软件工程期末考试题库(超全)

    万次阅读 多人点赞 2020-12-18 18:25:49
    软件工程期末考试题库 选择题 具有风险分析的软件生命周期模型是(  C   )。 A.瀑布模型      B.喷泉模型  C.螺旋模型        D.增量模型 软件工程的基本要素包括方法、工具和( A )。 ...
  • 软件工程学习笔记选择题总结

    万次阅读 2020-03-09 21:00:14
    第一章 初认软件工程 1.下面的( C)说法是正确的。 A.由于软件是产品,因此可以应用其他工程制品所用的技术进行生产 B.购买大多数计算机系统所需的硬件比软件更昂贵 C.大多数软件系统是不容易修改的,除非它们在...
  • 软件工程》60’ 一.、软件过程 1、软件过程的概念 答: 1)**软件过程描述为为了开发出客户需要的软件,什么人、在什么时候、做什么事以及怎么做这些事以实现某一种的具体目标。**ISO9000把过程定义为:“使用资源...
  • 软件工程】什么是软件工程

    千次阅读 热门讨论 2018-02-28 23:11:20
    软件工程的视频看了一半了,看的也是一头雾水,看视频的时候我就在想软件工程究竟是什么,它是干什么的,有什么用呢?如果这个不了解清楚,我感觉我视频看了也是白看。就按照我这不将就的小脾气,我就要整明白这是个...
  • 软件工程北大慕课题

    万次阅读 多人点赞 2020-01-23 13:56:33
    第一周:软件工程概论 软件的定义及特点 1单选(2分)软件产品与物质产品有很大的区别,软件产品是一种(C)产品。 A.有形 B.消耗 C.逻辑 D.文档 2多选(2分)下列关于软件的说法正确的是(BCD) A.软件是通过定制进而...
  • 软件工程期末复习总结

    万次阅读 多人点赞 2016-07-03 15:22:39
    软件工程
  • 软件工程-软件工程基本概念

    千次阅读 2018-10-16 22:38:30
    软件工程的概念、基本原理、方法学; 软件生命周期,主要软件过程的特点。 一、软件危机的定义:软件开发和维护过程中所遇到的一系列严重问题; 二、软件危机产生原因:用户需求不明确、缺乏科学理论作为指导、...
  • 软件工程导论--软件工程概述

    万次阅读 多人点赞 2019-09-26 17:41:23
    1 软件软件危机 1.1 软件的特性 软件是一种逻辑实体,而非具体的物理...  软件产品一般分为两类:通用软件产品(如数据库软件、文字处理软件、绘图软件工程管理工具…)和定制软件产品(如电子设备的控制软...
  • 软件工程的定义有很多种说法,这里写出两个在大学软件工程期末考试出简答题给出的定义两者选其一。 一: 软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把...
  • 软件工程项目

    千次阅读 多人点赞 2019-09-24 15:50:02
    软件工程项目计划书 **题目:实时天气预报软件** 学院:信息科学与工程学院 专业:软件工程 组长:卢向疆 组员:卢向疆 寇亭立 李悦 **1.引言 1.1编写目的 Android是一种以 Linux为基础的开放源代码操作系统...
  • 软件工程导论 期末知识点复习总结

    万次阅读 多人点赞 2018-06-30 10:38:31
    2015软件工程期末复习知识点 软件是计算机程序、方法、规则、相关的文档以及运行计算机系统时所必需的数据的总和(狭义定义:软件=程序+数据+文档) 软件的特性:软件是复杂的、软件是不可见的、软件是不断变化...
  • 系列索引:《软件工程与实践》第三版 软件工程课程知识梳理 本章目录: 系列索引:《软件工程与实践》第三版 软件工程课程知识梳理 本章目录: 本章重难点: 1.1 软件工程的发展 1.1.1 软件危机概述 1.1.2 ...
  • 软件工程-系统流程图

    万次阅读 多人点赞 2019-06-16 16:49:57
    软件工程可行性研究中需要建立新系统的高层逻辑模型,这个就需要系统流程图了。 作用 系统流程图时描述物理系统的工具 物理系统 所谓物理系统,就是一个具体实现的系统。 与程序流程图的区别 在系统流程图中...
  • 软件工程》— 实用软件工程——习题答案

    万次阅读 多人点赞 2017-06-18 17:45:09
    实用软件工程——课后习题答案 软件工程(英语:Software Engineering[1])1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那...
  • 软件工程试题大全

    千次阅读 多人点赞 2019-07-02 15:19:11
    软件工程基础 一. 选择题 1。软件需求分析阶段的工作,可以分为4个方面:需求获取,需求分析,编写需求规格说明书以及(B) A).用户 B).需求审评 C).总结 D).都不正确 2。在原型法中称(A)为用户/设计者,开发人员根据用户...
  • 软件工程类图_类图| 软件工程

    千次阅读 2020-07-17 19:36:55
    软件工程类图Classes are used to represent the object-oriented models. As we know that in the OOPs structure, every entity is treated as an object. A class thus can be defined as a collection of ...
  • 软件工程名词解释

    万次阅读 2019-11-06 16:01:00
     软件工程是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。 软件生存周期  软件生存周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退...
  • 软件工程的介绍

    千次阅读 多人点赞 2018-06-08 19:00:01
    什么是软件工程 大概总结一下:就是一个研究如何让软件开发的过程变得更加规范,可控,流程化,工厂化的研究体系。 如果你有耐心且想深刻了解,可以继续往下看: 学了这么长时间的软件工程,相信有很多人对...
  • 软件工程软件工程过程与方法

    万次阅读 2016-06-23 17:29:48
    尽管程序员领着一份不错的薪水,可是他们也同样付出了巨大的精力与时间。随着软件规模的日益庞大,用户...而软件工程正是研究如何以系统性的、规范化的 、可定量的过程化方法高效开发与管理、维护软件的交叉性学科。
  • 软件工程电子书

    热门讨论 2007-09-11 18:44:12
    软件工程电子书(推荐).rar

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 930,169
精华内容 372,067
关键字:

软件工程