免费智能真题库 > 历年试卷 > 系统分析师 > 2015年上半年 系统分析师 上午试卷 综合知识
  第10题      
  知识点:   计算机软件保护条例   著作权   软件设计
  关键词:   软件开发   软件设计   软件文档   著作权   开发   文档   著作        章/节:   知识产权       

 
王某是某公司软件设计师,每当软件开发完成后均按公司规定编写软件文档,并提交公司存档。该软件文档的著作权()享有。
 
 
  A.  应由公司
 
  B.  应由公司和王某共同
 
  C.  应自王某
 
  D.  除署名权以外,著作权的其他权利由王某
 
 
 

 
  第13题    2015年上半年  
   62%
王某原是M软件公司的项目经理,未与M软件公司签订劳动合同及相应的保密协议。王某离职后受聘于L软件公司,先后将其在M软件公司任..
  第13题    2021年上半年  
   0%
孙某是A物流公司的信息化系统管理员。在任职期间,孙某根据公司的业务要求开发了“物资进销存系统”,并A公司使用。后来A公司将该..
  第13题    2014年上半年  
   62%
甲、乙软件公司2012年7月12日就其财务软件产品分别申请“清山”和“青山”商标注册。两财务软件产品相似,且..
   知识点讲解    
   · 计算机软件保护条例    · 著作权    · 软件设计
 
       计算机软件保护条例
        由于计算机软件也属于《中华人民共和国著作权法》保护的范围,因此在具体实施时,首先适用于《计算机软件保护条例》的条文规定,若是在《计算机软件保护条例》中没有规定适用条文的情况下,才依据《中华人民共和国著作权法》的原则和条文规定执行。
        《计算机软件保护条例》的客体是计算机软件,而在此计算机软件是指计算机程序及其相关文档。根据条例规定,受保护的软件必须是由开发者独立开发的,并且已经固定在某种有形物体上(如光盘、硬盘和软盘)。
        对软件著作权的保护只是针对计算机软件和文档,并不包括开发软件所用的思想、处理过程、操作方法或数学概念等,并且著作权人还需在软件登记机构办理登记。
                      著作权人确定
                      根据《计算机软件保护条例》规定,软件开发可以分为合作开发、职务开发、委托开发三种形式。
                      (1)合作开发。对于由两个或两个以上的开发者或组织合作开发的软件,著作权的归属根据合同约定确定。若无合同,则共享著作权。若合作开发的软件可以分割使用,那么开发者对自己开发的部分单独享有著作权,可以在不破坏整体著作权的基础上行使。
                      (2)职务开发。如果开发者在单位或组织中任职期间,所开发的软件符合以下条件,则软件著作权应归单位或组织所有。
                      .针对本职工作中明确规定的开发目标所开发的软件。
                      .开发出的软件属于从事本职工作活动的结果。
                      .使用了单位或组织的资金、专用设备、未公开的信息等物质、技术条件,并由单位或组织承担责任的软件。
                      (3)委托开发。如果是接受他人委托而进行开发的软件,其著作权的归属应由委托人与受托人签订书面合同约定;如果没有签订合同,或合同中未规定的,则其著作权由受托人享有。
                      另外,由国家机关下达任务开发的软件,著作权的归属由项目任务书或合同规定,若未明确规定,其著作权应归任务接受方所有。
                      软件著作权
                      根据《计算机软件保护条例》规定,软件著作权人对其创作的软件产品,享有以下9种权利:
                      (1)发表权:即决定软件是否公之于众的权利。
                      (2)署名权:即表明开发者身份,在软件上署名的权利。
                      (3)修改权:即对软件进行增补、删节,或者改变指令、语句顺序的权利。
                      (4)复制权:即将软件制作一份或者多份的权利。
                      (5)发行权:即以出售或者赠予方式向公众提供软件的原件或复制件的权利。
                      (6)出租权:即有偿许可他人临时使用软件的权利。
                      (7)信息网络传播权:即以信息网络方式向公众提供软件的权利。
                      (8)翻译权:即将原软件从一种自然语言文字转换成另一种自然语言文字的权利。
                      (9)使用许可权、获得报酬权、转让权。
                      软件著作权自软件开发完成之日起生效。
                      (1)著作权属于公民。著作权的保护期为作者终生及其死亡后的50年(第50年的12月31日)。对于合作开发的,则以最后死亡的作者为准。
                      (2)著作权属于单位。著作权的保护期为50年(首次发表后的第50年的12月31日),若50年内未发表的,不予保护。单位变更、终止后,其著作权由承受其权利义务的单位享有。
                      当得到软件著作权人的许可,获得了合法的计算机软件复制品后,复制品的所有人享有以下权利:
                      (1)根据使用的需求,将该计算机软件安装到设备中(电脑、PDA等信息设备)。
                      (2)制作复制品的备份,以防止复制品损坏,但这些复制品不得通过任何方式转给其他人使用。
                      (3)根据实际的应用环境,对其进行功能、性能等方面的修改。但未经软件著作权人许可,不得向任何第三方提供修改后的软件。
                      如果使用者只是为了学习、研究软件中包含的设计思想、原理,而以安装、显示和存储软件等方式使用软件,可以不经软件著作权人的许可,不向其支付报酬。
 
       著作权
        根据著作权法及实施条例规定,著作权人对作品享有5种权利:
        (1)发表权:即决定作品是否公之于众的权利。
        (2)署名权:即表明作者身份,在作品上署名的权利。
        (3)修改权:即修改或授权他人修改作品的权利。
        (4)保护作品完整权:即保护作品不受歪曲、篡改的权利。
        (5)使用权、使用许可权和获取报酬权、转让权:即以复制、表演、播放、展览、发行、摄制电影、电视、录像,或者改编、翻译、注释和编辑等方式使用作品的权利,以及许可他人以上述方式使用作品,并由此获得报酬的权利。
        根据著作权法的相关规定,著作权的保护是有一定期限的。
        (1)著作权属于公民。署名权、修改权、保护作品完整权的保护期没有任何限制,永远属于保护范围。而发表权、使用权和获得报酬权的保护期为作者终生及其死亡后的50年(第50年的12月31日)。作者死亡后,著作权依照继承法进行转移。
        (2)著作权属于单位。发表权、使用权和获得报酬权的保护期为50年(首次发表后的第50年的12月31日),若50年内未发表的,不予保护。但单位变更、终止后,其著作权由承受其权利义务的单位享有。
        当第三方需要使用时,需得到著作权人的使用许可,双方应签订相应的合同。合同中应包括许可使用作品的方式,是否专有使用,许可的范围与时间期限,报酬标准与方法,以及违约责任等。若合同未明确许可的权力,需再次经著作权人许可。合同的有效期限不超过10年,期满时可以续签。
        对于出版者、表演者、录音录像制作者、广播电台、电视台而言,在下列情况下使用作品,可以不经著作权人许可、不向其支付报酬。但应指明作者姓名、作品名称,不得侵犯其他著作权。
        (1)为个人学习、研究或欣赏,使用他人已经发表的作品。
        (2)为介绍、评论某一个作品或说明某一个问题,在作品中适当引用他人已经发表的作品。
        (3)为报道时事新闻,在报纸、期刊、广播、电视节目或新闻纪录影片中引用已经发表的作品。
        (4)报纸、期刊、广播电台、电视台刊登或播放其他报纸、期刊、广播电台、电视台已经发表的社论、评论员文章。
        (5)报纸、期刊、广播电台、电视台刊登或者播放在公众集会上发表的讲话,但作者声明不许刊登、播放的除外。
        (6)为学校课堂教学或科学研究,翻译或者少量复制已经发表的作品,供教学或科研人员使用,但不得出版发行。
        (7)国家机关为执行公务使用已经发表的作品。
        (8)图书馆、档案馆、纪念馆、博物馆和美术馆等为陈列或保存版本的需要,复制本馆收藏的作品。
        (9)免费表演已经发表的作品。
        (10)对设置或者陈列在室外公共场所的艺术作品进行临摹、绘画、摄影及录像。
        (11)将已经发表的汉族文字作品翻译成少数民族文字在国内出版发行。
        (12)将已经发表的作品改成盲文出版。
 
       软件设计
               软件设计的任务
               在给定系统的需求规格说明书后,需要对软件的结构进行设计,并对设计的过程进行管理。在嵌入式系统的软件设计过程中,需要完成以下一些任务。
                      准备工作计划
                      在软件设计之前,首先要制订详细的工作计划,其内容包括:
                      .过程管理方案:包括软件开发的进度管理、软件规模和所需人年的估算、开发人员的技能培训等;
                      .开发环境的准备方案:包括开发工具的准备、开发设备的准备、测试装备的准备、分布式开发环境下的开发准则等;
                      .软硬件联机调试的方案:联调的起始时间、地点、人员和具体的准备工作;
                      .质量保证方案:包括质量目标计划、质量控制计划等;
                      .配置控制方案:包括配置控制文档的编写、配置控制规则的制订等。
                      确定软件的结构
                      设计软件的各个组成部分,包括:
                      .任务结构的设计:使用操作系统提供的函数,设计出一个最佳的任务结构;
                      .线程的设计;
                      .公共数据结构的设计:在确保系统一致性的基础上,设计出所需的公共数据;
                      .操作系统资源的定义;
                      .类的设计;
                      .模块结构设计:在设计时要充分考虑模块的划分、标准化、可重用和灵活性等;
                      .内存的分配与布局。
                      设计评审
                      对于软件设计的结果,进行一次设计评审,并在必要时对设计进行修正。具体内容包括:
                      .确认每件工作的执行方法是否恰当,其内容是否完善;
                      .确认该设计完成了系统需求规格说明书所要求的功能和服务;
                      .评估任务结构设计、评估类的设计、评估模块结构设计;
                      .对软件设计的结果进行总结,编写出相应的文档。
                      维护工作计划
                      执行软件设计工作控制,在每日、每周和每月的时间粒度上对进度进行控制,确保软件设计能够如期完成。
                      与硬件部门密切合作、相互协调
                      根据工作计划中的安排,定期与硬件部门召开会议,协调各自的进展。如果软件规格说明书发生了变化,立即进行调整,重新进行软件设计。
                      控制工作的结果,把工作记录存档
                      掌握当前的工作进展情况,尽早地发现和分析问题,并采取相应的措施。对各种事件进行跟踪记录,包括:
                      .执行过程控制,跟踪进展情况并定期记录、存档。
                      .执行质量控制,保留质量记录。
                      .记录产品的配置、版本变化、bug的发现和处理等信息。
               软件架构设计
               软件架构也称为软件体系结构,需要考虑如何对系统进行分解,对分解后的组件及其之间的关系进行设计,满足系统的功能和非功能需求。软件架构形成过程如下图所示。
               
               架构的形成过程概要
               软件架构设计需要从用户业务需求、未来应用环境、需求分析、硬件基础、接口输入、数据处理、运算或控制规律、用户使用等方面进行综合、权衡和分析基础上产生。面向某种问题的架构一旦确定就很难改变,随后的架构设计需要通过一系列的迭代开发完善,使得软件架构日趋成熟、稳定。
               软件架构的重要作用也在于控制一个软件系统的使用、成本和风险。好的架构要求是和谐的软件架构,包括与上一级系统架构相互和谐、与系统中同一级的其他组件架构互相和谐,确保系统满足性能、可靠性、安全性、信息安全性和互操作性等方面的关键要求,也具有可扩展、可移植性,从而为一个软件带来长久的生命力。
               在大量开发实践中,有很多广泛使用并被普遍接受的软件架构设计原则,这些原则独立于具体的软件开发方法,主要包括抽象、信息隐藏、强内聚和松耦合、关注点分离等。
               (1)抽象:这是软件架构的核心原则,也是人们认识复杂客观世界的基本方法。抽象的实质是提取主要特征和属性,从具体的事务中通过封装来忽略细节,并且运用这些特征和属性,描述一个具有普遍意义的客观世界。软件架构设计中需要对流程、数据、行为等进行抽象。复杂系统含有多层抽象,从而有多个不同层次架构。
               (2)信息隐藏:包括局部化设计和封装设计。局部化设计就是将一个处理所涉及到的信息和操作尽可能地限制在局部的一个组件中,减少与其他组件的接口。而封装设计是将组件的外部访问形式尽可能简单、统一。
               (3)强内聚和松耦合:强内聚是指软件组件内的特性,即组件内所有处理都高度相关,所有处理组合在一起才能组成一个相对完整的功能。而松耦合是指软件组件之间的特性,软件组件之间应尽量做到没有或极少的直接关系,使其保持相对独立,这样使得未来的修改、复用简单,修改之后带来的影响最小。
               (4)关注点分离:所谓关注点是软件系统中可能会遇到的多变的部分。如为适应不同运行接口条件,需要进行适应性的参数调整和驱动配置。关注点分离设计是将这部分组件设计成为相对独立的部分,使未来的系统容易配置和修改。而核心的部分可以保持一个相对独立的稳定状态。如果功能分配使得单独的关注点组件足够简单,那么就更容易理解和实现。但“展示某些关注点得到满足时,可能会影响到其他方面的关注点,但架构师必须能够说明所有关注点都已得到满足”。
               以上的原则中,删除需求细节或对细节进行抽象是最重要的工作,为用户的需求创建抽象模型,通过抽象将特殊问题映射为更普遍的问题类别,并识别各种模式。
               软件架构设计使用纵向分解和横向分解两种方式。纵向分解就是分层,横向分解就是将每一个层面分成相对独立的部分。经过分解之后,可以将一个完整的问题分解成多个模块来解决。模块是其中可分解、可组装,功能独立、功能高度内聚、之间低耦合的一个组件。
               类似于建筑架构,软件架构也决定了软件产品的好用、易用、可靠、信息安全、可扩展、可重用等特性,好的软件架构也给人完整、明确、清晰等赏心悦目的感觉,具有较长的生命力。
               架构设计是围绕业务需求带来的问题空间到系统解决空间第一个顶层设计方案。按照抽象原则,在这个阶段进行的架构设计关注软件设计环节抽象出来的重要元素,而不是所有的设计元素。在架构设计时将软件这些要素看作是黑盒,架构设计需要满足黑盒的外部功能和非功能需求的目标。一个软件的架构设计首先为软件产品的后续开发过程提供基础,在此基础上可将一个大规模的软件分解为若干子问题和公共子问题。而一般意义的软件设计是软件的底层设计,开发人员需要关注各子问题或要素的进一步分解和实现,是根据架构设计所定义的每个要素的功能、接口,进一步实现要素组件内部的配置、处理和结构。在遵守组件外部属性前提下,考虑实现组件内部的细节及其实现方法。对于其中的公共子问题,形成公共类和工具类,从而可以达到重用的目的。
               一般的软件构架是根据需求自上而下方式来设计,即首先掌握和研究利益相关方的关键需求,基本思路是首先进行系统级的软件架构设计,需要将软件组件与其外部环境属性绑定在一起,关注软件系统与外部环境的交联设计;其次将一个大的系统划分成各组成部分,这些部分可以按照架构设计的不同方法,分为层次或成为模块;之后再开始研究所涉及到的要素,再实现这些要素以及定义这些要素之间的关系。
               在实际工作中,软件构架也可采用自底向上的方法,前提是已经建立了一个成熟稳定的软件架构,也可以称之为“模式”。模式是组织一级设计某一类具体问题的顶层思路,是为了解决共有问题解的方案模板,但并不是一个问题的设计或设计算法。
               模式常常整合在一起使用,提供解决更大、更复杂问题的解决方案,而组成一个解决问题的通用框架。框架往往提供统一平台和开发工具,而且已经高效地利用了已经经过验证的模式、技术和组件。在新软件系统的设计中指定沿用或重用这种架构框架,这时其他重要元素可以在这个架构基础上针对新的需求进行扩展,有时是针对性地进行参数化设计。所以在架构设计中可以借用模式的概念进行设计,采用成熟的先进的设计框架和工具提高开发的效率,保证设计正确性。
               下图所示是针对架构设计中非功能需求的多维度分析,从中可知任何一个因素的变化都会带来对其他因素的影响。实际上软件架构设计属于软件设计过程的一部分,但超越了系统内部的算法和数据结构的详细设计。
               
               架构的多维度分析
               在架构设计阶段,需要定义边界条件、描述系统组织结构、对系统的定量属性进行约束、帮助对模型进行描述并基本构造早期的原型、更准确地描述费用和时间的评估。
               软件设计方法
               在将系统分解为各个组件的过程中,需要采取不同的策略,而每个策略则关注不同的设计概念。根据分解过程中所采用的不同策略,设计方法有基于功能分解的设计方法、基于信息隐藏的设计方法和基于模型驱动开发的设计方法等分类。
               (1)基于功能分解的设计方法。实时结构化分析与设计采用了功能分解,系统被分解为多个函数,并且以数据流或控制流的形式定义函数之间的接口;基于并发任务结构化的设计(Design Approach for Real-Time Systems,DARTS)提供了任务结构化标准,辅助人员确定系统中的并发任务,并指导定义任务接口。
               (2)基于信息隐藏的设计方法。面向对象(Object Oriented,OO)设计方法将数据和数据上操作封装在对象实体中,对象外界不能够直接对对象内部进行访问和操作,只能通过消息间接访问对象,符合人类思维方式,提高软件的扩展性、维护性和重用性。
               (3)基于模型驱动开发的设计方法。通过借助有效的(Model Driven Development,MDD)工具,构建和维护复杂系统的设计模型,直接产生高质量的代码,将开发的重心从编码转移到设计。当前使用较为广泛的MDD工具有IBM公司的Rhapsody。
   题号导航      2015年上半年 系统分析师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第10题    在手机中做本题