  Reducing cost and time required to build high quality software is a major
goal for software developers. Building tools and techniques that can help
achieve such a goal is the chief aim for Automated Software Engineering (ASE)
researchers. However, in order to be effective an ASE researcher or
professional must understand the characteristics of both successful and
not-so-successful ASE tools, and the constituent techniques employed by such
ASE tools. In this paper we present such a characterization of ASE tools and
major constituent techniques from different areas of computer science and
engineering that have been employed by such ASE tools. To develop the
characterization we carried out an extensive systematic literature review over
about 1175 ASE research articles. One of our key goal was to identify useful
relationships among ASE tools, their constituent techniques and the software
development life cycle activities that these tools targeted. In terms of
changes in popularity of constituent techniques with time we did not observe
any clear trend. We organized the results of our characterization as a taxonomy
called SEAT (Software Engineering Automation Taxonomy). A salient feature of
SEAT is that it focuses on automation of activities from all phases of SDLC.
Such a taxonomy, among other applications, shall enable synthesizing new
automation tools for different SDLC activities. Recomposing existing systems to
achieve better features will also be possible. Further, the taxonomy has been
realized as a graph database using neo4j(an open source graph database), which
can be queried using an SQL like language. The graph database allowed us to
uncover hidden relationships by way of exhaustive search for connections and
paths between different nodes (i.e. concepts). We demonstrate the efficacy of
SEAT by discussing few practical use cases.
