Thursday, March 05, 2009

How to define IT Governance (first draft)

Information Technology Governance, IT Governance or ICT (Information & Communications Technology) Governance, is a subset discipline of Corporate Governance focused on information technology (IT) systems and their performance and risk management

The primary goals for information technology governance are to
(1) assure that the investments in IT generate business value, and
(2) mitigate the risks that are associated with IT.

This can be done by implementing an organizational structure with well-defined roles for the responsibility of information,business processes, applications, infrastructure, etc.

Is IT governance different from IT management and IT controls? The problem with IT governance is that often it is confused with good management practices and IT control frameworks. ISO 38500 has helped clarify IT governance by describing it as the management system used by directors. In other words, IT governance is about the stewardship of IT resources on behalf of the stakeholders who expect a return from their investment. The directors responsible for this stewardship will look to the management to implement the necessary systems and IT controls. Whilst managing risk and ensuring compliance are essential components of good governance, it is more important to be focused on delivering value and measuring performance.

Related: Formal architecture compliance process: a process for ensuring new projects are adopting standard technologies

Source: answers.com

How to define enterprise architecture?

Enterprise Architects use various business methods and tools to understand and document the structure of an enterprise. In doing so, they produce documents and models, together called artifacts. These artifacts describe the logical organization of:
- business strategies
- metrics
- business capabilities
- business processes
- information resources
- business systems,
- and networking infrastructure
within the enterprise.

‘Enterprise’ level architectural description:
A complete collection of these artifacts, sufficient to describe the enterprise in useful ways


An Enterprise Architecture framework is a collection of tools, process models, and guidance used by architects to assist in the production of organization-specific architectural description


A good enterprise architecture bring important business benefits, which are clearly visible in the net profit or loss of a company or organization:
A more efficient IT operation:
  • Lower software development, support, and maintenance costs
  • Increased portability of applications
  • Improved interoperability and easier system and network management
  • Improved ability to address critical enterprise-wide issues like security
  • Easier upgrade and exchange of system components
Better return on existing investment, reduced risk for future investment:
  • Reduced complexity in IT infrastructure
  • Maximum ROI in existing IT infrastructure
  • The flexibility to make, buy, or out-source IT solutions
  • Reduced risk overall in new investment, and the costs of IT ownership
Faster, simpler, and cheaper procurement:
  • Buying decisions are simpler, because the information governing procurement is readily available in a coherent plan.
  • The procurement process is faster - maximizing procurement speed and flexibility without sacrificing architectural coherence.
  • The ability to procure heterogeneous, multi-vendor open systems.
Related:

Sources:

Answers.com/enterprise architecture
OpenGroup/Togaf

Links

Monday, August 04, 2008

How to define SOA services?


  • In this blog entry I try to collect my experience defining SOA services. (This blog entry will be under heavy changes). Feel free to post me any comments.


If you build a service, keep always in mind that you have a lot of stakeholders in mind:



(1) service consumers
- which are interested in only the functionality they have to provide
- focued on a specific programm language (e.g. Java)
(2) architecture, which is mainly focused on
- reusability
- continuity
- versioning
- accessibility of services (repository, registry)
(3) service providers
- which are focused in reducing complexitiy
- which are focued on a specific programm language (e.g. Cobol)
(4) Business, interested in
- bussiness value
- continuity


(1)The Service consumer View
Focused on their particular problem

(2)The architecture view:
- Lego approach, composable services
- Versioning
- Lifecycle

(3)The architecture view:
- Reducing complexity. Reducing input and building constraints to reduce complexity of programming and testing

(4) Business
- The business is mainly interested into shareholder value

The goals on a timeline looks like this
(1) Service Consumers (goals are within project time)
(2) Service Producers (Services should survive different projects)
(3) Business (mid term goals)
There are a lot of conflicts:
(1) and (3): How to find a naming
(4)Architecture (long term gols)

convention which fullfill different programming approaches
(1 - 4) How to fullfill the different time scopes? --> Versioning,


Distinguish between
(a) Bulk-Services (File-Import)
(b) Messaging Services (e.g. Webservices)

(a) Bulk Services (Func. and non func. req)
- Define Character Format
- Define Output Format (Fixed-Length, Comma-Separated, ....)
- Define all attributes precise (especially years, currency, ...) e.g. DDMMYYYY, XXXX.YYYY and Currency ISO 4217
- Specify timezones for dates
- Define Periodicity (Exportdates)
- Availability
- Security Classification
- Response Time
- Size of the Export (e.g. 10 GB)
- Destination/Protocol (e.g. ftp://myFileserver)
- Logging
- When should service go in to Integration Test, Production, ...
- Versioning

(b) Messaging Services (Func. and non func. req)
- Availability
- Response Time
- Invocation Frequency
- Specify timezones for dates
- Define all attributes precise (especially years, currency, ...) e.g. DDMMYYYY, XXXX.YYYY and Currency ISO 4217
- Peak
- Loggin
- Caller Auth.
- Security Classification
- When should service go in to Integration Test, Production, ...
- Versioning


Versioning of the servicedefinition is crucual. Important is that you write every change, ore even better also the reason (and responsible) for the change in the servicedefinition or a separate document.

Monday, June 30, 2008

Scale up vs. Scale Out

See http://weblogs.java.net/blog/malcolmdavis/archive/2006/07/scale_up_vs_sca.html

Reliability vs. Availability

Reliability: measured by time between system failures
o Distributed system should be more reliable than single system
o 5 machines with .95 probability of being up. 1 - .05*5 probability of
being up.

�� Availability: fraction of time the system is usable.
o Redundancy improves it
o Need to maintain consistency
o Need to be secure
o Need to tolerate failures: mask failures, recover from errors.

http://www.cis.upenn.edu/~lee/07cis505/Lec/lec-ch7a-consistency-v3.pdf

Friday, June 06, 2008

Calculate in Google

Try the following search terms:

(120000+1500)*500 byte -> megabyte
(120 000 + 1 500) * 500 gram -> kilogram

Monday, April 28, 2008

sed / grep /awk and other useful commands

Here i'll post useful commands using sed grep & awk for OSX:

sed "s/SEARCHTERM/RESULTTERM/" result.txt

Convert Uppercase to lowercase
cat test.txt | tr [:upper:] [:lower:]

More information:SED onenliners

Delete your desired files:
find / -name "*\.eml" -exec rm -f {} \;

Thursday, April 17, 2008

Guidelines for developing an application in Ruby on Rails

Here I collect some guidelines how to develop in Ruby on Rails. Please feel free to comment on these guidelines. I would love to discuss them since I am quite new in Ruby on Rails

- Use an IDE (e.g. NetBeans)
- Use version control (e.g. SubVersion)
- Use the model to implement business logic
- The controller should be lean
- Don’t put business logic in to the view
- DRY: Use partials and helper-classes, …
- Use CSS for rendering your page
- Use migrations sequentially
- Consolidate migrations