SIGS DATACOM Fachinformationen für IT-Professionals

SOFTWARE MEETS BUSINESS:
Die Konferenz für Software-Architekturen
30. Januar - 03. Februar 2017

Sessionsdetails

Vortrag: Do 2.1
Datum: Do, 02.02.2017
Uhrzeit: 09:00 - 10:30
cart

Software architecture as code

Uhrzeit: 09:00 - 09:45
Vortrag: Do 2.1-1

 

Ask somebody in the building industry to visually communicate the architecture of a building and you'll be presented with plans that reflect reality. In contrast, a software developer will likely present a confused mess of boxes and lines, created using a general purpose diagramming tool, that don't reflect the code. This session will look at why this happens, how architecturally-evident coding styles can help and how to use tooling and static analysis techniques to automate the generation of useful software architecture diagrams.

Target Audience
: Architects, Developers
Prerequisites: Some experience developing software
Level: Practicing


Extended Abstract
Ask somebody in the building industry to visually communicate the architecture of a building and you'll be presented with site plans, floor plans, elevation views, cross-section views and detail drawings. In contrast, ask a software developer to communicate the software architecture of a software system using diagrams and you'll likely get a confused mess of boxes and lines, created using a general purpose diagramming tool, that don't reflect the code. This session will look at why this happens and how to resolve the conflict between software architecture and code through the use of architecturally-evident coding styles. We'll also look at how to use tooling and static analysis techniques to automate the generation of useful software architecture diagrams.

 

Design and Management of High-Quality APIs – On Squaring the Circle

Uhrzeit: 09:45 - 10:30
Vortrag: Do 2.1-2

 

Reusable modules are assets that make software development efficient. Key to their reusability are high-quality APIs. They capture the intent of a module well, and make it easy to comprehend and use. So far the theory! In practice, APIs that are cleanly-designed, well-documented, and easy-to-use are rare! Good API design is a challenge. How to define a clear, meaningful contract that is hard to misuse? How to support module evolution without braking client code? This talk introduces to the practices and considerations of good API design.

Target Audience: Architects, Key Developers
Prerequisites: Software Design Experience, Programming Experience
Level: Practicing


Extended Abstract
Reusable modules are assets that make software development efficient. Key to their reusability are high-quality APIs. They capture the intent of a module well, and make it easy to comprehend and use. In particular, good APIs:
· Are easy to use even without documentation
· Offer a defined contract
· Have telling names that capture their intent well
· Are lean, concise and have meaningful semantics
· Support the open/close principle
· Provide no room for unintended assumptions or misuse
· Extensible without breaking existing API users
· Appropriate in terms and style to the consumers
· Homogeneous across multiple modules belonging the same system/domain
So far the theory! In practice, APIs that are cleanly-designed, well-documented, and easy-to-use are rare! Good API design is a challenge. The reality often looks pretty disappointing. Many APIs:
· Offer a shopping list of small methods rather than being lean and concise
· Use string and int as main parameter types, even in typed languages
· Set an inappropriate visibility for methods, e.g., sealed, internal
· Break encapsulation of internal attributes and allow information leakage
· Lack defined exception handling or error behavior
· Result in chatty interactions when being used
· Brake client code when being extended
· … and so on and so forth
This talk introduces to the practices and considerations of good API design. A set of guidelines for good API design is presented, and concrete patterns and practices for API realization are discussed. War stories from the real world raise the awareness for high-quality API design and motivate the guidelines and practices discussed.