精华内容
下载资源
问答
  • 浅谈人工智能时代下的工程伦理问题

    万次阅读 多人点赞 2021-01-09 23:29:25
    浅谈人工智能时代下的工程伦理问题 一、引言 近年来,随着大数据基础设施建设以及人工智能技术的发展,社会中涌现许多新技术,给人们带来更便捷的生活。但与其共生的道德风险问题也日益显著。人工智能道德风险即...

    浅谈人工智能时代下的工程伦理问题

    一、引言

    近年来,随着大数据基础设施建设以及人工智能技术的发展,社会中涌现出许多新技术,给人们带来更便捷的生活。但与其共生的道德风险问题也日益显著。人工智能道德风险即人工智能技术带来的伦理结果的不确定性,其既有主观因素也有客观因素,具体表现有道德算法风险、道德决策风险、隐私数据泄露风险等。风险主要成因有技术主体、政治、经济、文化等社会因素。结合当下大数据驱动的人工智能算法特点,如何运用风险治理思想分析其背后的工程伦理问题对人工智能领域发展具有重要意义。

    二、人工智能时代的当下

    在1956年达特茅会议中AI这个概念被提出,经历数次低谷与发展浪潮,人工智能再次活跃在大众的视野中,并且以更完备的生态以及更强的活力积极改变我们的生活。在如今的人工智能浪潮中,深度学习因为其能够胜任更复杂、更庞大的场景而成为主流。

    在AI的应用层面,随着大数据基础设施建设的日趋完备,人工智能孕育出许多产业,如:数据挖掘、人脸识别、语音识别、自动驾驶等。同时医疗卫生、交通运输、仓储物流、游戏等行业都已经或正在接受人工智能的优化。

    2019年11月11日24时整,“双11”全天的物流订单量达到创纪录的12.92亿元,物流订单量迎来了“爆炸式”的增长。“双11”全天各邮政、快递企业共处理5.35亿快件,是二季度以来日常处理量的3倍,同比增长28.6%,再创历史新高。而在其背后做支撑的是一套完整的基于大数据的人工智能系统。

    目前,百度、阿里、腾讯、谷歌等主流互联网公司正在大力投资人工智能相关产业与技术,而与此同时全球正有上千家公司全力押注人工智能,并且这个趋势依旧保持稳定增长的速度。

    三、人工智能伦理问题日益凸显

    显然,在当下这个人工智能技术飞速发展的时代,人工智能技术的广泛应用为人类带来了显而易见的好处。但技术的进步不但扩大了人类对于技术的恐慌,同时也放大了由于某些技术缺陷和忽略道德伦理问题而带来的负面影响。

    3.1 忽略伦理问题下产生的算法歧视问题

    外卖作为当下快节奏生活的必需品,在其背后做支撑的是数以百万的外卖员和强大的人工智能系统。2020年9月8日,一篇名为《外卖骑手,困在系统里》的文章在互联网上被热议,文章指出:2016至2019年间,美团多次向配送站站长发送加速通知,3公里的送餐距离最长时限一再被缩短至38分钟;而根据相关数据显示,2019年中国全行业外卖订单单均配送时间较3年前减少了10分钟。外卖骑手在系统算法与数据的驱动下疲于奔命,逐渐变成高危职业——骑手为在算法规定的最长送餐时限内完成送餐任务无视交通规则,不断提高车速。

    许多伦理问题都是由于实践主体缺乏必要的伦理意识造成的,而外卖平台算法使得外卖骑手被“困在系统里”显然是工程的决策者以及管理者没有考虑相关的伦理问题所导致的。外卖平台作为一项服务消费者、向社会提供就业岗位的工程,其目的与其他类型的工程类似,均为满足人类在某方面的需求,但工程在向社会提供服务的同时不应当忽略工程风险问题。

    3.2 从风险与安全角度分析外卖平台

    工程风险的防范与安全分为工程的质量监理与安全、意外风险控制与安全和事故应急处置与安全三个方面,分析外卖平台的工程风险主要从意外风险控制和事故应急处置两方面展开。

    3.2.1 意外风险控制维度的工程风险

    外卖平台作为服务大众的工程项目,其受众人数巨大——外卖市场规模超6500亿元,覆盖4.6亿消费者,工程一旦出现意外风险控制不当的情况则对其受众造成无法估量的损失。在基于大数据的人工智能算法的训练过程中,算法训练结果会随着数据重心的整体偏移,从而导致外卖骑手不得不加快派送的速度进而风险增加。因此,为避免人工智能系统追求极致地无限制缩短派送最长时限,工程师和程序设计者在程序设计之初应当添加阈值以保证外卖平台背后的外卖骑手能够在遵守交通规则的前提下及时、安全地完成任务。

    3.2.2 事故应急处置维度的工程风险

    事故应急处理体现着工程负责人、相关利益反对工程的理解程度。应对工程事故,应当事先准备一套完整的事故应急预案,保证迅速、有序地开展应急与救援行动,降低人员伤亡和经济损失。外卖骑手因忽视交通规则造成伤亡的事件并非最近才发生——2017年上半年,上海市公安局交警总队数据显示,在上海,平均每2.5天就有1名外卖骑手伤亡。同年,深圳3个月内外卖骑手伤亡12人。2018年,成都交警7个月间查处骑手违法近万次,事故196件,伤亡155人次,平均每天就有1个骑手因违法伤亡。2018年9月,广州交警查处外卖骑手交通违法近2000宗,美团占一半,饿了么排第二。而外卖平台除口头告诫骑手之外并没有推出从根本处解决问题的措施,直到《人物》发表《外卖骑手,困在系统里》一文后外卖平台才相继推出多等5分钟的政策。

    3.3 从工程四要素角度分析外卖平台

    工程包括技术要素、利益要素、责任要素、环境要素以及伦理要素,接下来将从工程四要素中的技术、利益与责任这三个方面来展开。

    3.3.1 技术维度的道德风险

    基于算法和大数据的人工智能技术背后隐藏着风险。算法体现着工程师和程序设计者的思想,其政治立场和社会偏见都会不可避免的嵌入程序中。从大数据中诞生的人工智能系统通常会存在基于数据采样偏差带来的问题,而这类问题在后续的训练中不会被消除甚至可能被放大。因此,为消除算法与数据采用带来的偏见,工程师以及程序设计者在程序设计之初就应当消除主观偏见;同时在数据的处理方法中,应当极尽全力保证数据的准确,降低数据偏差带来的风险。

    3.3.2 利益维度的道德问题

    人工智能存在威胁、侵犯人类利益的风险。从安全角度来说,人工智能应当对人类来说是安全的、可靠的、不作恶的。以外卖平台派单系统为例,外卖骑手在系统的算法歧视下被迫忽视交通规则,对骑手、对行人已经构成严重的安全隐患。因此,如何通过人工智能系统,在权衡各方利益、兼顾效率、保证安全的前提下实现利益最大化是人工智能系统需要解决的核心问题。

    3.3.3 责任维度的道德风险

    人工智能在价值选择困境与责任承担困境中存在风险。外卖平台派单系统在消费者对于外卖的时间要求与外卖骑手在派送过程中的风险问题之间面临抉择,系统应当尽量满足消费者的需求而忽视外卖骑手的安全,还是应当在尽量保护骑手的安全的前提下提高派送效率?在人工智能系统作为自主行为主体的情况下,系统会逐渐压缩骑手的安全空间。而在发生事故之后的责任鉴定中,系统并没有能力为自己的决策承担其相应的责任。

    四、总结

    为避免人工智能出现无节制的追求极致从而导致技术、利益、责任等方面的道德风险,实现人类社会可持续发展的目标,人工智能的设计应当秉承着将人类健康、安全和福祉放在首位的原则。由外卖平台人工智能系统这一例所引发出来的思考,进一步提出以下建议:

    1、工程设计之初应当强化工程负责人、管理者、工程师以及程序设计者的伦理意识。由于算法、工程体现着设计人员的思想,而相关人员对伦理方面的意识缺失必将导致缺乏伦理思想的工程存在缺陷。

    2、强化工程相关人员的风险与安全意识。风险与安全始终是工程无法逃避的问题,针对风险可接受性进行完备分析与评估,并对一系列不可控意外风险制定相关预警机制与应急机制是控制风险、规避风险、妥当处理事故的唯一途径。

    3、强化人类主导和监督能力。人类主导以及人为监督有助于人工智能系统不会走向极端,从而出现逻辑上无比正确却存在人类伦理问题的缺陷。

    4、明确人工智能系统的责任归属。程序设计之初应当对程序设计者针对不同模块的设计明确责任归属,当下人工智能的发展远远没有达到成熟阶段,相应的人工智能系统也没有能力对其发展的不良后果负责,这个责任很自然的需要其背后的软件工程师、程序设计者、工程负责人以及管理者共同承担;人工智能系统在设计阶段明确责任归属有利于工程事故发生之后的责任归属划分;有利于在程序设计阶段强化工程师们的工程伦理意识。

    从技术发展的角度来看,人工智能系统因其发展历史较短、技术成熟度低等原因远未达到可以完全信赖的地步。 人工智能系统在设计中应考虑预防性安全措施来防范风险,减少不可接受的伤害。

    展开全文
  • 这个问题是个老问题了,但是一直没有很详细的回答过,这次看到知乎上有人提到,就回复了一下,原帖如下:...对于企业来说,问题不解决,只是纠缠问题是谁的责任,公司会被这些人直接拖垮,这时候对于企业来说

    这个问题是个老问题了,但是一直没有很详细的回答过,这次看到知乎上有人提到,就回复了一下,原帖如下:

    https://www.zhihu.com/question/42151352/answer/99683378


    我的回答:

    首先,发现了问题,第一时间应该考虑的是如何解决问题,其次才是查找问题的来源避免问题的发生。
    对于企业来说,问题不解决,只是纠缠问题是谁的责任,公司会被这些人直接拖垮,这时候对于企业来说最重要的就是解决问题!
    其次,问题解决后,再查找问题的来源,这时候才需要分类:
    1,需求覆盖不到的地方,描述不清楚的地方,需求,设计和测试都要承担一定的责任,需求的责任最重。
    说需求人员的责任大家都容易理解,为什么说设计和测试还有PM都有责任,是因为需求的评审是需要设计和测试参与的,角度不同,具体这里就不展开了。
    除非判断就是需求采集中的重大缺陷,否则设计和测试都有关联的次要责任。
    2,设计过程,开发过程没有实现,需求检查到了,设计和开发却没有弥补。
    设计或/和开发的责任,PM责任最大,监管不到位。
    3,测试过程中的疏漏,前面那位说的比较完全了。
    测试用例没有覆盖,测试用例覆盖了却没有执行,各有不同的偏重点,前者参与评审的相关人员都有责任,后者测试组的完全责任,PM也有对应责任。
    4,交付部署中出现的问题
    版本拿错的责任,一般在于PM,配置管理员和测试经理,也有可能是因为没有足够明确的制度造成了混乱,这样需要部门经理或者更高层的人员来牵头负责。
    版本拿对了,安装过程出错,交付部署人员的责任最大,项目经理次之。
    大体上就是这样分类和对应,应该算是比较全了

    展开全文
  • 问题很简单就是有n种饭,随便选... 之前一直不能全部AC,问题出在特殊情况上面,如n,m为0的情况等等  下面是AC的代码: def jiecheng(n): res=1 for i in range(1,n+1): res*=i return res n=int(raw_inp

        问题很简单就是有n种饭,随便选m种,一共有多少种选法,即求解C(n,m)问题

        之前一直不能全部AC,问题出在特殊情况上面,如n,m为0的情况等等

        下面是AC的代码:


    def jiecheng(n):
        res=1
        for i in range(1,n+1):
            res*=i
        return res
        
    n=int(raw_input())
    num_list=[]
    res_list=[]
    for i in range(n):
        num_list.append(map(int, raw_input().split(' ')))
    for one_list in num_list:
        one,two=one_list
        three=abs(one-two)
        if one==0:
            res_list.append(0)
        elif two==0:
            res_list.append(0)
        elif one>two:
            a=jiecheng(one)
            b=jiecheng(two)
            c=jiecheng(three)
            res_list.append(int(a/(b*c)))
        else:
            res_list.append(1)
    for one in res_list:
        print one


    结果如下 :


    2

    2 1

    4 2


    2

    6

    展开全文
  • 面试常见问题——软件工程(一)

    千次阅读 多人点赞 2016-10-09 16:42:13
    2、可行性研究原因及主要研究问题 3、软件需求规格说明书内容 4、软件危机定义、产生原因、消除方法 5、有人认为软件开发时,一个错误发现得越晚,为改正它所付出的代价越大。提出你的观点并解释原因。从项目经理...

    面试常见问题——软件工程(一)

    ----------------分界线:本博客2020年3月14日进行了一次修正---------------

    目录:

    1. 软件开发的基本过程工作阶段划分及其相应文档
    2. 可行性研究原因及主要研究问题
    3. 软件需求规格说明书内容
    4. 软件危机定义、产生原因、消除方法
    5. 有人认为软件开发时,一个错误发现得越晚,为改正它所付出的代价越大。提出你的观点并解释原因。从项目经理出发,如何管理软件项目
    6. 数据流图的作用和基本成分
    7. 软件工程定义,与软件工程方法学的关系
    8. 软件生命周期(软件过程模型),瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点
    9. 分析模型(数据字典、数据流图、实体-关系图、状态转换图)

    1、 软件开发的基本过程工作阶段划分及其相应文档

    • 问题定义
      • 确定要解决的问题是什么。通过调研,系统分析员要提出关于问题性质、工程目标和工程规模的书面报告,并且要得到客户对这份报告的确认。
      • 《用户需求分析分档》
    • 可行性研究
      • 确定问题是否有行得通的解决办法。用最小的代价在尽可能短的时间内确定问题是否能够解决。
      • 《可行性研究报告》和《项目开发计划》
    • 需求分析
      • 确定目标系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰和具体的要求。
      • 《软件需求规格说明书》、《数据要求说明书》、《初步用户手册》
    • 概要设计(总体设计、初步设计、逻辑设计、高层设计)
      • 概括地说,怎样实现目标系统?
        • 确定解决问题的方案及目标系统中应该包含的程序。
        • 设计程序的体系结构,确定程序由哪些模块组成以及模块间的关系。
      • 《概要设计说明书》、《测试计划初稿》
    • 详细设计(模块设计、物理设计、低层设计)
      • 把解决办法具体化,详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。
      • 《详细设计说明书》、《数据库设计说明书》
    • 编码和单元测试
      • 把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。
      • 《模块开发卷宗(始)》、《用户手册(完)》、《操作手册》
    • 综合测试
      • 通过各种类型的测试及相应的调试使软件达到预定的要求。最基本的测试是集成测试和验收测试。
        • 集成测试(组装测试):根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。【前后端联调】
        • 验收测试(确认测试):按照规格说明书的规定,由用户对目标系统进行验收。【UAT测试】
      • 《模块开发卷宗(完)》、《测试计划》、《测试分析报告》、《项目开发总结报告》
    • 软件维护
      • 通过各种必要的维护活动使系统持久地满足用户的需要,包括四类维护活动:
        • 改正性维护:诊断和改正软件错误
        • 适应性维护:修改软件以适应环境的变化
        • 完善性维护:根据用户要求改进或扩充软件使它更完善
        • 预防性维护:修改软件为将来的维护活动预先做准备
      • 《开发进度月报》、《软件维护报告》、《软件问题报告》、《软件修改报告》

    2、 在软件开发早期阶段为什么要进行可行性研究?可行性研究主要研究什么问题?

    • 进行可行性研究原因:
      • 开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否值得,从而避免在这些工程上的任何时间、人力、软硬件资源的浪费。
      • 可行性研究的实质是进行一次大大压缩简化了的系统分析和设计过程,就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
    • 主要研究问题:
      • 技术可行性。包括对要开发项目的功能、 性能和限制条件进行分析, 确定在现有的资源条件下,技术风险有多大,项目是否能实现。这里的资源包括已有的或可以搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。
      • 经济可行性。包括进行成本评估以及利润评估, 确定要开发的项目是否值得投资开发。对于大多数系统,一般衡量经济上是否合算,应考虑一个“底线”,经济可行性研究范围较广,包括:
        • 成本—效益分析
        • 长期公司经营策略
        • 开发所需的成本和资源
        • 潜在的市场前景
      • 操作可行性。有时还要研究社会可行性问题,研究要开发的项目是否存在任何侵犯、妨碍等责任问题。社会可行性所涉及的范围也比较广,它包括合同、责任、 侵权和其他一些技术人员常常不了解的陷阱等。
      • 必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。
     

    3、 软件需求规格说明书包括哪些内容?

    • 引言(陈述软件的目标)
      • 系统参考文献
      • 整体描述
      • 软件项目约束
    • 信息描述(陈述软件必须解决的问题)
      • 信息内容
      • 信息流
        • 数据流
        • 控制流
    • 功能描述(给出为解决问题而需要的每个功能)
      • 功能分解
      • 功能描述
        • 处理说明
        • 限制
        • 性能需求
        • 设计约束
        • 支撑图
      • 控制描述
        • 控制规格说明
        • 设计约束
    • 行为描述(说明作为外部事件和内部产生控制结果的软件操作)
      • 系统状态
      • 事件和动作
    • 确认标准(对所有其他需求的隐式复审)
      • 性能范围
      • 测试种类
      • 预期的软件响应
      • 特殊考虑
    • 参考书目(列出与该软件有关的全部文档,包括其他软件工程文档,技术参考文献以及厂商资料及标准)
    • 附录(规格说明的补充信息:表格数据、详细算法、图表及其他材料)

    4、软件危机:

    • 定义:
      • 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
        • 如何开发软件,以满足对软件日益增长的需求
        • 如何维护数量不断膨胀的已有软件
    • 典型表现:
      • 对软件开发成本和进度的估计不准确
      • 用户对“已完成”的软件系统不满意
      • 软件产品的质量没有得到保证
      • 软件不可维护
      • 软件没有完备的文档资料
    • 产生原因:
      • 与软件本身的特点有关:
        • 软件不同于硬件,它是系统中的逻辑部件而不是物理部件,缺乏“可见性”
        • 开发进展情况较难衡量,软件的质量也较难评价
        • 软件在运行过程中不会因为使用时间过长而被“用坏”,运行中修改原有设计,较难维护
        • 软件规模庞大,程序复杂性随着程序规模的增加而呈指数上升
      • 与软件开发和维护的方法不正确有关:
        • 忽视软件需求分析的重要性
        • 轻视软件维护
      • 与软件开发人员的弱点有关:
        • 软件产品是人的思维结果,因此软件生产水平最终在相当程度上取决于软件人员的教育、训练和经验的积累;【产品经理的锅】
        • 对于大型软件往往需要许多人合作开发,甚至要求软件开发人员深入应用领域的问题研究,这样就需要在用户与软件人员之间相互通讯,在此过程中难免发生理解的差异,从而导致后续错误的设计或实现,而要消除这些误解和错误往往需要付出巨大的代价;【项目经理的锅】
        • 由于计算机技术和应用发展迅速,知识更新周期加快,软件开发人员经常处在变化之中,不仅需要适应硬件更新的变化,而且还要涉及日益扩大的应用领域问题研究。【研发的锅】
    • 解决办法:
      • 方法论:对计算机软件有一个正确的认识。软件是程序、数据及相关文档的完整集合。
        • 程序:能够完成预定功能和性能的可执行的指令序列。
        • 数据:使程序能够适当处理信息的数据结构。
        • 文档:开发、使用和维护程序所需要的图文资料。
      • 工具栈:
        • 软件工程支撑环境:各个阶段所使用的软件工具有机整合,支持软件开发的全过程。
      • 管理:
        • PM的组织管理

    5、 有人认为软件开发时,一个错误发现得越晚,为改正它所付出的代价越大。提出你的观点并解释原因。如果你是项目经理,你如何管理你的软件项目?

    • 从表中可以看出,在需求分析阶段检查和修复一个错误所需的代价只有程序编码阶段所需代价的1/5到1/10,而在维护阶段做同样的工作所付出的代价却是编码阶段的20倍。
    • 原因:
      • 在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;
      • 在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;
      • 在软件“已经完成”时在引入变动,付出的代价更高。
    • 项目管理:
      • 做好需求评估、方案评审,识别项目干系人,管理好项目干系人的期望;
      • 协调项目团队内部关系和任务分配,对开发人员的招募、培训、调配和指导;
      • 做好项目管理计划,在启动、规划、执行、监控、收尾过程中严格按照项目管理方法,充分管控项目的范围、进度、成本、质量、风险等要素;
      • 总结和分析项目的成败得失,充分总结经验和教训,作为以后项目的借鉴和参考。
     

    6、数据流图的作用是什么?它有哪些基本成分?

    • 定义:
      • 数据流图(Data Flow Diagram,DFD)是用来描绘软件系统逻辑模型的图形工具,用于描绘信息流和数据从输入移动到输出的过程中所经受的变换。
    • 数据流图由四种基本符号组成:
      • 数据的源点或终点:用正方形(或立方体)表示;
      • 数据的处理:用圆角矩形(或圆形)表示;
      • 数据的存储:用开口矩形(或两条平行横线)表示;
      • 数据流:用箭头表示。
    • 附加符号:
      • 星号(*):表示数据流之间是“与”关系
      • 加号(+):表示数据流之间是“或”关系
      • 异或号(⊕):表示数据流之间是互斥的关系。

    7、什么是软件工程?它与软件工程方法学有何关系:

    • 定义:
      • 软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。
      • 软件工程是把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件之中。
      • 软件工程过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
    • 软件工程与软件工程方法学的关系:
      • 软件工程包括技术和管理两个方面的内容。
      • 软件工程方法学是指在软件生命周期全过程中使用的一整套技术方法的集合,包括了方法、工具和过程。
        • 方法:完成软件开发的各项任务的技术方法,回答“怎么做”的问题;
        • 工具:为运用方法而提供的自动的或半自动的软件工程支撑环境;
        • 过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

    8、什么是软件的生命周期?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点。

    • 软件生命周期(软件工程模型)由软件定义、软件开发和运行维护三个时期组成。
      • 软件定义分为三个阶段:
        • 问题定义
        • 可行性研究
        • 需求分析
      • 软件开发分为四个阶段:
        • 系统设计:
          • 总体设计(概要设计)
          • 详细设计
        • 系统实现:
          • 编码和单元测试
          • 综合测试
      • 运行维护:
        • 通过各种必要的维护活动使系统持久地满足用户的需要。
        • 每一次维护活动本质上都是一次压缩和简化了的软件定义和开发过程。
    • 瀑布模型(文档驱动,目前应用最广泛):
      • 定义:
        • 将软件生命周期各活动规定为依线性顺序联接的若干阶段的模型,是一种整体开发模型。里程碑或基线驱动或者说文档驱动。过程逆转性很差,或者说不可逆转。
        • 收集需求→分析→设计→编码→测试→维护。
      • 特点:
        • 阶段间具有顺序性和依赖性。
        • 推迟实现:清楚地区分逻辑设计和物理设计,尽可能推迟程序的物理实现。
        • 质量保证:
          • 每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。
          • 每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。
      • 优点:
        • 严格按照生命周期的各个阶段来进行开发,强调了每一阶段的严格性。解决在开发阶段后期修正不完善的需求说明所花费的巨大费用问题。
        • 在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大作用。
      • 缺点:
        • 开发过程一般不能逆转,否则代价太大。
        • 实际的项目开发很难严格按该模型进行。
        • 客户往往很难清楚地给出所有的需求,而该模型却要求如此。
        • 最终交付的产品可能不是用户真正需要的。
      • 适用场景:
        • 在开发时间内需求没有或很少变化。
        • 分析设计人员对应用领域很熟悉。
        • 低风险项目(对目标、环境很熟悉)。
        • 用户使用环境很稳定。
        • 用户除提出需求以外,很少参与开发。
    • 快速原型模型(原型驱动):
      • 定义:
        • 以某个软件原型为参照模型的开发方法,叫做原型法。原型驱动。本质是“快速”。
        • 收集需求→快速原型→构建→移交部署。
        • 在初步需求分析之后,马上向客户展示一个软件产品原型,对客户进行培训,让客户试用,在试用中收集客户意见,修改原型,再让客户试用,反复循环几次,直到客户确认为止。
      • 特点:
        • 不带反馈环,开发基本按照线性顺序进行。
      • 优点:
        • 可以得到比较良好的需求定义,容易适应需求的变化。
        • 有利于开发与培训的同步。
        • 开发费用低、开发周期短且对用户更友好。
      • 缺点:
        • 客户与开发者对原型理解不同。
        • 准确的原型设计比较困难。
        • 不利于开发人员的创新。
      • 适用场景:
        • 已有产品/产品原型,只需客户化的项目。
        • 简单而熟悉的行业或领域。
        • 有快速原型开发工具。
        • 进行产品移植或升级。
    • 增量模型(模块驱动):
      • 定义:
        • 增量模型将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止。
        • 分析→设计→编码→测试,分析→设计→编码→测试,分析→设计→编码→测试。
      • 特点:
        • 任务或功能模块驱动,可以分阶段提交产品。
        • 有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)。
      • 优点:
        • 能在较短时间内向用户提交可完成部分工作的产品。
        • 逐渐增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
        • 能在软件开发早期阶段使投资获得明显回报和易于维护。
      • 缺点:
        • 并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构。
        • 增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。
      • 适用场景:
        • 在开发过程中,客户接受分阶段交付。
        • 开发人员对应用领域不熟悉,难以一步到位。
        • 工期过紧的中等或高风险项目。
        • 用户可参与到整个软件开发过程中。
        • 使用面向对象语言或第四代语言。
        • 软件公司自己有较好的类库、构件库。
    • 螺旋模型(风险驱动):
      • 定义:
        • 螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控,使用原型及其他方法来尽量降低风险。
      • 优点:
        • 对可选方案和约束条件的强调,利于软件重用,可以在项目的各个阶段进行变更。
        • 以小的分段来构建大型系统,使成本计算变得简单容易。
        • 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
        • 随着项目推进,客户始终掌握项目的最新信息 , 从而能够和管理层有效地交互。 
      • 缺点:
        • 要求开发人员具有相当丰富的风险分析和排除风险的经验及专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
        • 过多的迭代次数会增加开发成本,延迟提交时间。
      • 适用场景:
        • 适用于内部开发大规模软件项目。

    9、分析模型:

    • 数据字典:描述软件使用或产生的所有数据对象。
    • 数据流图:处理规格说明。
    • 状态转换图:控制规格说明。
    • 实体-关系图:数据对象描述。

    10、根据以下描述构建邮件系统的E-R图;
    某公司拟开发一多用户电子邮件客户端系统,部分功能的初步需求分析结果如下:
    (1)邮件客户端系统支持多个用户,用户信息主要包括用户名和用户密码,且系统中的用户名不可重复。
    (2)邮件账号信息包括邮件地址及其对应的密码,一个用户可以拥有多个邮件地址。
    (3)一个用户可拥有一个地址簿,地址簿信息包括联系人编号、姓名、电话、单位、地址、邮件地址1、邮件地址2、邮件地址3等信息。地址簿中一个联系人只能属于一个用户,且联系人编号唯一标识一个联系人。
    (4)一个邮件账号可以含有多封邮件,一封邮件可以含有多个附件,邮件主要包括邮件号、发件人地址、收件人地址、邮件状态、邮件主题、邮件内容、发送时间、接收时间。
    其中,邮件号在整个系统内唯一标示一封邮件,邮件状态有已接受、待发送、已发送和已删除4种,分别表示邮件是属于收件箱、发件箱、已发送箱和废件箱。一封邮件可以发送给多名用户。附件信息主要包括附件号、附件文件名、附件大小。一个附件只属于一封邮件,附件号只在一封邮件内唯一。

     

    11、某培训中心要研制一个计算机管理系统。它的业务是:
    将学员发来的信件收集分类后,按几种不同的情况处理。
    (1)如果是报名的,则将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查 该课程是否额满,然后在学生文件、课程文件上登记,并开出报告单交财务部门,财务人员开出发票给学生。
    (2)如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件、和账目文件上做出相应的修改,并给学生注销单。
    (3)如果是付款的,则由财务人员在账目文件上登记,也给学生一张收费收据。
    要求:试根据以上描述画出数据流图。

    12、高考录取分数系统有以下功能:
    (1)计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件;
    (2)计算录取分数线,根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。
    试根据以上描述的功能画出该系统的数据流图。

    13、在保险箱系统中,保险箱有五种状态:锁定、解锁、报警、转解1和转解2。通常情况下,保险箱为锁定状态,转盘转动3次,只要有一次转动到不正确的地方,保险箱都会报警;保险箱第一次正确转动,显示转解1;第二次正确转动,显示转解2;如果3次都转动正确,则保险箱解锁。  试给出保险箱类的状态图。

    在状态图中定义的状态主要有:初态、终态和中间状态,初态只能有1个,终态可以有0或多个。

     

     

    展开全文
  • 反复思考之下,回忆此T60p出问题之前,刚刚手动升级过无线网卡驱动和Access Connections到最新版,难道是这两者引发的问题?于是用排除法测试,结果发现只要卸载Access Connections,系统的登录速度就会恢复如初。...
  • 我在2014年7月1日参加了猎豹移动(原金山...痛定思痛,我认认真真总结了当时向我提出的所有问题,一共是十多条,我会分为几篇文章来进行剖析。并且根据问题的难易程度,由浅入深进行排序。参考了大量的相关资料,给
  • 工程伦理

    万次阅读 2020-02-16 15:17:46
    1-1待做 1【单选题】 人类的工程实践不仅是一种改造自然的技术活动,也是一种关涉人、自然与社会的( A )活动。... 特定伦理问题 B 伦理困境 C 工程价值 D 工程寿命 3【多选题】 在工程过...
  • 软件工程

    千次阅读 多人点赞 2021-01-24 17:13:02
    软件工程——原理、方法与应用(学习笔记)
  • 工程伦理复习笔记(全)

    万次阅读 多人点赞 2020-01-09 19:28:31
    工程伦理第1-5章以及第10章笔记,附前五章问答题 研究生考试系列—攻城伦理复习笔记----弗兰大学 ...第一章重点探讨了工程与伦理的概念,分析了工程实践中可能出现的各种伦理问题,提出处理工程实...
  • 软件工程导论—软件与软件工程

    千次阅读 多人点赞 2020-05-02 12:47:35
    文章目录1. 软件与软件危机1.1.... 软件工程学2.1. 软件工程学的概念2.2. 软件工程项目的基本目标2.3. 软件工程的八项原则2.4. 软件工程的本质特征2.5. 软件工程的七条基本原理3. 软件工程方法学3.1. 软件工程方法...
  • 《软件工程之美》打卡第六周

    千次阅读 2020-02-23 16:54:08
    首先这个问题软件测试要为产品质量负责,但并不代表软件测试要担所有的责任,因为在软件工程当中,我们包含多个环节,比如: 需求环节 设计环节 开发环节 测试环节 每个环节都可能导致质量问题,而测试只是负责...
  • 工程伦理学_笔记(复习用)

    万次阅读 多人点赞 2020-08-12 10:38:47
    工程与伦理1.1 如何理解工程一、技术与工程的区别二、技术与工程的联系三...问题一、工程活动中的行动者网络(具有动态性和网络性)二、主要的工程伦理问题三、工程伦理问题的特点1.4 如何处理工程实践中的伦理问题一、...
  • 5. 软件工程 (一个大尺度的问题)

    千次阅读 2019-08-27 12:50:16
    Bonjour,bonjour ~ 第一章主要是聊“计算机系”; 第二章主要是讲 “图灵机”; 第三章主要是看 “计算机的发明”; 第四章主要是闻 “人工智能的未来发展趋势... 第五章主要是想“一个大尺度的问题” ...
  • 工程伦理知识点

    千次阅读 2021-04-10 16:36:32
    树立意识,提高对工程伦理问题的敏感性,增强重视和理解 掌握规范 提高决策能力 3 工程 广义:众多主体为达到一定目的参与性的社会性人类活动 狭义:针对物质对象,运用知识和技术,与生产活动密切相关 4 如何理解...
  • 系统工程的本质

    千次阅读 2018-11-09 15:07:51
      工程,是日常生活和工作时经常使用的一个词语,例如土木工程、电子工程、机械工程、系统工程,以及法制工程、希望工程、菜篮子工程;...这个词语本身并没有令人费解的地方,但在不同的语境中,却体现迥...
  • 工程伦理网课问答讨论整理

    千次阅读 2021-05-25 16:44:40
    工程伦理网课问答讨论整理 注:答案是复制网课讨论区的回答...目标:培养工程伦理意识和责任感、掌握工程伦理的基本规范、提高工程伦理的决策能力。 (第一章)结合工程活动的特点,思考为什么在工程实践中会出现伦
  • 我所理解的工程师文化

    万次阅读 2018-09-29 13:36:56
    对于什么是工程师文化,很多人都能说很多关键词,比如:匠心,创新,专业,担当,开放…… ...工程师其实就是解决问题的人,他们发现问题,找规律,使用适当的工具和手段来解决问题。 一个优秀的工...
  • 2019工程伦理慕课答案(2019秋)习题及期末答案

    万次阅读 多人点赞 2019-11-08 18:19:53
    下列哪一项不是工程与技术的区别 内容和性质 目的 活动主体 任务、对象和思维方式 单选题 (1/1 point) 下列哪一项不是工程活动的特征 自主性 创造性 社会性 确定性 多选题 (1points) ...
  • 一线工程师告诉你嵌入式真实现状与发展前景

    万次阅读 多人点赞 2018-10-02 18:49:59
    这个问题我在这里可以很肯定地告诉你:“嵌入式有很好的发展前景,前沿嵌入式技术即将崛起,或者说已经崛起”。的确,人工智能、大数据这些学科会给嵌入式带来冲击,就目前来看,大学生更倾向与python编程语言、机器...
  • 工程伦理(笔记)第一章

    万次阅读 多人点赞 2020-10-21 17:06:58
    计划环节:包括工程设想的提出和决策两个部分,解决的主要是工程建造的必要性和可行性问题 设计环节:包括工程的设计思路、设计理念以及具体施工方案设计等,这些都在这一环节得以确定 建造环节:包括工程实施、...
  • 软件工程名词解释

    万次阅读 2019-11-06 16:01:00
     软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 软件工程  软件工程是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。 软件生存...
  • 硬件工程师为什么远不如软件工程师?

    千次阅读 多人点赞 2018-12-07 18:57:42
    做了9年硬件电路设计,5年智能手机,4年医疗器械,看到这个问题,心情很复杂,自己喜爱的工作居然无奈的发展到了这个窘境。 当初选择硬件是因为不想日复一日的坐在屏幕前面敲代码到天亮,硬件电路设计工作中的元素...
  • 售前工程师与售后工程师

    千次阅读 2006-05-09 13:25:00
    售前工程师----售前工程师...----属于什么部门并不重要,售前工程师的责任是大同小异的,他们的职责就是帮助销售人员充分了解客户在技术方面的需求,协助销售提供客户需求的解决方案,在售前的交流谈判过程中,回答客户
  • 生物工程?人工智能?我们的未来在何方。

    千次阅读 多人点赞 2018-11-27 23:58:37
    二十一世纪是什么时代,是生物工程的时代。这句话在二十世纪末到二十一世纪初都被广泛传播。我高中时期,仍然听到的是生物工程,尤其是基因工程在二十一世纪将会对人类的生活发展有着变革性影响。后来随着互联网和...
  • 第3章 需求工程一、 需求工程概述Alan Davis 把需求工程定义为“直到(但不包括)把软件分解为实际架构构件之前的所有活动”Herb Krasner定义了需求工程的五阶段:需求定义和分析、需求决策、形成需求规格、需求...
  • SRE工程师到底是做什么的?

    千次阅读 2019-02-27 06:12:09
    尽管站点可靠性工程已经存在了一段时间,但也只是最近才在业界获得一些名声。但人们对于站点可靠性工程师(SRE)的作用仍然存在很...他们承担的责任多于运营。他们通常具有系统管理背景,同时也具备软件开发技能。SR...
  • 山东大学软件工程复习重点

    千次阅读 2017-11-09 22:15:41
    SE的定义、目的、方法及作用(P2 / P16) 定义:软件工程是一种系统工程,不止包括对技术问题的分析与解决,还包括对开发过程和给参与者分配合适的角色等方面的管理 目的:生产高质量的软件进而找到解决方案,并...
  • Reversing:逆向工程揭密

    热门讨论 2010-06-21 17:27:22
    一点儿也不,我写这本书的目的就是向你讲解并示范平常就可以用于解决各种各样问题的逆向工程技术。 不过我总是急于求成。也许你以前没有接触过软件逆向工程的概念,我在这里先简要介绍一下。 逆向工程和底层软件 在...
  • 高级软件工程习题

    万次阅读 2020-12-10 14:23:50
    简述软件工程所需要掌握的知识体系 软件工程学科由10个知识域构成: (1) 软件需求 软件需求描述解决现实世界某个问题的软件产品及对软件产品的约束。 (2) 软件设计 软件设计涉及软件体系结构、构件、接口、以及...
  • 如何做一名优秀的工程师

    千次阅读 2019-02-28 14:25:43
    而后来当我去指导别人的时候,才发现直接给答案是极其不负责任的做法,授人以渔,而不直接解决,才能真正帮助他人。 毕竟,学习,更多的是学做事情的方法和背后的逻辑,学习力才是这个时代最强的竞争力。 2. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,394
精华内容 32,557
关键字:

工程出了问题责任