Skip to main content

Booch lectures and Architecture of Software

Building a information system as well as building a house, a structure of complexity as social, or even universe.
You can write a song without any note,  rhythm. All form a simple structure.
Things and all their relationship between things make what we see today.
Some philosophy here




Now begin my summary from his lectures:
  • Current trends in software architecture
web-centric systems going back
for many web systems, dynamic frameworks such as what we find in Ajax or Java Server Faces or Ruby on Rails. As we project forward we can see the beginnings of a new kind of web architecture such as surrounding the semantic web.
software engineering involves the resolution of a variety of forces. There are business forces, environmental forces, development forces, operational forces, and even legal and ethical forces.

building a system with a balanced distribution responsibility

there's a very common practice I find among those organizations that are successful and notably absent from those who are not successful. And it's simply this -- those hyper-productive organizations tend to grow a systems architecture through the incremental and iterative release of executables.

what is an architecture?
Software architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and the environment and the principles governing its design and evolution.

Why do we care about software architecture?
A process that is centered around growing an architecture is one that is risk confrontive, it's one that focuses upon simplicity and it's one that deals with building systems that are resilient to change. In short, in software engineering, an activity that focuses around the growing of an architecture is very much one that is a fundamental engineering process.
software architecture is "they architect software".
  • Review the role of the architect
Architecture can be represented in a single blueprint ?? UML, Merise,... ? there are multiple stakeholders with different views and different concerns and therefore architects build models to reason about these architectural decisions.
What is model ? A model is a simplification of reality created in order to better understand the system being created and therefor a model is a semantically closed abstraction of the system. Each model takes a look at a system from a particular view, and we define view as a representation of a whole system from the perspective of a related set of concerns.
Why software contain complexity ? complex systems is that we know we need multiple views, but It's also the case that not all systems require all views. 
Booch's example "If I have a simple system with a single process I can ignore process issues." or "If I have a data intensive system I'll need to look at data schemes more intensely."
Can we classify all view of system ? yes, "logical process, implementation, deployment, and use-case views."
In Merise, the methodology for analyzing information sytem at enterprise level, the another approach from French, " Conceptual view, logic/organizational view and physical view." The conceptual communication view, we can see it has same ideas with use case view in Booch's approach.
With Booch, 
logical view + process view = conceptual view 
logical view = vocabulary of the problem space and solution space, decomposition, interfaces, the collaborations of logic + process = system's use cases
logic "==>" functionality, key abstractions, mechanisms, separation of concerns, distribution of responsibilities
process view = threads + processes that form the system's concurrency + synchronization mechanisms
process "==>"  performance + scalability, + throughput
implementation + deployment  = the physical aspects of a system.
implementation "==>" configuration management
deployment is "platform" , "==>" distribution + communication + and provisioning
use-case  =  logic + process + implementation + deployment 
Why do we care about this representation? We model our architectures from multiple views in order to codify our design decisions, in order to reason about those decisions, and finally and most importantly, to transform those decisions into executable code.
Booch's conclusion is "Architectures are important. They are essential to building quality systems."
For my career as software architecture "Software architecture is an important activity among the stakeholders of building economically interesting systems, and as such the profession of architecting in software is one that is growing into an identifiable set of activities."
What about working as information architecture in IT industry ??
Maybe in next post 

Comments

Popular posts from this blog

Netty Cookbook - free ebook for Java Developer

Introduction Netty.io is a popular open source library that greatly simplifies the development of network applications on top of the JVM.  It abstracts the burden to deal with tedious low level details and allows you to concentrate on your business logic instead.  It is used by high profile companies like Red Hat, Twitter or Facebook and designed from the ground up to handle high throughput at low latency, even with thousands of connections at the same time. In this book, you are going to build both client and server using netty best practices, which are communicating with each other in a completely asynchronous fashion.  We are going to explore the netty pipeline, how you can reuse existing protocol handlers and how to write your own. Source code for book  https://github.com/trieu/netty-cookbook Table of Contents Chapter 1: Communicating in Asynchronous World with Netty (15 pages) Introduction Recipe 1.1 Building an asynchronous TCP server and client Recipe 1.

Vì sao chúng ta cần ứng dụng Dataism cho đời sống

Dataism là một triết lý cho rằng dữ liệu là nền tảng của thực tại.  Theo triết lý này, dữ liệu là thứ tạo ra mọi thứ, từ các sự kiện trong thế giới thực đến suy nghĩ và cảm xúc của con người. Trong bối cảnh cuộc cách mạng công nghiệp 4.0 và sự phát triển mạnh mẽ của công nghệ thông tin. Tên gọi "Dataism" được đặt ra để mô tả một quan điểm cho rằng dữ liệu, đặc biệt là dữ liệu số và thông tin, chính là một nguyên tắc lớn trong tự nhiên và xã hội. Nguyên gốc của Dataism không thể được liên kết chặt chẽ với một cá nhân hay tổ chức cụ thể, nhưng một số tác giả và nhà nghiên cứu nhất định đã đóng góp vào việc phát triển và mô tả triết lý này. Một số tác giả nổi tiếng trong lĩnh vực này bao gồm: Yuval Noah Harari: Tác giả của cuốn sách nổi tiếng "Sapiens: Lược sử loài người" và "Homo Deus: Lược sử tương lai", Harari đã đề cập đến khái niệm Dataism trong việc mô tả sự tiến hóa của con người và xã hội.  https://dataethics.eu/humanism-dataism-future-scenario/ Wiki

Các lý thuyết tâm lý học cổ điển về động lực sống của con người

Hôm nay, mình viết 1 bài post tóm tắt theo kiến thức cơ bản về tâm lý học, theo những gì mình đã đọc + kinh nghiệm sống của cá nhân mình.  sự thật thú vị là Sigmund Freud là thầy của Carl Jung và Adler. Điểm chung:  cả 3 Bác đều tập trung nghiên cứu về các nguyên lý cơ bản mà tâm trí, ý thức của con người hoạt động.  Bản chất là các dữ liệu trong bộ não, ở trạng thái vô thức ảnh hưởng trực tiếp đến cách con người nhận thức về thế giới xung quanh họ, bao gồm cả đạo đức, cách suy nghĩ, cảm xúc và ý chí.  Một người không thể hành động mà không có 1 động lực tác động trong suy nghĩ của họ, nó phải có nguyên nhân. Hầu hết các nguyên nhân nằm trong mode "vô thức", bạn rất ít khi tự nhận ra chúng  Điểm khác biệt và đặc trưng: 1) #SidmundFreud  mô hình tâm lý của Freud tập trung vào  1.1 cõi vô thức con người,   1.2 tình dục và động lực sinh sản là năng lượng chính trong cõi vô thức 1.3 các chấn thương tâm lý nhưng bị ý thức kiềm chế lâu ngày 1.4 các ham muốn (như ham muốn tình dục)