Research Theme
Software engineering is an academic field that considers how to develop high-quality software as efficiently as possible within budget constraints. Overall, it consists of methods for correctly understanding what to create, designing how to create it, writing programs without errors, verifying that the completed program is according to design, and testing to ensure it meets its objectives. The Software Engineering Laboratory at Nara Institute of Science and Technology focuses on environments, tools, and procedures for efficiently conducting software development and programming. We aim to establish new fundamental technologies for software development and usage by analyzing current software development practices and developing new support technologies and methodologies. Our research materials include all kinds of data related to software. This includes big data such as source code, runtime information like tests and debugging, documents written about software, developer activities like code editing and reading, and communications among individuals and communities involved in software development and use. We combine technologies from programming languages such as syntax and semantic analysis of source code and dynamic analysis with diverse techniques like machine learning, natural language processing, game theory, sociology, and neuroscience to develop new tools to support software development and analyze development data. We provide the results obtained to companies involved in software and open-source software communities. For those who are vaguely interested in what software engineering is, here are some resources:
- Books
- The Mythical Man-Month: A classic in software engineering, collecting experiences. Famous for the story that adding people to a delayed software project makes it even later.
- Making Software: A book that broadly introduces traditional software engineering research.
- Software Engineering at Google: Introduces practical software engineering approaches.
- Websites
- ICSE Reading Group (sereading): A study group that introduces the contents of papers presented at ICSE, the world’s largest conference in the field of software engineering. Past materials are available.
- Software Engineering Symposium (SES): The largest domestic conference in the field of software engineering, where various universities in Japan present their achievements annually. By looking at the annual presentation programs, you can easily understand recent research themes in software engineering.
- Foundations of Software Engineering Workshop (FOSE): The second largest domestic conference where ideas for research and preliminary experimental results are presented. From the annual programs, you can get an overview of the research contents.
- Programming and Programming Languages Workshop (PPL): A conference dealing with programming languages and programming activities. Since software includes programming activities, there is a strong connection with the content.
Main Topics
“Paradigm” Preventing Bugs
We work on preventing and fixing software bugs. Specifically, we research supporting developer tasks through automatic synthesis and bug fixing of source code, and visualization of structures and functions.
Investigating Programmers’ Abilities and Activities
Many of the tasks that occur during software development are cognitive and psychological processes in developers’ minds. We quantitatively reveal whether developers are performing software development as usual by measuring eye movements and brain activity. Furthermore, we develop educational support environments, such as evaluating the effectiveness of programming education from the content of source code.
Accumulating and Utilizing Products
We work on solving issues arising from the use of software products (bugs, vulnerabilities, dependencies, etc.). Specifically, we analyze library reuse and research the descriptions of README documents.
Community Promoting Collaboration
Many people are involved in software development. Therefore, we focus on open-source software communities and research promoting collaboration. For example, we research code reviews, contributions, and bug reports.
Through joint research with companies like NTT DATA, Fujitsu Laboratories, and Givery Inc., and collaboration with engineers from NEC, Human Spaceflight Systems Corporation, and SAP, we work on developing useful technologies for real-world applications and conducting field tests of technologies cultivated in the laboratory. Not only faculty but also students participate in these studies according to the relevance and interest of their research themes.
Past Research Themes (by Student)
Please refer to this table for specific individual research contents. It summarizes the background, what was done, results, and how external presentations were conducted for each student (continuously updated).
Collaboration with Companies
Skills Required for Research Activities
Since we deal with intangible software, mathematical thinking that expresses intangible things with symbols and drawings is essential. Additionally, knowledge of statistics is useful for inferring the overall situation from specific cases investigated. Due to the nature of researching programming activities themselves, technical skills and knowledge related to programming are extremely helpful. However, no special skills or knowledge are required to start research. Many students begin to study programming deeply for the first time after coming to our laboratory.
Software Development as Research
In our laboratory, we consider it important to implement research results as software and provide them to society. Examples of providing insights gained from research include the fully remote class system C2Room (development name: Chameleon), the system for synthesizing SQL from input-output examples PATSQL, and DevReplay, which automates the same correction multiple times. We encourage students who like and excel in programming to actively participate as an opportunity to directly influence society and companies.
Skills Acquired in This Laboratory
As experts in software development and utilization, you can acquire knowledge on methodologies and tools for multiple developers to collaborate, and methods for evaluating software quality. Through discussions on the latest trends in software development, you can gain practical knowledge on various development processes, environments, and the significance of each programming language.
Materials
LABORATORYGUIDE2019_2020_is5.pdf
Nara Institute of Science and Technology, Graduate School of Information Science, Software Engineering Laboratory
Software Engineering Laboratory
8916-5 Takayama-cho, Ikoma-shi, Nara 630-0192, Japan
© 2013-2023 Software Engineering Laboratory, Graduate School of Information Science, Nara Institute of Science and Technology.