新问题清单

软件工程 17级计科一班
作业要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10618
作业目的 记录和解答学习这门课程时的提问
作业正文 如下
其他参考文献 <www.baidu.com>
  • Q:软件工程应该重点学习哪些知识?

A:

第一部分:基础学科部分。不论是软件工程专业还是计科、物联网、大数据等计算机相关专业,基础学科都是一个重点内容,其中包括高等数学、线性代数、概率论、离散数学、物理等内容,数学相关内容的学习始终是计算机专业的重点,数学知识的掌握情况直接决定了研发人员未来的成长高度。
第二部分:计算机专业课程。计算机专业课程包括操作系统(体系结构)、电子电路、计算机网络、算法设计、数据结构、数据库、编程语言(C、Java等)等内容,另外软件工程专业还会安排软件工程管理方面的专业课,比如建模语言、项目管理等方面的课程。
第三部分:项目实践。项目实践是软件工程专业的特点,同时软件工程的项目实践往往与当前流行的技术有密切的结合。最近几年我在参加软件工程专业本科生答辩的时候,往往能发现不少毕业课题与大数据、机器学习等内容关系密切,这就说明软件工程专业非常注重市场的流行趋势。

  • Q:软件工程对我们今后就业有哪些影响?

A:

就业形势好:随着软件业的快速发展,我国软件开发专业人才的需求增长已经超过了国内的软件人才的增长。有句话说得好:“用电脑就是用软件”。谷歌、微软等大型IT企业无不是从软件起家,经过逐步的发展才形成目前庞大的规模。因此,从某种程度来说,靠软件这门专业生活,是一辈子的事情。所以学好软件工程这门专业,就业是没有问题的。
就业工资高:软件工程师的平均工资一直处于前列,在一线城市初——高级软件工程是的待遇在4000——9000之间;内地其他省会城市一般在2000——6000之间。软件工程这门专业,只要你的技术够硬,能力够强,达到月薪一万至两万之间也不是什么奇怪的事情(研究生毕业工资更高)
就业方向广:毕业生可以在国内外知名IT企业、航空航天企业、服务外包企业、移动和电信等国有大型企业、科研院所等领域从事软件开发及管理等工作。在以后的就业中,软件人才尤其是高层次的软件人才将供不应求。在中国十大IT职场人气职位中,软件工程师位列前头。

  • Q:软件工程对我们现在学习其他专业课有何铺垫作用?

A:

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。软件工程是计算机专业 的一门重要的专业基础课,它对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义

  • Q:使用Python语言对学习软件工程的作用?

A:

它可以处理大量的任务,再加上它实际上是一种非常适合初学者的语言。Python的语法使用英文关键字,这使任何人都可以轻松理解并开始使用该语言。

  • Q:学习Python的就业前景?

A:

1、相关岗位多,人才就业率高

Python由于其简洁优美和极高的开发效率,得到了越来越多公司的青睐,公司选用Python进行网站Web、搜索引擎(Google)、云计算(OpenStack)、大数据、人工智能、科学计算等方向的开发。Python或将成为继C++和Java之后的第三个主流编程语言,因此,Python的人才就业率高。

2、就业方向广

Python强大之处就是应用比较广泛,广泛应用于:Web应用开发、图形界面开发、系统网络运维、网络编程、科学与数字计算、3D游戏开发等,其应用领域足以说明Python很牛,不得不让人感到它的强大。从事Python开发,工作机会和工作岗位及工作内容可选择的余地很多,未来发展的空间也很大。

3、人才需求量大

据统计,Python人才需求量每日高达5000+,但目前市场上专业Python程序员供不应求, 竞争小,很容易快速高薪就业。

4、薪资待遇好

Python是所有语言中,唯一一个可以处理几乎所有业务逻辑的语言。(因为拥有大量的三方库,所有业务无所不能)。从招聘网站上我们可以看出Python现在的平均月收入最少1W+,收入还是相当可观的。

  • Q:模块化设计的优劣性?

A: 优点:

可维护性

1.灵活架构,焦点分离

2.方便模块间组合、分解

3.方便单个模块功能调试、升级

4.多人协作互不干扰

缺点:

性能损耗

1.系统分层,调用链会很长

2.模块间通信,模块间发送消息会很耗性能

  • Q:今后的工作中,结对编程的实用性?

A: 1、互相鼓励,不容易沮丧:团队工作能增加成员的工作积极性。因为在面对问题的时候,会有人一起分担,共同尝试新的策略。

2、互相监督,不容易偷懒:两个人一起工作需要互相配合,如果想偷懒去干别的,就会拖延工作进度。

3、互相学习编程技巧:在编程中,相互讨论,可以更快更有效地解决问题,互相请教对方,可以得到能力上的互补。

4、可以培养和训练新人:让资深开发者和新手一起工作,可以让新人更快上手。

5、多双眼睛,少点 bug:两人互相监督工作,可以增强代码和产品质量,并有效的减少 BUG。

  • Q:什么是列表解析和生成器表达式?

A:

列表解析能够帮助我们动态地创建列表,核心是用for迭代循环。生成器表达式(generator expression)相当于对列表解析的扩展,它是对内存有好的,因为他只是生成了一个生成器,当我们需要使用该生成器对应的逻辑目标数据时,它才会通过既定逻辑去生成该数据,所以不会大量占用内存。

  • Q:什么是Backup?

A: 备份

  • Q:黑盒测试与白盒测试的优劣性

A:
黑盒测试的优点:
比较简单,不需要了解程序内部的代码及实现;
与软件的内部实现无关;
从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;
基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;
在做软件自动化测试时较为方便;
黑盒测试的缺点:
不可能覆盖所有的代码,覆盖率较低,大概只能达到总代吗量的30%;
自动化测试的复用性较低;
白盒测试的优点:
帮助软件测试人员增大代码的覆盖了吧,提高代码的质量,发现代码中隐藏的问题;
白盒测试的缺点:
程序运行会有很多不同的路径,不可能测试所有的运行路径;
测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;
系统庞大时,测试开销会非常大;

  • Q:静态测试与动态测试的优劣性

A:
静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。
动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后 , 对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。

  • Q:系统测试和单元测试的区别

A:
单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。系统测试主要针对概要设计,检查了系统作为一个整体是否有效地得到运行,例如在产品设置中是否达到了预期的高性能。

  • Q:软件开发中如何选择软件过程模型

A:
1、模型应符合软件本身的性质(规模、复杂性)
2、模型应满足软件应用系统整体开发进度要求
3、模型应有可能控制并消除软件开发风险
4、模型应有可用的计算机辅助工具(如快速原型工具)的支持
5、模型应与用户和软件开发人员的知识和技能相匹配
6、模型应有利于软件开发的管理与控制

  • Q:软件项目管理和软件配置管理的区别

A:
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。
软件配置管理是在团队开发中,标识、控制和管理软件变更的一种管理。配置管理的使用取决于项目规模和复杂性以及风险水平。

  • Q:软件开发中常用的开发模式

A:
1、瀑布式开发
2、迭代式开发
3、螺旋式开发
4、敏捷软件开发

  • Q:Scrum开发模式的优劣性

A:
优势:

敏捷确实是项目进入实质开发迭代阶段,用户很快可以看到一个基线架构版的产品。敏捷注重市场快速反应能力,也即具体应对能力,客户前期满意度高。

劣势:

但敏捷注重人员的沟通,忽略文档的重要性,若项目人员流动大太,又给维护带来不少难度,特别项目存在新手比较多时,老员工比较累。

  • Q:开发过程管理对开发过程的影响

A:
开发过程管理,主要面向开发人员的管理。其核心目的,是通过一个项目管理软件,来管理不同项目,然后通过项目的里的工作项,了解开发人员的工作量,效率,从而来管理开发人员,合理调配开发人力。

  • Q:MSF的优劣性

A:
MSF的最大特性是商业化,并一直体现在项目的实施过程中。所谓商业化意味着客户的商业利益。客户投入多少,得到多少回报,客户要用到哪些最新的技术,最后如何把项目计划(Project)变成产品(Product)直至产生效益,等等,这些都是MSF要考虑的问题。

  • Q:如何为项目选择开发模式?

A:
https://zhuanlan.zhihu.com/p/31807315

  • Q:软件项目估算方法如何选择?

A:
一般情况下估算软件项目工作量是由估算软件规模的结果作为输入,然后采用方程法来进行估算。但也有一些特殊情况,比如需求非常模糊而无法进行规模估算时,可以直接采用类比法或类推法来估算软件工作量。

  • Q:用户故事如何生成?

A:
http://www.woshipm.com/user-research/1725897.html/comment-page-1

  • Q:故事点与理想时间的区别?

A:
https://blog.csdn.net/OpenandX/article/details/61918635

  • Q:如何低成本获取需求

A:
1、用户的需求重点:通常是用户选择产品时的需求痛点,或者是用户迁移产品时的主要成本所在。

2、竞争对手薄弱之处:竞争对手可能在某些地方有优势,但不要放过竞品的每个弱点,并且要放大这些弱点。

3、自己产品的优势:结合上面两个考虑,将它们转化成自己产品的优势,就可以拨动千斤之重的竞争对手用户群。

  • Q:现今常用的需求获取技术

A:
1、通过研究现有的文档、资料获取需求信息
2、通过亲历工作环境观察、体验、实践业务流程和环节获取信息
3、通过发放调查表的方法获取需求信息
4、通过JRP会议了解需求信息

原文地址:https://www.cnblogs.com/RCJames/p/12679154.html