软件工程各阶段的工作内容及特征
- 格式:doc
- 大小:15.00 KB
- 文档页数:3
软件工程各阶段的工作内容及特征软件工程的目标是提高软件质量,质量因素有正确性、性能、可靠性、容错性、易用性、灵活性、可扩充性、可理解性、可维护性等等。
开发常用模型有:线性模型、渐增式模型、螺旋模型、快速原型模型、形式化描述模型等等。
“套用固定的模型不是程序员的聪明之举”。
比如“程序设计”与“测试”之间的关系,习惯上总以为程序设计在先,测试在后,而对于一些复杂的程序,将测试分为同步测试与总测试更有效。
软件开发中的三种基本策略:“复用”“分而治之”“优化—折衷”。
软件复用是将具有一定集成度并可以重复使用的软件组成单元,称为软构件。
分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。
软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好等等。
优化工作的复杂之处是很多目标之间存在千丝万缕的关系,当不能够使所有的目标都得到优化时,就需要“折衷”策略。
软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。
软件折衷的重要原则是不能使某一方损失关键的职能,更不可以像“舍鱼而取熊掌”那样抛弃一方。
下面从需求分析、系统分析、系统实现、测试与改错、维护与再生这五个方面逐一阐述。
2.1 需求分析阶段需求分析是项目成败与否的第一步,对需求把握得越准确,软件的修修补补就越少。
有些需求在一开始时很难确定,在开发过程中要不断地加以改正。
软件修改越早代价越少,修改越晚代价越大。
需求分析要关注到每一个最终使用者,避免遗漏使用方的需求。
需求分析尽量从多个角度进行。
需求分析需要与使用者进行多次反复沟通,开发者做到真正领会使用者的需求。
做可行性分析不能以偏盖全,也不可以什么鸡毛蒜皮的细节都加以权衡。
可行性分析必须为决策提供有价值的证据。
需要分析的工作要点有:1)完成问题整理、收集;2)走访使用部门,进行询问、沟通;3)交流中的心态定位是我们在为编辑、为业务工作;4)我们要为用户考虑。
软件工程名词解释 LELE was finally revised on the morning of December 16, 2020软件工程试题整理_词语解释题1、需求分析:需求分析是指开发人员要准确理解用户的需求,进行细致的调查分析,将用户非形式的需求陈述转化成完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
2、白盒法:该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
白盒法也不可能进行穷举测试。
3、黑盒法:该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依照需求规格说明书,检查程序是否满足功能要求。
因此,黑盒测试又称为功能测试或数据驱动测试。
4、渐增式测试:逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。
每加入一个新模块进行一次集成测试,重复此过程直至程序组装完毕。
5、非渐增式测试:首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行测试。
6、可执行的规格说明:这是一种使要求说明过程自动化的技术,通过可执行的规格说明语言来描述预期的行为“做什么”,人们可以从直接观察中用规格说明语言来规定任何系统行为。
7、经济可行性:对组织的经济状况和投资能力进行分析,对系统建设,运行和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计。
8、系统设计说明书:是从系统总体的角度出发对系统建设中各主要技术方面的设计进行说明,是系统设计阶段的产物,其着重点在于阐述系统设计的指导思想以及所采用的技术路线和方法,编写系统设计说明书将为后续的系统开发工作从技术和指导思想上提供必要的保证。
9、面向对象设计:是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。
软件工程六十题1﹑软件产品的特性是什么?产品特性:⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的⑸开发软件的费用不断增加,致使生产成本相当昂贵。
2﹑软件生产有几个阶段?各有何特征?⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。
3﹑什么是软件危机?产生原因是什么?软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂。
⑵软件开发管理困难而复杂。
⑶软件包开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4﹑什么是软件工程?它目标和内容是什么?软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。
软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程内容:研究内容包括开发技术和开发管理两个方面。
开发技术主要研究:软件开发方法,开发过程,开发工具和环境。
开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。
6﹑什么是软件生存周期?它有哪几个活动?软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
《软件工程》课程要点●每章教学课件中的“本章小结”列出了需要掌握的内容●教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);答:计算机软件是程序、数据和相关文档的集合;用于实现计算机系统所需要的逻辑方法和控制过程(2)软件危机的含义、表现、产生原因(客观、主观)答:计算机软件开发和维护过程中遇到的一系列严重问题。
软件危机的表现:①对软件开发成本和进度的估计很不准确②已完成的软件不能满足用户需求③软件质量差④软件不可维护⑤软件没有开发文档⑥软件成本在计算机系统总成本中所占的比例逐年上升⑦软件生产率跟不上硬件的发展和计算机迅速普及的趋势与软件的特点有关(客观原因):①软件是计算机系统中的逻辑部件,缺乏“可见性”,管理和控制软件开发过程相当困难②软件在使用期间不存在机械磨损和老化问题,一旦发现错误,通常意味着修改原来的设计,因此软件难维护③软件规模庞大,程序复杂性增加,需多人分工合作(不能保证每个人完成的工作合在一起构成一个高质量的大型软件系统)与软件开发和维护的方法不正确有关(主观原因):①开发无计划②忽视软件需求分析的重要性③轻视软件维护④无过硬评测手段⑤缺乏有力的开发方法和工具⑥不重视开发文档等软件配置(3)软件工程学科包括的内容(三要素)、解决的主要问题答:(1)软件工程定义:1)软件工程是指导计算机软件开发和维护的工程学科 2)采用工程化的概念、原理、技术和方法来开发和维护软件3)将经过时间考验而证明正确的管理技术和开发技术结合起来,以较经济的手段开发出高质量的软件并有效维护它2)软件工程方法学的三要素:①方法:完成软件开发各项任务的技术方法②工具:为方法的高效运用,而提供的自动或半自动的软件支撑环境③过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤(4)软件生命周期的含义、组成阶段及各阶段主要任务答:软件生命周期:一个软件从定义、开发、运行维护,直到最终被废弃要经历一个漫长的时期,这个时期称为软件生命周期。
软件⼯程基础习题习题11. 简述计算机系统的开发流程。
2. 系统分析和定义是计算机系统开发过程中的关键步骤,这⼀步应该做哪些⼯作?3. 系统规格说明书主要应包含哪些内容?为什么要进⾏系统复审?4. 如何理解软件概念?简述软件有哪些分类⽅法?5. 软件的发展经历了哪⼏个阶段?简述各阶段名称及特点。
6. 查阅⽂献写⼀篇1000字的短⽂,综述软件⼯程的发展。
7. 什么是软件危机?主要有哪些表现?8. 查阅最新⽂献写⼀篇2000字的短⽂,综述软件危机在当今的表现以及造成的危害。
9. 什么是软件的⽣命周期?10. 软件⽣存期模型主要有哪些?给出名称及特点。
习题21. 软件计划的任务主要有哪些?2. 在软件计划阶段应该考虑哪三类资源?对软件开发中的每⼀类资源可以⽤哪些特征来描述?什么是时间窗⼝?可再⽤软件资源主要有⼏种?给出名称及简单解释。
3. 软件⽣命周期中各阶段⼈⼒资源如何安排才合理?4. 简述代码⾏技术的基本思想。
5. 指出下列公式中每个量的含义。
∑=-±=ni d a b L 12)6(6. 什么是40-20-40规则?7. 当采⽤敏捷开发过程时,如何进⾏项⽬估算? 8. 如何对Web ⼯程项⽬进⾏估算? 9. 简述任务分解技术的基本思想。
10. Halstead 理论模型的主要依据有哪些?给出⽤Halstead 理论模型估算成本的公式以及公式的推导过程,说出各个量的取值依据。
11. 估计某PASCAL 程序中n1=70,n2=60,N1=14300,N2=400,取S=12,W=20000,估算开发该软件的总成本。
12. 估计⼀个C 语⾔程序系统⼤约⼀万⾏,W 取30000元,估算开发该系统的成本。
13. 开发⼀个Organic 类型的软件,经分析有45000⾏源代码,试⽤基本COCOMO 模型估算所需⼯作量、⽣产率、开发时间及投⼊该项⽬的最佳⼈员数。
14. 利⽤题13得出的⼯作量E ,根据Esterling 模型估算当团队⼈数n 为8时的软件成本,若n 为12时,成本⼜当如何?15. ⽤2年的时间开发⼀个应⽤软件系统,估计代码⾏数为5万⾏,Ck 取10000,试计算所需⼯作量。
国家开放大学《软件工程》章节自测参考答案模块一软件工程概述一、选择题1.软件与程序的区别是()。
A. 程序价格便宜、软件价格昂贵。
B. 程序是用户自己编写的,而软件是由厂家提供的。
C. 程序是用高级语言编写的,而软件是由机器语言编写的。
D. 软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序是软件的一部分。
2.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。
A. 软件产生B. 软件周期C. 软件工程D. 软件危机3.瀑布模型本质上是一种()模型。
A. 线性顺序B. 早期产品C. 顺序迭代D. 线性迭代4.瀑布模型存在的问题是()。
A. 缺乏灵活性B. 用户容易参与开发C. 适用可变需求D. 用户与开发者易沟通5.用户要看到软件产品的模样,最早也要到()以后。
A. 验收B. 在单元测试之后C. 程序代码编写完成之后D. 用户需求基本确定6.螺旋模型是一种将瀑布模型和()结合起来的软件开发模型。
A. 增量模型B. 专家系统C. 喷泉模型D. 变换模型7.原型化方法是用户和设计者之间执行的一种交互构成,适用于()系统。
A. 需求不确定性高的B. 需求确定的C. 管理信息D. 实时8.原型化方法是一种()型的设计过程。
A. 自底向上B. 自顶向下C. 自外向内D. 自内向外9.下列有关软件工程的标准,属于国际标准的是( )A. IEEEB. GBC. ISOD. DIN10.结构化方法是一种基于()的方法。
A. 程序结构B. 数据结构C. 算法D. 数据流二、简答题1.什么是软件危机?软件危机表现在哪几个方面?参考答案:由于软件具有上述这些特点,长期以来一直没有发明一种高效的开发方法,从而导致软件生产效率非常低,交付期一拖再拖,最终交付的软件产品在质量上很难保障。
这种现象早在20世纪60年代被定义为“软件危机”。
它的具体表现如下:(1)“已完成”的软件不满足用户的需求。
(2)开发进度不能保障,交付时间一再拖延。
软件工程各阶段的工作内容及特征
软件工程的目标是提高软件质量,质量因素有正确性、性能、可靠性、容错性、易用性、灵活性、可扩充性、可理解性、可维护性等等。
开发常用模型有:线性模型、渐增式模型、螺旋模型、快速原型模型、形式化描述模型等等。
“套用固定的模型不是程序员的聪明之举”。
比如“程序设计”与“测试”之间的关系,习惯上总以为程序设计在先,测试在后,而对于一些复杂的程序,将测试分为同步测试与总测试更有效。
软件开发中的三种基本策略:“复用”“分而治之”“优化—折衷”。
软件复用是将具有一定集成度并可以重复使用的软件组成单元,称为软构件。
分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。
软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好等等。
优化工作的复杂之处是很多目标之间存在千丝万缕的关系,当不能够使所有的目标都得到优化时,就需要“折衷”策略。
软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。
软件折衷的重要原则是不能使某一方损失关键的职能,更不可以像“舍鱼而取熊掌”那样抛弃一方。
下面从需求分析、系统分析、系统实现、测试与改错、维护与再生这五个方面逐一阐述。
2.1 需求分析阶段
需求分析是项目成败与否的第一步,对需求把握得越准确,软件的修修补补就越少。
有些需求在一开始时很难确定,在开发过程中要不断地加以改正。
软件修改越早代价越少,修改越晚代价越大。
需求
分析要关注到每一个最终使用者,避免遗漏使用方的需求。
需求分析尽量从多个角度进行。
需求分析需要与使用者进行多次反复沟通,开发者做到真正领会使用者的需求。
做可行性分析不能以偏盖全,也不可以什么鸡毛蒜皮的细节都加以权衡。
可行性分析必须为决策提供有价值的证据。
需要分析的工作要点有:1)完成问题整理、收集;2)走访使用部门,进行询问、沟通;3)交流中的心态定位是我们在为编辑、为业务工作;4)我们要为用户考虑。
让用户意识到我们的每一句话都是在为他们考虑;5)采用适当的交流语言。
勾画出思路清晰用户易懂的流程图,清晰明了的表格,形象美观的图形,必不可少的文字;6)保留交流的记录和整理汇总的文档;7)技术人员自己要提出用户易用性需求、系统功能需求、系统维护需求;8)响应变更需求,拒绝不合理要求;9)业务建模。
通过UML绘制的模型来完整、适当地对需求进行描述;10)分析绘制业务流程图和数据流程图,总结出各级操作人员,识别系统中的所有用例和角色;分析各角色和用例之间的联系,使用UML建模工具画出系统的用例图;最后勾画系统的概念层模型,借助UML建模工具描述概念层的类图和活动图。
2.2 系统设计阶段
系统设计阶段完成系统设计。
系统设计是把需求转化为软件系统的最重要的环节,决定一套软件系统的健壮性、可扩展性、易开发性等。
系统设计的优劣在根本上决定了软件系统的质量。
这个阶段要确定系统结构,系统结构的稳定性决定应用软件的使用寿命。
有了上一阶段需求的把控和需求建模,系统分析阶段就要完成结构设计、模块
设计和数据结构设计。
模块设计的组件单元尽可能小,可让每个程序员承担很少的开发部分,各部分之间不受牵制,强内聚、弱耦合,使单元组件可以随时重新开发,而对整体的开发不造成瓶颈。
该阶段还要设计系统运行平台的架构,部署系统物理平台,制定系统备份恢复机制。
2.3 系统实现阶段
此阶段选择通用的编程工具,按照需求建模和系统设计中不同模块拆分给不同的技术人员,并实现进度控制。
2.4 测试阶段
该阶段是系统上线前的关键期,是对需求分析和理解的验证阶段,在这个阶段可以发现结构设计的合理性,进而可能回退到分析设计阶段进行系统重构。
可以按照黑盒测试、正确性测试、容错性测试、性能与效率测试、易用性测试和文档测试这6个方面进行分组测试。
开发过程中进行同步测试。
针对测试中发现的问题,进行程序修改。
之后再进行分组测试,如此往复。
最后,进行总测试,直至成品。
2.5 维护再生阶段
开发人员通常会忽略维护与再生这个环节。
对于一个优秀的程序员来说,这个环节非常关键。
在这个环节中,程序员可以积累很多运行中存在的问题,将这些问题总结成为系统性能需求,然后将系统性能需求转入到再生工程中进行升级改造。
再生工程与维护的共同之处是都没有抛弃原有的软件。
如果把维护比作“修修补补”,那么再生工程就算是“痛改前非”。