软件工程

软件工程学习笔记(三):需求工程

戏子无情 提交于 2020-01-05 23:27:35
1 概述 需求工程是应用已证实有效的技术与方法开展需求分析,确定客户需求,帮助分析人员理解问题,评估可行性,协商合理的解决方案,无歧义地规约方案,确认规约以及将规约转换到可运行系统时的需求管理.需求工程是一个不断反复的需求定义,文档记录,需求演进的过程,并最终在验证的基础上冻结需求.需求工程可以分为六个阶段:需求获取,需求分析与协商,系统建模,需求规约,需求验证,需求管理. 2 需求获取 需求获取阶段分析人员通过与用户的交流,对现有系统的观察以及对任务进行分析,确定系统或产品范围的限制性描述,与系统或产品有关的人员及特征列表,系统的技术环境的描述,系统功能列表及应用于每个需求的领域限制,描述不同运行条件下系统或产品使用状况的应用场景等,为需求分析打下基础. 2.1 软件需求 软件需求是指用户对目标软件系统在功能,行为,性能,设计约束等方面的期望,包括: 2.1.1 功能需求 考虑系统要做什么,在何时做,在何时及如何修改或升级等. 2.1.2 性能需求 考虑软件开发的技术性指标,例如,存储容量限制,执行速度,响应时间以及吞吐量. 2.1.3 用户或人的因素 考虑用户的类型,例如用户对使用计算机的熟练程度,需要接受的训练,用户理解,使用系统的难度,用户错误操纵系统的可能性等. 2.1.4 环境需求 考虑未来软件应用的环境,包括硬件和软件,对硬件设备的需求包括机型,外设,接口,地点,分布

如何评测软件工程知识技能水平?

谁说我不能喝 提交于 2020-01-05 19:18:33
一.单选题,共8题。 1.软件开发的增量模型____。 A.最适用于需求被清晰定义的情况 B.是一种能够快速构造可运行产品的好方法 C.最适合于大规模团队开发的项目 D.是一种不适用于商业产品的创新模型 试题1分析 增量模型是一种非整体开发的模型,该模型具有较大的灵活性,适合于软件需求不明确的一种模型。使用该模型开发产品,一般是尽快构造出可运行的产品,然后在该产品的基础上再增加需要的新的构建,使产品更趋于完善。 试题1答案 B 2.为了有效地捕获系统需求,应采用____。 A.瀑布模型 B.敏捷开发 C.原型模型 D.螺旋模型 试题2分析 瀑布模型严格遵循软件生命周期各阶段的固定顺序进行软件开发,其优点是可强迫开发人员采用规范的方法;严格规定了各阶段必须提交的文档;要求每个阶段结束后,都要进行严格的评审;而其缺点是过于理想化,缺乏灵活性,无法在开发过程中逐渐明确用户难以确切表达或一时难以想到的需求。 原型模型基于这样一种客观事实:并非所有的需求在系统开发之前都能准确地说明和定义。因此,它不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法。原型模型适用于需求不够明确的项目,它能有效地捕获系统需求。 螺旋模型综合了瀑布模型和演化模型的优点,还增加了风险分析。采用螺旋模型时,软件开发沿着螺旋线自内向外旋转,每转一圈都要对风险进行识别和分析,并采取相应的对策。 试题2答案 C

软件工程试题(作业)

对着背影说爱祢 提交于 2020-01-05 13:55:12
如何评测软件工程知识技能水平? 我的CSDN: https://blog.csdn.net/P71720/article/details/103742773 (一),选择题(5*2) (1) 需求分析中开发人员要从用户那里了解( A )。     A.软件做什么  B.用户使用界面  C.输入的信息  D.软件的规模 (2) 软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是( C )。 A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段 答案解析:在结构化的软件开发中,一般情况下,可能需要占用的人数最多的阶段是在软件编程的阶段,但从工作量上来说,在软件的需求分析、定义及软件的测试和维护阶段需要的工作量更多,用软件开发计划中的40-20-40原则,即可说明这一点,在软件需求分析和定义阶段,虽然工作量比软件编程多,但因为软件的需求分析和定义对开发人员的素质要求比较高,所以占用的人员并不需要太多;同时由于软件维护的周期比较长,所以其耗的工作量比软件编程多,但一般来说它占用的人员并不比软件编程阶段占用的人员多,所以答案为C。 (3) 当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为( D ) 。 A、数据耦合    B、公共耦合 C、标记耦合    D、内容耦合 (4) UML是软件开发中的一个重要工具

如何评测软件工程知识技能水平?

可紊 提交于 2020-01-05 13:48:30
如何才能评价一个软件工程师的专业技术呢,这需要从很多方面来看。 (1)具有扎实的计算机专业知识    这是软件工程理由能够从事软件一切工作最基本的前提,是软件工程最基本的素质,这要求软件工程师必须精通高等数学、离散数学、电子学、编程语言、数据结构等课程。 (2)良好的语言表达能力和沟通能力    这是软件工程师应该具备的一个很重要的素质,因为软件工程师是为用户开发软件,常常需要直执着面对用户。 (3)健康的心理素质 下面是我搜集到的关于软件工程的测试题。 选择题: 1.软件开发瀑布模型中的软件定义时期各个阶段依次是: (B) A) 可行性研究,问题定义,需求分析。 B) 问题定义,可行性研究,需求分析。 C) 可行性研究,需求分析,问题定义。 D) 以上顺序都不对。 2.可行性研究主要从以下几个方面进行研究: ( A ) A) 技术可行性,经济可行性,操作可行性。 B) 技术可行性,经济可行性,系统可行性。 C) 经济可行性,系统可行性,操作可行性。 D) 经济可行性,系统可行性,时间可行性。 3 耦合是对软件不同模块之间互连程度的度量。 各种耦合按从强到弱 排列如下: ( C ) A) 内容耦合,控制耦合,数据耦合,公共环境耦合。 B) 内容耦合,控制耦合,公共环境耦合,数据耦合。 C) 内容耦合,公共环境耦合,控制耦合,数据耦合。 D) 控制耦合,内容耦合,数据耦合

如何评测软件工程知识技能水平?

Deadly 提交于 2020-01-05 13:30:56
软件工程师英文是Software Engineer,是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。软件工程师是从事软件开发相关工作的人员的统称。 它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)等,还有诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING等前沿技术。此外,关于网络工程和软件测试的其他技术也要有所涉猎。 软件工程师的软件工程知识技能水平高低主要体现 软件工程师虽然不能算是一个新生事物,但随着社会的不断发展,计算机是我们必不可少的,软件开发也是推动计算机迅速发展的条件,那么做为软件工程师我们需要什么条件? (1)具有扎实的计算机专业知识 这是软件工程理由能够从事软件一切工作最基本的前提,是软件工程最基本的素质,这要求软件工程师必须精通高等数学、离散数学、电子学、编程语言、数据结构等课程。 (2)良好的语言表达能力和沟通能力 这是软件工程师应该具备的一个很重要的素质,因为软件工程师是为用户开发软件,常常需要直执着面对用户。 (3)健康的心理素质 开发软件本身就是一项艰苦的脑力和体力劳动,软件工程师开发成功一个软件,要经过反复修改

软件工程个人总结

十年热恋 提交于 2020-01-05 08:37:57
软件工程心得 一学期的软件工程课就此结束,从第一节课的“做中学”到最后的创新理念,这门课教导的不仅仅是软件的开发。老师用他的经验和实习生的现实反馈来传道受业,用各种现实状况来讲解软件工程,讲解以后的工作态度,讲做事的习惯,讲做人的品行等等。我觉得这门课程的开设很大一定程度上提高了我们的思想认识,了解自己当前的状况 一开始我以为软件工程就是编写代码做出一款软件,直到这门课的开设,我才真正了解到软件工程是一项工程,工程就意味着要有团队合作,要有效率体现,要有人员分配,要有人员管理,要有维护维修,要有安全监测,要有推销。它涉及的是很多流程和环节,面临的是用户的体验和需求,投向的是市场。这些都是从这门课的学习中所体会到的。 老师的上课方式别具一格,从结对开发的人员坐在一起到团队开发的学生坐在一起,老师也是为了发挥团队协作的作用,因为在项目开发过程中,不是一个人的项目,而是集体项目,老师从一开始就在培养我们的合作能力,以前的其他课程,也有过小组合作的方式,但是软件工程这门课将团队合作的形式以及作用发挥得很好。老师像是富有激情的演讲者站立在七尺讲台授予自己的课程,带着活力上课,带着动力去诉说,带着感染力去传授知识。老师也说做软件不能老气横秋死气沉沉,因为软件本身就是有生命的,软件开发者更应当富有活力得去灌输营养。这也启发我们搞计算机的人要时刻关注信息产业的发展并且保持一种热度以及激情

个人作业——软件工程实践总结作业

谁都会走 提交于 2020-01-05 08:37:38
title: 个人作业——软件工程实践总结作业 tags: 软件工程 grammar_cjkRuby: true --- 一、请回望暑假的第一次作业,你用于软件工程课程的想象 1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么? 到达期待和目标的方面 通过各种实践的作业,锻炼了自己的专业能力,尽管有些最后没有能够做的很完整,但是在过程中还是学会了很多。 通过团队的项目,认识了很多以前不熟悉的同学,增强了自己的沟通能力。 存在不足的方面 自己的代码能力进步并不是很多,原因是自己的基础知识并不是很扎实。 2)总结这门课程的实践总结和给你带来的提升,包括以下内容: 1、统计一下,你在这门软件工程实践中,完成了多少行的代码; 团队作业上由一开始的python到C++各个版本,大概有600行左右的代码。 个人作业的行数为496行。 2、软工实践的各次作业分别花了多少时间?(做一个列表) 作业名 花费时间 个人项目实战 10h 团队展示 1h 项目选题报告 1h30m 原型设计(结对) 7h 结对编程(2) 12h 项目需求分析 2h 项目UML设计(团队) 5h Alpha冲刺 Beta冲刺 “华为云”软件分析 3h 3、哪一次作业让你印象最深刻?为什么?

个人作业——软件工程实践总结作业

懵懂的女人 提交于 2020-01-05 08:31:30
个人作业——软件工程实践总结作业 一、请回望暑假时的第一次作业,你对于软件工程课程的想象 1.对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么? 一眨眼四个月的时间过去了,回顾这几个月,过的既紧张但又不得不说也很充实。在课程前期,希望在这门课中提升自己的个人编码等能力,以及尝试团队共同开发。刚开始对于安卓开发一无所知,并没有相关的开发经验,自己的编程基础也相对较差,到了真正开始进行冲刺的时候显得有些不知所措。慢慢在摸索中懂得了服务端部署,安卓前端的开发,前后端的交互等,熟悉了app开发流程。经过项目的选题、需求分析、原型设计、Alpha版本、Beta版本等一步步地有规划地进行。自己的个人能力得到了提升的同时也觉得自身也存在着很多不足如debug的能力有所欠缺,自身的代码量不足,对于新知识消化得不够快等。尽管还没有完全达到期待,但还是收获了很多。 2.总结这门课程的实践总结和给你带来的提升,包括以下内容: (1)、统计一下,你在这门软件工程实践中,完成了多少行的代码; 2000行左右 (2)、软工实践的各次作业分别花了多少时间?(做一个列表) 作业 时间 软件工程实践第一次作业(个人) 5h 数独(个人) 20h 团队展示(团队) 10h 原型设计(结对)

如何评测软件工程知识技能水平?

孤人 提交于 2020-01-05 00:31:34
如何才能评价一个软件工程师的专业技术呢,这需要从很多方面来看 。 1、编程语言能力。   一个良好的软件工程师必须懂得超过一种的编程语言。 2、编码能力。   这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序出来。 3、学习能力。   IT技术可谓是更新换代最快的了,从市面上的电脑和手机就可以看出来。所以,只依靠自己之前学到的知识,很快就会被这个时代所淘汰,软件工程师应具备的技能里很重要的一点就是学习能力。 4、设计能力 。   一个优秀的软件工程师不仅仅具备扎实的专业知识与技能,而且还要具备一定的设计能力。因为只有这样,才能使一个软件或者应用更加完美,更加容易受到人们的欢迎,从而获得更广阔的市场。 5、团队协作能力。   软件开发并不是孤军奋战,很多时候一个软件需要几个人一起开发,这个时候就需要大家齐心协力,共同努力了。这时候,作为软件工程师就需要具备一定的团队协作能力了,来保证每个人都负责相应的方向,不能只为了突出自己而不顾整个团队。 下面是我搜集到的关于软件工程的测试题。链接是 https://www.cnblogs.com/qyf2199/p/12104922.html 来源: https://www.cnblogs.com/ttt-kkk/p/12150937.html

如何评测软件工程知识技能水平

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-05 00:23:42
第一部分: 如何评测软件工程知识技能水平: 我认为评价一个合格的软件工程师,应该从以下几个方面来评价: 1、基本功 程序员是一个终身学习的职业,优秀的工程师,需要有强大的兴趣驱动力,有充足的勇气跳出自己的“舒适圈”,积极主动了解技术最前沿。而基本功恰恰是最主要的,只有有了足够好的基本功,才有能力支撑自己的兴趣和爱好。 2、基本的全栈能力 对全栈工程师,每个人都有不一样的定义,不一样的衡量标准。要求高的,认为全栈=全能,需求分析、产品设计、UI设计、移动开发、前端开发、后端开发、运维等,全部都熟悉。要求低的,认为只要既懂前端开发也会后端开发即可,比如,熟悉H5前端开发和Node.js后端开发,就可以称得上全栈工程师了。在我看来,其实都没有错,工程师也有分初级、高级、资深、专家,全栈工程师也一样有等级划分。一个优秀的工程师在能够数值自己的领域外也能较好的掌握其他岗位的知识。 3.清晰的开发思路 3.1、确定需求和构思整个网站系统(初步设想需要实现什么) 3.2、根据需求和需求文档制作UI图 3.3、根据UI图制作前端静态页面 3.4 根据前端静态页面(主要)和需求文档(次要)架构整个 系统(设计网站大的框架和制表) 3.5、后台程序员根据框架、静态页、数据表、需求文档等实现功能 在上面的基础上能够较好地领导整个项目团队,能够独立开发带领团队较好的完成项目。 4、团队管理