Showing posts with label Software-Architect. Show all posts
Showing posts with label Software-Architect. Show all posts

Monday, April 02, 2007

Fehlerfreiheit, Leistung und Sicherheit

clipped from www.microsoft.com

Jonglieren - eine Metapher für die Softwareentwicklung

Bei der Softwareentwicklung erfordern unterschiedliche Rollen das Jonglieren von jeweils drei verschiedenen Aufgaben: Programm- und Projekt-Manager jonglieren Funktionen, Ressourcen und Zeit, Softwareentwickler jonglieren Fehlerfreiheit, Leistung und Sicherheit
Wenn Sie als Softwareentwickler nicht die Fehlerfreiheit, Leistung und Sicherheit des von Ihnen geschriebenen Codes beachten, könnte man auch sagen, dass Sie Ihren Job nicht richtig machen.
powered by clipmarksblog it

Thursday, November 23, 2006

What a Software-Architect must know...

Concerning my progress (in the area of coding): I am still working through the first C# tutorial. Just finished lection 16: Delegates and Events. I got stuck to this topic a bit, because the tutorial only scratches the surface of this important topic. So I intensified my studies on that subject which took a bit more time.

Sometimes I ask myself, why am I so slow? The answer is, there is so much to learn additional to learning to code. Currently I read a general basic book about software-architecture (in german): Effektive Software-Architekturen (Effective Software-Architectures) written by Dr. Gernot Starke. A great book in my opinion for a starter like me. Among other things the book proposes a way how an architecture is iteratively developed:

A) Collect information about similar problem/solutions
B) Develop a basic system idea

C) Iteration Cycle
1) Identify influencing factors and boundary conditions for the architecture
2) Identify projectrisks
3) Develop solution-strategies

Ongoing: Documentate your architecture!

Also I really love listening to and watching the many existing podcasts and webcasts. There are MSDN Webcast-Videos, MSDN Podcasts and the MSDN Arcast-Shows with Ron Jacobs. There is also the Software Engineering Radio a non-microsoft podcasts that I ran across lately founded by Markus Voelter. These are great for a long car ride or as a listening lecture for the evening, thus keeping track of the current technologies!

Knowing about the most important technologies is one point of a long list what a software architect should know. The SEI (Software Engineering Instiute) of the Carnegy Mellon Institute has made an interesting study about "The Duties, Skills, and Knowledge of Software Architects".
I think the list and proposals fit well to my separation in architecture, engineer, developer and project-manager!

Tuesday, November 14, 2006

Current Software Architectural Concepts

As a preparation for the job interviews I studied the current most important concepts of software-architecture. I identified three important concepts which I will focus on:

  1. Service Oriented Architecture (SOA)
  2. Model Driven Architecture (MDA)
  3. Event Driven Architecture (EDA)
There are plenty of ressources where these concepts are described, so I will just give a very short summary.

Service Oriented Architecture
SOA is a management concept which leads to a flexible IT Infrastructure which is driven by business needs. The core idea is to provide the whole enterprise functionality as an amount of different independent services.
The main goal of a SOA is the construction of an IT infrastructure which is geared to business processes. Changing business processes need a flexible IT which can adapt to these changes. To enable this flexibility the reusability of functionality and support of distributed systems are other goals of a SOA.

Model Driven Architecture
The MDA tries to automatically generate code via models. The models can be defined in UML so they can be developed in cooperation with the customers. Software changes should only be made in the models, not in the code.


Event Driven Architecture
Components in an EDA communicate via events. Because events are a special kind of message the EDA makes use of a message oriented communication via message channels and the publish-subscribe integration pattern.




Sunday, October 08, 2006

Disciplines of a Software Architect

There are four terms (or perhaps roles) which come in my mind concerning my "learning-path" in the future:

  1. Software-Developer
  2. Software-Engineer
  3. Software-Architect
  4. IT Project-Manager

I think elements of all terms are important for becoming a good software-architect. You must be able to code e.g. to create prototypes, so you must be a good developer.Software Development today is an engineering discipline in which for example design patterns are used. A good software-architect shoul in my opinion also be a good software-engineer.Architectural patterns describe approved solutions for designing software at a higher level than design patterns. For sure a very important point to work as a software-architect. And last but not least a software-architect should know things about project management. For example should he have knowledge about risc management to evaluate the different possible architectural solutions.

Of course I have to enlighten these roles more in the future. The upper paragraph is a first shot to describe the possible roles of a software-architect and will be enhanced in the future. But I think the contents of my studies will allways fit in one of these four roles and bit by bit it will become apparent what these roles really mean and in what way they are different.