⑴ 什么是软件再工程软件再工程的主要活动有哪些
什么是软件再工程
软件再工程是指对既存对象系统进行调查,并将其重构为新形式代码的开发过程。最大限度地重用既存系统的各种资源是再工程的最重要特点之一。从软件重用方法学来说,如何开发可重用软件和如何构造采用可重用软件的系统体系结构是两个最关键问题。不过对再工程来说前者很大一部分内容是对既存系统中非可重用构件的改造。软件工程再工程是以软件工程方法学为指导,对程序全部重新设计、重新编码和测试,为此可以使用case工具(逆向工程和再工程工具)来帮助理解原有的设计。在软件再工程的各个阶段,软件的可重用程度都将决定软件再工程的工作量。
主要活动
在不破坏软件的前提下,将旧版.NET软件迁移到更加灵活、广泛和可维护的架构中;
采用MVC、MVP和MVVM模式重构Web应用程序;
提出正确的问题,以预测可能发生的重构问题;
规划和组织再工程项目,在恰当的时间将合适的技术运用到每一个任务;
采用创新的双重测试使得单元测试更加有效;
应用依赖倒置打破紧耦合,并促进开发和测试;
应用源代码控制、缺陷跟踪和持续集成;
在未接触业务逻辑之前,通过“清理”旧版解决方案进行改善;
建立坚实的开发基础结构以支持再工程项目;
重构服务,涵盖知识库、域模型和命令调度程序的使用等高级技术;
重构控制器/视图或视图模型/视图对。
⑵ 软件工程师需要什么基础
[390219Z10]软件工程基础免费下载
链接:https://pan..com/s/1pVyabDzbF1nyfbBg67V4xA
《软件工程基础》是2006年由中国电力出版社出版的图书,作者是(意)盖伊曼德若利。本书通过严格的形式化方法和非形式化方法阐述了软件工程原则和方法的重要性,有选择地介绍了软件工程基础;强调并确定了适用于整个软件生命期的基本原则,全面而深入地介绍了这些基本原则在软件设计、规范、验证、软件生产过程和管理活动中的运用。
⑶ 软件工程主要课程有哪些
软件工程的主要课程:一、培养目标
本专业培养具有良好科学素养,能较系统和深入地掌握计算机科学技术基础以及软件工程专业知识和工作技能的高级专业技术人才。学生毕业后可在进行软件规划、设计与开发及应用的相关企业、事业单位或政府机关等从事计算机软件规划、咨询、监理、生产、软件技术研发、以及软件应用系统维护等方面技术工作。
二、培养规格
本专业学生应系统掌握计算机科学技术及其应用有关基础理论、建立从事软件工程方面工作的必要专业知识结构和工作技能,包括计算理论基础、计算机系统及其硬软接口、系统软件与工具软件、计算机应用技术、软件工程方法与工具等。通过四年时间的学习,学生应具备以下几方面知识和工作能力:
1、 掌握计算机科学与技术基本理论和专业知识;
2、 掌握软件系统分析、设计和说明的基本方法,具备软件研究与技术开发能力;
3、 了解信息系统安全与知识产权保护的有关技术方法和法规;
4、 具备进行软件系统规划、设计、咨询、软件测试与评估以及软件工程管理和系统运行管理的基本能力;
5、 了解现代信息技术的发展动态;
6、精通一门以上外语,具有较强专业外语阅读和写作能力;
7、 掌握文献检索、资料查询的.基本方法,具有独立获取信息的能力。
三、计划学制、最低毕业学分、授予学位
计划学制:本专业实行学分制,学制一般为四年,允许提前毕业和推迟毕业,具体按学校有关学分制管理条例执行。鼓励学生攻读双专业、双学位和辅修。
最低毕业学分:162
授予学位:工学学士学位
四、课程修读要求
1、 全校公共课分为公共必修课(34个学分)和公共选修课(11个学分)。公共必修课34个学分必须全修。公共选修课应在人文社会科学和艺术类课程中各选修4个学分,在社会科学类中修2个学分。就业指导课以讲座形式进行,开设4-6个讲座,计1个公选课学分。
2、学科基础课共计52个学分,包括学科基础课和学科专业课程,要求学生全修。
3、 专业必修课共计21个学分,要求学生全修。
4、 选修课学生必须修读不低于34个学分,其中限选课程模块为必选模块,不够部分的学分可在任选课模块和计算机科学与技术的相关模块中选择。
5、 “学科前沿讲座“为学科导引课程,以讲座形式分散安排在各个学期。
6、 “就业指导课”以讲座形式进行,开设4-6个讲座,计1个公选课学分.
7、 本专业设置六门双语教学课程(课程方案表中课程名称前打*者),本专业不再单独开设专业英语课程。
8、 课程计划表中课程名称前打☆者为综合设计类课程。
9、 专业技能与实践共计8个学分,学生可在课程结构比例表中自主选择课程设计内容或专业实习,如选择专业实习,则学生必须再选修至少2个课程设计。
⑷ 软件工程的就业方向是什么
1、Java方向:
JAVA初级程序员、JAVA计算程序员 、 JAVA工程师 、J2EE系统工程师等。
2、.Net方向:
.Net程序员网站开发工程师 .Net工程师等。
3、其它方向:
简单的管理信息系统开发和维护人员 、网页制作和客户端脚本程序编写人员 、初级数据库管理和维护人员 、数据库开发工程师 、系统分析设计工程 、软件项目配置管理员 、文档编写工程师。
软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。
在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。
同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
(4)软件再工程的相关技术有哪些扩展阅读:
一、学科地位:
软件工程学科是计算学科的分支,计算学科中理论、抽象、设计等三个学科形态,绑定、大问题的复杂性、概念和形式模型、一致性和完备性、效率、演化、抽象层次、按空间排序、按时间排序、
重用、安全性、折衷与决策等十二个基本概念,数学方法、系统科学方法在软件工程学科中占有重要地位。
此外,软件工程还十分重视管理过程,以提高软件产品的质量、降低开发成本、保证工程按时完成。系统性、规范性、可度量性也是软件工程非常关注的。
软件工程学科的理论基础是数学、计算机科学。软件工程的研究和实践涉及人力、技术、资金、进度的综合管理,是开展最优化生产活动的过程。
软件工程必须划分系统的边界,给出系统的解决方案。因此,软件工程的相关学科有计算机科学与技术、数学、计算机工程、管理学、系统工程和人类工程学等。
二、工程与科学:
软件的开发到底是一门科学还是一门工程,这是一个被争论了很久的问题。实际上,软件开发兼有两者的特点。但是这并不意味着它们可以被互相混淆。
很多人认为软件工程基于计算机科学和信息科学就如传统意义上的工程学之于物理和化学一样。在美国,大约40%的软件工程师具有计算机科学的学位。
在世界其他地方,这个比例也差不多。他们并不一定会每天使用计算机科学方面的知识,但是他们每天都会使用软件工程方面的知识。
⑸ 阻碍软件复用的技术和非技术因素有哪些
软件复用的关键技术实现软件复用的关键因素主要包括:软件构件技术、领域工程、软件构架、软件再工程、开放系统、软件过程、CASE技术等.以及 各种非技术因素。实现软件...
⑹ 软件开发的技术有哪些
一、从行业上划分,软件开发有以下:
1、手机
Mac OS(苹果的),Linux,Palm(最大特色是不能后台),BlackBerry(黑莓)Windows Phone(WP,不错的系统,)
Android(安卓,07年兴起的,很好的系统),还有几个新系统,三星与intel联合开发的tizen,Mozilla 公司的FireFox OS ,N900的maemo。
2、电脑
企业管理软件,如:如MES系统软件、OA系统软件、CRM系统软件、HR系统软件、ERP系统软件合同。
二、从设计领域划分,包括以下领域:
1、 桌面程序:Java、C++、C#、VB、C均可。
2、网站服务器端开发:JSP(Java语法)、PHP、ASP(C#语法)、Web App框架等
3、网站客户端:HTML、CSS、Javascript、Flash等等
4、智能手机程序:安卓使用Java,iPhone使用Objective-C
5、底层、工具开发:C、C++
6、多功能脚本程序:Python、Perl、Ruby等等
7.、人工智能:Prolog、PDDL
8、 工业控制:C、PLC、汇编
9、通用应用层数据交换处理技术:标记语言XML/XPATH/XSLT、JSON、YAML等等
10、数据库 SQL/PLSQL
(6)软件再工程的相关技术有哪些扩展阅读
软件开发工具:
软件开发工具是用于辅助软件生命周期过程的基于计算机的工具。通常可以设计并实现工具来支持特定的软件工程方法,减少手工方式管理的负担。
与软件工程方法一样,他们试图让软件工程更加系统化,工具的种类包括支持单个任务的工具及囊括整个生命周期的工具。
软件需求工具,包括需求建模工具和需求追踪工具。
软件设计工具,用于创建和检查软件设计,因为软件设计方法的多样性,这类工具的种类很多。
软件构造工具,包括程序编辑器、编译器和代码生成器、解释器和调试器等。
软件测试工具,包括测试生成器、测试执行框架、测试评价工具、测试管理工具和性能分析工具。
软件维护工具,包括理解工具(如可视化工具)和再造工具(如重构工具)。
软件配置管理工具,包括追踪工具、版本管理工具和发布工具。
软件工程管理工具,包括项目计划与追踪工具、风险管理工具和度量工具。
软件工程过程工具,包括建模工具、管理工具和软件开发环境。
软件质量工具,包括检查工具和分析工具。
⑺ 软件再工程的再测试
一般来说,再测试是再工程过程中工作量最大的一项工作。如果能够重用原有的测试用例及运行结果,将能大大降低再工程成本。对于重用的部分,特别是可重用的(独立性较强的)局部系统,还可以免除测试,这也正是重用技术被再工程高度评价的关键原因之一。当然再工程后的系统总有变动和增加的部分,对受其影响的整个范围都要毫无遗漏地进行测试,不可心存侥幸,以免因“一个苍蝇坏了百年老汤”。
实用的重用战略
在判断既存系统应该如何重用时,首先要明确哪些是可重用对象,以及如何使用这些可重用对象。下面以既存LAN系统重构成Web系统的再工程为例,说明再分析和再编码将遇到的一些重用课题。
我们可以将既存LAN系统划分成界面、逻辑、数据三个层次。用既存系统的三个层次去分别对应典型Web系统的表示层、逻辑层和数据层。由此从逻辑上得到对应每个层次的输入和输出,然后为每一层寻找能够实现最大程度重用的重构方法。
● 界面重用策略
界面模拟方法将基于文本的旧界面包装为新的图形界面。旧界面运行在终端上,新界面可以是基于PC的图形界面,也可以是运行在浏览器上的HTML页面。新用户界面通过一个界面模拟工具与旧界面通信。此方法重用率相当高。但是不修改既存系统会同时将旧系统的结构性缺点全部继承下来。
基于客户端的Web应用(Java Applet)Applet可以实现从界面、逻辑到数据库的许多功能。完全用Java语言重写一个系统是不现实的,重用率也不会很高,这不是软件再工程所提倡的。已有许多Applet自动转化工具,而且其转化后代码的重用率相当高。
基于服务器端的Web应用即重新开发界面。这种方法看上去没有重用既存界面代码,其实不然。首先,界面设计完全可以重用,从而节省设计时间;其次,我们可以将某些界面做成可重用的,这样也会减少工作量。
● 逻辑层包装原则
通过对逻辑层的分解可以得到可重用和不可重用的两部分代码。对可重用部分可直接使用,对于不可重用部分则应尽量通过各种包装技术按统一标准将其改造成可重用构件。包装方法有很多,如对象包装法、部件包装法等。
● 数据层重用策略
数据层通常要求更高的重用率。逻辑和数据休戚相关,如果改动数据库,逻辑势必不能正常运行,对逻辑部分的重用也就无从谈起。如果非改不可的话,也要以保证最大限度的重用为原则,争取做到只增不删,以保证数据的完整性。
软件再工程分为哪两个部分
答:软件再工程的两部分:首先,逆向过程:从代码开始推导出设计或是规格说明(可理解性);其次,改善软件的静态质量(可维护性、复用性或演化性)。
为什么实施软件再工程
(1)再工程可帮助软件机构降低软件演化的风险
(2)再工程可帮助机构补偿软件投资
(3)再工程可使得软件易于进一步变革
(4)软件再工程有着广阔的市场
(5)再工程能力扩大CASE工具集(如:Aidedsoft)
(6)再工程是推动自动软件维护发展的动力
⑻ 软件再工程的过程
典型的软件再工程过程模型如图所示,该模型定义了6类活动。在某些情况下这些活动以线性顺序发生,但也并非总是这样,例如,为了理解某个程序的内部工作原理,可能在文档重构开始之前必须先进行逆向工程。
在图中显示的再工程范型是一个循环模型。这意味着作为该范围的组成部分的每个活动都可能被重复,而且对于任意一个特定的循环来说,过程可以在完成任意一个活动之后终止。下面简要地介绍该模型所定义的6类活动。1.库存目录分析每个软件组织都应该保存其拥有的所有应用系统的库存目录。该目录包含关于每个应用系统的基本信息(例如,应用系统的名字,最初构建它的日期,已做过的实质性修改次数,过去18个月报告的错误,用户数量,安装它的机器数量,它的复杂程度,文档质量,整体可维护性等级,预期寿命,在未来36个月内的预期修改次数,业务重要程度等)。每一个大的软件开发机构都拥有上百万行老代码,它们都可能是逆向工程或再工程的对象。但是,某些程序并不频繁使用而且不需要改变。此外,逆向工程和再工程工具尚不成熟,仅能对有限种类的应用系统执行逆向工程或再工程,代价又十分高昂,因此,对库中每个程序都做逆向工程或再工程是不现实的。下述3类程序有可能成为预防性维护的对象。(1)预定将使用多年的程序。(2)当前正在成功地使用着的程序。(3)在最近的将来可能要做重大修改或增强的程序。应该仔细分析库存目录,按照业务重要程度、寿命、当前可维护性、预期的修改次数等标准,把库中的应用系统排序,从中选出再工程的候选者,然后明智地分配再工程所需要的资源。3.文档重构老程序固有的特点是缺乏文档。具体情况不同,处理这个问题的方法也不同。(1)建立文档非常耗费时间,不可能为数百个程序都重新建立文档。如果一个程序是相对稳定的,正在走向其有用生命的终点,而且可能不会再经历什么变化,那么,让它保持现状是个明智的选择。(2)为了便于今后的维护,必须更新文档,但是由于资源有限,应采用“使用时建文档”的方法,也就是说,不是一下子把某应用系统的文档全部都重建起来,而是只针对系统中当前正在修改的那些部分建立完整文档。随着时间流逝,将得到一组有用的和相关的文档。(3)如果某应用系统是完成业务工作的关键,而且必须重构全部文档,则仍然应该设法把文档工作减少到必需的最小量。3.逆向工程软件的逆向工程是分析程序以便在比源代码更高的抽象层次上创建出程序的某种表示的过程。也就是说,逆向工程是一个恢复设计结果的过程,逆向工程工具从现存的程序代码中抽取有关数据、体系结构和处理过程的设计信息。4.代码重构代码重构是最常见的再工程活动。某些老程序具有比较完整、合理的体系结构,但是,个体模块的编码方式却是难于理解测试和维护的。在这种情况下,可以重构可疑模块的代码。为了完成代码重构活动,首先用重构工具分析源代码,标注出和结构化程序设计概念相违背的部分。然后重构有问题的代码(此项工作可自动进行)。最后,复审和测试生成的重构代码(以保证没有引入异常)并更新代码文档。通常,重构并不修改整体的程序体系结构,它仅关注个体模块的设计细节以及在模块中定义的局部数据结构。如果重构扩展到模块边界之外并涉及软件体系结构,则重构变成了正向工程。5.数据重构对数据体系结构差的程序很难进行适应性修改和增强,事实上,对许多应用系统来说,数据体系结构比源代码本身对程序的长期生存力有更大影响。与代码重构不同,数据重构发生在相当低的抽象层次上,它是一种全范围的再工程活动。在大多数情况下,数据重构始于逆向工程活动,分解当前使用的数据体系结构,必要时定义数据模型,标识数据对象和属性,并从软件质量的角度复审现存的数据结构。当数据结构较差时(例如,在关系型方法可大大简化处理的情况下却使用平坦文件实现),应该对数据进行再工程。由于数据体系结构对程序体系结构及程序中的算法有很大影响,对数据的修改必然会导致体系结构或代码层的改变。6.正向工程正向工程也称为革新或改造,这项活动不仅从现有程序中恢复设计信息,而且使用该信息去改变或重构现有系统,以提高其整体质量。正向工程过程应用软件工程的原理、概念、技术和方法来重新开发某个现有的应用系统。在大多数情况下,被再工程的软件不仅重新实现现有系统的功能,而且加入了新功能和提高了整体性能。