Simplifying the Complex: Strategies to reduce existing API Complexity using CPS techniques
Summary
Software development plays a crucial role in driving technological advancements
and fostering innovation across industries. However, the ever-increasing complexity in software systems poses significant challenges. This research aims to explore
the origins of software complexity and develop strategies to mitigate it. Specifically,
it investigates software complexity through the lens of Complex Problem Solving
(CPS) and Software Comprehension, areas that have received limited attention thus
far. The study focuses on API integration, a common area of software development,
and examines two strategies (strategy A and B). These strategies incorporate the CPS
techniques decomposition and Lean Thinking to address different dimensions of complexity inherent in API software. In a user study (N=30), participants had to retrieve
data from an API platform and use it to build small conceptual prototype applications. Metrics related to time, successfulness in task and (perceived) effectiveness were utilized to assess the impact of the strategies on reducing interface and
system complexity. The findings reveal how strategy A significantly reduces task
completion times and the time required for the initial API call. Moreover, strategy
A demonstrates superior performance compared to the baseline in metrics related
to complexity. This highlights the effectiveness of concepts from Lean Thinking in
reducing software complexity. Strategy B shows promising results in supporting
developers’ individual completion of API integration tasks and facilitating software
comprehension by providing tailored learning materials suitable for common-sense
learners. On the whole, developers expressed high levels of satisfaction with the
effectiveness of both strategies in achieving their respective goals. This research
establishes a foundation for enhanced interaction with complex software systems,
opening avenues for future studies to explore more effective support strategies. The
outcomes contribute to the advancement of software development practices and offer valuable insights for improving ease of use and reducing complexity in software
systems.