激光脱毛和冰点脱毛有什么区别| 纳采是什么意思| 空调自动关机什么原因| 扁平足为什么不能当兵| 来月经同房有什么影响| 装腔作势什么意思| 五常法指的是什么| 竹节麻是什么面料| 飞蚊症吃什么药| 股骨头疼痛吃什么药| 打封闭针有什么坏处| 火是什么| 天王星是什么颜色| 熬夜吃什么对身体好| 空是什么意思| 微信英文名叫什么| 10月30日什么星座| 莲子吃了有什么好处| acth是什么| 菱形脸适合什么刘海| 晚上吃什么饭| 刀纸是什么| 水星为什么叫水星| 左腰疼痛是什么原因男性| 什么什么不同| 画地为牢是什么意思| 肺部感染吃什么药| 脸上脂溢性皮炎用什么药| 高处不胜寒什么意思| 卡卡是什么意思| 乳腺b超挂什么科| 化疗后吃什么恢复快| 功能性消化不良吃什么药| 肾结石有什么影响| 狂野是什么意思| 近视什么意思| lookbook是什么意思| 吃什么解辣最快方法| 嘴歪是什么病的前兆| 缺镁吃什么药| 闭合性骨折是什么意思| 香榧是什么东西| 清创手术是什么意思| 拉泡泡屎是什么原因| 刍狗是什么意思| 北方是什么生肖| 烦闷是什么意思| 斑斓什么意思| 吃什么东西去湿气| 植物都有什么| 玉米除草剂什么时候打最好| 庙会是什么意思| 什么食物吃了会胀气| 月经量太少是什么原因引起的| 10.16是什么星座| 线粒体是什么| 玩得什么| 西铁城是什么档次的表| 离心是什么意思| 瓠子和什么相克| 润月是什么意思| 怀孕一个星期有什么症状| 什么是肺纤维化| 小人是什么意思| 李逵属什么生肖| 说话不清楚是什么原因导致的| 喝红糖水有什么好处| 逍遥丸主要治什么病| 什么食物含碘高| 死水是什么| 紫色是什么颜色调出来的| 人的五官是什么| 子宫内膜息肉有什么症状| 长期大便不成形是什么原因造成的| 舌苔紫色是什么原因| 岳飞是什么生肖| 气化是什么意思| 夏季喝什么茶| 男人精子少吃什么药| 什么是有氧运动| 小便分叉是什么症状| 为什么喝中药会拉肚子| 戴银镯子对身体有什么好处| 偈语是什么意思| elaine是什么意思| 肝钙化斑是什么意思| 公子是你吗是什么歌| 官方旗舰店和旗舰店有什么区别| 为什么有的女人欲太强| 什么牌子空调好| 荨麻疹可以吃什么食物| 湿疹有什么症状| 被蚊子咬了涂什么| 咳嗽吃什么食物好得快| 清华大学是什么级别| 炖羊肉汤放什么调料| 大暑是什么意思啊| 马云父母是做什么的| 螃蟹爱吃什么| 欲情故纵是什么意思| 激素六项什么时间查最好| 绿对什么| 小孩便秘有什么办法| 马的守护神是什么菩萨| 枭雄的意思是什么| 什么天空填动词| 什么叫单反相机| 兵工厂属于什么单位| 泊字五行属什么| 什么酒适合女生喝| 血沉高意味着什么意思| 月经不能吃什么水果| 前庭综合症是什么病| 鲭鱼是什么鱼| 怀孕做梦梦到蛇是什么意思| 68属什么生肖| 补钙吃什么好| 脑出血什么症状| 硫磺皂有什么作用| 口加个齿读什么| 卡马西平片是什么药| 梦见下暴雨是什么意思| 孕妇吃花生对胎儿有什么好处| com什么意思| 高压偏低是什么原因造成的| 甲状腺炎吃什么药好| 7o年属什么生肖| 盆腔少量积液是什么问题| 食欲亢进是什么意思| 为什么叫中日友好医院| 8月26日是什么星座| 真菌阳性是什么意思| 唠叨是什么意思| 一月六日是什么星座| 什么汤降火| 历法是什么意思| 村书记是什么级别| 喜筵和喜宴是什么意思| 糖类抗原153偏高是什么原因| 什么原因引起高血压| 生命的尽头是什么| 入赘什么意思| 儿童肚子疼挂什么科| 很多屁放是什么原因| 十二指肠球部溃疡吃什么药| 甘薯是什么东西| 脾阳虚吃什么中成药| 木耳与什么食物相克| 痔疮什么感觉| 鲷鱼是什么鱼| 什么里什么云| 一张纸可以做什么| 穆斯林为什么不吃猪肉| 朱元璋原名叫什么| 雷猴是什么意思| 手脚心发热是什么原因| 天人合一是什么意思| 心里发慌是什么病| 生殖细胞是什么| 姓彭的女孩子取什么名字好| 一个斤一个页念什么| 什么的竹叶| 五月11号是什么星座| 颜控什么意思| 宫腔占位什么意思| 一号来的月经排卵期是什么时候| 全身无力吃什么药| 火烧火燎是什么意思| 低压低是什么原因| 手背肿胀是什么原因| 胃恶心想吐吃什么药| 生抽是什么| 检出限是什么意思| 每天流鼻血是什么原因| 类风湿吃什么药好| 胃肠炎吃什么药| 保家仙是什么意思| 谷氨酰基转移酶低是什么原因| 婚动是什么意思| 八哥吃什么| 绿色衣服搭配什么颜色的裤子| 腿上起水泡是什么原因| 什么叫副乳| 1069是什么意思| 大姨妈不来是什么原因| 申时左眼跳是什么预兆| 2000年是什么龙| 第三产业是什么| 为什么会有狐臭| 梦见看电影是什么意思| 为什么人会流泪| 什么东西补血| 头顶长白头发是什么原因造成的| 张学良为什么不回大陆| 高大上是什么意思| 神经官能症吃什么药| 上海的特产是什么| 蚊子爱咬什么样的人| 益生菌治什么病| 左下腹是什么器官| 化骨龙是什么意思| 海豚吃什么食物| 什么咖啡最好| 钟是什么生肖| asic是什么意思| 舌苔发黑是什么病| 7月出生的是什么星座| 有什么烟| 西洋参和人参有什么区别| 燃烧卡路里是什么意思| 黄瓜和什么不能一起吃| 腹膜后是什么位置| 纳呆是什么意思| 虾不能和什么水果一起吃| cmf是什么| 五行大林木是什么意思| 子宫出血是什么原因造成的| 为什么8到10周容易胎停| 银黑了用什么可以洗白| 杞人忧天是什么故事| 心动过速吃什么药| 呦西是什么意思| 口腔溃疡买什么药| 很无奈是什么意思| 淋巴结发炎吃什么药| 231是什么意思| 被舔是什么感觉| 尾椎骨痛挂什么科| 端午节有什么活动| 宫颈肥大需要注意什么| 为什么都开头孢不开阿莫西林| 同型半胱氨酸是什么意思| 小猫咪能吃什么| 分泌物发黄是什么原因| 敢爱敢恨是什么意思| 江西特产有什么| 什么水果维生素c含量最高| 什么是低钾血症| 做梦梦到很多蛇是什么意思| 巫师是什么意思| 陕西的特产有什么| 山竹是什么季节的水果| 自来卷的头发适合什么发型| 什么水果美白| 梦见自己大便是什么意思| 叠是什么意思| 三点水一个条读什么| 麒麟到了北极会变成什么| 85属什么| 为什么会经常口腔溃疡| 慰安妇是什么| 取保候审是什么意思还会判刑吗| 中学为体西学为用是什么意思| 胃胀胃不舒服吃什么药| 肺大泡是什么病| 蜂蜡是什么东西| cim是什么意思| 水潴留是什么意思| 痰是棕色的是什么原因| 吃黄精有什么好处| 镇宅是什么意思| 孟子叫什么名字| 什么是水解奶粉| 酒干倘卖无是什么意思| 百度
DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Attention Kubernetes users! DZone is researching how K8s usage is evolving in 2025 — tell us the good, the bad, + the frustrating.

Getting Started With DevSecOps: This Refcard provides actionable insights for embedding security into your DevOps culture and workflows.

Data Engineering: Not your average "AI is changing everything" report. Dive into tooling, strategy, + systems in scalable data ecosystems.

Java Caching: This Refcard explores core caching concepts and demonstrates how to implement them using Java’s JCache API.

Related

  • Building a Performant Application Using Netty Framework in Java
  • Easily Update and Reload SSL for a Server and an HTTP Client
  • Principles to Handle Thousands of Connections in Java Using Netty
  • Digging Into Sockets With Java Flight Recorder

Trending

  • AI-Powered AWS CloudTrail Analysis: Using Strands Agent and Amazon Bedrock for Intelligent AWS Access Pattern Detection
  • Vibe Coding With GitHub Copilot: Optimizing API Performance in Fintech Microservices
  • The Golden Signals of Monitoring
  • Vibe Coding: Conversational Software Development — Part 3: Prompt Discipline

致精于艺 一场生活复兴在金石墅华彩上演

How understanding the fundamentals of software structure is a great way to earn job security.

By 
Edmund Kirwan user avatar
Edmund Kirwan
·
Updated Aug. 13, 22 · Opinion
Likes (4)
Comment
Save
Tweet
Share
9.6K Views
百度 川贝枇杷膏?我这里只有广州潘高寿的,没有香港产的那种。

Join the DZone community and get the full member experience.

Join For Free

Look, you want job security in the software industry? Here's how you do it.


Software Codes Rely on Fundamentals


There is no question that you can do a significant bit of good for yourself if you just learn how to work with 80% of the software based entirely on its fundamentals. This means that you may want to look at the core aspects of what makes a piece of software tick if you want to see how it can be improved. 


Right now, companies are offering handsome sums of money to those who can do things such as security testing their software or use other methods to improve upon the product they have already created. You just need to dig into what makes that software work and you are all set. People get pretty excited when they hear this, and they should! Make sure you learn how the basics of the software code work, and you are off to the races.


Examine software fundamentals, tease out the problems associated with those fundamentals and learn to solve those problems. These fundamentals are shared by all computer languages, across all applications, are unchanged in forty years, and are unlikely to change any time soon, as are their associated problems. Hence your workplace desirability.


The most fundamental of these fundamentals reveals itself in a trivial observation: software is composed of interacting parts. It has structure.

The timeless problem of structure is that when you change one part, you may also have to change others because these interacting parts interact. 


This means locking horns with your favorites: coupling and ripple effects. From a programmer's — and corporate accountant's — point of view, if a program's heavily coupled, its design is no good and only further investigation will tell. Low coupling does not imply good design but presents a crisp, inescapable prerequisite.


So, how do you tell — at a glance — whether a program's heavily coupled? You measure a property of its methods. Then you establish a threshold coverage — say, 80% 1 — such that only when 80% of the program's methods meet a certain property value can that program be considered loosely coupled. If it doesn't, that puppy's heavily coupled, and scrappage ensues.


So what property do you measure? How do you measure coupling 2?

Take method x() and count all the methods that depend on it directly or indirectly: that's your property. That's the impact set of x(), the most likely set of the methods that (in a worst-case scenario) might have to change when x() changes. That simply is the coupling.


Combining both ideas, your job-securing, lightning-fast program evaluation will look like this: 80% of this program's methods are depended upon by up to 10 other methods.


Or: 80% of this program's methods are depended upon by up to 17 other methods: Ugh. You really need me working here.


Or: 80% of this program's methods are depended upon by up to 23 other methods: my rate's doubling with every minute.


But... which figure do you choose? 10, 17, or 23? Is there an absolute figure for sloppy design? Well, no. But this litmus test allows us to compare any two programs. So let's turn the problem around and re-examine some java programs that this blog's already studied (and others besides) to find a nice low coupling figure to aspire to. Once we identify the good, all the rest will be bad.


Figure 1 shows the impact set for spring 3.2.0.rc1 3.

figure 1: spring's impact set

 Figure 1:  spring  's impact set. 

Yeah, so it's a CDF graph, and graphs put you in the kitchen at parties. But this one's interesting, honest: find 80% on the y-axis, follow it until it hits the curve, and read down to the x-axis. Thus: 80% of spring's methods are depended upon by up to 8 other methods. Is this good? Is this high or low coupling? We shall see.

figure 2: junit's impact set

Figure 2: the impact set of  junit  4.11. 

 

80% of JUnit's methods are depended upon by up to 9 other methods. We're going in the wrong direction. We want fewer dependent methods, not more.

figure 3: lucene's impact set

Figure 3: the impact set of  lucene  5.2.1. 

80% of Lucene's methods are depended upon by up to 9 other methods. No help here.

figure 4: log4j's impact set

 Figure 4: the impact set of log4j 5.2.1. 

 80% of log4j's methods are depended upon by up to 6 other methods  . Wow, that seems pretty good. Its 80th percentile impact set is 33% lower than, for example, Lucene's; you might say it's a substantial 33% less coupled. Well done, Log4j. But can we go lower?

figure 5: ant's impact set

 Figure 5: the impact set of  ant  6.2.1. 

 80% of ant's methods are depended upon by up to 8 other methods  . We're heading in the wrong direction again.

figure 6: fitnesse's impact set

 Figure 6: the impact set of  fitnesse  20151230. 

 80% of FitNesse's methods are depended upon by up to 10 other methods. Eeeewww…

figure 7: antlr's impact set

 Figure 7: the impact set of antlr 2.7.7. 

 80% of ANTLR's methods are depended upon by up to 12 other methods. Then we come to Netty. 



figure 8: netty's impact set

Figure 8: the impact set of  Netty  4.0.36. 

Just look at that jaw-dropping low coupling. 80% of Netty's methods are depended upon by up to just five other methods!

Here, then, is the gold standard. And Netty's no tiny, easy-to-design toy: it has 13,000 methods of loosely coupled gorgeousness. So if Netty's programmers can do it, why can't you?

And Netty's not even alone. Here's JGroups.

figure 9: jgroups's impact set

 Figure 9:  JGroups  ' impact set. 

And this little minx.

figure 10: spoiklin soice's impact set

Figure 10: the impact set of  spoiklin soice  . 

The conclusion may be drawn that building systems according to the 80% rule - with an 80th percentile impact set of just five methods or fewer - is a demonstrably achievable goal. Because it's achievable, larger 80th percentile values suddenly become commercially questionable.


So there's your job security: learn how to design programs as good as Netty and your pension's safe.

Summary

Yes, this post glossed over a slew of subtleties. The 80% threshold is arbitrary. Some programs might conceivably be less coupled with even higher thresholds. Everything described here is metric, and all metrics can be faked 4. and many more besides.


Despite this, the above metric seems to capture the age-old coupling phenomenon.

Do not think that coupling has been solved for a moment, and modern programmers have simply wafted on to other challenges. Fundamental problems do not "age" away. As you can see from the above examples, coupling continues to generate massive and unnecessary costs in our industry.


Yet clearly, some people can manage it better than others. The programmers of Netty look forward to comfortable retirements. Do you? Thanks to Mairbek for pointing out Netty as a design worthy of study.

Netty (software)

Opinions expressed by DZone contributors are their own.

Related

  • Building a Performant Application Using Netty Framework in Java
  • Easily Update and Reload SSL for a Server and an HTTP Client
  • Principles to Handle Thousands of Connections in Java Using Netty
  • Digging Into Sockets With Java Flight Recorder

Partner Resources

×

Comments

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

胸膜炎是什么症状 耽美是什么 月经病是什么意思啊 静脉曲张用什么药好 足贴为什么变黑出油
眼角痒用什么眼药水 免疫比浊法是什么意思 恩替卡韦片是什么药 胚轴发育成什么 微创手术是什么意思
女性检查生育挂什么科 b2是什么 磷高有什么症状和危害 眼睛粘糊是什么原因 什么颜色可以调成红色
请惠存是什么意思 海鲜过敏吃什么药 黄历破屋是什么意思 6月6日是什么日子 女性尿检能查出什么病
hrv是什么病毒hcv9jop4ns9r.cn 吃什么清肝火最快hcv8jop2ns8r.cn 长期喝酒有什么危害hcv9jop3ns5r.cn 大腿肿胀是什么原因hcv8jop4ns4r.cn 女性乳房痒是什么原因hcv9jop4ns2r.cn
刘邦是汉什么帝hcv8jop0ns0r.cn 五根手指叫什么hcv8jop8ns1r.cn 什么是周边hcv8jop5ns6r.cn 窗口是什么意思hcv8jop8ns6r.cn 房性逸搏心律是什么意思cj623037.com
三七粉什么时间喝好hcv7jop7ns2r.cn 扁平足是什么意思hcv7jop5ns1r.cn 脑内腔隙灶是什么意思hcv7jop9ns6r.cn 红霉素软膏治什么病hcv9jop5ns4r.cn 阴茎里面痒是什么原因hcv8jop5ns4r.cn
杜牧字什么号什么hcv8jop4ns2r.cn 妈妈a型爸爸b型孩子是什么血型hcv7jop5ns3r.cn esd手术是什么意思hcv9jop5ns8r.cn 益母草长什么样子图片hcv9jop1ns6r.cn 口什么心什么hcv7jop7ns2r.cn
百度