We support large and complex software development with architecture and visualization technologies.
Associate Professor：SUZUKI Masato
Software Engineering/Construction, Programming Language and Environment, Embedded Systems
Software Process and Development Environments, Software Architectures, Software Product lines, Service Oriented Architectures, Education for Software Engineers
Skills and background we are looking for in prospective students
Skills for programming in any language (C/C++/Java/Python etc)
What you can expect to learn in this laboratory
At first, students will study several WEB-based software development methodologies and detect some problems by themselves through this case studies. Secondly, they introduce some state-of-the-art technologies of software engineering such as aspect-oriented and architecture-oriented in order to solve these problems.
These experiences will help them to acquire skills for evaluating not only software itself but also its development processes. As the result, they learn ability for improving software quality including performance, reliability and ease of understand/maintain.
Through these studies, students graduated our laboratory can obtain knowledge and experience which are not only useful for development of today's software but also for the future ones. It means that they know theories each technologies are based on, and can adapt them under the different environment even if some primitive technologies might be changed five or 10 years after.
【Job category of graduates】
ICT/Network providers, Embedded/IoT system design/development/management companies
We are engaging on researches about software environments and tools which support developers from two viewpoints: comprehension and (re)construction.
Comprehension is an activity to understand the mechanism and behavior of current software and to suggest to developers the parts and contents that need to be revised in order to add new functions or execute on new environment. Recently, demands are increasing to transfer standalone systems into the network environment due to the development of WEB technology and the improvement of the performance of small terminals such as smart phones.
In embedded systems such as automobiles, the scale of software has rapidly increased from about 10,000 lines to about 1 million lines in the past five years due to diversification and sophistication of functions. The filtering technique is important to accurately extract information required by developers from huge amounts of information. In conventional filtering, most of them are based on character information such as variable / function name, and there were problems such as many unnecessary information in the extraction result.
On the other hand, we mainly focus onto improve accuracy by filtering corresponding to program structure such as arguments and return values for variables and functions, and caller / callee between functions. Also, some refactoring operations (making the structure easier to understand without changing the meaning of the program) makes it possible to reduce complexity and prepare for the next change. Supporting detection of the part which must be changed is also an important research topic.
Construction is an activity that suggests to developers "software parts" and "method for combine" as tasks necessary for newly creating software. Recently it is impossible to develop tens of thousands of lines of software from scratch, and it is common to use software units (components) that realized basic functions. Components can vary from dozens of lines to thousands of lines depending on their functions, but in both cases their usage (interfaces) are determined, and they are common in that they do not work unless you combine them properly. In conventional programming languages, the combination method is limited, for example, it worked without problems if the arguments of the function and the data type of the return value match.
However, things written in recent languages may contain various kinds of information besides data types, it is almost impossible to manually check their consistency.
Furthermore, in order to operate the component in a network environment that changes from moment to moment, information for connection also must be updated. Aspect technologies are focused for realizing these requirements. Aspects are mechanism for managing information that needs to be added or updated in conjunction between multiple components. We are now also engaging researches that extracts aspects from components developed in the prior art and make the parts easier to use.
- Kaizu, T., Isobe, Y., and Suzuki, M.: Refinement and Verification of Sequence Diagrams Using the Process Algebra CSP, IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, Vol. Vol. E96-A, No.2(2013), pp. 495--504.
- Kaizu, T., Isobe, Y., and Suzuki, M.: Verifying sequence diagrams using the process algebra CSP, AVOCS 2013 Automated Verification of Critical Systems Pre-proceedings, (2013), pp. 203--206.
- Lin Wang, Tomoyuki Aotani, Masato Suzuki:Improving the quality of AspectJ application translating name-based pointcuts to analysis-based pointcuts, Proceeding of 14th International Conference on Quality Software(QSIC2014), IEEE
Elevator operation model (manufactured by Electronic Block Company)
Training equipment for embedded system development (Lego mindstorm EV 3, Arduino)
Our mission is to produce students who can propose some useful solutions based on knowledge of software engineering to the industry. Software and its development and maintenance are highly intellectual activities, and change and improvement are constantly being sought. They feel it is the pleasure that creating new things, we will continue research activities considering the balance between theory and practice at every time. Our guidance policy is to obtain an objective and broad perspective on software. Their intentions are not limited to developing software but searching opportunity of quality improvement such as maintainability, reliability and usability.