We present Executable Abstract Programs and analyse their role for software development and documentation. The intuitive understanding of these programs fits the computational mindset of software system engineers and is supported by a simple but precise behavioural definition. Therefore, they can be smoothly integrated in the practitioner's daily work to rigorously formulate every design and implementation decision taken on the path from the Executable Abstract Program for the requirements to the targeted and efficiently runnable code. The Executable Abstract Programs of the resulting system documentation represent definitions of implementation steps one can check and justify by testing (due to their executable character) or by reasoning (due to the mathematical definition of their behaviour). For complex systems the implementation involves multiple (orthogonal or successive) implementation steps which represent instances of a practical computational refinement concept. Such a system development process is driven by computational refinements and is strictly limited to explicitly formulate and justify -- besides the requirements -- only the necessary implementation steps. As a consequence, it produces as side-effect a corpus of documentation that facilitates the understandability of the final code and improves its reliability and resilience; it also enhances the maintenance process (including reuse and change of abstract programs and code) and reduces maintenance cost.
翻译:我们提出可执行摘要程序,并分析其软件开发和文件的作用。对这些程序的直觉理解符合软件系统工程师的计算思维,并得到简单而精确的行为定义的支持。因此,它们可以顺利地纳入从业人员的日常工作,以严格地制定从可执行摘要方案对目标、高效运行的代码的要求所作的每一项设计和执行决定。由此产生的系统文件的可执行摘要程序是执行步骤的定义,通过测试(由于其可执行性质)或推理(由于对其行为的数学定义),可以检查和证明这些步骤是合理的。对于复杂的系统,执行过程涉及代表实际计算完善概念的多个(横向或连续)执行步骤。这种系统开发过程受到计算改进的驱动,严格限于明确拟订和说明 -- -- 除了要求之外 -- -- 仅必要的执行步骤。结果,它产生一系列的文件作为副作用,便于理解最后守则,并提高其可靠性和复原力;对于复杂的系统,它也加强了维护过程(包括再利用和修改抽象方案和代码),并降低维护费用。