Hello:
I want to update my own knownledge about software engineering and software architecture. So, I'm looking for new resources. Can you recommend me books, e-books, journals, web sites and communities I'll aprreciate your help.
Thanks.
Hello:
I want to update my own knownledge about software engineering and software architecture. So, I'm looking for new resources. Can you recommend me books, e-books, journals, web sites and communities I'll aprreciate your help.
Thanks.
Anything specifically, as software engineering is a fairly broad subject.
Also, are you a complete beginner, intermediate, advanced, or a guru
Generally speaking, I look in forums, on coding sites, architecture sites and so forth. It's good to get a good spread of information from different sources.
You're already in a good forum (also look at language forums around here too, they can be good at times)
Sites like codeproject are very good to look at the various aspects of software, not always the most traditionally correct, but good for ideas, and thought provoking.
there are books on programming, such as "Framework design guidelines" by K Cwalina abd B Abrams which is an interesting read from the point of view of putting together software, and the quality inherent in thinking about how it will be used.
If you can be more specific I might know some other places to look, but as I say in general, I have a number of places and don't really favour one over another since I get more balance that way.
Martin.
Dear Eder,
Here are my main resources:
2. Ron Jacobs Arcast
The arcast is a great way to get to know about the latest in architecture while relaxing and even driving your car.
"Patterns and Anti patterns of SOA" is a must, this is a 2 part arcast and it is my favourite.
For Design patterns:
http://www.dofactory.com/Default.aspx
I hope this was helpful.
I forgot about ARCast, that's an awesome thing to listen to, as is polymorphicpodcast, and going deep....
Martin.
Eder,
Get an update on Software Architecture discipline (history and future) by reading the 2006 Spring issue of IEEE Software. Specifically this article on the Golden Age of Software Architecture.
The Microsoft Architecture Journal provides a set of well thought through eloquent articles. I highly recommend this.
As far as the books on the software architecture discipline I recommend the following two to start with:
-
Hi Eder,
If you are getting into software arch / software engineering this will be the path you should take.
1) Technology- You should already be one. (Java / .NET/ any software that you use to develop software). Keep updating yourself on it. Spend minimum one hour on code. No excuses.
2) Process and methodologies - Yes, is you are not sore about the process you cannot be a good arch. When I mean process I don¡¯t mean that you should master all the KPA of CMMI. But you should know how you should convert the input (Functional spec / use cases / etc) into deliverables. So here you should understand Process like RUP, MSF, XP. Don¡¯t think that one process recommendation will perfectly suit all your projects. Once you have mastered these processes you should be able to draft one for each of your projects. But be sure that the process is implemented and also controlled.
Some good resources i have come across for this are
You should also know about Unit testing, TDD, Refactoring (Martin Flowler)
3) Requirements Analysis
You should also master in the skill of Requirements analysis. The Craig Larmans book i specified above should be able to give you enough insight. But you should look into more information of the best practices of business analysis.
4) Quality Attributes
Get the list of non functional requirements (Quality Attributes) and prioritize it. You cannot give all that the client wants. Be more specific. (For E.g. for 1000 Concurrent users the latency will be x). You should also know how you will achieve the Quality Attributes. Some of the Quality Attributes that you should master are
Performance (Designing for performance, Load testing, stress testing, etc)
Security (Threat modeling, etc)
Manageability (Domain driven design, Frameworks, Codespewers, ORM Tools etc)
Usability
Interoperability
There is no complete book on this and there never will (at least for the next 20-30 years). The more you are capable to deliver a system with these attributes, you are a great architect.
5) Low level Design
This is the interesting part. There are many approaches of doing this. Some references on this are
OOAD with Application or try the Head first series on OOAD for a quick shortcut
GOF design patterns or try the Head first series on OOAD for a quick shortcut
DDD by eric evans or try Jimmy neilsons Applying DDD patterns with example
PoEAA by Martin Flowler
Database Design
Designing objects and then using and ORM tool to create the database schemas can give you more manageability. Designing good database schemas can give you better performance.
So you should again weigh things according to your project and also at the expertise you have.
Bottom line: as long as you can deliver what the customer has asked you are a great software engineer / Architect
6) High Level Design (The Architecture)
Once you have all the above things right your high level design should be fine. The best Reference will be SEIs Software architecture in practice
There are also some pattern books like POSA Series which is worth reading
7) Human Dynamics
Last but not the lease is Human dynamics. This is the most importance aspect of an architect. It will include things like customer relationship, Leadership, Mentorship, Negotiation, presentation, selling, Etc. But you don¡¯t have much resource for this. So just Practice.
A good place to start is the MSDN Architecture site http://msdn.microsoft.com/architecture
then also take a look at Do factory site for dsign patterns http://www.dofactory.com/Default.aspx
Subscribe to the MSDN Architecture journal; check blogs online