I have received the following awards or honors (reversely chronological order):
I received the "ACM Nanjing Rising Star Award/Excellent Young Scientist Award" (ACM南京新星奖/卓越青年科学家奖) in 2014.
I received the "Best Paper Award" from APSEC 2014.
I received the "BOB 'Jing'-Ying Teaching Award" (南京大学北京银行"京"英奖教金) in 2014.
I received the "ACM SIGSOFT Distinguished Paper Award" from ICSE 2014.
I was selected into "Mountain-Climbing Talents" (南京大学登峰人才支持计划) (Level B) in 2013.
I was selected into "CVIC SE Talents" (中创软件人才奖) in 2012.
I received the "National Science and Technology Progress Award" (国家科学技术进步奖) (Second Class, 7/10) in 2011.
I was selected into "Outstanding Young Faculty of Nanjing University" (南京大学青年骨干教师) in 2011.
I was selected into "New Century Excellent Talents in University by the Ministry of Education" (教育部新世纪优秀人才) in 2010.
I am an ATC Certified ARM Engineer since 2007.
I received the IBM PhD Fellowship Award twice in 2005 and 2006, respectively.
I am interested in software engineering issues related to program analysis, testing and debugging, and context-awareness. You are welcome to talk to me if you have common interests. Here is a list of my publications. You may also read my Google Scholar Citations or DBLP page (results always mixed with others of similar names).
Our current research projects include CABOT and ADAM two series:
CABOT project (research on context management):
CABOT is a middleware infrastructure supporting context management for pervasive computing applications. It owns built-in consistency management services that enable efficient context inconsistency detection and automated inconsistency resolution for applications. [BISON04, ESECFSE05, SCIS15]
CABOT-PCC: PCC extends CABOT middleware with the ability of incrementally detecting context inconsistencies. It builds on our partial constraint checking technique and works extremely efficient. Its high performance is independent of consistency constraints and totally transparent to applications. [ICSE06, TOSEM10, TOSEM10a]
CABOT-OCC: OCC optimizes constraint checking by suppressing redundant links generated from inconsistency detection. It largely saves time/space cost for calculaing/storing inconsistency detection results. [SEAMS07]
CABOT-DCC: DCC supports constraint checking in a decentralized manner. It helps protect privacy of distributed hosts in context inconsistenty detection. [PERCOM08]
CABOT-CCC: PCC, OCC and DCC work sequentially. CCC supports constraint checking in a concurrent manner. It exploits multi-core computing capability to systematically improve checking efficiency. [SCIS13]
CABOT-GAIN: GAIN also supports concurrent constraint checking, but by exploiting GPU computing capability. This enables it with further improved checking efficiency as well as great stability. [APSEC14]
CABOT-CINA: CINA suppresses the detection of unstable context inconsistencies, and at the same time preserves the detection of stable context inconsistencies. This is achieved by analyzing a constraint's vulnerability conditions and matching them against incoming context changes dynamically. [TSE15, TSE15a]
CABOT-SHAP: SHAP suppresses the detection of inconsistency hazards, which are unstable inconsistencies, by pattern learning. [APSEC14]
CABOT-DBAD: DBAD extends CABOT middleware with the ability of automatically resolving detected context inconsistencies with heuristic rules. It deploys our drop-bad idea to identify contexts that are most likely to be faulty. It is efficient and works better than existing heuristic-based techniques. [ICDCS08]
CABOT-EFFECT: EFFECT resolves context inconsistencies by automatically choosing the solution that minimizes the impact of doing so on applications. It exhausitively but efficiently compares all solutions by incremental analysis and reuse of previous analysis results. [ESECFSE07, MOBIQUITOUS11]
CABOT-CONSVIEW: CONSVIEW supports context inconsistency resolution for multiple applications running on the same middleware. It relies on consistent context views to isolate different applications to make their resolving requirements conflict-free. [COMPSAC12]
ADAM project (research on software quality):
ADAM extends CABOT middleware by supporting defect analysis for model-based context-aware applications. It deploys a set of assertion checkers to monitor well-known error patterns so as to track specific defects in these applications. It adopts incremental rule evaluation to guarantee tracking efficiency and effectiveness. [INTERNETWARE12, JSS12, IJSI13, SCIS15]
Fault detection and recovery:
ADAM-AFCHECKER: AFCHECKER supports fault analysis for model-based context-aware applications. It derives hidden features from adaptation rules and an application's running environment. It formulates these features into deterministic constraints and probabilistic constraints. Based on these constraints, it prunes false positives in fault reports and prioritizes remaing ones for effective fault inspection. [JSS13][website]
ADAM-VERSA: VERSA verifies model-based context-aware applications probabilistically when they are running in dynamic and uncertain environments. Its reported verification results are ranked according to their occurrence probabilities for prioritized bug handling. [ASE14]
ADAM-REMATCHING: REMATCHING enables model-based context-aware applications with the ability of automatically recovering from consistency failures, which imply an application's internal state (understanding to environment) deviating from its actual external environment. ADAM-REMATCHING includes a static analysis tool for deciding an application's recoverability and dynamic support that guides its error recovery at runtime. [APSEC12, ASE13, MIDDLEWARE13]
ADAM-UGA: UGA focuses on thorough testing of smartphone applications. It combines user input traces and random testing techniques to increase test coverage for such applications. It easily beats testing approaches purely based on user input traces or random strategies. [APSEC14]
ADAM-COSEDROID: COSEDROID supports both computation offloading and sensing offloading for Android applications. It realizes borrowing computation resources and battery power from nearby devices on the fly. [COMPSAC15]
ADAM-GREENDROID: GREENDROID enables automated analysis of smartphone applications for their energy efficiency. It builds on a derived application model that captures application-generic temporal rules for event handler scheduling, and a tainting-based analysis technique to examine sensory data utilization at runtime states of an application. ADAM-GREENDROID has successfully located real energy inefficiency problems in popularly downloaded Android applications. [MIDDLEWARE13, PERCOM13, IJSI14, TSE14, IEEESOFT15]
ADAM-PERFCHECKER: PERFCHECKER focuses on performance issues of smartphone applications. It extends our previous focus of energy efficiency to GUI lagging, energy leak and memory bloat three common bug types. ADAM-PERFCHECKER has successfully detected real performance issues in popularly downloaded Android applications. [ICSE14][website]
ADAM-CARE: CARE focuses on concurrent Java programs that own interleaving threads accessing shared memory objects. It deploys a software cache to guide effective and efficient record and replay of program executions. It guarantees value determinism to assist debugging practice for concurrent Java programs. [ICSE14]
ADAM-PAR: PAR automatically generates program patches of styles following human-written patches. We present a human study to investigate how such patches help developers improve software quality as debugging aids. [FSE14]
ADAM-DSU: DSU updates a running software system dynamically across versions. We present a study to investigate how to automatically recommend software updating points that suit safety and timeliness requirements, as well as techniques to realize dynamic software update at runtime. [APSEC12, INTERNETWARE14, IST14]
ADAM-CMD: CMD helps locate bugs in non-testable programs by utilizing metamorphic testing and concolic debugging. Its implementation wraps details such that one-button execution suffices to locate responsible faults if any. [COMPSAC15]
I'm looking for self-motivated students with commitment on software engineering and program analysis research. This is a fast-growing area that keeps generating research challenges and opportunities. If you have good programming skills and wish to conduct interesting research, please contact me. You are supposed to have background knowledge before approaching me.
My postgraduate students (I am happy to work with them and they are excellent!):
Present (MSc track, followed by PhD track):
Jun Sui (MSc student; working on parallel constraint checking)
Xiangyu Wu (MSc student; working on Android app offloading and testing)
Qiwei Li (MSc student; working on energy diagnosis for Android apps)
Ruiqing Zhang (MSc student; working on spreadsheet testing and study)
Xiaofan Li (MSc student; working on pervasive computing systems)
Ying Zhang (MSc student; co-supervised with Prof. Xiaoxing Ma; working on system engineering)
Jiaxing Dong (coming soon!)
Bingying Guo (coming soon!)
Haibin Yang (PhD student; co-supervised with Prof. Xiaoxing Ma; working on context inconsistency resolution)
Tianxiao Gu (PhD student; co-supervised with Prof. Xiaoxing Ma and Chun Cao; working on dynamic software updating)
Yi Qin (PhD student; working on self-adaptive app testing)
Yanyan Jiang (PhD student; co-supervised with Prof. Xiaoxing Ma; working on concurrent systems)
Wenhua Yang (PhD student; working on self-adaptive app verification)
Zelin Zhao (PhD student; co-supervised with Prof. Xiaoxing Ma; working on dynamic software updating)
Huiyan Wang (coming soon!)
Past (going for Microsoft, Alibaba, Tencent, various research institutes and investment banks, ...):
Xuezhi Hong (MSc graduated in 2015; thesis title: "COBOT: A Software Framework for Collaborative Self-adaptive Systems")
Wang Xi (MSc graduated in 2015; thesis title: "Automated Suppression of Context Inconsistency Hazards with Pattern Learning")
Hao Jin (MSc graduated in 2015; co-supervised with Prof. Xiaoxing Ma; thesis title: "Concolic Metamorphic Debugging for Programs without Oracle")
Xiujiang Li (MSc graduated in 2015; co-supervised with Prof. Xiaoxing Ma; thesis title: "User Guided Automation for Testing Mobile Apps")
Linghao Zhang (PhD graduated in 2014; co-supervised with Prof. Jian Lu and Xiaoxing Ma; thesis title: "Dealing with Faults in Self-adaptive Software System: An Explicit Environment Model-based Approach")
Xiaokang Chen (MSc graduated in 2014; thesis title: "Towards Dependable Fixing of Context Inconsistency in Pervasive Computing")
Lei Jiang (MSc graduated in 2014; thesis title: "Search-based Automated Resolution for Context Inconsistency")
Hui Sun (MSc graduated in 2014; co-supervised with Prof. Xiaoxing Ma; thesis title: "MORO: A Self-Adaptive Software Framework for Heterogeneous Mobile Robots")
Hailong Ge (MSc graduated in 2012; co-supervised with Prof. Xiaoxing Ma; thesis title: "Design and Implementation of a Software Framework for Self-adaptive Applications")
Hao Chen (MSc graduated in 2012; co-supervised with Prof. Xiaoxing Ma; thesis title: "A Mobile Robot Middleware Supporting Self-adaptive Programming")
Reviewing the following journals (alphabetic order):
2014 (Fall) Lecturer: Principles and Techniques of Compilers (22010120)
2014 (Fall) Lecturer: Guidance to Software Engineering Research (081202D10)
2014 (Spring) Lecturer: Principles and Techniques of Compilers (22010120)
2013 (Fall) Lecturer: Guidance to Software Engineering Research (081202D10)
2013 (Spring) Lecturer: Principles and Techniques of Compilers (221120)
2012 (Fall) Lecturer: Guidance to Software Engineering Research (081202D30)
2012 (Spring) Lecturer: Principles and Techniques of Compilers (221120)
2011 (Spring) Lecturer: Principles and Techniques of Compilers (221120)
2009 (Fall) Lecturer: Computer and Programming Fundamentals I (COMP102, HKUST)
2008 (Fall) Lecturer: Programming Fundamentals and Methodology (COMP104, HKUST)
2007 (Spring) Final Year Projects Grader (FYP, HKUST)
2004 (Spring and Summar) Teaching Assistant: Java Programming (COMP201, HKUST)
2003 (Fall) Teaching Assistant: Programming Fundamentals and Methodology (COMP104, HKUST)
Hobbies and Thoughts
I love playing computer games, watching movies, hiking, thinking and daydreaming (O_O).
I am interested in game development. In early years, I worked with some friends on two RPG games: NewPal and FreeRPG. We focused on a reusable game engine and supporting tools, and developed demo stories based on them. Developing a complete game is very different from just develping a game engine with demo stories. You may want to take a look at SDLPAL as a good example of complete game. Game development also requires great passion. One positive example is Notch (刻痕) game series. Its first version was made by a non-cs student, who was also the main designer and programmer of later versions. All their pictures, music, and stories are new (not copied from other games), and all development members are students. SDLPAL and Notch are free games. You can find them from the Internet.
You may have experienced worries. Sometimes we care about how others think of us. Although we can learn from others' successful stories, we have to make our own decisions. Usually, following the way you have choosed by yourself, you will not feel regretful. When you feel worries, you may want to take a look at these words.