您的当前位置:首页正文

软件工程期末论文

来源:爱站旅游
导读软件工程期末论文


软件工程论文

* 名: *** 学 号: ********** 院 系: 信息技术工程学院 专 业: 计算机科学与技术 指导教师: *** 申请学位: 工学学士 二零一三年六月

摘 要

软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。其教育培养目标是让受教育者了解和掌握软件开发中的方法学和工程学知识,并应用于实践。这一目标在现阶段体现了国际化、多元化、本地化和工程化的特点。软件行业深切感到这四方面人才培养的迫切性。随着计算机应用的深入,对计算机软件需求量越来越大,对软件的功

能性,易使用性,可靠性等要求越来越高。为了在有限的资金、资源和时间条件下开发满足客户要求的高质量软件,就需要研究与软件开发和管理相关的模型、方法、技术、过程、工具和环境等,这就是软件工程研究的主要内容。

通过学习软件工程概述、可行性分析、软件需求分析、软件外部设计——交互设计、软件内部设计、面向对象软件工程基础、统一建模语言、软件编码与实现、软件测试、软件维护、软件复用和构件技术、软件项目计划与管理、软件工程环境、软件工程课程设计等内容,进一步熟悉现代软件工程学,并积累丰富的项目经验。

关键词:软件工程概述,可行性分析,需求分析,软件设计,面向对象软件工程基础,软件测试与维护

Abstract

Software engineering is the application of computer science, mathematics, management

science, principle of development of software engineering, etc. The education training goal is to get educated to understand and master knowledge in software development methodology and engineering, and applied to practice. The goal at this stage reflects the internationalization and diversification, localization, and the characteristics of engineering. Software industry is deeply felt the urgency of these four aspects of talents training. With the deepening of computer applications, a growing demand for computer software, the software functionality, usability, reliability and so on demand more and more high. To under the condition of limited funds, resources and time development to meet customer requirements of high quality software, you need to research related to software development and management model, method, technology, process, tools and environment, etc., this is the main content of the software engineering research.

Through learning summary of software engineering, feasibility analysis, software

requirement analysis, software external design, interaction design, interior design, object-oriented software engineering foundation, unified modeling language (uml), software coding and implementation, software testing, software maintenance, software reuse and component technology, software engineering, software project planning and management environment, the content such as software engineering curriculum design, further familiar with modern software engineering, and accumulated rich experience in project.

Keywords: Summary of software engineering, feasibility analysis, requirement analysis, software design, object oriented software engineering, software testing and maintenance

目录

1引言 ............................................................................................................................................... 4

1.1软件与软件危机 ................................................................................................................. 4

1.1.1软件的定义、特点种类及发展 .............................................................................. 4 1.1.2软件危机 .................................................................................................................. 5 1.2软件工程的概念 ................................................................................................................. 6

1.2.1软件工程的定义 ...................................................................................................... 6 1.2.2软件工程的研究内容 .............................................................................................. 6 1.2.3软件工程的目标 ...................................................................................................... 6 1.2.4软件工程的基本原理 .............................................................................................. 6 1.3软件的开发方法 ................................................................................................................. 6 1.4软件的生存周期 ................................................................................................................. 6

1.4.1按照传统软件生存周期方法学,软件生存周期可分为: .................................. 7 1.5软件生存周期模型 ............................................................................................................. 7 1.6软件工程的基本原理 ......................................................................................................... 7 2可行性分析 .................................................................................................................................... 7

2.1可行性研究的任务 ............................................................................................................. 7 2.2可行性研究的具体步骤 ..................................................................................................... 7 3软件需求分析 ................................................................................................................................ 8

3.1软件需求分析的基本概念 ................................................................................................. 8

3.1.1需求分析的任务 ...................................................................................................... 8 3.1.2需求分析的过程 ...................................................................................................... 8 3.1.3需求分析的困难 ...................................................................................................... 8 3.2需求分析的方法 ................................................................................................................. 8 4软件外部设计——交互设计 ........................................................................................................ 9 5软件的内部设计 ............................................................................................................................ 9

5.1有效的模块设计 ................................................................................................................. 9

5.1.1功能独立性 .............................................................................................................. 9 5.1.2内聚性 ...................................................................................................................... 9 5.1.3耦合 .......................................................................................................................... 9

6面向对象软件工程基础 .............................................................................................................. 10

6.2面向对软件工程的方法具有下述4个特点: ............................................................... 10 7软件测试...................................................................................................................................... 10

7.1软件测试的基本概念 ....................................................................................................... 10 7.2软件测试的目的 ............................................................................................................... 11 8软件维护...................................................................................................................................... 11

8.1软件维护的定义 ............................................................................................................... 11 8.2软件维护的分类 ............................................................................................................... 11 8.3提高软件可维护性的方法 ............................................................................................... 11 结论与展望..................................................................................................................................... 12 参考文献......................................................................................................................................... 12 致 谢 ............................................................................................................................................ 12

1引言

随着计算机技术的飞速发展以及网络技术的普及,当今社会已经进入了以计算机为核心的信息社会。在信息社会中,信息的获取、处理和交流等都需要高质量的软件产品。若想使软件功能强,使用方便,开发出来的软件产品就会复杂和庞大,开发人员的能力显得力不从心,以致软件开发计划不能按时进行,成本失去控制,软件质量得不到保证,从而导致软件危机。为了克服这种现象,软件开发方法、开发工具和开发环境等得到了重视,从而产生了软件工程理论。

1.1软件与软件危机

1.1.1软件的定义、特点种类及发展

(1)软件的定义

目前对计算机软件通俗的理解为: 软件=程序+数据+文档资料

其中,程序是完成特定功能和满足性能要求的指令序列;数据是程序运行的基础和操作的对象;文档资料是与程序开发、维护和使用有关的图文资料。 (2)软件的特点

①软件是一种逻辑产品

②软件没有明显的制造过程

③软件不存在机械磨损或老化问题 ④软件对硬件和环境的依赖性 ⑤软件的复杂性越来越高 ⑥软件成本昂贵

⑦软件开发工作涉及许多社会因素 ⑧软件开发工作任重道远 (3)软件的种类

①按软件的功能分类 a系统软件 b应用软件 c支撑软件

②按软件的规模分类 微型软件 小型软件 中型软件 大型软件 甚大型软件 及大型软件

③按软件工作方式分类 实时处理软件 分时软件 交互式软件

批处理软件 (4)软件的发展

自第一台计算机诞生以来,就开始了软件的生产,到目前为止,软件发展经历了4个阶段。

①程序设计阶段 ②程序系统阶段 ③软件工程阶段 ④第四阶段

1.1.2软件危机

(1)软件危机的主要表现

①产品不符合用户的实际需要

②软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用需求的增长,使人们不能充分利用现代计算机硬件提供的巨大潜力。

③软件产品的质量差

④对软件开发成本和进度的估计常常不准确 ⑤软件的可维护性差

⑥软件文档资料通常既不完整又不合格 ⑦软件的价格昂贵 (2)产生软件危机的原因

①缺乏总体考虑,没有软件工程学概念或系统工程思想 ②对业务的了解支离破碎,需求分析不准

③企业依赖激情指挥,企业管理的标准化、规范化、科学化程度不高,导致不能成功地应用“死板”的软件,它依赖于业务的“科学化”、“条理化”、“程序化”。

④企业信息化程度和计算应用水平低,导致无法准确描述需求 ⑤企业的高层管理人员对信息管理的重视程度不够

缺乏相互沟通,业务描述的详尽程度不能达到使具备业务常识的人能够轻易理解 (3)软件危机解决途径

①软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的生产项目,必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的概念、原理、技术和方法。

②应该推广和使用在软件开发实践中总结出来的成功的技术和方法,并且研究探索更好。更有效的技术方法,尽快纠正在计算机早期发展阶段形成的错误概念和做法。

③应该制定软件开发过程的规范和标准。 ④应该开发和使用更多、更好的软件工具,借鉴“利用机械工具可以放大人的体力”的原理,软件工具可以“放大”人的智力。

1.2软件工程的概念 1.2.1软件工程的定义

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。本专业培养以计算机应用软件开发为基本技能,具有较扎实的专业基础理论和较强的实践动手能力,受到程序员的系统训练,熟悉岗位要求,掌握岗位技能,懂理论、会操作的,适应社会信息化需求,适应市场经济的德、智、体、美全面发展的计算机软件开发与维护方面的高级专业技术人才。

1.2.2软件工程的研究内容

(1)软件开发技术 (2)软件工程管理

1.2.3软件工程的目标

(1)开发成本低,在规定时限内获得功能、性能方面满足用户需求的软件 (2)开发的软件移植性较好 (3)易于维护且维护费用低 (4)软件系统的可靠性高

1.2.4软件工程的基本原理

(1)工程化原则 (2)系统化原则

1.3软件的开发方法

(1)结构化方法

(2)面向数据结构的方法 (3)面向对象的开发方法 (4)软件开发的新方法

①基于构件的开发方法 ②敏捷开发方法

1.4软件的生存周期

软件产品从形成概念开始,经过开发、使用和维护,直到最后被淘汰的全过程通常

被称作软件的生存周期。

1.4.1按照传统软件生存周期方法学,软件生存周期可分为:

(1) 软件定义阶段

(2) 软件开发阶段 (3) 软件运行与维护阶段

1.5软件生存周期模型

(1)瀑布模型 (2)原型模型 (3)增量模型 (4)螺旋模型 (5)喷泉模型 (6)智能模型 (7)构件组装模型

1.6软件工程的基本原理

(1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采纳现代程序设计技术 (5)结果应能清楚地审查 (6)开发小组的成员应少而精

(7)承认不断改进软件工程实践的必要性

2可行性分析 2.1可行性研究的任务

(1)技术可行性 (2)经济可行性 (3)社会可行性

2.2可行性研究的具体步骤

(1)确定项目规模和目标 (2)研究正在运行的系统

(3)建立新系统的高层逻辑模型

(4)导出和评价各种方案 (5)推荐可行的方案 (6)编写可行性研究报告

3软件需求分析

3.1软件需求分析的基本概念

需求分析是要解决“做什么,不做什么”问题。不论是为客户做软件项目还是为自己做软件产品,都要进行需求分析。

软件需求分析关系到软件系统开发的成败,是决定产品质量的关键。只有通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。

3.1.1需求分析的任务

(1)确定系统的综合要求 (2)分析系统的数据要求 (3)导出系统的逻辑模型 (4)修正系统的开发计划

3.1.2需求分析的过程

(1)问题识别 (2)分析与综合 (3)编写文档 (4)分析评审

3.1.3需求分析的困难

(1)客户说不清楚需求 (2)需求自身经常变动

(3)分析人员或客户理解有误

3.2需求分析的方法

(1)功能分析方法

将系统看作若干功能模块的集合,每个功能又可以分解为若干子功能,子功能

还可以继续分解。 (2)结构化分析方法

以数据、数据的封闭性为基础,从问题空间到某种表示的映射方法,由数据流图

表示。

(3)信息建模法

从数据的角度对现实世界建立模型。 (4)面向对象的分析方法

面向对象的分析方法的关键是识别问题域内的对象,分析它们之间的关系,并

建立起三类模型:对象模型、动态模型和功能模型。

4软件外部设计——交互设计

交互设计是面向最终用户的设计,是软件的外部设计,交互设计要求在研究技术问题的同时对人加以研究。软件的交互设计在软件结构设计和模块设计之前进行的,一个好的交互设计可以使后续的软件开发工作更加清晰,从而节约大量的软件内部设计时间和编程时间,并提高软件成功的可能性。

5软件的内部设计 5.1有效的模块设计 5.1.1功能独立性

独立性是通过两项质量标准来衡量的:内聚和耦合。

内聚是模块相对功能密度的度量,用于描述模块内部联系的紧密程度。耦合是模块间相对独立性的度量,用于描述模块之间联系的紧密程度。 独立性比较强的模块应该是具有高内聚性和低耦合度。

5.1.2内聚性

内聚的“谱系”

5.1.3耦合

耦合的“谱系”

6面向对象软件工程基础 6.1面向对象的开发方法概述

面向对象的开发方法(Objet-Oriented Software Development,OOSD)是一种新的软件工程方法,其基本思想是尽可能按照人类认识世界的方法和思维方式来分析和解决问题,这种方法能够提供更加清晰的需求分析和设计,是指导开发活动的系统方法。

6.2面向对软件工程的方法具有下述4个特点:

(1) 把对象作为融合了数据及在数据上的操作行为的统一软件构架,用对象分解取代了传统方法的功能分解

(2) 把所有对象都划分为类。每个类定义了一组数据和一组操作,类是对具有相同数据和相同操作的一组相似对象的定义

(3) 按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为继承 (4) 对象彼此之间仅能通过发送消息互相联系,对象的所有私有信息都被封装在该对象内,不能从外界直接访问,这就是封装性

7软件测试

7.1软件测试的基本概念

软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至

根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

软件测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

7.2软件测试的目的

(1)发现一些可以通过测试避免的开发风险。 (2)实施测试来降低所发现的风险。 (3)确定测试何时可以结束。

(4)在开发项目的过程中将测试看作是一个标准项目。

8软件维护 8.1软件维护的定义

软件维护主要是指根据需求变化或硬件环境的变化对应用程序进行部分或全部的修改,修改时应充分利用源程序。修改后要填写程序改登记表,并在程序变更通知书上写明新旧程序的不同之处。

8.2软件维护的分类

(1)完善性维护 (2)适应性维护 (3)纠错性维护 (4)预防性维护

8.3提高软件可维护性的方法

软件的可维护性是指维护人员为纠正软件系统出现的错误或缺陷,以及为满足新的要求而理解、修改和完善软件系统的难易程度。提高可维护性是决定软件工程方法论所有步骤的关键目标。

从下面五个方面来提高软件的可维护性: (1)建立明确的软件质量目标

如果要程序满足可维护性七个特性的全部要求,那么要付出很大的代价,甚至是不现实的,但有些可维护性是相互促进的,因此要明确软件所追求的质量目标。 (2)使用先进的软件开发技术和工具

利用先进的软件开发技术能大大提高软件质量和减少软件费用。面向对象的软件开发方法就是一个非常实用而强有力的软件开发方法,用面向对象方法开发出来的软件系统,稳定性好,比较容易修改,比较容易理解,易于测试和调试,因此,可维护性好。 (3)建立明确的质量保证

质量保证是指为提高软件质量所做的各种检查工作。质量保证检查是非常有效的方法,不仅在软件开发的各阶段中得到了广泛应用,而且在软件维护中也是一个非常主要的工具。为了保证可维护性,以下四类检查是非常有用的:

①在检查点进行检查 ②验收检查。③周期性的维护检查。④对软件包的检查。

(4)选择可维护的语言

程序设计语言的选择对维护影响很大。低级语言很难掌握,很难理解,因而很难维护。一般来说,高级语言比低级语言更容易理解,第四代语言更容易理解,容易编程,程序容易修改,改进了可维护性。 (5)改进程序的文档

程序文档是对程序功能、程序各组成部分之间的关系、程序设计策略、程序实现过程的历史数据等的说明和补充。程序文档对提高程序的可阅读性有重要作用。为了维护程序,人们必须阅读和理解程序文档。

结论与展望

通过学习现代软件工程,我了解了软件危机的特点、常用的软件开发工具,同时掌握软件工程的概念、常用的软件开发方法和几种基本的软件生存期模型,透过软件工程于解决“软件危机”的重要性、软件工程三条重要线索、软件工程知识体系涵括内容及软件工程各类生存期模型,我对软件工程思想及“工程化”软件开发的流程有了较系统的了解,对软件开发流程有了更进一步的理解,透过软件工程的起源,认识到:实现软件工程的产业化,软件工程必须是真正意义上的工程化。从软件开发三条线索(开发、管理、改进)来看,软件开发的过程必须规范化;软件项目管理的核心是项目规划和项目跟踪控制,保证软件工程开发的成功完成,软件开发流程的规范化在软件项目中有着重要的作用,通过不断的优化和规范过程,企业可以提高软件生产能力。

从需求分析到维护,透过软件的开发流程具体实施的学习,我对软件项目开发计划的流程有了更深的理解,例如通过需求设计报告、概要设计报告、详细设计报告的完成。虽然很不完善,但仍让我对需求分析建模和设计中用到的方法有了更好的理解。同时,这门课更正我不少的错误观念:比如代码规范问题,以前我总觉得个人写的程序只要能运行不管别人看不看得懂,注释可有可无,想法越独特代码量越少或内存越小就越好,学了这门课才理解这样的代码可读性很差,通用性不好,维护起来不方便,代码的可读通用性重要性不亚于正确性和运行效率:学了这门课才知道软件开发中每一阶段都有文档的产生,其管理和应用也是一门大学问……此外,这门课程里讲授了很多我以前从未接触的方法和软件。这些知识不仅能应用于软件工程,也能应用于其他很多领域。学了这门课让我受益匪浅。

参考文献

【1】《现代软件工程》 张泊平 清华大学出版社 【2】《软件工程》 许家珆 北京高等教育出版社 【3】《软件工程导论》 张海潘 清华大学出版社 【4】《软件工程思想》 林悦 http://blog.chinaunix.net/ul/35305/showart.php?id=285308

致 谢

在此论文完成之际,首先要感谢我的指导老师贾纳豫对论文工作的悉心指导、热情鼓励和生活上的关怀。导师严谨的治学态度、敏捷的学术思维、一丝不苟、勤恳踏实的工作作风使我受益良多。在此,特向贾老师致以我最崇高的敬意和最衷心的感谢!

在大学四年的学习生活中,还得到了许多领导和老师的关心和帮助,以及很多同班同学的帮助。在此,向所有关心和帮助过我的领导、老师、同学和朋友表示由衷的谢意!

因篇幅问题不能全部显示,请点此查看更多更全内容

Top