Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Is it perhaps time for enterprise systems to be developed to strict enforced standards? Many books list optional 'standards' and best practices, but these are purely suggested practices. Still, every time I look at the code for an enterprise system I have not been a part of, I spend a lot of time trying to work out the architecture.

Should we not have some form of ISO accreditation for our systems? We could have a selection of standard architectures such as Domain Model, Transaction Script etc, but once we choose one of these, we have to follow a strict architectural template. Systems could be audited to ensure we are working to these standards, and our companies would carry this accreditation.

This would be better for developers because when we take on legacy work that was written by another company, we will not have to spend time deciphering the architecture.

It would benefit clients because they would know that if they used the services of an accredited development company, they could used another company to maintain/amend it, and not be tied to the original developers.

share|improve this question
11  
Enterprise software development is already boring enough. –  user2567 Oct 16 '11 at 11:06
    
+1 to @Pierre303 another issue with enterprise development it is really boring as he says but they dont want other people to read there code easily so they wont really wanna use stadnereds –  WojonsTech Oct 16 '11 at 11:24
2  
If the process of development could be simplified to such a degree that what you propose were practical, it would have been automated long ago and this industry would be much, much smaller than it is. –  Blrfl Oct 16 '11 at 15:57
1  
@Job: Actually "we" also can be kind of slippery. There is the Imperial We, meaning me (e.g. The Queen said, "We are not amused."); there is the Social We, meaning us (e.g. "We are going to the park."); and there is the Managerial We, meaning you (e.g. "Why don't we recode that application?"). –  Peter Rowell Oct 16 '11 at 16:44
1  
@Job Maybe it's time to post the question on english.stackexchange.com and attach link? –  Lionel Oct 16 '11 at 22:50
show 1 more comment

5 Answers

up vote 0 down vote accepted

Standards sound all fine and dandy, but what happens when a customer has performance needs or a different business model that are impossible to achieve without a unique architecture? Each customer has to make an informed choice about the advantages and disadvantages of different solutions. Developer Lock-In is just one concern.

Are programmers going to have to be certified for specific standards? Are we going to create governing bodies that will send software inspectors to verify compliance? Home electrical wiring specifications in Australia have no need to comply with Asia. Software can span the world. What will be the level of compliance? Absolutely 100%? Seems like the burden of policing this would fall on clients who will have to report violations. Do they have the time, expertise and resources?

Even companies that create their own internal apps have to deal with a new generation of developers that have to get up to speed and they're not always provided the best documentation or supervision.

Situations where a standard is applicable probably doesn't have enough new development in these areas to warrant a standard.

share|improve this answer
add comment

The main issue with Standard Architectural models are they that only work on standard systems. The problem with real world enterprise environments are that they are ALWAYS different.

In turn, the standards would end up being so vague that you might as well be better off without any.

share|improve this answer
4  
"When one has reached maturity in the art, one will have a formless form. When one has no form, one can be all forms; when one has no style, he can fit in with any style." - Bruce Lee –  jfrankcarr Oct 16 '11 at 14:53
add comment

The very short answer is: You have to be very very very smart to define an architecture which works for every case. Barely anybody is so smart.

In my experience software starts in one of two way: Either with the idea "let's be fast to ship a product and refactor it once we have customers" which has less architecture in the beginnig and then no time for doing a big rewrite or "let's create a good architecture" which in the beginning looks nice but over time has more and more places bypassing the architecture either due to performance optimizations or features which don't fit in the architecture. so both times oyu get a mess out of it.

also mind that many "Enterprise" projects are long running and old. Software development is a relatively new thing so it changes fast what is considered good. So as new trends come in there is an interest in using them in the product ...

share|improve this answer
add comment

We could have a selection of standard architectures such as Domain Model, Transaction Script etc, but once we choose one of these, we have to follow a strict architectural template.

Why stop there? Why not just write a few standard applications and have everyone use them?

Of course, you'd have to compete against companies like SAP, Oracle, IBM, CA Technologies, and Google, so you'd better know what you're doing.

There are a lot of products in the enterprise applications space, so you have to ask yourself:

Why does any enterprise bother to write its own applications?

If you can think of a good answer to that, you can probably start to see why a small number of standard architectures might not work so well. That's not to say that all enterprise applications are designed well, or that there's not commonality between many enterprise applications. However, corporations tend to compete against each other, and I suspect that building their systems the same way that their competitors build systems might not be as appealing to a corporation as you'd think.

share|improve this answer
add comment

What would be the point, you aren't going to be able to force companies to use certain standards... the point of software development is making something custom, not boilerplate. There are always trade-offs for various design decisions, one company may have a product where they care primarily about scaling while another has a similar software product where security is their primary focus. How would on standard work for both of these? Naturally they are going to spend more time on differnet areas of the software and making differnet architectural decisions based on their perceived needs.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.