In this paper, we explore the application of Large Language Models (LLMs) in
the particular context of end-to-end software construction, i.e., in contexts
where software developers have a set of requirements and have to design,
implement, test, and validate a new software system. Particularly, we report an
experiment where we asked three software developers to use ChatGPT to fully
implement a Web-based application using mainstream software architectures and
technologies. After that, we compare the apps produced by ChatGPT with a
reference implementation that we manually implemented for our research. As a
result, we document four categories of prompts that can be used by developers
in similar contexts, including initialization prompts, feature requests,
bug-fixing, and layout prompts. Additionally, we discuss the advantages and
disadvantages of two prompt construction approaches: top-down (where we start
with a high-level description of the target software, typically in the form of
user stories) and bottom-up (where we request the construction of the system
feature by feature)