Agile Architecture and Design

  • Pradyumn Sharma
  • May 16, 2017

Tags: ,

What is (Software) Architecture?

Grady Booch puts it succinctly: “All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.”

Clearly, it follows that the architecture decisions need to be made with care and foresight.

Agile and Architecture

How do we establish the architecture for a software project in an agile manner? In agile methodologies, we build a system in short iterations, with focus on delivering working software to the customers in an incremental manner. Does that leave us with any time for architecture in a software project? Or do we reserve the first few iterations to creating the architecture?

Dedicating the first few iterations for architecture would be so waterfall-ish. Besides, committing to architecture decisions too early without validation can be very costly for a system.

But that does not mean that there is no architecture in an agile project. We do need to take architecture seriously even in agile projects. Neglecting the architecture, or crafting an inappropriate architecture is also very risky, and can lead to a system turning out to be too brittle.

Overview of Agile Architecture

The agile way to architecting a system is to evolve it iteratively, through initial envisioning, implementation of stories, refactoring and restructuring.

And a good way to accomplish this would be to:

1. Involve the entire team
2. Have an “architecture owner” role
3. Understand your product
(The key stuff)
4. Create an architecture vision
5. Establish architecture through stories
6. Model and implement incrementally.

Let us now look at each of the above points in some detail.

Involve the Entire Team

Agile teams are expected to be cross-functional. We strive to help each team member acquire and demonstrate skills in as many different roles (developer, tester, business analyst, database designer, UI designer, etc) as possible. So why not the role of architect also?

Involve the entire team in things like:

  • architecture discussion, evaluation, implementation
  • architecture reviews

and later:

  • technical debt sessions
  • refactoring and restructuring.

Encouraging every team member to participate in such activities leads to a shared understanding of the architecture, among all the team members.

Have an “Architecture Owner” Role

Identify one of the competent and experienced developers to play the role of “architecture owner”. This person should:

  • be a master builder
  • have the depth and breadth of knowledge and skills needed for architecture decisions
  • provide architectural leadership to the team in a collaborative manner.

The architecture owner:

  • brings the team together for all discussions regarding architecture envisioning and modeling
  • facilitates architecture modeling and evolution
  • helps in building a shared understanding of the architecture among the team members
  • helps the team members enhance their capabilities in understanding architecture principles and tradeoffs involved.

Understand Your Product

Diving in to build a product without having a broad understanding of the system (tunnel vision) is likely to result in an incomplete and inappropriate architecture.

Everyone in the team should have a good understanding of the product (the system) they are going to build. This understanding should include:

  • vision and broad scope of the product
  • key features and their purpose
  • the context in which the system will be used and
  • the constraints and expectations imposed by the context

Create an Architecture Vision

Establish a shared vision of the architecture for a system without committing to any specific architecture decisions.

When should one do this? Sprint Zero is the right time for this. And how? Through an architecture workshop. Organize the architecture workshop right after the team has understood the product vision and gone through the Product Backlog in as much detail as necessary.

Who participates in this workshop? As you can perhaps deduce from the earlier discussion, we involve all the team members in this workshop. And the Product Owner also. After all, architecture needs to be based on the requirements from a system (even if the Product Owner is unable to articulate the architectural requirements clearly).

Let us understand the activities in the architecture workshop now.

Identify the Desired Architecture Qualities

In consultation with the Product Owner, identify the important quality attributes for the architecture of the system. Examples of quality attributes (borrowed from “Software Architecture in Practice”, by Len Bass and others):

  • Portability
  • Modifiability
  • Performance
  • Security
  • Testability
  • Usability
  • Availability
  • Conceptual integrity
  • Accuracy
  • Concurrency
  • Customization points
  • Internationalization
  • Operations
  • Maintenance
  • Environmental impact
  • Reliability
  • Regulatory compliance
  • Serviceability
  • Support
  • Dependencies on external systems

Let’s consider a few examples. If we are building a search engine, we are likely to consider the following as important quality attributes for the architecture:

  • Performance
  • Availability
  • Portability

For a stock trading system, perhaps the following represent some of the important quality attributes:

  • Security
  • Dependency on external systems
  • Performance

Specify the Architectural Qualities

Be specific about what exactly is required for a given quality attribute for the system. For example, the specific security requirements for a system may include:

  • Preventing unauthorized access to data or services
  • Dealing with Denial of Service attacks
  • Non-repudiation (a transaction cannot be denied by any party)
  • Secure transmission of sensitive data

Similarly, the specifics of usability requirements may be:

  • Ability to save incomplete data as draft and resume later
  • The system should provide appropriate feedback about the state of completeness of a business process / long-running transaction / multiple-step data entry, etc
  • Ability to bookmark things / roll back actions in the system

Identify Strategies for Achieving the Desired Architecture Qualities

Next, the team should discuss the various strategies for achieving the desired qualities, including tradeoffs involved, without committing to any architecture at this stage. For example, some of the strategies for implementing security could be:

  • Authentication of users
  • Single sign-on
  • Authorization of users, limiting access
  • Audit trail
  • Intrusion detection system

Likewise, some of the strategies for meeting the usability requirements could be:

  • Separation of UI from the rest of the application
  • Providing feedback in the UI about what the system is doing
  • Letting the user issue commands such as Save as Draft, Cancel, Undo, Redo, etc
  • Using design patterns, such as Command and Memento
  • Maintaining a model of the task, or the system, or the user

Consider the Cross-Cutting Requirements

Identify the functional requirements that are common to many stories (cross-cutting), and consider their impact on the architecture, such as:

  • Audit trail of changes to the system
  • Notifications for important situations that need attention
  • Centralized error logging
  • Exporting data from any list views to spreadsheet files

Take Stock of Reusable Architectural Assets

Over a period of time, your organization may have built some reusable architectural assets, such as application frameworks, logging or error handling mechanisms, which may meet specific requirements of a project portfolio, or applications in specific domains, etc.

In addition, there are many general-purpose, third-party frameworks and toolsets available that address many of the architectural needs mentioned above.

Take stock of the internal as well as external, reusable architectural assets that may potentially meet some of the architectural needs for the system that you are going to build.

Prioritize the Architecture Features (Qualities)

You have a list of architectural qualities required from the system. We can also call them the architectural features of the system. Prioritize these, just as you would the functional stories of the system.

Prioritization would be based on the combination of:

  • Business value of an architecture quality for the customer
  • Cost of implementing early vs cost of implementing late

Add to the Prioritized Product Backlog

Turn the architectural requirement into stories. Add these to the Product Backlog, appropriately ordered by priority. The idea is that the architectural stories will be implemented like functional stories, so that we can test, evaluate and validate these and their appropriateness. Here is an example of a prioritized Product Backlog, with an intermingling of functional and architectural stories.

Establish Architecture through Stories

Pick the first story from the Product Backlog: maintaining the list of “Items” for stock and sale. Implement it the way you would. Identify the acceptance tests. Design the UI. Implement the UI, the business logic, the database operations, and whatever else is required. Run the acceptance tests. Ensure that the story is potentially shippable.

Next, pick the second story: implementing Layering and Partitioning in the “Items” story. Refactor the code from the first implementation to move UI, business logic and database logic in separate layers. Distribute these layers to run in different address spaces. Establish the connections between the layers. And run the acceptance tests again. Ensure that the story is potentially shippable.

At this stage, we have evolved a miniscule architecture, with just one architectural quality taken care of, but it is proven with the working code. Architectural stability and state of completeness, at this stage, is low. But we have taken our first baby step. And we are confident of what we have done. And ready to take the next steps.

We now take up the third story: creating the list of “Account Heads”. And then the fourth one: refactoring the “Items” and “Account Heads” stories to extract the common behavior into a “framework” for the application.

Again, we run all the acceptance tests. And ensure that the stories are all potentially shippable.

Model and Implement Incrementally

As illustrated in the previous section, architecture and design continue to evolve as the system is built. Keep in mind:

  • Model throughout the development lifecycle, in small increments.
  • Split large, complex stories into smaller, more manageable ones.
  • At the start of each iteration, during the Planning Meeting, have discussions on incremental modeling, design changes
  • Apply architecture and design patterns as required, gently
  • Keep investing in architecture across sprints

31 responses to “Agile Architecture and Design”

  1. security says:

    I think this is among the most significant information for me. And i’m glad reading your article. But wanna remark on few general things, The site style is wonderful, the articles is really great : D. Good job, cheers

  2. Hi there! This post couldn’t be written any better! Reading through this post reminds me of my previous room mate! He always kept talking about this. I will forward this article to him. Pretty sure he will have a good read. Thank you for sharing!

  3. Mark Foltz says:

    excellent points altogether, you just gained a brand new reader. What could you recommend about your post that you made a few days in the past? Any sure?

  4. I have not checked in here for some time since I thought it was getting boring, but the last several posts are good quality so I guess I’ll add you back to my daily bloglist. You deserve it my friend 🙂

  5. 流行時尚: 肥大型肌肉困擾者,可藉由注射肉毒桿菌的方式來瘦臉 流行時尚: 肥大型肌肉困擾者,可藉由注射肉毒桿菌的方式來瘦臉

  6. [今晚剝光洙] 炮友沉船4步曲 Marie Claire (HK) Edition 你以為天下間真的有長久不變的炮友嗎?那首先你要問自己是否願意做一份永遠不會升職加人工的工。炮友的成立起初只為好玩,但隨時間過去二人的關係會漸漸產生變化,甚至一步步面臨沉船,你要麼棄船,要麼成正印,看看

  7. Estee Lauder 雅詩蘭黛 【臉部彩妝】果漾繽紛頰彩盤 Exotic Shimmer All Over Highlighting Powder的商品介紹 Estee Lauder 雅詩蘭黛,臉部彩妝,果漾繽紛頰彩盤 Exotic Shimmer All Over Highlighting Powder,有網友推薦最新1

  8. That may be seriously attention-grabbing, You happen to be extremely expert tumblr. I have got joined a person’s rss and appearance onward to in search of even more of your current spectacular submit.. vlogger indonesia Additionally, I have distributed your website during my web sites

  9. 激光無創熱作用模式精準作用於陰道粘膜層、肌層,使陰道組織發生新生改變,修復由於順產而引起的損傷,解決一系列產後女性生殖系統常見問題。私密緊緻作用原理:刺激陰道粘膜固有層、粘膜肌層,使其膠原纖維、彈性纖維大量增生重塑;彈性纖維網修復,陰道收緊 SUI作用原理:恢復盆底正常解剖位置 陰道彈性纖維網得以修復,恢復到正常解剖位置避免了擠壓,牽拉尿道,使尿道角度恢復正常 盆底血供豐富,間接的使尿道括約肌得以修復進而停止漏尿或症狀減輕 私密敏感、潤滑作用原理:CO2微脈管作用,使血管重建、促進血液循環 血管活性腸肽(VIP)和神經肽Y(NPY) 表達增加,敏感度增加 血流量增加,陰道上皮細胞功能增加、陰道粘膜自分泌功能增強,潤滑度增加

  10. VENUS VIVA says:

    IELLIOS是由歐盟資助倫敦大學細胞重建研究所研究. 採用諾貝爾生理醫學獎科技 , 透過”納米能量電流” 以最親膚與迅速導入的方式 , 利用電腦化系統去令皮膚再生 , 令皮膚組織在無創傷的情況下自然更新及收緊 . 這治療是無創無痛的 . 完成治療後亦沒有傷口 . 我們是香港第一引入IELLIOS的機構 , 醫生會根據客人不同情況去為你設計不同的組合 .在外國IELLIOS受到很多荷里活明星, 歌手以至政客的追棒 , Madonna的facialist kate somer -field就常用IELLIOS為她護理肌膚 , 令52歲的她肌膚輪廓均保持於30歲的狀態. IELLIOS的訊號技術,採用心臟起博起原理,活躍無法正常運作的心臟細胞。訊號技術可活化及修復愛損皮膚,透過傳送訊號,激活靜止的細胞。IELLIOS的訊號技術給予細胞指令,引發細胞再次生長,令肌膚重回年輕。

  11. 通過水光療程抑制黑色素細胞生長的成分注射到真皮層,減少黑色素形成,淡化黑斑色素沉澱,從而達到美白祛斑的效果 療程特色 :可配搭多元化產品來量身訂做不同療​​程計算機化規格,操作方便,容易控制可調節進針深度,精準注射於目標的肌膚層 每針的注射劑量相等,達到均勻注射 一次平均5點注射,可縮短療程時間 採用31號細針頭,幾乎看不到入針點 降低疼痛、瘀血、腫脹及不適感 使用靈活度高,可複合式搭配針劑,量身訂製療程

  12. ~100 預防高危致癌的 HPV 16、18 型號 (可減低 70 患子宮頸癌的風險) ~100 減低引致生殖器官濕疣 (俗稱「椰菜花」) 的 HPV 6、11 型的感染 (可減低超過 90 患生殖器官濕疣的風險) HPV4合1子宮頸癌疫苗 Gardasil HPV病毒會感染人類的皮膚及黏膜,一般會透過性接觸及親密的皮膚接觸而受到感染,是一種男性與女性都可能感染的常見病毒。可感染身體各個部位的HPV超過100種,當中有部份的HPV類型可影響生殖器部位,導致生殖器疣(genital warts) 、子宮頸細胞異常(abnormal cervical cells) ,甚至子宮頸癌 (cervical cancer)。 4合1 HPV 子宮頸癌疫苗,覆蓋4種高危HPV病毒:6、 11、16及18型(約70的子宮頸癌由HPV16和HPV18病毒引致),有助預防子宮頸癌、外陰癌、陰道癌及生殖器官濕疣

  13. IELLIOS是由歐盟資助倫敦大學細胞重建研究所研究. 採用諾貝爾生理醫學獎科技 , 透過”納米能量電流” 以最親膚與迅速導入的方式 , 利用電腦化系統去令皮膚再生 , 令皮膚組織在無創傷的情況下自然更新及收緊 . 這治療是無創無痛的 . 完成治療後亦沒有傷口 . 我們是香港第一引入IELLIOS的機構 , 醫生會根據客人不同情況去為你設計不同的組合 .在外國IELLIOS受到很多荷里活明星, 歌手以至政客的追棒 , Madonna的facialist kate somer -field就常用IELLIOS為她護理肌膚 , 令52歲的她肌膚輪廓均保持於30歲的狀態. IELLIOS的訊號技術,採用心臟起博起原理,活躍無法正常運作的心臟細胞。訊號技術可活化及修復愛損皮膚,透過傳送訊號,激活靜止的細胞。IELLIOS的訊號技術給予細胞指令,引發細胞再次生長,令肌膚重回年輕。

  14. 當蛋白線埋入皮膚後,皮下組織會將蛋白線視為異物,啟動異物反應,因此刺激膠原蛋白生長,且可促進新陳代謝,更新老化肌膚,所以客戶在術後也會發覺膚質變得較透亮白皙。膠原蛋白提拉線像一個“磁力線”一樣,將埋入處附近的肌肉和脂肪固定在原處,不會往下墜,其後會吸引皮下組織往蛋白線集中部位移動,就會逐漸產生提拉的緊實效果。也被用於填充美容的微整形,蛋白線材就好比蓋房子的鋼骨支架,先埋入皮膚當作基底結構,然後再注入好比水泥的玻尿酸或自體脂肪,因為有吸附力不易擴散,就可穩定固定住填充物,讓立體支撐力效果更好。

  15. 高能聚焦量超聲波( HIFU )以物理性聚焦集中成一點, 快速穿透皮膚真皮及脂肪層面直達面部表淺肌肉腱膜系統( SMAS )層令其組織細胞分子高速磨擦 , 瞬間升溫至60 -70 度,令整個表淺肌肉腱膜系統( SMAS )受熱收縮,形成熱固化區域, 令結綈組織同時拉緊,達到拉皮防皺及美容效果。SMAZ聚焦超聲波提供了最有效的HIFU能量收緊皮膚及刺激胶原蛋白新生,提升彈性,恢復更緊緻的皮膚和更年輕的美貌。

  16. 游衣 says:

    青春雖然一去不返,但如果有機會,你又會唔會重新捉緊青春嘅尾巴?CLEVIEL 高濃度透明質酸 就為你打開人生新一頁,令你嘅肌膚重新充滿光澤,回復年輕彈性! 同惱人皺紋等老化現象Says Goodbye!CLEVIEL Prime 功能: 提升 ◆ 結構提升◆ 改善臉部輪廓◆ 新加入無痛配方 最佳適用範圍: ✔前額 ✔太陽穴 ✔顴骨 ✔面頰 ✔虎紋 CLEVIEL Contour+ 最佳適用範圍:✔鼻 ✔下巴 ✔虎紋

  17. F1064 says:

    大部份曾經生育或經歷更年期的女性都會面臨私密深處及外觀鬆弛問題,不單會影響自信心和伴侶的親密體驗,更有機會造成容易積菌及尿滲等健康問題。全港首部 Venus Fiore閨密儀 RF射頻 私密緊緻療程 專門針對私密各處包括陰道、陰唇及陰阜的專用治療頭,全面改善鬆弛問題;每個治療頭均採用一次性即棄治療蓋,確保衛生。還有ATC自動控溫綜合系統,讓療程的治療溫度被有效監控,療程自然更安全、更有效達至預期效果。全港首部 Venus Fiore閨密儀 RF射頻 私密緊緻療程Venus Fiore集中為女性私密之處提供最到位的呵護,專注重整陰道健康、收緊鬆弛陰唇和改善陰阜肥大問題。關鍵在於Venus Concept的王牌─糅合多極射頻與磁力脈衝的(MP)2磁頻專利技術,發揮提升細胞活躍度、重塑同時增加膠原蛋白、刺激毛細血管新生等作用,達至調整陰道濕潤度、pH值的效果,更重要的是顯著改善陰道彈性,使其回復年輕狀態。

  18. 眼睛無神 says:

    由全球生長因子與胜肽韓國廠商CAREGEN研發,利用美國專利「KP7-4胜肽技術」,獨特滲透配方提供高穩定、高滲透、高效能的胜髮環境,模擬人體生髮機制,目的使頭皮、毛囊恢復健康及作用活性,重啟生髮系統。DR CYJ髮胜肽療程的治療原理為 利用複合活性成分配方恢復毛髮平衡, 根據生態生物工程原理研發, 關鍵胜肽名為KP7-4,結合了七種專利胜肽, 實驗證明能有效模擬「人體胜髮因子」,掌握育髮四關鍵:毛囊強健、減緩異常落髮、強化髮根、供給毛囊血管營養,模擬毛髮循環機制,同時減緩異常落髮及強化髮根。DR.CYJ髮胜肽不含藥性且無副作用,能有效促進增髮

  19. 淨化 says:

    SMAZ換能器傳送更穩定,更安全,更有效,和疼痛更少的HIFU能量。 SMAZ不需要應用較高的能量便可到達浅肌肉腱膜層。主要治療:-抬頭紋 -眉間紋 -鼻樑紋 -魚尾紋 -法令紋 -淚溝 -木偶紋 -垂直唇紋 -嘴角紋 -頸紋

  20. Google Adwords 關鍵字廣告

  21. 全「身」趨勢!LSD真空無痛技術,無需使用冷凍啫喱,比傳統激光脫毛更安全,更舒適,更快捷。腿部背部永久脫毛,只需15分鐘!最快激光脫毛科技 配以22x35mm 及 9x9mm 治療機頭,比其他品牌之24mm為大,覆蓋肌膚範圍更廣。 因而更能縮短療程時間及次數。專為亞洲皮膚而設 因應不同膚色設定不同能量,無論膚色較深或較白均適用 最舒適及最有效的激光脫毛體驗 (與755nm及1064nm作比較) 設真空脫毛技術 LUMENIS LightSheer® Desire 激光脫毛儀備有真空脫毛技術,令激光能量更集中聚焦,達至更快及更有效之療程效果。

  22. ION MAGNUM says:

    FineScan 會在肌膚上製造數以千計的細小深入傷口,即所謂的顯微加熱區(microthermal zone),但要確保每次治療時皆有部份組織不受能量影響,於是,每一個顯微加熱區的作用雖然強烈而明顯,但周圍都包覆著正常且結構完整的皮膚組織,使傷口能在短時間內癒合,並替換之前有缺陷的受損組織。Finescan不僅可讓表皮新生,更可促進深層膠原再生,從內而外徹底喚醒細胞,瞬時找回年輕時的肌膚狀態。憑藉最新的雙軸技術,FINESCAN 6可治療 – 面部 – 頸部 – 暗瘡凹凸洞 – 增生性疤痕

  23. Sculptra 含有由含有源於植物果酸的 PLLA 聚左乳酸(poly-L-lactic acid),它能促進天然膠原蛋白大量增生,令容顏重現年輕,一個療程的效果能持續逾2年。Sculptra 乃全球唯一獲美國食物及藥物管理局(美國FDA)認可的PLLA聚左乳酸美容品牌。Sculptra 塑然雅會被人體自然分解吸收,同時促進天然膠原蛋白再生1。療程效果可以漸進地給你更富清新朝氣的容頻,效果自然,更不會影響面部表情。SCULPTRA 塑然雅 Sculptra 由含有源於植物果酸的PLLA聚左乳酸(poly-L-lactic acid),它可以被新陳代謝成二氧化碳及水,最終自體內排出。PLLA聚左乳酸早已被廣泛應用於醫療用品超過30年,自2009年起 Sculptra 及全球唯一獲美國FDA認可的PLLA聚左乳酸美容醫學品牌。Sculptra ® 塑然雅能促進天然膠原蛋白大量增生1,改善皺紋,令容顏重現年輕。全球唯一獲美國FDA認可PLLA聚左乳酸。臨床研究證實於3個月間,肌膚的膠原蛋白密度 顯著增加67%2。療程效果能持續愈2年3。主要成份PLLA聚左乳酸源於植物果酸,醫學界廣泛使用超過30年。

  24. CRM客戶管理系統整合

  25. 本地搜尋引擎最佳化

  26. 激光無創熱作用模式精準作用於陰道粘膜層、肌層,使陰道組織發生新生改變,修復由於順產而引起的損傷,解決一系列產後女性生殖系統常見問題。私密緊緻作用原理:刺激陰道粘膜固有層、粘膜肌層,使其膠原纖維、彈性纖維大量增生重塑;彈性纖維網修復,陰道收緊 SUI作用原理:恢復盆底正常解剖位置 陰道彈性纖維網得以修復,恢復到正常解剖位置避免了擠壓,牽拉尿道,使尿道角度恢復正常 盆底血供豐富,間接的使尿道括約肌得以修復進而停止漏尿或症狀減輕 私密敏感、潤滑作用原理:CO2微脈管作用,使血管重建、促進血液循環 血管活性腸肽(VIP)和神經肽Y(NPY) 表達增加,敏感度增加 血流量增加,陰道上皮細胞功能增加、陰道粘膜自分泌功能增強,潤滑度增加

  27. removal says:

    JUVEDERM由透明質酸Hyaluronic Acid(一種天然多醣體)製造而成,並具有幼滑及高凝聚力的配方。透明質酸(HA)是皮膚組織的主要成份之一,能自然存在於人體肌膚內 JUVEDERM所用的透明質酸非由動物身體提取,可鎖住水份保濕皮膚,從而增加皮膚密度並改善質感 Juvederm 玻尿酸 加強優化面部輪廓,可被身體完全吸引,能自然地修飾面部輪廓 功效可長達24個月以上 JUVEDERM的特點: 效果立即可見 非永久性 非手術性 安全有效 效果自然 JUVEDERM獲歐盟(CE)及美國及藥物管理局(FDA)認證 首先及唯一獲得FDA認證在首次療程後能維持長達一年2-4功效 新世代專員Hylacross科技為產品帶來獨特的物理特質,包括凝聚力、支撐力及柔順度 這是一套由全球著名醫學美容醫生Dr. Maurício de Maio,以JUVÉDERM®系列透明質酸產品為基礎而研發的面部優化療程,藉著簡單程序便達致面部優化效果,不需進行手術,減低風險。

  28. 熱能 says:


Leave a Reply

Your email address will not be published. Required fields are marked *

© 2017 Pragati Software Pvt. Ltd. All Rights Reserved.