自社開発して長年使用しているソフトウェアがあるが,ドキュメントが不十分で保守性が良くない。保守のためのドキュメントを作成するために,既存のソフトウェアのプログラムを解析した。この手法を何というか。
平成30年度 秋期 ITパスポート試験 問39
This question's explanation and your answers so far.
問 39
Incorrectア
The waterfall model is a software development model that advances through the phases in order from upstream to downstream — requirements definition, design, implementation, testing — and refers to a way of proceeding with development. It is not a technique for analyzing an existing program to recover documentation, so it is wrong.
Incorrectイ
The spiral model is a development model that repeats the cycle of design, implementation, and evaluation, building up functionality little by little while reducing risk. This too is a kind of development process, not a technique for extracting documentation from an existing program, so it is wrong.
Incorrectウ
Prototyping is a technique of building a trial product (a prototype) in the early stage of development and having users check it so that discrepancies in requirements are corrected early. Its purpose is confirming requirements during new development; it is not a technique for analyzing an existing program, so it is wrong.
- エ
正解 The technique of analyzing the program of existing software and extracting documents such as design information and specifications from it is called reverse engineering. In this question, for software that has been used for many years but has insufficient documentation, the existing program is analyzed in order to create documentation for maintenance. This is exactly the reverse-direction work of recovering upstream information (specifications and design) from a working deliverable (the program), a typical example of reverse engineering. Therefore the correct answer is エ.
- Reverse engineering = a technique of analyzing an existing program or hardware to recover (derive in reverse) its specification and design information. It is used in the maintenance of existing software whose documentation is lacking.
- Waterfall, spiral, and prototyping are all ways of proceeding with development (development models / techniques); distinguish them from reverse engineering, which extracts information from an existing deliverable, since their purposes differ.