Вы находитесь на странице: 1из 162
� �������� ������������ �������� ����������

��������

������������

��������

����������

�����������

��������������

�����������

����������� �������������� �����������
���������� ����������� ��������������
���������� ����������� ��������������

����������

�����������

��������������

�����������

����������� �������������� �����������
����������� �������������� �����������

�������

������������ ��������������������������� �������� �� ��� ������������������ ��� ������������ ���� ��������������� ��� ������� ��������� ������� �� ��� ���� �������� �� ������������ ��������� ���� ��������� �� ��������� ������������ ���� ������� ����� ��������� �� ��������� ����� �������� ��� �� ������ ������� �� ������ ��������� �� ��� �� ������ ��������� �������� ������� ��� ����������� �������� ��� ����� ��� �������� �� ����� ��� �� ����� �������� �������� ��� ������������ �� ��� ������� ����������� ����������������������� �������������� ������������������������������� �������������������������������������������������������������

�������� ����� ���� ������������������������������������� ����� ��������� ��� ����� ������������ ����� �� ������� ������� �� ������� ���� �������� ������������� ��������� ������������������������������� �� ���������� ������������

����������������������� ��� ��������������� �������� ����� ��� � ������ ����������� ����� ������� ������������ ���������� ��� ������� ����������� �� ���� �� ����������� ��� �� ������������ ������� ��� ����� �� ������������������ ��� ����� ���� ��������� �������������������������������

����������������������� ��� �������� ����� ��� ������ ������� ����� ���������� ����� ������� ������� ����� ������������������� ��������� ���� ������ �� ����� ��� ��� ���������� ������ �� �������� ���� ���� ������ ����������� �������� ������ ������ ������ ��� ��� ��� ������� ������� ��� ��� ��������� �� �������� ���� ���� ���� �������� �������������� �������� �������� ��� ��� ��� �����������������������������������������������

������ ��������������� ��� ���� ��� ��������� �� ����� ���������� �� ���� ����� ���� �������� ��������� �������� ��� ������������������������������ ������������ �� ��� ���� ����������������������� �� ����������� ���� ��������������� ������������������������������� ��������������������������������������� �������������������������������������������������������������

������������������� ��� �������������������������� ��������� �������� �� �� ��������������� ����������������������������������������

���������� �������������� ��� �������� ��������� ����� �� ���� ��������� ��� ��� ���� ���� ����� ����������� �������������������� ������������������� �������� ����������� ����� ��� ��� ������ ����� ������� ��� ��������������� ����������� ���� �������� ���� �� ���� ��� ������� ������� �� ����� ��������� ��� ��� ������ ���������������������������������

Evolution of this book is course book has been contributed by the Open University Netherlands (OUNL). e first edition of this book was written by Sylvia Stuurman and Ella Roubtsova in 2007 as an OUNL course book based on lectures given by Lex Bijlsma in the Software Technology master programme of Utrecht University. ese lectures in turn owed much to an earlier version by Gert Florijn. A second edition, with contributions from Bastiaan Heeren, was published in 2009. e FTA version was updated and rewritten by Sylvia Stuurman in 2011.

Participation Users of FTA learning materials are encouraged to provide feedback and make suggestions for improvement. A specific space for this feedback is set up on the FTA website. ese inputs will be taken into account for next versions. Moreover, the FTA welcomes anyone to use and distribute this material as well as to make new versions and translations.

See for specific and updated information about the book, including translations and other formats: http://ftacademy.org/materi als/fsm/. For more information and enrolment in the FTA online course programme, please visit the Academy's website: http://ftacademy.org/ .

I sincerely hope this course book helps you in your personal learning process and helps you to help others in theirs. I look forward to see you in the free knowledge and free technology movements!

Happy learning!

Wouter Tebbens

President of the Free Knowledge Institute Director of the Free technology Academy

Software architecture

Course book

Course team dr. A. Bijlsma dr. B.J. Heeren dr. E.E. Roubtsova ir. S. Stuurman

Software architecture

Course book

Contents

Contents

 

1

I The activities of a software architect

 

3

1 Introduction to software architecture

 

6

 

Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

1.1 What is software architecture?

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

1.2 Topics in software architecture

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

1.3 The architect versus the engineer

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

Discussion questions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

2 Requirements engineering

 

18

 

Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

2.1 Important concepts

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

2.2 Use cases

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

2.3 Three types of requirements

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

2.4 Summary requirements engineering

2.5

Tactics

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

27

. Discussion questions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

3 Description and evaluation

 

30

 

Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

3.1 Describing architectures

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

32

3.2 Architectural description languages

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

3.3 Evaluating architectures

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

Discussion questions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

II

Patterns in software architecture

 

47

4 Architectural patterns

 

50

 

Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

50

4.1 Architectural patterns or styles

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

4.2 Examples of architectural patterns

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

52

4.3 Architectural styles

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

4.4 Applying patterns: KWIC example

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

4.5 Choosing a style .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

68

Discussion questions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

68

5 Patterns for enterprise applications

 

70

 

Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

70

5.1 Enterprise applications

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

71

5.2 Patterns in the three layers

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

73

 

1

2

CONTENTS

 

5.3

Concurrency problems

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

85

Discussion questions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

87

6

Patterns for enterprise application integration

 

88

Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

88

6.1 Enterprise application integration

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

89

6.2 Loose and tight coupling

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

90

6.3 Integration patterns

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

92

6.4 Conclusion

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

102

Discussion questions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

103

III Components and contracts

 

105

7

Component software

 

108

Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

108

7.1 Custom-made, standard and component software

.

.

.

.

.

.

.

.

.

.

.

.

.

109

7.2 The nature of components

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

109

7.3 Components and objects

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

110

7.4

Reuse

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

111

7.5 UML and components

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

111

7.6 Concepts associated with components

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

115

7.7 Connecting components

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

117

7.8 Future and current approaches

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

118

Discussion questions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

122

8 Design by contract

 

124

 

Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

124

8.1 Contracts

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

125

8.2 Problems with contracts

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

126

8.3 Polymorphism .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

130

8.4 Inheritance

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

132

Delegation

8.5 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

135

8.6 Techniques for specification

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

135

Discussion questions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

137

9 Service oriented architectures

 

138

 

Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

138

9.1 Aspects of services

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

139

9.2 Standards and technologies

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

141

9.3 Coordination of services

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

142

9.4 Orchestration

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

143

9.5 Choreography

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

144

9.6 Security and reliability

.

.

.

.

.

.

.