Hello and welcome! I am a third year Computer Engineering (C.E.) Ph.D. student at Iran University of Science and Technology (IUST). I received my B.Sc. in Computer Engineering / software from Arak University and my M.Sc. degree from Iran University of Science and Technology (IUST). This website summarizes me and my works :)
Towards better software systems by automating laborious tasks in software engineering through the intelligent reverse engineering techniques
My research interests are about empirical and automated software engineerin (EaASE), especially automated software refactoring, testing, test data generation, dynamic software analysis and applying machine learning in software engineering.
Software engineering is a very complex task because software systems and ecosystems are inherently complex, intangible, and unpredictable!
Software engineers must deal with numerous problems during the software development life cycle (SDLC), mainly software testing and maintenance. Automating software engineering activities efficiently not only increase the quality of these activities but also leads to an economic saving.
Unfortunately, search-based software engineering (SBSE) fails to cope with many complex problems in measuring and improving software quality.
I use machine learning software engineering (MLSE) besides SBSE to address open problems in automating SDLC activities, including software testing, debugging, repair, and maintenance. During my M.Sc., I applied deep learning to statistically capture the format of complex file structures and then built a generative model to generate new test data for file format fuzzer. For the time being, as part of my Ph.D. thesis, I have focused on measuring and improving the testability of software systems artifacts.
Research Interests in Details
- Automated software engineering, testing, and debugging.
- Software reverse engineering, re-engineering, and refactoring.
- Software security and source code analysis (dynamic and static analysis).
- Machine learning and deep learning applications in software engineering.
- Machine learning and deep learning applications in sociology (computational sociology)
- Ph.D., Computer Engineering, Software; Iran University of Science and Technology (IUST) (2018 - Now)
- Supervisor: Dr. Saeed Parsa
M.Sc., Computer Engineering, Software; Iran University of Science and Technology (IUST) (2016 - 2018)
- Thesis Title: “Automatic Test Data Generation in File Format Fuzzers”.
- Supervisor: Dr. Saeed Parsa
B.Sc., Computer Engineering, Software; Arak University (2011 - 2015)
- Project Title: “Design and implementation multi-agent system to participant in Multi-Agent Programming Contest (MAPC) 2015”.
- Supervisor: Dr. Vahid Rafe
Hmm… It is on the way!
In my M.Sc. thesis, I designed and built IUST-DeepFuzz, a file format fuzzer and provide IUST-PDFCorpus, a large dataset of PDF files and PDF data objects. IUST-DeepFuzz can automatically learn the grammar (structure) of a given input file, then generate and fuzz various test data based on the learned model and some mutation-based methods. You can find all relevant information about my M.Sc. thesis on the IUST-DeepFuzz GitHub repository.
”’ *Password is needed. ”’
In my B.Sc. project, I worked on agent-oriented software engineering and developed a multi-agent system to participate in the multi-agent programming contest (MAPC). Unfortunately, the competitions did not hold in the year 2014, for the technical reasons raised by the new scenario, and our team could not participate in the competitions. But MAPC is alive for me and my teammates and there for our final project reports is kept in draft version :)
- Download my B.Sc Project Report (Draft version) [PDF]
As a software engineer, I know about software development methodologies (both traditional and modern methodologies), software architectures, enterprise applications design and development, programming, and computer networks. I am an expert in object-oriented design, database concepts, and ORMs. During the IUST master program, I learned about distributed systems, advanced software engineering, software reverse engineering techniques, cluster, grid, and cloud computing, and secure and dependable software systems design. For the time being, my skills are as follows:
- Software engineering
- Object-oriented system analysis and design
- RUP and Agile methodologies
- Software testing
- Automatic test data generation
- Security testing, stress testing, and fuzzing
- Static and dynamic program analysis
- Deep Learning
- Recurrent Neural Networks
- Recurrent Language Models
From July 2013 my friends and I maintain Micropedia a free software engineering/ programming tutorials website in Persian. You can find some basic programming tutorials on Micropedia.
Please visit my blog or jump to resources page for more information. At this time, there is no commenting tool here on my blog and you can contact me anytime by sending an email to: M – Z A K E R I [AT] L I V E [DOT] C O M (firstname.lastname@example.org). I will provide proper response as soon as possible.
More details can be found in my up-to-date C.V.