Wednesday, May 25, 2011
Architectural views in practice
Integration is always an in issue in large projects that has some form of iterative development. With the increasing inter-dependencies between various parts of the system it is almost impossible to know what should be integrated when, for example what can actually be tested. There actually is already an architectural view defined that addresses this concern, the anatomy. I would describe the anatomy as visualisation of the complete system seen from an integration perspective, for example if a feature depends on a MOST interface it is no use to test it if the interface is not implemented. The visual picture means everybody should have the same understanding of the “.
The anatomy should dictate the order of development, delivery schedules and integration order. And the progress should be measured in how much of the anatomy is implemented, not in customer features. There is a relationship between customer features and the anatomy, but it is not one-to-one. you can read more about “Integration Centric Development and Anatomies” in a PowerPoint presentation or the article “Manifesting Shared Affordances in System Development – the System Anatomy” by L. Taxén and J. Lilliesköld.
The second view is the systems view, i.e. how the complete system is decomposed in smaller parts. I prefer to see this view as equivalent to the development view in Kruchten’s 4+1 views, i.e. it is aligned with the development teams. One can discuss if the system decomposition follows the organisation, as predicted by Conway’s law. The other extreme is that the development teams follow the most “logical” decomposition, i.e. ECUs, which is the most common unit to be outsourced to suppliers in the automotive domain.
The functional content of a vehicle is often defined by a list of customer features, which can be quite long, and this in itself can be considered an architectural view that concerns for example the business project, the marketing department and the end customer.
What is important for the development project is the relationship between this feature list and the two other views, i.e. what systems/development teams are responsible to implement the features and how the features relate to the anatomy. I don't know if these two relationships/mapping between views should be considered as separate views, which would make the total number of views 3+2.
Wednesday, February 23, 2011
Jävla skitsystem!
The heading is actually the title of a Swedish book about how people can be stressed in a digital working environment. I think this is one of the most important books written about IT-systems and the problems they can bring on a personal level for the people who are forced to using them. Too bad is is not translated to English (yet?).
It is not a technical book, the primary audience are people using IT systems, secondly it is targeted at people planning and buying IT systems. It systematically lists 8 major stress factors and what can be done about them. Not all are caused by ignorant developers...
I think it is very valuable to read for people developing systems, so much I would make it mandatory reading for students in software engineering, if only it was published in English. There is some information in English, including a short slide presentation.
You can buy the book directly at the website or at major Swedish online bookstores.
Wednesday, November 10, 2010
More on quality attributes
Thursday, October 28, 2010
Quality attribute scenarios
Before you get too excited, you should know it’s easier to write these for quantitatively measurable qualities (e.g., throughput, latency) and harder for softer qualities (e.g., modifiability, usability).There are two recent books that have a more agile approach to architecting: Lean Software Architecture by Coplien and Bjørnvig, and George Fairbanks' Just Enough Software Architecture: A Risk-Driven Approach. Unfortunately the latter isn't available in any Swedish internet bookstore, but as soon as I get hold of them I will post a review, as I have reviewed other books on software architecture.
Sunday, August 29, 2010
The future of software architecture research?
First, how much effort should be put into architecting? In industry there never are unlimited man-power and indefinite time plans. So how do you know that you have done enough architecting? Or did too many people working with the architecture for a too long time? Or when are the gains in putting another man-hour too small to make it worthwhile?
Second, how to define an architecture based on imperfect premises? In practice the architects never have the full picture. There might be requirements missing, stakeholders unavailable or implicit constraints. Similarly the architects themselves are no super-humans, there will be inconsistencies in what they do, things forgotten, lack of crucial knowledge or personal biases, all which cause an imperfect architecture.
Personally I think that these two areas are more important from an industrial viewpoint than further software architecture research on Architecture Description Languages, formal methods or Service Oriented Architectures (the latter may be contested, but I think I am not alone).
At the 4th European Conference on Software Architecture the workshop in imperfect architecture was cancelled, probably due to too little interest (I heard only 3 papers were submitted). On the other hand I found 7 papers when I scanned the LNCS proceedings which in their title relates to the subjects above.
I don't find this very promising. Eoin Woods had a similar conclusion on the state of software architecture research at his ECSA talk when talking about the relationship between code and other design information, such as architecture, where he thought the academic research and the industrial needs are diverging and not converging.
You can also read this related column from IEEE Software: The Top 10 Burning Research Questions from Practitioners. Especially #4 "Architecture and agile—how much design is enough for different classes of problem?" should get more attention at software architecture conferences.
A colleague of mine at Volvo had an interesting proposition: Since software engineering as a dsiciplin comes from the practitioners the research community wants to keep some distance, in contrast to the "fundamental" researchers in e.g. physics who would be enthusiastic if somebody is interested in applying their theories.
Thursday, June 24, 2010
Blogs
- Heartbeat Development by a former colleague of mine, Johan Segertoft
- SEI Architecture Technology User Network Blog
The latter had in a recent post some links to other blogs which also deals with architecture.
Wednesday, October 28, 2009
"The Concise Handbook of Real-Time Systems"
I found the booklet to be a very usefull distillation of the most important concepts when designing real-time software. I even ordered some more copies for interested collegues. I hope more developers will be familliar with the content, it would prevent a number of problems...
I don't think the booklet can be ordered any more from the original company, but a quick googling found a later version in PDF here.
Wednesday, October 7, 2009
Agile and Architecture
Caveat: My background is in automotive software, and there seems to be no business domain which is less agile than automotive...
Architecture is up-front design, so if no upfront design is important in you agile practice, then I claim the architecture will rather be manifested by your code than the result of making concious decisions between architectural alternatives. The question is if you could have a light architecture so that you avoid a big upfront design (BUD) and allow the architecture to evolve in parallel with the software while it still guides and controls the software development.
Most agile practices focus on delivering the functional behaviour (use cases, user stories, or whatever), which drives the software. Contrary to this architecture focuses on satisfying the non-functional properties as well, i.e. quality attributes which usually are system-wide. I think deciding between these two focuses is really a business decision on how you want the team to work. If the former is more important then you don't have the same need of someone preforming the role of an architect. If the latter is important it will be difficult to succeed if you don't empower them.
I have heard studies of agile practitioners that claim that non-functional properties are solved in re-factoring (for example one study by M.A. Babar at the experience track at the WICSA 2009 conference). I claim that some properties cannot be solved by re-factoring, for example in the development of safety-critical systems. But agile practices should perhaps never be used for development of those?
There seem to be a trend to use agile synonymous with no or little documentation. I don't mind having small architecture descriptions (AD). A possible problem: If the rationale is omitted to make the AD smaller, I think the value of the AD will be significantly less.
If I read the Agile Manifesto there is nothing that says you should de-emphasise a guiding architecture...
Some texts, blogs and presentations can be found with a little googling:
Software Architecture and Agile Software Development —An Oxymoron? by P Kruchten
Agile Architecture: Strategies for Scaling Agile Development by Scott W Ambler
Software Architecture-Centric Methods and Agile Development by Nord and Tomayko
The Formal Goodness of Agile Software Architecture, part 1 and part 2 by Dave Langer
Architecture Meets Agility by Hakan Erdogmus in IEEE Software
There is also a forthcoming book with the title "Lean Software Architecture" by Coplien and Bjørnvig, forthcoming in May 2010. They have some interesting links and excerpts on their website.
Wednesday, September 23, 2009
Software architecture book reviews
- Software Architecture in Practice by Bass, Clements and Kazman
- A Software Architecture Primer by Reekie and McAdam
- The Process of Software Architecting by Eeles and Cripps
As a student text I think the main strengths is it's treatment of terminology and concepts, which also makes it useful as a reference.
A potential problem with this text is that the examples are vey high level. You need experience based in actual programming projects to see the connection between the examples in the book and actual implementations. It is also comparably weak in teaching how to design a top-level desing as part of an architecture. I would say this book is suitable for students at the end of their education.
A Software Architecture Primer is targeted directly to a student audience. I would say it is better if the knowledge in an architecture course should be used in later courses, e.g. a larger project course with co-operating teams, since it is more pragmatic and hands-on in defining a top-level design. Likewise I would guess it could suit a professinal who wants to start creating "simple architectures".
The Process of Software Architecting is the best (and may be the only one) that actually defines the process elements and tasks of architecting and how they would fit in a larger software development process. I would say this book is the best one for the professional architect that wants to more formally define or improve what they do; what inputs to use, what tasks to perform and what should be delivered. It may be suitable for students, but the process focus may make it harder to relate to, e.g. it would give very little help as a preparation for a student project course.
I like all three books and they all have their (different) purpose. Which book to get depends on who you are and what you intend to do or to learn. For a student in the first course on architecture I would suggest the Primer. As a S/W professional who wants to understand what an architect is talking about and why, go with SAiP. For a working architect who wants inspiration for improvement, go with the Process book.
Background: I got the opportunity to take a sabbatical semester from Volvo to teach an undergraduate course on software architecture and design of complex systems at the IT University in 2006. For various reasons I redesigned the entire course from scratch, with a few constraints; the teaching methodology should be a light version of problem-based learning (PBL) already established at the IT University, and the course book was already ordered by the university bookstore "Software Architecture in Practice" by Bass, Clements and Kazman.
I had no real problem with the choice of textbook, and it suited my intended course content quite well. I also thought the PBL methodology fitted very well with the topic of software archtiecture after the course.
I think the course was a success, it received praise form the students as one of the most interesting courses they had taken during their program, and I was very satisifed with the level of knowledge the students showed on the final exam.
Thursday, May 28, 2009
Student Presentation on Software Architecture
I found the following presentation made by some of the students of the Software Engineering & Management at the IT University. I'm impressed that they managed to boil down almost a full course to a single presentation with a rather light touch (yes, there are some technical details that could be discussed, but nevertheless).
I wish I could take credit for being their teacher, but I only gave a single lecture in their architecture course.
Software Architecture Presentation
Wednesday, April 15, 2009
References in paper about the Architecture Business Cycle
AUTOSAR, 2009. AUTomotive Open System ARchitecture (AUTOSAR). Available at: http://www.autosar.org.
Bachmann, F. & Bass, L., 2001. Managing variability in software architectures. SIGSOFT Software Engineering Notes, 26(3), 126-132.
Bass, L., Clements, P. & Kazman, R., 2003. Software Architecture in Practice 2nd ed., Addison-Wesley.
Berg, B.L., 2006. Qualitative Research Methods for the Social Sciences 6th ed., Allyn & Bacon.
Broy, M., 2006. Challenges in automotive software engineering. In Proceedings of the 28th international conference on Software engineering. Shanghai, China: ACM, pp. 33-42. Available at: http://portal.acm.org/citation.cfm?id=1134285.1134292 [Accessed December 18, 2008].
Conway, M.E., 1968. How Do Committees Invent? Datamation. Available at: http://www.melconway.com/research/committees.html.
IEEE, 2000. Recommended Practice for Architectural Description of Software-Intensive Systems. Available at: http://standards.ieee.org/reading/ieee/std_public/description/se/1471-2000_desc.html.
ISO - International Organization for Standardization, 2003. ISO standard 11898: Controller Area Network (CAN). Available at: http://www.iso.org/ [Accessed December 28, 2008].
Kazman, R. & Bass, L., 2005. Categorizing Business Goals for Software Architectures, Carnegie Mellon Software Engineering Institute. Available at: http://www.sei.cmu.edu/pub/documents/05.reports/pdf/05tr021.pdf.
Kazman, R. et al., 2005. The Architecture Business Cycle Revisited: A Business Goals Taxonomy to Support Architecture Design and Analysis. news@SEI. Available at: http://www.sei.cmu.edu/news-at-sei/columns/the_architect/2005/2/architect-2005-2.htm [Accessed December 18, 2008].
LIN Consortium, 2008. Local Interconnect Network (LIN). Available at: http://www.lin-subbus.org/ [Accessed December 28, 2008].
McDermid, J.A., 2000. Complexity: Concept, Causes and Control. In Proceedings. Sixth IEEE International Conference on Engineering of Complex Computer Systems, ICECCS. p. 2–9. Available at: ftp://ftp.cs.york.ac.uk/pub/hise/Complexity-Concept,Causes & Control.pdf.
Melin, K., 1998. Volvo S80: Electrical system of the future. Volvo Technology Report, 1, 3-7.
MOST Cooperation, 2008. Media Oriented Systems Transport (MOST). Available at: http://www.mostcooperation.com/ [Accessed December 28, 2008].
Noergaard, T., 2005. Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers, Newnes.
Pretschner, A. et al., 2007. Software Engineering for Automotive Systems: A Roadmap. In 2007 Future of Software Engineering. IEEE Computer Society, pp. 55-71. Available at: http://portal.acm.org/citation.cfm?id=1253532.1254710 [Accessed December 28, 2008].
Reichart, G. & Haneberg, M., 2004. Key Drivers for a Future System Architecture in Vehicles. In Proc. Convergence 2004. Detroit, MI, USA: SAE. Available at: http://www.sae.org/technical/papers/2004-21-0025 [Accessed March 9, 2009].
Smallbone Tizard, D., Wallmark, J. & Warrby, T., 2007. Architecture and Change: A Case Study Using the Architecture Business Cycle for Assessing an Organisation Facing a Major Architectural Change, Göteborg, Sweden: IT University of Göteborg.
Walsham, G., 1995. Interpretive case studies in IS research: nature and method. European Journal of Information Systems , 4, 74-81.
Yin, R.K., 2003. Case Study Research: Design and Methods 3rd ed., Sage Publications.
Saturday, March 14, 2009
Two articles on Volvo electrical architecture
- Volvo S80: Electrical system of the future by Kent Melin. This is an overview of some of the more important architectural decisions for the Volvo architecture.
- Volcano - a revolution in on-board communications by Lennart Casparsson et al. This describes the mathematics for Volvo's signal scheduling on CAN to ensure that all signals are received within their designated deadlines, and a brief description on the processes and tools to administrate the signal database.
Wednesday, March 11, 2009
Software architecture resources on the web
- Patterns & practices Application Architecture Guide 2.0
- Automotive Software Workshop, San Diego
- JASPAR (but you need to know japanese to get the technical details)
- Software Architecture Views and Perspectives from Brad Appleton's ACME Blog
- Software Architecture Quality Attributes also from Brad Appleton's ACME Blog
Monday, February 23, 2009
Some websites about software engineering and programming
Software Engineering Radio
Software Architecture, Architects and Architecting
Teach Yourself Programming in Ten Years by Peter Norvig (very short and interesting of why everything worth knowing takes time)
Next Dawn Programming Tutorials (mostly C and C++)
Friday, February 20, 2009
Recent relevant architectural knowledge...
Some quick thoughts about the present status of software architecture (quick as in not thoroughly researched):
Software architecture is accepted as being useful in it's own right. The role of the software architect is being acknowledged as a separate role from other software practitioners having a different skill set.
The most common view is that architecture are components and their relationships (often explicitly defined interfaces), described in multiple views (like Kruchten's 4+1), just as in IEEE std 1471.
It seems to be commonly accepted that architecture design is driven by quality attributes, see the SEI web site for lots of information about this.
There are numerous architecture description languages (e.g. EAST-ADL2 or AADL) but none seem to emerge as a industry standard beyond UML 2.0. And I have not heard of too many examples of where ADLs are commercially used on a wider scale.
Nobody argues about the importance of patterns, but the reference is still Pattern-Oriented Software Architecture (POSA).
Some claim Service-Oriented-Architecture is dead, while others don't.
Standardised architectures seem to more and more common, AUTOSAR is one, Integrated Modular Avionics (IMA) is another. I'm sure there are more in other business domains I'm not aware of. Standardised architectures always seem to generate interest at workshops and meetings.
There are several on-line resources with solid material, some are directed to, or by, practitioners, like
- Grady Booch's blog
- patterns & practices Application Architecture Guide 2.0
- Resources for software architects from Bredemeyer Consulting
- Software Architecture web site at the SEI
- Jan Bosch's website
This emphasis leads to merging the research disciplines of knowledge management with software architecture.
Mary Shaw and Paul Clements wrote a survey article The Golden Age of Software Architecture: A Comprehensive Survey about how the subject of software architecture has developed in the last 20 years, Kruchten et al. wrote a similar paper The Past, Present, and Future of Software Architecture.
Finally I like the article The Art and Science of Software Architecture by Brown and McDermid because they have a "unbiased" take on the present and future of the field.
Wednesday, January 28, 2009
Architecting Systems with UML 2.0
Obviously you need to know the basics of UML 1.0...
Monday, December 22, 2008
Complexity
Since I firmly believe in my colleague Dennis Selin's statement that one of the main purposes of having an architecture is to manage complexity I am interested complexity as a concept. It does seem to be difficult to define complexity, more than "I know it when I see it".
However I have found a few articles on the subject I found worth reading. I welcome other suggestions.
- John A McDermid, Complexity: Concept, Causes and Control, in Proceedings of the 6th IEEE International Conference on Engineering of Complex Computer (ICECCS 2000), 2000.
- Murray Cantor, Understanding complexity, in The Rational Edge, 2007
- Mohsen AlSharif et al, Assessing the complexity of software architecture, in Proceedings of the 42nd annual ACM Southeast Regional Conference, 2004
PS. I will get back to other purposes of software architecture according to Dennis in a later post.
Saturday, December 6, 2008
Introduction to software architecture research
Some websites of interest:
http://www.sei.cmu.edu/architecture/index.html
The homepage of the most well-known research groups on software architecture. You can for example look at their "essential bookshelf":
http://www.sei.cmu.edu/architecture/essential_collection.html
http://www.handbookofsoftwarearchitecture.com/
Grady Booch's (of UML fame) website about architecture. You need to register to access the entire website.
http://www.janbosch.com/
Jan Bosch' website, one of the foremost researchers in Europe. Check out his publication list. He has written several "overview" articles as well.
You should also be familiar with ISO/IEC-standard 42010 "Recommended Practice for Architectural Description of Software-intensive Systems" (identical to IEEE Std 1471-2000)
http://www.amazon.com/Software-Architecture-Practice-2nd-Engineering/dp/0321154959
This is the standard textbook about software architecture. If you want an undergraduate text I would recommend
http://www.amazon.com/Software-Architecture-Primer-John-Reekie/dp/0646458418/ref=pd_sim_b_6
http://www.amazon.com/Documenting-Software-Architectures-Beyond-Engineering/dp/0201703726
The best (and only?) book about documenting software architectures
http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley/Professional/dp/0201633612
For an architect I would recommend the following book instead:
http://www.amazon.com/Pattern-Oriented-Software-Architecture-System-Patterns/dp/0471958697/ref=sr_1_1?ie=UTF8&s=books&qid=1228480692&sr=1-1
There are 5 volumes, but the book everybody refers to is vol. 1
For software product lines I'm most familiar with
http://www.amazon.com/Design-Use-Software-Architectures-Product-Line/dp/0201674947/ref=sr_1_1?ie=UTF8&s=books&qid=1228480867&sr=1-1
and
http://www.amazon.com/Software-Architecture-Product-Families-Principles/dp/0201699672/ref=cm_lmf_tit_8_rdssss0
But there seem to be recent texts, such as:
http://www.amazon.com/Software-Product-Lines-Practices-Engineering/dp/0201703327/ref=pd_sim_b_2
and
http://www.amazon.com/Software-Product-Lines-Action-Engineering/dp/3540714367/ref=pd_cp_b_1?pf_rd_p=413864201&pf_rd_s=center-41&pf_rd_t=201&pf_rd_i=3540243720&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1KC7RGT8ZATZCWGSE3MM
Hope this helps!