软件工程是一种工程师部门使用定义良好的科学原理,方法和程序开发软件产品。软件工程的结果是一个高效,可靠的软件产品.
软件项目管理具有比软件工程过程更大的范围,因为它涉及到沟通,事先和事后的交付支持等.
本教程应该提供您基本了解软件产品,软件设计和开发过程中,软件项目管理和设计复杂度等。学完这种教程您应配备良好的理解软件工程概念.
本教程旨在为读者追求教育在软件开发领域,软件测试追求者和所有热心读者.
关于软件系统,软件开发过程和计算机基本原理的警觉性是有益的.
让我们先了解一下软件工程的代表。该术语是由两个词语,软件与工程.
工程另一方面,工程是所有有关开发的产品,使用良好定义的,科学的原理和方法.
软件工程软件工程是一门工程分支使用定义良好的科学原理,方法和程序开发软件产品.软件工程的结果是一个高效,可靠的软件产品.
IEEE定义了软件工程:
(1)一个系统的纪律,量化的开发,运行和维护软件的应用;这是工程软件的应用.
FritzBauer,德国计算机科学家,定义了软件工程的:
软件工程是合理的工程原理建立和使用,以获得经济上的软件,是可靠的和真实的机器有效地工作.
运用软件工程的原理和方法开发软件产品的过程被称为软件演化.此处包含的软件的初始开发及维护和更新,直到所需的软件产品的开发,其满足预期需求.
进化开始从需求收集过程。经过开发人员创建的目的软件的原型,并显示给用户,以获得他们的反馈意见,在软件产品开发的早期阶段。用户提出的变化,在这几个连续的更新和维护不断变化太大。这个过程改变了原来的软件,直到所需的软件来完成.
甚至在用户已所需的软件在手,推进技术和不断变化的需求迫使软件产品相应地改变。重新从头开始创建软件和走一对单用的要求是不可行的。唯一可行的和经济的解决方案是,以更新现有的软件,以便它匹配的最新要求.
Lehman给了软件演化规律。他把软件分为三个不同的类别:
Lehman给了八项法律为E型软件演化-
软件范例参考方法和步骤,在设计的软件,该软件被执行。有提出许多方法,并在今天的工作,但我们需要看到在软件工程这些范式立场。这些可以组合成各种类别,虽然每个这些被包含在彼此:
编程模式是软件设计模式的一个子集是进一步的软件开发模式的一个子集。
这种模式被称为软件工程范例,所有有关软件开发工程的概念被应用。它包括各种研究和需求收集,这有助于软件产品来构建。–
这一模式是软件开发的一部分,包括–
软件工程的需要,因为较高的利率变化的用户需求及环境上的软件工作.
一个软件产品可以判断通过其功能和多少用户友好。这个软件必须满足以下功能:
一个精心设计和制作的软件预计将有以下几个特点:
这告诉我们如何以及软件的操作工作。它可以在被测定:
这方面是重要的,当软件从一个平台转移到另一个:
这讲述一个软件以及如何有能力维护自己的每一个变化的环境中:
软件开发生命周期,SDLC是的缩写形式。这是一个定义良好的结构化的软件工程预定的产品软件开发中的阶段序列.
软件开发生命周期提供了一系列的步骤,为设计和开发一个软件产品有效地要遵循。SDLC框架包括以下步骤:
这是的第一步在哪里用户启动的请求所需的软件产品。他联系服务提供商,并试图通过谈判条款。他提交请求给服务提供商.
这一步将进行软件开发团队。团队从问题域持有与各利益攸关者进行讨论,并试图带出尽可能多的信息可能对他们的要求。要求都是设想和隔离到用户需求、系统需求和功能需求。下列是使用的一些做法-
需求收集后,球队又发表了软件过程的一个粗略的计划。在此步骤中该球队的分析,如果软件可以制成以满足用户的所有要求,并且如果存在的软件是没有更多的有用的任何可能性。据发现,如果该项目在财务上,实际上和技术上可行的组织以。有很多算法可用,这有助于开发人员得出结论:一个软件项目的可行性.
下一步是关闭的要求,整个知识和分析的桌子上,设计出的软件产品。从用户和信息聚集在需求收集阶段的输入是该步骤的输入。该步骤的输出可以有两种设计形式;逻辑设计和物理设计。工程师产生的元数据和数据字典,逻辑图,数据流图并在某些情况下伪码.
这个步骤也被称为编程阶段。软件设计的执行开始在写程序代码中的适当的编程语言和有效显影无差错的可执行程序的条款.
估计说,整个软件开发过程中的50%应被测试。错误可能会毁了从关键级软件自身删除。软件测试是同时由开发商编码和全面的测试由测试专家在不同级别的代码,如模块测试,程序测试,产品测试,内部测试和测试产品在用户端进行完成的。早期发现的错误和他们的补救措施是关键可靠的软件.
软件可能需要使用的库,数据库和其它程序(次)进行集成。SDLC的这个阶段是参与的软件与外部世界的实体的结合.
这意味着安装在用户机器上的软件。有时,软件需要在用户端安装后的配置。软件的可移植性和适应性和整合有关问题的测试在实施过程中得到解决.
此阶段确认了软件的操作中的更高的效率和更低的错误条件。如果需要,用户进行培训,或者资助对如何操作软件,以及如何保持软件业务的文档。该软件被维持及时通过根据发生在用户端的环境或技术的变化更新的代码。这个阶段可能会面临来自隐藏的bug和现实世界的挑战.
软件开发模式可以帮助开发人员选择的策略来开发软件。软件开发范型有自己的一套工具,方法和程序,这是明确表示,并定义软件开发生命周期。软件开发模式或流程模型的一些定义如下:
瀑布模型是最简单的软件开发范式的模型。它说,SDLC的各个阶段都会起作用了一个又一个线性的方式。即,当第一阶段完成后,然后仅在第二阶段将开始等.
该模型假设所有被执行并且发生完全按计划在前一阶段,没有必要考虑可能出现在下一阶段,过去的问题。如果有留在上一步骤中的一些问题,这种模式并不顺利。模型的有序性不允许我们回去撤消或重做我们的行动.
这种模式是最适合当开发人员已经设计并在过去开发的同类软件,并意识到它的所有域.
这种模式导致在迭代的软件开发过程。它突出的发展中循环的方式重复SDLC过程的每一个循环后的每一步的处理.
软件首次开发上非常小的规模,并且随后所有的步骤,这是考虑到。然后,对每一个后续迭代中,更多的功能和模块设计,编码,测试,并加入到该软件。每个周期产生的软件,它是完整的,并具有比前一个的多个特征和功能.
每次迭代后,管理团队可以做的工作的风险管理和为下一次迭代做准备。因为一个循环包括整个软件过程的小部分,这是更容易管理的发展过程,但是它消耗更多的资源.
螺旋模型是两个,迭代模型和软件开发生命周期模型的一个组合。可以看出,如果你选择一个SDLC模型,并与循环过程(迭代模型)组合起来作为.
该模型考虑了风险,这往往就未注意到了大多数其他车型。模型开始确定目标和软件的限制,在一个迭代的起始位置。下一阶段是原型设计的软件。这包括风险分析。然后一个标准的SDLC模型来构建软件。在下一迭代的计划的第四阶段是制备.
瀑布模型的主要缺点是我们移动到只有前一个结束,也没有机会回去,如果事情被发现错误的后期阶段的下一个阶段。V模型提供的软件在相反的方式各阶段的测试手段.
在每一个阶段,测试计划和测试用例被创建,以验证和根据该阶段的要求验证的产品。例如,在需求收集阶段,测试团队在准备对应于要求所有的测试用例。后来,当产品开发,并准备进行测试,这一阶段的测试用例验证针对其有效性的软件实现在此阶段的要求.
这使得双方核查和验证进去并行。该模型也被称为验证和确认的模式.
这个模型是最简单的模型中其形式。它需要很少的规划,大量的编程和大量的资金。该模型概念化围绕宇宙的大爆炸。科学家说,经过大爆炸很多星系,行星和恒星的演变,就像一个事件。同样,如果我们放在一起大量的编程和资金,你可以达到最佳的软件产品.
对于这个模型需要非常少量的规划。它不遵循任何程序,或者有时客户是不确定的需求和未来的需求。这样的输入要求是任意的.
这种模式不适合大型软件项目,但好的学习和试验.
软件项目管理中可以看出分成两部分:
项目是定义良好的任务,这是为了实现一个目标(例如,软件开发和交付)进行的一些操作的集合。一个项目可以被描如何述为:
软件被认为是一种无形的产品。软件开发是一种在世界上所有的商业新流,有一个在建的软件产品非常少的经验。大多数软件产品是量身定制的,以满足客户的需求。最重要的是,底层的技术改变和前进如此频繁和快速地一种产品的经验可能不被施加到另一个。所有这样的业务和环境的制约带来的风险中的软件开发,因此有必要有效地管理软件项目.
上图显示了软件项目的三重约束。它是软件组织的重要组成部分,以提供高品质的产品,保持内客户的预算约束的成本和按照预定的交付项目。有几个因素,包括内部和外部,这可能会影响到这三重约束三角形。所有三个因素会严重影响其他两个.
软件项目经理是谁的人承担执行软件项目的责任。软件项目经理是彻悟SDLC的各个阶段,该软件会通过的。项目经理可能不会直接参与生产的最终产品,但他控制和管理参与生产活动。.
让我们来看看一些责任,一个项目经理做-
软件项目管理包括了一系列活动,其中包括项目的规划,确定软件产品,在各个方面的估计成本,任务和事件的调度和资源管理的范围。项目管理活动包括:
软件项目计划的任务,这是生产软件的真正开始之前进行。这是那里的软件生产,但涉及与软件生产任何方向的连接没有具体的活动;相反,它是一组多个进程,这有利于软件的生产。项目规划可能包括以下内容:
在项目范围管理,有必要-
对于各项措施的有效管理准确的估计是必须的。有了正确的估计经理可以管理和更有效地控制项目。
项目估算可能涉及以下内容:
软件大小可能无论是在KLOC(典千线)的条款或通过计算软件的功能点数量进行估算。代码行数取决于编码实践和功能点,根据用户或软件的要求而有所不同.
管理人员估计在人员的要求,须出示该软件工时方面的努力。对于工作量估算软件规模应该知道。这可以通过管理者的经验中得到,组织的历史数据或软件大小可以通过使用一些标准的公式转换成工作
这是因为它依赖于比任何以往的多个元件可能被认为是最困难的。估算项目成本时,需要考虑-
项目经理可以评估使用两种广泛认可的技术所列出的因素–
这种技术假设软件的各种组合物的产物.
主要有两种模式-
这种技术使用经验导出的公式来作出估计。这些公式是基于LOC或帧.
COCOMO代表建设性的成本模型,由巴里·W·贝姆发展。它把软件产品分为三类软件:有机,半独立式和嵌入式。.
调度项目,有必要-
用于开发软件产品的所有元素都可以被假定为资源为该项目。这可能包括人力资源,生产工具和软件库.
该资源在组织作为资产池数量有限,并住宿提供。资源短缺阻碍项目的发展,它可以滞后的调度之后。分配额外资源增加,最终开发成本。因此,有必要估算,分配足够的资源用于该项目.
资源管理包括-
风险管理涉及的所有活动有关的识别,分析和决策提供项目中的可预见和不可预见的风险。风险可能包括以下内容:
有参与的风险管理流程如下活动:
执行需要以监视检查按计划一切是否会。监测观察,检查风险的可能性和采取措施,以解决风险或报告的各项任务的状态.
这些措施包括-
通信可以是口头或书面的。通信管理过程可具有以下步骤:
关闭后,球队移动到下一个阶段或项目.
配置管理是跟踪和控制的要求,设计,功能和产品的开发方面的变化,软件的处理.
IEEE将其定义为“识别和定义在系统中的项目,控制这些项目的整个生命周期的变化,记录和报告的项目和变更请求的状态,并验证项目的完整性和正确性的过程”.
SDLC的阶段是在假设,如果它的基准,即基线测量,定义了一个阶段的完整性。相位为基准,当有关它的一切活动都是成品,有据可查。如果它不是最后阶段,它的输出将在下一阶段立即使用。配置管理是组织管理,其中一个相位基准后,负责发生任何变化(过程中,要求的技术,战略性等)的一门学科。CM不断检查软件进行任何.
配置管理是组织管理,其中一个相位基准后,负责发生任何变化(过程中,要求的技术,战略性等)的一门学科。CM不断检查对软件做任何改变.
变更控制的配置管理,从而确保软件系统进行的所有更改都一致并按照组织的规章制度的作用。.
在产品配置的变化经过以下步骤-
风险和不确定性增加了多方面的相对于该项目的大小,即使当项目是根据设置的方法开发的。.
有可用的工具,进行有效的项目管理,帮助。一些描述-
事件显示为编号的节点。它们被标记的箭头描绘了在项目任务的顺序连接.
该软件要求的特征和目标系统的功能性描述。要求传送用户从软件产品的期望。这些要求可以明显或隐藏的,已知或未知的,预期的或意外但从客户的角度.
这个过程收集的软件需求,从客户端,分析和记录他们被称为需求工程.
需求工程的目标是开发和维护复杂的和描述性的“系统需求规范”的文件.
这是一个四步骤的过程,其中包括–
让我们来看看这个过程-
当客户接近组织获取开发所要的产物,它涉及了什么所有功能的软件必须执行与其中所有的功能由软件预期粗略的概念.
参照该信息,则分析做详尽的研究有关系统要求的和它的功能是有可能开发.
本可行性研究报告的重点是对本组织的目标。本研究分析是否该软件产品可实际上物化在实施项目的组织,成本约束的贡献方面,并按照价值观和组织目标。它探讨的项目和产品技术方面,如可用性,可维护性和生产效率和整合能力.
这一阶段的输出应该是一个可行性研究报告应包含充分的意见和建议,供管理有关项目是否应该进行.
如果可行性报告是对正在进行的项目正,下一阶段的开始,从用户收集需求。分析师和工程师设有自己想要的软件,包括与客户和最终用户沟通,了解他们的想法是什么软件应该提供和.
系统分析员准备根据客户要求的技术文件。为了软件开发团队该文件很理解和有用的.
SRS应该拿出以下特点:
经过规定的技术规格,本文档中提及的要求进行验证。用户可能会问非法的,不切实际的解决方案或专家可以解释的规定不正确。这将导致成本大幅增加,如果在萌芽状态不是扼杀。要求可核对以下条件-
需求获取过程可以用下面的图来描绘:
需求获取的过程中,找出一个预期软件系统的要求与客户,最终用户,系统用户和其他人谁在软件系统开发的股权进行通信.
有多种方法来发现需求
面试是强中收集的要求。组织可进行多种类型的面试,如:
这种技术的缺点是,如果没有在问卷中提到的一些问题的选项,这个问题可能会被看管。.
工程师和开发团队可能分析的量,新的系统是必需的操作。如果客户机已经有一些软件来执行某些操作时,它进行了研究,并提出了系统的要求被收集.
每个软件属于某个领域的范畴。专家人在域可以是有很大的帮助,分析一般和具体的要求.
原型是建立用户界面,而无需添加细节功能,为用户诠释意软件产品的功能。它有助于提供更好的主意的要求。如果没有在客户端结束于开发人员的参考安装的软件和客户端是不知道自己的要求,开发人员创建一个原型的基础上开始提要求。原型被示出为客户端和反馈悉。客户反馈作为输入的需求收集。.
专家团队拜访客户的组织或工作场所。他们观察了现有的已安装系统的实际工作。他们观察工作流程,在客户端和如何执行的问题得到处理。团队本身得出了一些结论,形成从软件预期的要求的援助.
采集软件需求是整个软件开发项目的基础。因此,他们必须清晰,正确和明确的.
一个完整的软件需求规格必须是:
我们应该试着去了解可能出现的需求获取阶段有什么样的要求,什么样的要求,从软件系统的预期.
广义的软件需求应该被归类于两类:
这是关系到软件功能方面都属于这一类.
它们定义内,并从软件系统的功能和功能性.
非功能性需求,包括-
要求在逻辑上划分为
用户界面是任何软件或硬件或混合动力系统的重要组成部分。软件已被广泛接受,如果它是-
用户的认可,取决于用户如何使用该软件。用户界面是用户感知系统的唯一途径。表现良好的软件系统也必须具备有吸引力的,明确的,一贯的,反应灵敏的用户界面。否则软件系统的功能不能在方便的方式被使用。系统被认为是好的,如果它提供的手段来有效地使用它。用户界面要求下面简要提及-
系统分析师在IT组织是一个人,谁提出分析系统的需求,并确保要求构思和记录正确与正确。分析师的角色,SDLC的软件分析阶段开始。这是分析师的责任,以确保所开发的软件满足客户的要求.
系统分析员有以下职责:
软件的措施,可以理解为量化和象征各种属性和软件方面的处理.
软件度量提供措施,软件过程和软件产品的各个方面.
软件措施是软件工程的基本要求。他们不仅有助于控制软件开发过程中,也有助于保持最终产品的优良品质.
据汤姆德马科,A(软件工程师),“你无法控制你无法衡量的东西。”通过他的说法,这是非常清楚的软件措施是多么的重要.
让我们来看看一些软件指标:
功能点计数是衡量由软件提供的功能。功能点计数定义的软件功能性方面的大小.
在发展的过程和报告的客户端产品安装,或在客户端交付后的缺陷数量发现的缺陷数,定义产品的质量.
软件设计是一个过程转换用户需求变成一些合适的形式,这助于程序设计者软件编码与实现.
为评估用户的需求,软件需求规格说明文档被创建,可是需要更具体的术语为编码与实施软件.这个过程的输出可直接用来为实施编程语言.
在设计软件生命周期软件设计是第一步把会转道从问题域到解决方案域.它指定如何满足软件规格需求.
软件设计产生三个层面的结果:
软件模块化是一种技术为软件系统分成多个离散和独立的模块,其预期能够执行任务的)独立地.这些模块可以工作好像整个软件的基本结构.设计者倾向于设计模块以这样的方式,它可以单独地执行或独立地编制.
模块化设计遵循的规则分治的解决问题的策略,这是因为软件模块化设计有许多其他好处.
模块化的利用:
在软件设计过程中并发进程通过把软件分成多个独立的执行单元来实现,像模块和并行执行.换句话说,并发性提供能力软件同时执行的代码的多个部分.
程序员和设计师必须认识那些模块需要平行执行.
在文字处理器拼写检查功能是一种软件模块,它本身运行在旁边的文字处理器.
当一个软件程序模块化,其任务是根据某些特征划分为若干模块。正如我们知道模块的设置放在一起实现一些任务的说明。有许多方法来测量模块设计质量和模块之间的接口.这些措施被称为耦合和内聚.
凝聚是定义帧内可靠性的模块的程度的量度.更大的凝聚力是程序设计更好.
有七种类型的凝聚力–
耦合是定义的跨可靠性的程序模块之间的电平的测量。它告诉在什么水平的模块干扰和相互影响。如果耦合是低,该程序是更好.
有五个级别的耦合-
理想情况下,无耦合被认为是最好的.
软件设计过程的输出是设计文档,伪代码,详细逻辑图,过程图和所有功能或非功能性要求的详细描述.
取决于上述所有输出,下一阶段是软件的实现
软件分析和设计包括所有的活动把它有助于要求规范转化为执行。需求规范指定从该软件的所有功能性和非功能性要求。这些要求来规范人类阅读和理解文档的形状,到计算机无关.
软件分析和设计是中间阶段把它有助于人类可读的要求转化为实际的代码.
让我们来看看使用的软件设计师很少的分析和设计工具::
数据流图是在信息系统中流动的数据的图形表示。它是能够描述输入数据流,输出的数据流和存储的数据。DFD中没有提到这么数据流动在系统里面.
有DFD和流程之间的显着差异。流程图描述了在流动的程序模块的控制。DFD的描述中,系统流数据的各个层次。DFD不含有任何控制或分支元件。
数据流图是逻辑或物理.
更高级别的DFD可以转化成更具体的较低级别的DFD同的理解更深层次,除非说明书中所需要的电平来实现的.
结构图是从数据流图得出的图表。它代表了系统中比DFD更多细节。它打破了整个系统进入最低的功能模块,描述的功能和系统的各个模块的子功能以比DFD更大的细节.
结构图表示模块的层次结构。在每一层执行某一特定任务.
以下是在建结构图中使用的符号-
状态-它是由小钻石在模块的基础上表示。它描述了该控制模块可以选择任意的子例程的基础上的一些条件.
跳-箭头所示指向在模块内部,以描绘该控制装置将在上述子模块的中间跳.
循环-弯曲的箭头表示循环模块中。覆盖模块的循环重复执行所有的子模块.
数据流-并在后面加上空圆A的箭头表示数据流.
控制流-并在后面加上填充圆A的箭头代表控制流.
HIPO(分层输入过程输出)图是两个有组织的方法相结合来分析系统,并提供文档的方式。黑豹模型是由IBM公司在1970年一年的发展.
HIPO图表示模块中的软件系统的层次结构。分析员使用HIPO图,以获得对系统功能的高级视图。它分解以分层方式功能于子功能。它示出了由系统执行的功能.
HIPO图是很好的文档的目的。它们的图形表示更容易为设计者和管理者得到了系统结构的图案构思.
相反,IPO(输入过程输出)图,它描绘了在一个模块的控制和数据的流动,HIPO不提供关于数据流或控制流的任何信息.
HIPO图图表用于层次化表示,软件程序的IPO结构设计以及相同的文档.
大多数程序员没有意识到软件的大画面,使他们只能依靠他们的经理告诉他们做什么。这是更高的软件管理的责任提供准确的信息给程序员开发准确又快速的代码.
其他形式的方法,它使用图形或图表,可以被不同的人,有时不同的解释.
因此,分析师和软件的设计者想出了诸如结构化英语的工具。这无非是需要什么代码,以及如何编写它的描述。结构化英语可以帮助程序员写出无错的代码.
其他形式的方法,它使用图形或图表,可能有时会被不同的人有不同的解释。在这里,无论是结构化英语和伪代码试图减轻这种认识差距.
结构化英语是它使用结构化编程范式简单的英语单词。这不是最终的代码,而是一种描述所需要的代码,以及如何编写它。以下是结构化编程的一些标记.
IF-THEN-ELSE,DO-WHILE-UNTIL
分析师使用相同的变量和数据的名称,它存储在数据字典,使得它更容易编写和理解的代码.
我们采取的网上购物环境的客户身份验证的相同的例子。此过程来验证客户可能被写在结构化英文为:
EnterCustomer_NameSEEKCustomer_NameinCustomer_Name_DBfileIFCustomer_NamefoundTHENCallprocedureUSER_PASSWORD_AUTHENTICATE()ELSEPRINTerrormessageCallprocedureNEW_CUSTOMER_REQUEST()ENDIF
以结构化英文代码更像是每天的日常英语口语。它不能直接作为软件代码实现。结构化英语是独立于编程语言.
伪代码编写更接近的编程语言。它可以被认为是增加的编程语言,完整的评价和说明.
伪代码中包含结构比英语更多的编程细节。它提供了执行任务,因为如果一台计算机正在执行的代码的方法.
程序打印斐波那契数最多n个数字.
voidfunctionFibonacciGetvalueofn;Setvalueofato1;Setvalueofbto1;InitializeIto0for(i=0;i 决策表代表的条件和相应的行动将要采取的解决这些问题,以结构化的表格格式. 它是一个强大的工具来调试并防止出错。它可以帮助组类似信息放入一个表,然后通过组合表它提供了简单,方便决策. 要建立决策表,开发人员必须遵循四个基本步骤: 决策表应该由最终用户进行验证,并可以通过近来消除重复的规则和操作简化. 让我们以一天到一天的问题,一个简单的例子与我们的互联网连接。我们首先确定同时启动互联网和各自可能的解决方案可能出现的所有问题. 我们列出列的条件下栏动作准动作在所有可能出现的问题. Conditions/Actions Rules Conditions ShowsConnected N Y PingisWorking OpensWebsite Actions Checknetworkcable X Checkinternetrouter RestartWebBrowser ContactServiceprovider Donoaction 表:决策表–在内部网络故障排除 实体关系模型是基于真实世界的实体和它们之间的关系的概念数据库模型的类型。我们可以映射真实世界的场景上的ER数据库模型。ER模型创建一组实体及其属性,一组约束和关系当中. ER模型最适用于数据库的概念设计。ER模型可以如下表示: 例如,考虑一个学校的数据库。在这里,学生是一个实体。学生也有类似的名称,ID,年龄,阶级等. 映射基数: 数据字典是关于数据的信息的集中收集。它存储的含义和数据的起源,它与其他数据的关系,为使用等数据字典具有的所有名称的严格定义,以便于用户和软件设计的数据格式. 数据字典是经常引用为存储库的元数据(关于数据的数据)。它是随着软件程序的DFD(数据流图)模型中创建并预计要被更新时,DFD被改变或更新. 该数据是通过数据字典中引用而设计和实现的软件。数据字典中删除模棱两可的任何机会。它可以帮助程序员和设计师同步的保管工作,同时在程序中使用同一个对象的引用随处可见. 数据字典提供了完整的数据库系统中的一个位置的文档的一种方法。DFD的验证是通过使用数据字典. 数据字典中应包含有关以下内容的信息 数据流是为研究早期和描述所代表的代数形式通过的DFD来描述 = Composedof {} Repetition () Optional + And [/] Or Address=HouseNo+(Street/Area)+City+State CourseID=CourseNumber+CourseName+CourseLevel+CourseGrades 数据元素组成的名称和数据的描述和控制项目,内部或外部数据存储等具有以下细节: 它存储从在那里的数据输入到系统中,存在从系统中取出的信息。数据存储可以包括- 有两种类型的数据处理: 软件设计是一个过程概念化的软件需求转化为软件实现。软件设计以用户的需求和挑战,并试图寻找最佳的解决方案。软件被概念化寻找最佳的设计实现预期的解决方案. 有软件设计的多个变体。让我们简单地读那些: 结构化设计是一个概念化的问题到解决方案的几个组织良好的元素。它基本上是涉及该解决方案的设计。结构化设计的好处是把它提供更深入的了解这个问题正在得到解决。结构化的设计也使设计师更准确地集中在这一问题变得更为简单. 结构化的设计主要是基于“分而治之”的策略,其中一个问题分成几个小问题,每个小问题单独解决,直到整个问题就解决了. 通过解决方案模块解决了小块的问题。结构化的设计重点这些模块很好组织为了实现精确解. 在层次结构中排列这些模块。它与对方沟通。一个好的结构化的设计即始终遵循一些规则的多个模块之间的通信- 耦合-不同模块之间的通信. 一个好的结构化设计具有高内聚低耦合的安排. 在面向功能的设计中,该系统由许多较小的子系统称为函数组成。这些函数是能够在系统中执行的重大任务。该系统被认为是顶视图的所有功能. 功能导向设计继承了一些性能的结构化的设计分而治之的方法使用. 这种设计机制将整个系统分成更小的函数,通过隐瞒的信息和他们的操作提供抽象的方法。这些功能模块可以共享信息相互之间通过信息的传递与全球范围内使用可用的信息. 函数的另一个特点是程序的当一个程序调用一个函数,该函数更改,有时是程序的不能接受由其他模块的状态。功能导向设计作品好在哪里并不重要的系统状态和程序/功能工作的输入,而不是一种状态. 面向对象设计作品周围的实体和其特性而不是在软件系统中涉及到的功能。这种设计战略重点实体和其特点。软件解决方案的整个概念是围绕经营实体. 让我们看看面向对象设计的重要概念: 软件设计过程可以看作一系列定义良好的步骤。虽然设计方法不同而有所不同(面向功能或面向对象的但它可能有涉及的下列步骤: 这里有两个通用的方法进行软件的设计: 我们知道一个系统由多个子系统组成,它包含多个组件。此外,这些子系统和部件可能有其发病的子系统和组件和系统中创建的层次结构. 自顶向下设计需要整个软件系统作为一个实体,然后将其分解,以实现一个以上的子系统或部件的基础上的一些特征。每个子系统或部件然后当作一个系统,并进一步分解。这个过程不断运行,直到系统中的自顶向下的层次结构的最低级别的实现. 自顶向下的设计开始,系统的通用模型,并不断定义它的更具体的部分。当所有的组件组成,整个系统开始存在. 自上而下的设计更适合当软件解决方案需要从头开始设计和具体细节是未知的. 自下而上的设计模式从最具体的和基本的组成部分。它继续与使用基本或更低级别的组件组成成分较高水平。它不断创造更高层次的组件,直到所需的系统没有演变为一个单一的组成部分。与每个台阶,抽象的量增加. 自下而上的策略是更合适的系统需要从一些现有的系统,其中所述基本图元可以在新的系统中使用时创建. 无论是自上而下和自下而上的方法是不实际的个别。相反,两者很好地结合起来使用. 用户接口是哪个用户才能使用该软件进行交互的前端应用程序视图。用户可以操作和控制软件,以及通过用户接口的装置的硬件。如今,用户界面被发现在几乎每一个地方,数字化技术的存在,直接从电脑,手机,汽车,音乐播放器,飞机,轮船等. 用户界面的软件部分和被设计,它预计将提供软件的用户洞察的方式。用户界面提供了基本平台的人机交互. 用户界面可以是图形化的,基于文本,音频,视频的基础,这取决于底层硬件和软件的组合。用户界面可以是硬件或软件或两者的组合. 该软件变得越来越流行,如果它的用户界面: UI大致分为两类: CLI已经与电脑互动的一个很好的工具,直到视频显示监视器应运而生。CLI是许多技术的用户和程序员的首选。CLI是最小的接口软件可以提供给它的用户. CLI提供了一个命令提示符的地方,命令的用户类型和进给系统。用户需要记住命令和其使用的语法。此前的CLI没有设定有效地处理用户的错误. 命令是一个基于文本的参照指令集合,预期由系统来执行。还有像宏,这很容易让用户操作脚本的方法. CLI使用较少的GUI计算机资源的数量. 基于文本的命令行界面,可以有以下内容: 图形用户界面为用户提供了图形化的手段来与系统进行交互。GUI可以是硬件和软件两者的组合。使用图形用户界面,用户解释软件. 通常情况下,界面更加消耗资源比命令行的。随着先进技术的程序员和设计师创造更多的效率,精度和速度工作,复杂的图形用户界面的设计. GUI提供了一套组件与软件或硬件进行交互. 每个图形组件提供了一种方法与系统一起工作。一个GUI系统具有以下的元素,如: 一个应用程序的图形用户界面包含一个列出的GUI元素的一个或多个: 其他令人印象深刻的GUI组件包括: 有许多用于设计用户界面执行的活动。GUI设计和实现的过程是一样的SDLC。任何模型可以用于GUI实现瀑布之中,迭代或螺旋模型. 用于GUI设计和开发的模型应该满足这些GUI的具体步骤. 有使用它的设计师可以创建一个鼠标点击整个界面的几种工具可用。一些工具可以被嵌入到软件环境(IDE). GUI实现工具提供了强大的GUI控件数组。对于软件定制,设计人员可以相应地更改代码. 有根据其不同的用途和不同平台的图形用户界面工具段. 移动图形用户界面,电脑界面,触摸屏图形用户界面等。这里是一些工具,来方便构建图形用户界面的列表: 以下规则被提及是在GUI设计,通过施奈德曼和PLAISANT在他们的著作中描述的黄金法则(设计用户界面). 这个词的复杂性代表的事件或事情其中有多个相互关联的环节和高度复杂的结构状态。在软件编程,软件的设计是很重要的,相互连接的元件的数量是巨大的,这变得太难理解一次. 软件设计的复杂性是难以评估没有使用复杂性度量和措施。让我们看看三个重要软件复杂性的措施. 他定义了各种指标检查模块的复杂性. 参数 意义 n1 独特的营办商数目 n2 N独特的操作数数 N1 运营商的总发生数 N2 操作数的总发生数 当我们选择源文件以查看其复杂性细节指标查看器,以下结果是度量报告: 度量 数学表示 n 词汇表 n1+n2 大小 N1+N2 V 成交量 长*LOG2词汇 D 难度 (n1/2)*(N1/n2) E 努力 难度*体积 B 错误 成交量/3000 T 每个程序包含语句为了执行一些任务和其他决策语句.这些决策构造改变程序的流程. 如果我们比较两个相同大小的计算机程序,所述一个具有更多的决策陈述是更复杂的. McCabe,1976年提出的圈复杂度指标量化一个给定的软件的复杂性.这是图形驱动程序模型,该模型是基于决策结构如if-else,延伸,repeat-until,switch-case和goto语句. 过程流程控制图: 画一条弧 画一条弧. 计算程序模块的圈复杂度,我们使用公式- V(G)=e–n+2在哪里e是边总数n是节点的总数目 上述模块的圈复杂度是 e=10n=8圈复杂度=10-8+2=4 根据P.Jorgensen,一个模块的圈复杂度不应超过10. 这是广泛用于测量软件的大小。功能点集中于系统提供的功能。特性和功能的系统被用来测量软件的复杂性. 功能点计算的五个参数,命名为外部输入,外部输出,逻辑内部文件,外部接口文件和外部咨询。考虑到软件的复杂性各参数进一步划分为简单,平均或复杂. 让我们来看看功能点的参数: 每一个独特的输入系统从外面被认为是外部输入。独特性的输入测量,因为没有两个输入应该有相同的格式。这些输入可以是数据或控制参数. 由系统提供的所有输出类型计数此类别中。输出被认为是独特的,如果其输出格式和/或处理是独特. 每一个软件系统维护维持其功能的信息和正常内部文件。这些文件保存了系统的逻辑数据。这个逻辑数据可能包含的功能数据和控制数据. 软件系统可能需要共享文件与一些外部软件或它可能需要将文件进行处理或作为参数传递给函数。所有这些文件都算作外部接口文件. 调查是输入和输出的组合,在用户发送询问一些数据作为输入和输出的系统响应用户的查询处理。一个查询的复杂性超过外部输入、外部输出。查询是独特的,如果其输入和输出方面独特的格式和数据. 每个这些参数的系统给出weightage根据他们的阶级和复杂性。下面的表格提到了weightage给每个参数: 简单 平均 复杂 输入 3 4 6 输出 5 7 查询 文件 10 15 接口 上表收益率原始功能点。这些功能点是根据环境调整的复杂性。系统使用14个不同的特征: 这些特征因素评级从0到5,如下提到的: 所有收视率,然后概括为N。N的取值范围为070(14种特性X5种评级的)。它被用来计算复杂性的调整因子(CAF)使用下面的公式: CAF=0.65+0.01N 然后, 交付功能点(FP)=CAFxRawFP 这种FP然后可以在各种度量被使用,如: 在这一章我们学习关于计算机编程方,文档和软件实现中的挑战. 结构化程序设计告诉如何程序被编码的。结构化程序设计采用三个主要概念: 函数式编程的编程语言把它使用数学函数的概念,方法。在数学中的函数应该总是产生在收到相同的参数相同的结果。在程序语言中,程序的流程通过程序运行时,例如,程序的控制被转移到被调用的过程。而控制流从一个程序到另一个传输,程序改变其状态。. 函数式编程提供了计算的数学函数,其产生的程序状态的结果,不论手段。这使得能够预测程序的行为. 函数式编程使用以下概念: CommonLisp,斯卡拉,哈斯克尔,二郎和F#是函数式编程语言的一些例子. 编程风格设定的编码规则之后所有的程序员写的代码。当多个程序员在同一个软件项目工作,它经常需要与写的其他一些开发者的程序代码工作。这变得乏味,或有时是不可能的,如果所有的开发人员不遵守一些标准的编程风格编写程序. 编码风格的变化与组织,操作系统和语言. 在一个组织的编码规则如下编码元件可以被定义: 软件文档是软件过程的一个重要组成部分。良好的书面文件提供一个很好的工具和信息资源库的方式要了解软件的过程。软件文档还提供了有关如何使用该产品的信息. 维护良好的文件应包括下列文件 本文档可以作为基础进行开发的软件和验证和确认阶段使用。大多数的测试案例是直接从需求文档建立. 这些文件的存储库工作的开发者实现软件。尽管这些文件没有提供有关如何编写程序的任何细节,他们给所需要的编码和执行所有必要的信息. 技术文档增加了工作的相同的代码不同程序员之间的了解。它增强了代码的复用能力。这使得调试方便,可追溯. 有可用的各种自动化的工具和一些自带的编程语言本身。比如java的自带的JavaDoc工具生成代码的技术文档. 这些单证包括,软件安装程序,操作指南,用户指南,卸载方法和特殊的引用,以获得更多象牌的信息等. 有在实施软件所面临的开发团队的一些挑战。其中一些被提及如下: 软件测试是软件需求和用户系统规范的评估过程。测试是在软件开发生命周期,或在程序代码模块级进行。软件测试包括确认和验证。. 验证过程,以验证该软件是在满足该使用者的要求。它是在SDLC的末端。如果软件相匹配的要求,我们可以考虑在验证完成. 验证是确认软件是否满足业务需求的过程中,与显影附着于适当的规范和方法. 测试的目标是- 试验既可以手动进行或使用自动化测试工具: 测试需要检查一个网页可以在InternetExplorer中打开。这可以通过手动测试很容易做到。但要检查网络服务器可以利用100万用户的负荷,这是很不可能的手动测试。 T有软件和硬件工具,它可以帮助测试人员在进行负载测试,压力测试,回归测试。. 测试可以根据两种方法进行 当功能被没有考虑在担心它被称为黑箱测试的实际执行情况进行测试。另一边是被称为这里不仅功能测试白盒测试,但它的实现方式进行了分析。. 详尽的测试是一个完美的测试最需要的方法。中的输入和输出值的范围内的每一个可能的值进行测试。因此不可能在真实世界的场景来测试每一个值,如果值的范围是大. 它进行到程序的测试功能。它也被称为“行为”的测试。在这种情况下,测试器,具有一组输入值和相应的期望的结果。于提供输入,如果与所期望的结果的输出相匹配时,该程序被测试'好',和有问题的,否则. 在这个测试方法中,代码的设计和结构是不知道的测试器和测试工程师和最终用户进行该测试的软件. 黑盒测试技术: 据进行的测试程序和其执行中,为了提高编码效率或结构。它也被称为“结构”的测试. 在这个测试方法中,代码的设计和结构是已知的测试仪。代码的程序员对代码进行这项测试。. 下面是一些白盒测试方法: 测试本身可以在各级SDLC的限定。测试过程中运行的并行软件开发。跳之前就下阶段,阶段测试,确认和验证。 测试分别做只是为了确保有留在软件没有任何隐藏的缺陷或问题。软件在各个层次上进行测试- 虽然编码,程序员执行程序的设备上的一些测试,以了解它是否是免费的错误。在白箱测试方法进行测试。单元测试可以帮助开发人员决定该计划的各个单位工作按要求,没有错误。 即使软件的单位做工精细独特,有必要来看看单位,如果整合到一起也将工作没有错误。例如,参数传递和数据更新等. 该软件被编译为产物,然后将其测试为一个整体。这可以通过使用下面的一个试验或多个来实现: 当软件准备交给客户就必须经过测试,它是用户交互和响应测试的最后阶段。这是重要的,因为即使软件相匹配的所有用户的要求,如果用户不喜欢显示的方式或作品,它可能会被拒绝. 每当一个软件产品的新代码,特征或功能更新时,它被彻底的测试,以检测是否有附加代码的任何负面影响。这被称为回归测试。. 试文件制备的不同阶段- 测试开始,测试案例的产生。还需要参考下面的文档– 可能需要以下文件,而测试已启动,正在做: 下列文件可测试后生成: 我们要明白,软件测试是软件质量保证,软件质量控制和审计软件不同. 现在软件维护是SDLC的一部分。它代表了所有的修改和软件产品的交付之后更新完成。有原因,为什么修饰是必需的,其中一些在下面进行简要提到数: 在软件生命周期,维护类型可以根据其性质不同而不同。它可能只是一个例行的维护任务,一些用户发现了一些bug或者基于维护规模或性质,它可能是一个大的事件本身。以下是一些类型基于其特性的维护: 报告表明,维护成本高。在估算软件维护的一项研究发现,维修费用更是高达67%,整个软件流程周期的成本. 上的平均,软件维护的成本是所有SDLC阶段的50%以上。有各种因素,其中触发维护成本变高,如: IEEE规定的顺序维护过程活动的框架。它可以在迭代的方式被使用,并且可以被扩展以便定制产品和过程可以包括在内 这些活动去手牵手,每个以下阶段: 训练设施,如果需要提供,除了用户手册的硬拷贝. 当我们需要更新的软件,它保持目前的市场,而不会影响其功能,它被称为软件再工程。这是一个全面的过程,软件设计变更和程序重新写入. 例如,最初的Unix是用汇编语言开发的。当C语言应运而生,Unix的重新设计在C中,由于在汇编语言中的工作是困难的. 除此之外,有时程序员会注意到的软件几个部分需要比其他人更维护和它们还需要重新设计。. 还有在软件再工程中几个重要术语 这是一个过程,深入分析,了解现有的系统来实现系统的规范。这个过程可以看作是反向的SDLC模式,即我们试图通过分析较低的抽象层次,以获得更高的抽象水平. 现有系统是以前设计的实现。设计师然后做逆向工程通过查看代码,并试图让设计并尝试总结规范. 它是一个过程,以重新构造和重新构造的现有软件。这是所有关于重新编排的源代码,无论是在相同的编程语言,或者从一个编程语言不同的一个。重组可以有代码,重组和数据重组或两者兼而有之. 重新构筑不会影响软件的功能,但提高可靠性和可维护性。程序组件,从而导致错误发生非常频繁是可以改变的,或者更新了重组. 软件的过时硬件平台的可靠性可通过重组被删除. 正向工程是从中通过逆向工程的方式被放倒在手的规格得到所希望的软件的过程。它假定有一些软件工程在过去已经完成. 正向工程是一样的,只有一点区别的软件工程过程-它反向工程之后进行总. 组件是软件的程序代码,它执行系统中的一个独立的任务的一部分。它可以是一个小的模块或子系统本身. 组件具有功能性高内聚和耦合率较低,也就是说,它们相互独立,可以不依赖于其他模块执行任务. 在模块化编程,这些模块被编码以执行其可以跨越其他软件程序号被用于特定的任务. 有一个全新的垂直,这是基于再利用的软件组件,以及被称为基于组件的软件工程(CBSE). 再利用可以在各个层次进行 软件组件提供的接口,其可以用于建立不同的组件之间的通信. 可以采用两种方法:一是通过保持相同的要求和调整部件或组件保持不变,修改的要求. CASE完整C形式是计算机辅助软E件工程.使用各种自动化软件工具可以做软件项目的开发和维护工作. CASE工具设置的软件应用程序。这使用为自动的SDLC活动。CASE工具所使用的软件项目经理,分析师和工程师开发的软件系统. 有许多CASE工具做软件开发生命周期的各个阶段,如工具,设计工具,项目管理工具,数据库管理工具,文档工具分析. 为了得到所需的结果,CASE工具加速项目工作的发展并帮助推动软件开发的下一个阶段. 于特定的SDLC阶段,CASE工具可以分为以下: CASE工具可以组合在一起,如果他们有类似的功能,流程活动,并得到整合其他工具的能力. CASE工具的范围,进入整个软件开发生命周期. 现在,我们简要地通过不同的CASE工具 这些工具被用来表示在图形形式的系统组件,数据和其中的各种软件组件的控制流程和体系结构。例如,流程图制作工具,用于创建流程图. 过程建模方法来创建软件过程模型,该模型被用来开发软件。流程建模工具,帮助管理者选择的过程模型或修改它,因为每个软件产品的需求。例如,EPF作曲. 这些工具用于项目计划,成本和工作量估计,项目调度和资源规划。经理人必须严格遵守项目执行与软件项目管理的每提及一步。项目管理工具可以帮助存储和整个组织共享项目信息的实时性.例如,CreativeProOffice,TracProject,Basecamp. 在软件项目文档启动软件过程之前,整个云SDLC的各个阶段和项目建成后. 文档生成工具为技术用户和最终用户的文档。技术的用户大多是开发团队的内部专业人士谁是指系统手册,参考手册,培训手册,安装手册等最终用户文档描述的功能和操作方法系统,例如用户手册。例如,Doxygen,DrExplain,AdobeRoboHelpfordocumentation. 这些工具可帮助收集需求,自动检查是否有任何不一致,不准确的图表,数据冗余或错误遗漏。例如,Accept360,Accompa,CaseCompleteforrequirementanalysis,VisibleAnalystfortotalanalysis. 这些工具可帮助软件设计人员设计的软件,其可以进一步在使用细化技术更小的模块被分解的块结构。这些工具提供了详细的每个模块和互连模块之间的.如,动画软件设计 软件的实例下一个版本发布。配置管理工具处理– CASE工具在这有助于通过自动跟踪,版本管理和发布管理。例如,Fossil,Git,AccuREV. 这些工具被认为是配置管理工具的一部分。他们处理的软件进行更改后,其基准是固定的,或者当软件首次发布。CASE工具自动更改跟踪,文件管理,代码管理等。这也有助于在执行组织的政策变化. 这些工具包括编程环境,如IDE(集成开发环境),内置的模块库和仿真工具。这些工具提供全面的援助建设的软件产品,其中包括功能仿真和测试.例如,CscopetosearchcodeinC,Eclipse. 软件原型仿真版的预定软件产品。原型提供初始的外观和产品的手感和模拟实际产品的几个方面. 原型CASE工具基本上都与图形库。他们可以创建独立于硬件的用户界面设计。这些工具可以帮助我们根据现有的信息来建立快速原型。此外,他们提供的仿真软件原型。例如.Serenaprototypecomposer,MockupBuilder. 这些工具可协助设计网页的形式一样,文本,脚本,图形等所有盟国的元素。网络工具还提供了对正在开发的实时预览,以及如何将它看起来完成后。例如,Fontello,AdobeEdgeInspect,Foundation3,Brackets. 质量保证的软件组织监控工程过程和方法,通过开发软件产品,以确保质量的一致性按组织的标准。QA工具,包括配置和变更控制工具和软件测试工具。例如,SoapTest,AppsWatch,JMeter. 软件的维护包括软件产品的修改就交付了。自动记录和错误报告技术,误差自动售票生成和根本原因分析的几个CASE工具,可帮助软件组织在SDLC的维护阶段。例如,Bugzillafordefecttracking,HPQualityCenter. 这些软件工程面试问题的目的是为了让你熟悉的问题的性质在你可能会遇到S在软件工程程面试时.按我的经验,良好的面试者很难规划提出任何特别的问题,在你的采访,一般的问题开始与主题的一些基本概念,后来他们继续基础上,进一步讨论和回答什么.: Q.什么是计算机软件 A.计算机软件是一个完整的方案,其中包括软件程序,如何使用该软件的文档和用户手册. Q.您能不能区分计算机软件和计算机程序 A.计算机程序是一段程序代码,执行一个定义良好的任务,其中软件包括程序代码并它的文档和用户指南. Q.什么是软件工程 Q.如你知道编程,什么是需要学习软件工程的概念 A.一个人谁知道如何建立一个墙不是善于建设一个完整的家。同样,谁可以写程序的人可能没有对软件工程的其他概念的知识。软件工程的概念,引导程序员如何评估最终用户的需求,实际的编码开始之前设计的算法,创建了编码,测试代码和文档的程序. Q.什么是软件过程和软件开发生命周期(SDLC) A.软件开发生命周期,或软件过程是软件在开发过程中,即要求收集,系统分析,设计,编码,测试,维护和文档的顺序以下各阶段的系统化发展. Q.有几个SDLC模型 A.有几个可用的SDLC的模型,如瀑布模型,迭代模型,螺旋模型,V模型和大爆炸模型等等。. Q.什么是SDLC的各个阶段 A.SDLC的一般阶段是:理解客户需求,系统分析与设计,编码,测试和实施。该阶段取决于我们选择的软件开发模型时. Q.那一种SDLC模式是最好的 A.SDLC模式采用按开发过程中的需求。它很可能软件到软件,以确保该模型是合适的. 我们可以选择最佳的SDLC模式,如果以下答案感到满意- 是否SDLC适合选择技术实现的软件 是否SDLC适合客户的需求和优先事项 是否SDLC模型适合于该软件的规模和复杂性 是否SDLC模式适用于项目和工程,我们做的类型 是否SDLC适当的地域共同定位或分散开发 Q.什么是软件项目管理 Q.谁是软件项目经理吗 A.软件项目经理承诺进行软件项目的责任. Q.什么是软件项目经理角色与责任 Q.什么是软件的范围 A.软件的范围是一个明确的界限把它包含了所有完成开发和提供软件产品的活动. 该软件适用范围明确规定的所有功能和文物交付的软件的一部分。范围确定什么样的产品会做,什么也不会做,什么终端产品将包含哪些它将不包含. Q.什么是项目估算 Q.我们如何才能得到软件产品的规模 A.软件产品的大小可以用以下两种方法之一进行计算- 计数的交付的代码行 计数交付功能点 Q.什么是功能点 A.作用点是由该软件产品提供的各种功能。它被认为是测量软件大小的单元. Q.什么是软件项目估算技术可用 A.有许多估计技术.最广泛使用的是- 分解技术(计数代码行和功能点) 实证方法(普特南和COCOMO) Q什么是底线 Q.什么是软件配置管理 A.软件配置管理是跟踪和控制的要求,设计,功能和产品的开发方面的变化,软件的处理。. Q.什么是变更控制 A.变更控制的配置管理从而确保软件系统进行的所有更改都一致并按照组织的规章制度的作用。. Q.你如何衡量项目的执行 A.们可以测量执行项目活动监视,状态报告和里程碑清单的方式. Q.说一些项目管理工具. A.T有作为每个软件项目和组织政策要求的各种项目管理工具。它们包括甘特图,PERT图,资源直方图,关键路径分析,状态报告,里程碑清单等. Q.什么是软件需求 A.软件的要求,提出软件系统的功能描述。要求被假定为目标的系统,其功能和特征的描述。要求传送用户从系统的期望. Q.什么是可行性研究 A.这是评估如何实践和有益的软件项目开发将是一个组织的一项措施。该软件分析仪进行了深入的研究,以了解该项目的经济,技术和操作可行性。. 经济-资源运输成本的培训,更多的实用程序和工具以及成本和项目的收益整体估算成本. 技术-是否有可能开发这个系统?评估机(S)和操作系统(S)上的软件将执行,现有的开发人员的知识和技能,培训,实用程序或工具对项目的适用性。. 操作-可以顺利完成的每个项目的需求变化组织调整?就是这个问题值得解决 Q.你怎么能收集需求 A.要求从用户通过访谈,调查,任务分析,集思广益,域分析,原型收集,学习软件现有的可用版本,并观察. Q.什么是SRS A.SRS系统或软件需求规格说明是需求收集过程时产生的文件。它也可以被看作炼要求和记录它们的处理. Q.什么是功能性的要求 A.功能要求是预计从提出软件产品的用户功能特性和规格. Q.什么是非功能性需求 A.非功能性需求是隐含的,涉及到安全性,性能,外观和感觉的用户界面,互操作性,成本等。. Q.什么是软件方面的措施 A.件的措施,可以理解为量化和象征的各种属性以及软件方面的过程. Q.什么是软件度量 A.软件度量提供措施,软件过程和软件产品的各个方面。它们被分成– 要求指标:长度要求,完整 产品指标:代码行数,面向对象度量,设计和测试指标 工艺指标:评估和跟踪预算,进度,人力资源 Q.什么是模块化 A.模块化是一种技术,将一个软件系统划分为多个离散的模块,预计进行的工作(S)独立。. Q.什么是并发性以及它是如何在软件中实现的 A.并发是事件或动作的倾向同时发生。在软件中,当两个或多个过程同时执行的,它们被称为并发进程. 示例 当您启动打印命令,打印机开始打印,你可以打开一个新的应用程序. 并发,被分裂成软件即执行进程和线程的多个独立单位,并执行它们并行执行. Q.什么是凝聚力 A.凝聚力是定义模块的元件之间的内部可靠性的程度的量度. Q.什么是偶合 A.耦合是定义一个程序模块之间的相互可靠性水平的措施. Q.提到一些软件分析和设计工具 A.这可能是:DFD的(数据流图),结构图,结构化英语,数据字典,黑豹(分层输入过程输出)图,ER(实体关系)图和决策表。 Q.什么是0级的DFD A.最高抽象层次的DFD被称为0级DFD也称为上下文级别的DFD,它描绘了整个信息系统的一个图表隐藏所有的底层细节. Q.什么是结构化的英语和伪码的区别 A.结构化英语是用编程语言的关键字来写一个程序模块的结构,然而,伪码更接近的编程语言,并使用母语的英语单词或句子来写的代码部分英语为母语. Q.什么是数据字典 A.数据字典被称为元数据。这意味着,它是关于数据的数据仓库。数据字典用于组织在系统中使用诸如对象和文件以及它们的命名约定的名称和它们的引用。. Q.什么是结构化设计 Q.:什么是功能导向,面向对象的设计之间的区别 A.功能化的设计是由被称为功能许多较小的子系统。每个功能能够在系统中执行显著任务。面向对象的设计工作解决现实世界中的对象(实体),它们的类(类)和对象(函数)的操作方法。. Q.定义自顶向下和自底向上的设计模型. A.:自顶向下的模型开始系统的广义视图,将其分解为更为具体的人,而自下而上的模式开始于第一次最具体的和基本的组成部分,并保持组成成分得到的抽象水平. Q.什么是Halstead’s的复杂度基础 A.Halstead’s的复杂度取决于上的程序的实际执行,并认为该计划作为衡量的基础上使用令牌。. Q.提到的公式来计算圈程序的复杂性 A.圈复杂度采用图论的公式:V(G)=e–n+2 Q.什么是函数式编程 A.功能编程的编程语言,它使用数学函数的概念风格。它提供了计算的数学函数,其产生的程序的状态,结果,不论装置. Q.区分确认和验证 A.验证检查,如果该产品是由按而验证检查用户的需求,如果遵循正确的步骤来开发产品。. 验证确认正确的产品和核查确认,如果该产品是建立在一个正确的方式. Q.什么是黑盒和白盒测试 A.黑盒测试检查,如果所需的输出产生有效的输入值时给出。它不验证程序的实际执行。. 白盒提供了有效的输入,而且它会检查代码是否正确实现,测试时,不仅需要的有效输出检查。. 标准 黑盒测试 白盒测试 识的软件程序,设计和结构所必需的 否 是的 知识软件实现至关重要 谁做这个软件的测试 软件测试员工 软件开发 为测试基准参考 需求规格说明书 设计和结构的详细信息 Q.质量保证与质量控制 A.质量保证监督检查,如果合适的流程进行后续处理,而软件开发软件e. 质量控制涉及维护软件产品的质量. Q.什么是各类软件的维护 A.维修种类有:纠正,适应性,完备和预防. 纠正 删除用户识别的错误 自适应 应对变化的硬件和软件环境下,软件工程 完备的维修 在现有的或新的用户需求的变化实施 预防性维护 采取适当措施以避免未来的问题 Q.什么是软件再工程 A.软件再工程的过程中,以加强该软件是建立在不改变软件的功能的技术。这样做是为了保持调整与最新技术的软件实现. Q.什么是CASE工具 A.消协表示计算机辅助软件工程。CASE工具被设置的自动化软件应用程序,它被用来支持,促进和平滑的SDLC活动.