xJREB / service-based-antipatterns

A structured collection of service-based antipatterns and bad smells, served by a web application for convenient browsing
https://xjreb.github.io/service-based-antipatterns
MIT License
15 stars 1 forks source link

[WIP] Antipattern documentation refinement #125

Closed xJREB closed 5 years ago

xJREB commented 5 years ago

Major revision of the JSON files; please have a look at your antipatterns and review if this is still in line with the literature. Moreover, I stumbled across the following antipattern pairs that may be candidates for merging:

Are these antipatterns significantly different so that it would be beneficial to keep them separate? What do you think?

boceckts commented 5 years ago

Golden Hammer and Silver Bullet very similar fields and could be merged. CRUDy Interface and Maybe It is Not RPC are also quite similar and could be merged. Extraneous Adjacent Connector and Redundant PortTypes could be the same since the latter one provides only one sentence as description with no additional fields so its hard to understand if there are any differences. Maybe these could also be merged.

@tschechlovdev @mpoqq any thoughts on this?

xJREB commented 5 years ago

OK, since this will have effects on the publication and text, tables, and figures will have to be updated, I suggest that we do this right away. I try to provide a commit for this ASAP that your can then review.

xJREB commented 5 years ago

OK, after also reviewing Shine Nickel, I propose to keep all three separate (The Shiny Nickel, Golden Hammer, and Silver Bullet). They are all similar and related, but have a slightly different notions. So I guess it is worth it.

CRUDy Interface and Maybe It is Not RPC as well as Extraneous Adjacent Connector and Redundant PortTypes were merged by me (I kept the first name as the primary one).

Please review this before you merge it. And after merging, please update all antipattern and category counts everywhere. 😎 Thank you!

mpoqq commented 5 years ago

Because CRUDy Interface and Maybe It is Not RPC has the same two sources and they also defined these as separated antipatterns I think they are not the same.

CRUDy Interface (CI): is an antipattern where the design encourages services the RPC-like behavior by declaring create, read, update, and delete (CRUD) operations, e.g., createX(), readY(), etc. Interfaces designed in that way might be chatty because multiple operations need to be invoked to achieve one goal. In general, CRUD operations should not be exposed via interfaces [22].

Maybe It is Not RPC (MNR): is an antipattern where the Web service mainly provides CRUD-type operations for sig- nificant business entities. These operations will likely need to specify a significant number of parameters and/or com- plexity in those parameters. This antipattern causes poor system performance because the clients often wait for the synchronous responses [22].

With Extraneous Adjacent Connector and Redundant PortTypes I totally agree.

xJREB commented 5 years ago

Because CRUDy Interface and Maybe It is Not RPC has the same two sources and they also defined these as separated antipatterns I think they are not the same.

I also saw that the they are from the same source, but I still fail to see a significant difference. Both stress that an RPC-like behaviour with CRUD operations is bad, because it leads to chatty APIs and therefore poor system performance. What would be the different notions I miss?

mpoqq commented 5 years ago

@tschechlovdev and I have discussed it again and we agree with you. Keeping them separate is perhaps more confusing than merging them together.

xJREB commented 5 years ago

OK, then I merge this and kindly ask you to update the numbers for antipatterns and categories everywhere. 👼