Search

Developer Accounting Book (Dev Accounting Book)

ekcapaper

1. Overview

The Software Accounting Framework is designed to systematically manage and provide a comprehensive view of the value provided by software, its technical dependencies, internal development components, implementation methods, maintenance costs, and potential risks.
By applying the concept of financial accounting statements to software management, the framework aims to visualize the state of software projects transparently and enable clear identification and management of the software's status and risks.

2. Objectives of the Framework

The objectives of the Software Accounting Framework are as follows:
1.
Systematically document and visualize the status of software
2.
Support technical decision-making

3. Key Components of Software Accounting

The Software Accounting Framework adapts the primary concepts of financial accounting statements to software management for a structured and practical application.

3.1 Software Status Documentation and Management

3.1.1 Software Balance Sheet

Purpose

To record the value (assets) provided by the software, the internal components (equity) developed in-house, and the external dependencies (liabilities).
To assess the system's dependencies and technical contributions in a balanced manner, thereby supporting long-term maintainability.

Components

Category
Definition
Examples
Assets
Value provided by the software
- Core functionalities of the program
- Services directly offering value to users
Equity
Internally developed and owned components
- Custom authentication systems
- API modules
- Deployment automation scripts
Liabilities
External dependencies such as third-party libraries, cloud services
- Open-source libraries
- Third-party APIs
- Cloud platform usage
Through this balance sheet, organizations can clearly distinguish between core assets and external dependencies that pose liabilities.

3.1.2 Technical Context and Decisions

Purpose

To document the technical context and decisions that have shaped the software.
To leave a record of the implementation rationale at each stage, enabling quick identification of the decision-making basis for future maintenance and feature expansion.
To provide a tool for understanding the state of software implementation without examining the code.
By extracting technical judgments from documents, teams can immediately understand the project's implementation status.

Key Components

Context and Background
The technical and environmental conditions faced by the software at a specific point in time.
Decisions and Rationale
Decisions made under the given circumstances, including chosen technology stacks and architectures.
Impact and Alternatives
The impact of decisions on future development and operations, along with alternative options considered.

Example

Technical Judgment: Set the system's RPO (Recovery Point Objective) to 60 minutes.
Technical Context: Since this is a testing server validating the system, some data loss is acceptable. However, to avoid complete loss, data backups are required every 60 minutes.
Integration with ADR (Architectural Decision Records)
If needed, ADRs can be used to document technical decisions systematically.

3.1.3 Issue Tracking and Risk Assessment

Purpose

To document and analyze problems (e.g., incidents, bugs) encountered during software operations and evaluate the likelihood of recurrence, enabling the establishment of risk management strategies.
To assess the impact and resolution costs of incidents to determine the most effective response strategies.
Judgments are made based on the balance sheet, technical context, and decision records.

Components

Item
Description
Incident Records
- Root cause analysis of incidents
- Impact scope and resolution measures
Likelihood Assessment
- Probability of problem recurrence
- Need for long-term resolution
Resolution Cost and Impact
- Cost analysis for resolving issues

3.2 Derived Indicators

3.2.1 Software Resource Forecast

This document is created as needed based on the software’s technical context and decisions.

Purpose

To predict the extent of changes required for adding new features or maintaining the software.
To analyze structural changes and impacts thoroughly, identifying potential risks and devising a systematic change plan.

Components

Category
Description
Changes for Feature Addition
- Modules and configurations to modify for adding new features
- Example: Database schema updates, API modifications
Associated Modules and Impact
- Areas affected by specific feature additions or changes
- Example: Security policy review for authentication module changes
Required Adjustments
- Elements of existing code and settings requiring modifications
- Example: Updating caching strategies for performance optimization
Technical Risks
- Potential technical issues from changes
- Example: Compatibility issues with the existing system, conflicts with external libraries
Testing and Verification Plan
- Test items and validation procedures after changes
- Example: Regression testing, load testing, comprehensive performance testing

Motivation for Implementation and Conclusion

This framework is designed as a tool to enable developers to clearly understand the state, context, and structure of a project. It supports making informed judgments and decisions based on this understanding.
Technical Balance Sheet:
Identification of the project's technical assets, liabilities, and core internally developed components.
Technical Context and Decisions:
Documentation of the rationale behind the software's structure and the decisions made during its development.
Issue Management:
Tools to manage and systematically address problems encountered in the project.