查看: 1839|回复: 4
收起左侧

[研究方向] 5个有关于软件工程的topic,你选哪一个?

|只看干货
zyiz | 显示全部楼层 |阅读模式
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   0% (0)
 
 
100% (1)    👎

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
目前在申请国外硕士的阶段中,教授对我很感兴趣,于是让我选择课题,问我哪个课题更加感兴趣以及原因,

课题如下:这5个里面,你怎么看?难易程度?

1.Detection of Refactoring Opportunities file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-1033.png
2.Automatic classification of source code changes into maintenance types file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-25389.png
3.Analysis of dependencies/conflicts between refactoring opportunities file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-22290.png
4.Empirical studies on Refactoring activity file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-13284.png
5.Source code analysis on Cloud Computing Infrastructures file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-28321.png


下面是每个课题的详细说明:
1.Detection of Refactoring Opportunities file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-1033.png
                It has been observed that the design quality of a software system deteriorates throughout its evolution (software aging) due to changes in the requirements that were not anticipated in the original design or poor design decisions for the implementation of new requirements caused by the pressure to meet deadlines.
                Design quality deterioration manifests itself in the form of design defects or flaws that make the system harder to comprehend, test, extend and maintain in general.                Refactorings are source code transformations that do not alter the external behavior of a program, but improve its internal structure [1]. The cumulative effect of these code transformations can radically improve the design quality of a system and reverse software decay.
                Despite the wide support of refactoring application mechanics in modern IDEs, the refactoring process is not supported in its entirety, since the developers have to manually detect refactoring opportunities and assess their impact on design quality.                Over the last years, several approaches have been proposed in the literature for the detection of specific refactoring opportunities in a systematic manner [2] - [8]. However, there is still a large list of refactorings and design problem resolution strategies [1] [9] to be explored.            
                            Have a look at JDeodorant, an Eclipse plug-in that supports the detection of refactoring opportunities in Java projects and has been used by several companies and organizations to improve the design quality of their software products.                JDeodorant provides a powerful infrastructure for the analysis of source code allowing the implementation of detectors for a large variety of refactoring opportunities.            
                            Working on this project will give you experience in source code analysis techniques and major Eclipse frameworks, such as JDT (Java Development Tools) and LTK (Refactoring Language Toolkit), as well as the satisfaction to see that your contribution is used by hundreds of developers around the world. JDeodorant is available through Eclipse Marketplace and has already a large install base.            -baidu 1point3acres
                                                                                Another interesting research direction is the investigation of refactoring opportunities in dynamic languages, such as Ruby [10],                                and style sheet languages, such as Cascading Style Sheets (CSS) [11] - [13].
. From 1point 3acres bbs

2.Automatic classification of source code changes into maintenance types file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-25389.png
Maintenance activity is generally divided into distinct categories:            
  • Corrective: Fixing software defects/bugs.
  • Perfective: Enhancing performance and usability.
  • Adaptive: Adapting to new technologies, environments and language features.
  • Preventive: Improving future maintainability.
  • Feature addition: Implementing new requirements.
  • Non functional: Updating documentation, copyright, license, code format/indentation.
                                The research problem being investigated is the automatic classification of source code changes between successive revisions into the aforementioned maintenance categories using advanced source code analysis and differencing techniques.                                                        The classification of source code changes can provide insight in the intention/purpose of the maintenance activities. Furthermore, it can be used to detect development phases throughout the evolution of a project as a means to a) support project management/awareness, b) reveal the development processes and practices being applied by the development team, and c) find patterns of interleaved maintenance activity types. Finally, it can also be used to detect software modules which are stable, error-prone, critical with respect to extension, or frequently refactored.                       
                                                        Previous research work, has mainly focused on commit information (i.e., commit message, author and modified modules) in order to perform this classification [1] [2]. This approach has two main disadvantages: a) it depends on the quality and clarity of the comments provided by the developers, and b) it classifies each revision into a single maintenance category, although the changes may correspond to multiple categories.                                Other research works employ program differencing in order to extract the system’s evolution profile as a sequence of change trees [3],                                detect non-essential changes (such as the replacement of simple types with qualified ones, extraction of local variables, keyword modifications and local variable renames) through sophisticated source code analysis techniques (i.e., Partial Program Analysis) [4], detect the introduction of Java Generics [5], and                                automatically discover and summarize systematic code changes (such as refactorings, feature additions, and updates to code clones) as logic rules [6]. However, these approaches do not cover completely all maintenance types.                       
                                                        This research problem is ideal for students with background or interest in source code analysis and differencing, as well as text mining techniques.

3.Analysis of dependencies/conflicts between refactoring opportunities file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-22290.png. 1point3acres
                                Software systems may present a very large number and variety of refactoring opportunities. As a result, the existence of conflicts and dependencies in the application of specific refactorings is quite possible.                       
                                                        A conflict usually takes place when two or more refactoring opportunities affect a common piece of code. In this case, the refactorings should be applied according to the scope of the code that they affect and the semantics of the involved refactoring types.                       
                                                        For example, let us assume that there are two refactoring opportunities for method m. The first opportunity suggests the move of method m from class A to class B (because it accesses field and/or methods from class B), while the second one suggests the extraction of a code fragment from the body of method m into a separate method. By applying the Extract Method refactoring first, method m becomes more dependent to class A (since after the application of the refactoring method m will access the extracted method in class A as well) and thus the Move Method refactoring opportunity may become weaker (i.e., less effective) or even disappear. On the other hand, if the Move Method refactoring is applied first, then the Extract method refactoring can be applied afterwards without any problem.                       
                                                        A dependency takes place when two refactoring opportunities affect different pieces of code that are dependent with each other. In this case, the order of refactoring application depends on the direction of the dependency.                       
                                                        For example, let us assume that there are two Move Method refactoring opportunities for methods x and y, respectively, and method x calls method y. The refactoring corresponding to method y should be applied first, since the move of the called method (i.e., method y) may affect the target class for the calling method (i.e., method x).                        . From 1point 3acres bbs
                                                        Some previous research approaches to this problem, proposed the representation of refactorings as graph transformations [1] [4], where the detection of conflicts and dependencies is based on critical pair analysis and sequential dependency analysis. Other approaches treat the problem of finding an optimal sequence of refactoring applications as a search problem on Deterministic Finite Automata [3], where nodes represent system states and edges represent the application of specific refactorings. Finally, there is a category of approaches that treat this problem as a scheduling problem [2] [5], where the goal is to optimize certain functions (e.g., design quality, understandability, maintainability, refactoring effort) with respect to the constraints imposed by refactoring conflicts and dependencies.                       
                                                        This research problem is ideal for students with background or interest in search and optimization techniques.

4.Empirical studies on Refactoring activity file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-13284.png
                                The goal of empirical studies is to investigate the processes and practices being applied in software projects and development teams as a means to propose, validate and improve models and analytical tools.                       
                                                        Within the context of refactoring activity, prior empirical studies investigated its relation with the number and duration of bug fixes [5], software release dates [5], testing periods [6], as well as the impact of refactorings on software metrics [7] [8]. More recent empirical studies investigated the evolution and lifespan of code smells in the history of software projects [1] [2] [4], as well as the impact of code smells on software change-proneness [3].
                                However, the relationship between code smells and refactoring activity has not been investigated yet. It is particularly interesting to examine the specific reasons that motivate the developers to apply refactorings and how refactoring activity is interleaved with other maintenance activities, such as bug fixing, addition of features, unit testing and design improvement.                        . check 1point3acres for more.
                                                        This research problem is ideal for students with background or interest in mining software repositories (MSR) and statistical analysis.                       
5.Source code analysis on Cloud Computing Infrastructures file:///C:/Users/zyiz/AppData/Local/Temp/ksohtml/wps_clip_image-28321.png


                                Source code repositories are becoming larger and larger, both with respect to their codebase and their evolution history. As a result, the analysis of software repositories has become a computation- and data-intensive task that requires parallel and distributed processing.
                                The goal of this research project is to investigate the use of frameworks supporting distributed applications [1], such as Apache Hadoop, for the distributed analysis of source code.                       
                                                        This research problem is ideal for students with background or interest in parallel algorithms, distributed computing, algorithm optimization, and scalability studies.                       

教授的回信的最后,他问我有没有写过或者将来要写什么论文,但是我这个学校最后是不交论文的,只有一个毕业作品.
教授的研究方向是软件工程,我在想,我的毕业作品虽然是下学期做,但是现在开始计划,要做一个讨好他的方向的项目,我选择做什么比较好?
很期待你的回复和宝贵的建议.

上一篇:在W大的博客转了一圈之后,还有关于CE方向的疑问
下一篇:本科材科(MSE),想申EE的PhD,具体方向求指点
q198800287 2013-8-4 23:39:07 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   90% (204)
 
 
9% (22)    👎
http://www.1point3acres.com/bbs/forum-27-1.html 去这里发这种帖子  下次再发 扣分

问我哪个课题更加感兴趣以及原因,  “原因”还是不要编的好  说实话就行
回复

使用道具 举报

 楼主| zyiz 2013-8-5 01:29:36 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   0% (0)
 
 
100% (1)    👎
q198800287 发表于 2013-8-4 23:39
http://www.1point3acres.com/bbs/forum-27-1.html 去这里发这种帖子  下次再发 扣分. From 1point 3acres bbs

问我哪个课题更加感 ...

抱歉,我不知道规矩.
但是我刚刚去了你发的链接,我在那个区域没有权限发帖子啊!

点评

//www.1point3acres.com/bbs/misc.php?mod=faq: 0.0
积分不够请看帮助 http://www.1point3acres.com/bbs/misc.php?mod=faq: 0
  发表于 2013-8-5 09:38
回复

使用道具 举报

 楼主| zyiz 2013-8-5 20:49:41 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   0% (0)
 
 
100% (1)    👎
zyiz 发表于 2013-8-5 01:29
抱歉,我不知道规矩.
但是我刚刚去了你发的链接,我在那个区域没有权限发帖子啊!

很无语啊,你给的积分不够的帮助链接,说是拒绝访问了:
Access Denied, Error mod request!

点评

www.1point3acres.com/bbs/misc.php?mod=faq 别人都能用  发表于 2013-8-7 10:15
回复

使用道具 举报

q198800287 2013-8-7 07:40:45 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   90% (204)
 
 
9% (22)    👎
http://www.1point3acres.com/bbs/thread-14564-1122-1.html#lastpost
有没有看过新手导航?有没有看过版规
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表