MA Xiao-Xing , LIU Xuan-Zhe , XIE Bing , YU Ping , ZHANG Tian , BU Lei , LI Xuan-Dong
2019, 30(1):3-21. DOI: 10.13328/j.cnki.jos.005650
Abstract:Software constitutes the infrastructure of an information society, and the production and utilization of software systems become a core competency. A software development method embodies a systematic set of processes and techniques enabling the engineering of software systems. This paper briefly reviews some most important software development methods thrived in the last five decades, including fundamental methods based on structured programming and modular development, object-oriented methods, software reuse and component-based methods, aspect-oriented methods, model-driven methods, and service-oriented methods. After that it gives an outlook with an introduction to the research efforts on Internetware and a call for future software development methods for emerging social-cyber-physical systems.
WANG Huai-Min , MAO Xiao-Guang , DING Bo , SHEN Jie , LUO Lei , REN Yi
2019, 30(1):22-32. DOI: 10.13328/j.cnki.jos.005648
Abstract:This paper presents several new insights into system software, which is one of the basic concepts in computing discipline, from three perspectives of essential features, characteristics of the times, and the future development trend. The first insight is that system software stems theoretically and technically from universal Turing machine and the idea of stored-program, with an essential feature of "manipulating the execution of a computing system". There are two typical manipulation modes:encoding and then loading, executing and controlling. The second insight is that software system is a kind of software, in the Internet age, providing substantial online services continuously, which lay the foundation for the newly emerged "software-as-a-service" paradigm. The final insight is about its development trend:system software will evolve online continuously. Driven by innovations of computing systems, integration of cyber and physical spaces, and intelligence technologies, system software will become the core of future software ecology.
WANG Ji , ZHAN Nai-Jun , FENG Xin-Yu , LIU Zhi-Ming
2019, 30(1):33-61. DOI: 10.13328/j.cnki.jos.005652
Abstract:Formal methods are techniques with mathematical foundations for specifying, developing, and verifying computer software and hardware systems. Their mathematical foundations lie in formal logic systems, consisting of formal languages, semantics, and proof systems. Formal methods have been increasingly applied in different stages of the lifecycle of a computing system with appropriate levels of rigor. This paper reviews the historic development of formal methods. Focusing on specification and verification, the paper discusses and introduces the state-of-the-art mainstream formal methods in details, including their theories, techniques, tools, and applications. It is also shown that the relation between formal methods and other fields of computer science. Finally, the opportunities, trends, and challenges of formal methods are forseen. Formal methods have made significant progresses and played crucial roles to guarantee the safety and security of computing systems. Now software is becoming a fundamental infrastructure, it is believed that formal methods will gain much wider applications, especially when they are used in combination with other theories and methods such as those in artificial intelligence, cyber security, quantum computing, and bioinformatics. Research to achieving such seamless combinations is, however, both challenging and important.
RONG Guo-Ping , ZHANG He , SHAO Dong , WANG Qing
2019, 30(1):62-79. DOI: 10.13328/j.cnki.jos.005645
Abstract:Software development via engineering approaches requires effective organization and management of the entire software development process, which resulted in a series of methods to organize and manage the development of software systems. Its original intention is to form a carrier to accumulate and deliver experiences and lessons learned about software development. However, due to some of the intrinsic characteristics (e.g. complexity and invisibility) of software, the software development and organization methods that describe the software development process also naturally have a certain degree of abstraction. As a consequence, many conceptual misleadings and meaningless debates in practice have affected the achievement of the above objectives. For example, it is still lack of reliable means for how to select and define the right software development process to better meet the requirements of a particular project. Moreover, some industry-oriented research reports indicate that the main driving force for process improvement (i.e., the introduction of new tools or methods) in real software projects is anecdotes. This study attempts to clarify some core concepts related to software organization and management, then systematically sorts out the characteristics of software organization and management methods. Meanwhile, based on the history of software development, the reason behind of the method evolution is figured out. On this basis, several findings are discussed and summarized in order to provide references for researchers and practitioners.
ZHANG Jian , ZHANG Chao , XUAN Ji-Feng , XIONG Ying-Fei , WANG Qian-Xiang , LIANG Bin , LI Lian , DOU Wen-Sheng , CHEN Zhen-Bang , CHEN Li-Qian , CAI Yan
2019, 30(1):80-109. DOI: 10.13328/j.cnki.jos.005651
Abstract:In the information age, people are increasingly demanding high quality of software systems. Program analysis is one of the important approaches to guarantee the quality of software, and has been receiving attentions from academia and industry. This article mainly focuses on the research progress in program analysis in the last decade. First, the article introduces the basic program analysis techniques, including abstract interpretation, data flow analysis, summary-based analysis, symbolic execution, dynamic analysis, machine learning-based program analysis, etc. Then, it summarizes program analysis approaches for different types of software systems, including mobile applications, concurrent software, distributed systems, binary code, etc. Finally, the article discusses potential research directions and challenges of program analysis in the future.
2019, 30(1):110-126. DOI: 10.13328/j.cnki.jos.005643
Abstract:Program comprehension is a key activity in software engineering and plays an important role in software development, software maintenance, and software reuse. Since the advent of software engineering, program comprehension has always been a hot research hotspot issue in this field. With the increasing complexity and popularity of software, the needs for program comprehension have been changed. The program self-understanding and self-awareness have gradually become new focuses. Therefore, it is highly desired to re-examine the purposes, the tasks and the techniques of program comprehension. Firstly, this paper dicsusses the program comprehension from the 3 perspectives, namely, the engineering, the learning cognition, as well as the techniques. Then, it shows the degree of research attentions through literature analysis. Furthermore, it discusses the research progress from three aspects, i.e., the cognitive process, the methods and techniques, and the software engineering tasks. Finally, it discusses the development trend and challengs.
DU Xiao-Yong , LU Wei , ZHANG Feng
2019, 30(1):127-141. DOI: 10.13328/j.cnki.jos.005644
Abstract:Big data management systems are migrating from software-centric computing platforms to data-centric computing platforms, and traditional relational databse management systems (a.b.a. RDBMS) do not entirely meet the need for data-centric data management. Hence, it is urgent to design a new kind of big data management systems. In thisThe paper, we first reviews the history of the development of data management systems. Second, we it analyzes the current situation of big data management systems in terms of data storage, data model, and query engines of big data management systems, and points out that current big data management systems have the characteristics of modularity and loose coupling. After that, the data characteristics and application characteristics of the big data management systems are we introduced the data characteristics and application characteristics of the big data management systems,, and it is pointed out that big data management systems are still rapidly evolving, but do not mature. Finally, the future of big data management systems is we predicted, i.e., the future of big data management systems. Big big data management systems in future should have the characteristics of multiple data models coexistence, multi-computation platform fusion, elastic adjustment, new hardware driven, self-adaptive tuning, and so on.
XIN Jun-Chang , WANG Guo-Ren , LI Guo-Hui , GAO Yun-Jun , ZHANG Zhi-Qiang
2019, 30(1):142-163. DOI: 10.13328/j.cnki.jos.005649
Abstract:Database management technology is an important branch of computer science. After the development of nearly half a century, database technology has formed a solid theoretical foundation, mature commercial products, and a wide range of applications. The data model describes the storage and operation of data in the database. According to the organizational form of data, there are four types of data models:structured models, semi-structured models, OLAP analysis models, and big data models. From the late 1960s to the early 1990s, the structured models were first proposed, which mainly includes hierarchical model, network model, relational model, and object-oriented model. In the late 1990s, with the rapid development of complex applications such as Internet applications and scientific computing, semi-structured models began to emerge, including XML models, JSON models, and graph models. In the new century, with the continuous development of applications such as e-commerce and business intelligence, the data analysis model has become a research hotspot, mainly including relational ROLAP and multi-dimensional MOLAP. Since 2010, with the rapid development of big data industry applications, the big data model represented by NoSQL and NewSQL database systems has become a new research hotspot. This article summarizes the above data models, and analyzes the performance of typical database system selected from each model.
CUI Bin , GAO Jun , TONG Yong-Xin , XU Jian-Qiu , ZHANG Dong-Xiang , ZOU Lei
2019, 30(1):164-193. DOI: 10.13328/j.cnki.jos.005646
Abstract:With the emergence of novel computing techiniques and applications, the traditional database manamgement systems face challenges, and undergo significant shifts from the single data model processing to multiple data model processing. This paper presents a comphrensive survey on the recent progress and future direction in the novel data management systems, including distributed databases, graph databases, streaming databases, spatial-temporal databases, and crowdsourcing databases. Specifically, the distributed techinqiues play a key role to improve the scabablity of large scale data processing. Graph data management techniques are driven by the big graph management requirement in applications like social network. Stream data management techiniques are also developed to process dynamic data. Spatial-temporal databases are mainly applied in the management of mobile objects. Last but not least, the processing of multiple sources, hetergonenous and low quality data motivates the advance of crowd-sourcing techniques. This study also surveys other hot research directions and foresees the future work.