a study on a layer- and architecture- based agile software project development method

73
1 A Study on A Layer- and Architecture- based Agile Software Project Development Method Student: Chaoyu Lin 1 Advisor: Dr. Weipang Yang 3 and Dr. Jyhjong Lin 2 1,3 Department of Information Management, National Dong Hwa University 2 Department of Information Management, Ming Chuan University

Upload: mauve

Post on 18-Jan-2016

27 views

Category:

Documents


4 download

DESCRIPTION

A Study on A Layer- and Architecture- based Agile Software Project Development Method. Student: Chaoyu Lin 1 Advisor: Dr. Weipang Yang 3 and Dr. Jyhjong Lin 2 1,3 Department of Information Management, National Dong Hwa University 2 Department of Information Management, Ming Chuan University. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: A Study on A Layer- and Architecture- based Agile Software Project Development Method

1

A Study on A Layer- and Architecture- based Agile Software Project Development Method

Student: Chaoyu Lin1

Advisor: Dr. Weipang Yang3 and Dr. Jyhjong Lin2

 1,3 Department of Information Management, National Dong Hwa University

2 Department of Information Management, Ming Chuan University

Page 2: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Software Development Method

• Waterfall ProcessWaterfall Process• 把軟體開發過程分成很多個階段,並假設 :– 只要在需求階段進行分析– 只要在設計階段進行設計– …

– 只要在個個階段能夠產生出正確無誤的文件,就能保證軟體專案開發的成功

2

Page 3: A Study on A Layer- and Architecture- based Agile Software Project Development Method

3

Page 4: A Study on A Layer- and Architecture- based Agile Software Project Development Method

• 能夠得到一份非常正確和完備,同時覆蓋所有需求 (包含隱含需求 )的設計文件,這在實務上是不太可能發生的… Why?– 瀑布法不能夠保證各階段的文件能夠被正確的轉換

• 瀑布法假定可以不需要其他任何東西,只根據需求文件就寫出覆蓋所有需求的設計文件

• 同樣的,瀑布法假定程式設計師可以對系統和需求一無所知,只要根據一份詳細設計文件就能把正確的程式碼開發出來

– 沒有任何的測試手段,能對這種轉換過程進行測試,從而保證其正確性

4

Page 5: A Study on A Layer- and Architecture- based Agile Software Project Development Method

• 軟體專案本質上就是一種高度複雜性的管理。

• 瀑布法承認這種複雜性,也透過劃分階段來分散複雜性– 但正是這種對各個階段的嚴格劃分,不但提升

了過程的複雜性,也引入了一個最大的隱憂– 即無法在分析,設計與開發階段,都對其結果

進行測試

5

Page 6: A Study on A Layer- and Architecture- based Agile Software Project Development Method

6

Page 7: A Study on A Layer- and Architecture- based Agile Software Project Development Method

7

Page 8: A Study on A Layer- and Architecture- based Agile Software Project Development Method

元件式軟體開發• 軟體元件強調由其介面 (Interface) 及實作

(Implementation) 所組合而成,元件的實作通常不為外界所能看到 (Visible) ,且實作的修改並不影響使用端程式。

• 透過完整的介面定義對外連接 (Connection) 更容易達到再用效果 (Reuse)

• 軟體元件的開發應包含整體結構 (Architecture) 、領域塑模 (Domain Modeling) 、元件規格(Component Specification) 等

8

Page 9: A Study on A Layer- and Architecture- based Agile Software Project Development Method

元件式軟體開發• 使用物件導向分析與設計• 物件導向程式設計,採用適當的元件介面

規格,配合設計樣式 (Design Patterns) 及應用框架 (Application Framework) 的運用,將可執行程式包裝成軟體元件– 或採用現成的軟體元件,佈署在應用伺服器上– 藉由適度的再用性將軟體開發生產效益最大化

9

Page 10: A Study on A Layer- and Architecture- based Agile Software Project Development Method

10

ArchitectureArchitecture

Design PatternsDesign Patterns

Application FrameworkApplication Framework

Iterative ProcessIterative Process

Page 11: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Identification and Motivation of the Method

• the five most important items important items of Walker Royce’s Software Software Project Management:Project Management:

11

1. Base the process on an architecture-firstarchitecture-first approach.2. Establish an iterativeiterative life-cycle processprocess that confronts risk early.3. Transition design method to emphasize component-based developmentcomponent-based development.4. Establish a change management change management environment.5. Enhance change freedom through tools that support round-trip engineering.

Paulish’s Architecture-Centered Software Project Planning

(ACSPP) [47]

Page 12: A Study on A Layer- and Architecture- based Agile Software Project Development Method

• From the above literature we can draw the following conclusions:

– The architecturearchitecture (i.e., high-level design) is the firstfirst point to be addressed in the construction of the SDP.

– The architecturearchitecture is based on user requirementsrequirements and it is composed

of distinct types of software components software components which collaboratecollaborate to satisfy these user requirements.

– The different types of software components have differentdifferent software development processes development processes and activitiesactivities, also due to inherent different characteristics among user requirements and development teams, timelines for the completion of each project will vary.

– All components that address each iteration for development must be identified, and also be integrated with a corresponding development process and constituent activities. This will produce a development plan (of course, the time needed for each development process will vary).

12

Page 13: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Issue 1

• It is necessary to clearly establish a software development process – under a specific software development plan – where modern software development focuses

(such as architecture, components and iterations) are properly integrated.

13

Page 14: A Study on A Layer- and Architecture- based Agile Software Project Development Method

14

The Development Method

1. The use case identification 2. The conceptual components

identification 3. The architectural design and

system components specification 4. The development layer and

activity order determination5. The instantiated system

component design (software development framework independent)

6. The software components design (software development framework dependent)

7. The components implementation

As shown in Figure 6, the method is a layer- and architecture-based with seven steps:

Page 15: A Study on A Layer- and Architecture- based Agile Software Project Development Method

15

The Development Method

Step1. The use case identification described in an UML use case diagram, that clarifies user requirements to be satisfied in the system

use cases

The use case identification step 1

Page 16: A Study on A Layer- and Architecture- based Agile Software Project Development Method

• As in many book publishing companies that offer various services such as– searching/viewing/ordering of books– sharing of writing experiences or organizing thoughts– writing or organizing of new books

• Seven use cases can be identified and prescribed into three increments for further design and construction as shown below

16

Figure 3: use cases and increments for book publishing

Legend : design and construction sequence

Increment 1 Increment 2 Increment 3

use case use case

search books

view books

order books

share writingexperiences

share organizing thoughts

organizenew books

writenew books

Page 17: A Study on A Layer- and Architecture- based Agile Software Project Development Method

17

Page 18: A Study on A Layer- and Architecture- based Agile Software Project Development Method

The conceptual components identification

Robustness diagrams

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

components code(control layer)

components code(view layer)

components code(model layer)

The development layer and activity order determination

step

act

ion

s fo

r ea

ch la

yer

use cases

transformation between steps

development direction

interactiondirection

development step action

developmentstep result

MVC-3 layer

architectural layer

step resultdiagram

The architectural design and system components specification

(software development framework independent)

The implement components

use cases

The use case identification

Legends

The instantiated system components design

step 1

step 2

step 3

step 4

step 5

instantiatedsystem components

(view layer)

instantiatedsystem components

(model layer)

instantiatedsystem components

(control layer)

The software components design(software development framework dependent)

step 7

step 6

18

The Development MethodStep 2. The conceptual components identification, described in an UML robustness diagram that identifies conceptual components with each one playing a specific role in the realization of a desired use case.

The conceptual components identification

Robustness diagrams

boundarycomponents

controlcomponents

entitycomponents

step 2

Page 19: A Study on A Layer- and Architecture- based Agile Software Project Development Method

19

Scenario #1 (view experiences shared from other users) 1) user inputs via displaying HCI specific topics about shared experiences

2) system receives the topics

3) system retrieves the shared experiences under the topics

4) system returns the shared experiences under the topics

5) user views via displaying HCI the shared experiences

Scenario #2 (respond comments about shared experiences) 1) user inserts via responding HCI comments about shared experiences under specific topics

2) system receives the comments

3) system saves the comments under specific topics

4) system returns a confirmation

5) user views via responding HCI the confirmation

Scenario #3 (insert experiences to be shared with other users) 1) user inserts via insertion HCI experiences under specific topics

2) system receives the experiences

3) system saves the experiences under specific topics

4) system returns a confirmation

5) user views via insertion HCI the confirmation

Figure 32Page 48

Page 20: A Study on A Layer- and Architecture- based Agile Software Project Development Method

The conceptual components identification

Robustness diagrams

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

components code(control layer)

components code(view layer)

components code(model layer)

The development layer and activity order determination

step

act

ion

s fo

r ea

ch la

yer

use cases

transformation between steps

development direction

interactiondirection

development step action

developmentstep result

MVC-3 layer

architectural layer

step resultdiagram

The architectural design and system components specification

(software development framework independent)

The implement components

use cases

The use case identification

Legends

The instantiated system components design

step 1

step 2

step 3

step 4

step 5

instantiatedsystem components

(view layer)

instantiatedsystem components

(model layer)

instantiatedsystem components

(control layer)

The software components design(software development framework dependent)

step 7

step 6

Step 3. The architectural design and system components specification, described in UML-extended component diagrams, that employs platform specific features into architectural components such that each resultant system component has a specific implementation code on the chosen platform and hence its construction can be easily achieved by a direct transformation from its design work.

20

The Development Method

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

The architectural design and system components specification

step 3

Robustness diagrams step 2

Page 21: A Study on A Layer- and Architecture- based Agile Software Project Development Method

The architectural framework apply to the MVC-3

21

Page 22: A Study on A Layer- and Architecture- based Agile Software Project Development Method

The architectural framework apply to the MVC-5

22

Page 23: A Study on A Layer- and Architecture- based Agile Software Project Development Method

architectural design and appropriate technologies

23

Page 24: A Study on A Layer- and Architecture- based Agile Software Project Development Method

architectural design and appropriate development frameworks

24

Page 25: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Design Pattern(demo in chapter 5)

• Intercepting Filter pattern (page 49)

• Front Controller pattern (page 50)

• Command design pattern (page 51)

• Service Locator pattern (page 51)

• DAO (Data Access Object) design pattern

25

Page 26: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Design Patter (cont.)

26

Page 27: A Study on A Layer- and Architecture- based Agile Software Project Development Method

27

UML-extended

component diagram

architecture design

(in step 3)

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

The architectural design and system components specificationstep 3

step 2

JSP Servlet JDBC/DAO

Robustness diagrams

repetition code

specific codeV.S.

Page 28: A Study on A Layer- and Architecture- based Agile Software Project Development Method

28

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

view layercomponents

control layercomponents

The architectural design and system components specification step 3

step 2

Struts Spring Hibernate

Struts Servlet And Request Processor

JSP Action

Springservice

HibernateDAO

architecture design

(in step 3)

JSP

Action

Spring Service(Session Object)

Hibernate DAO(Entity Object)

Struts-ActionForm

Struts-Action

Struts-Config

Transaction

DI/IOC

Spring-Config

Bean/ORM

Hibernate-Config

Tomcat

Struts Spring Hibernate

Database

specific code

repetition code

based on

Page 29: A Study on A Layer- and Architecture- based Agile Software Project Development Method

29

Page 30: A Study on A Layer- and Architecture- based Agile Software Project Development Method

30

Page 31: A Study on A Layer- and Architecture- based Agile Software Project Development Method

The Development Method

The conceptual components identification

Robustness diagrams

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

components code(control layer)

components code(view layer)

components code(model layer)

The development layer and activity order determination

step

act

ion

s fo

r ea

ch la

yer

use cases

transformation between steps

development direction

interactiondirection

development step action

developmentstep result

MVC-3 layer

architectural layer

step resultdiagram

The architectural design and system components specification

(software development framework independent)

The implement components

use cases

The use case identification

Legends

The instantiated system components design

step 1

step 2

step 3

step 4

step 5

instantiatedsystem components

(view layer)

instantiatedsystem components

(model layer)

instantiatedsystem components

(control layer)

The software components design(software development framework dependent)

step 7

step 6

A2A1 A3 A5 A6

P2P1 P3 P6

A7

21 3 4 5 6

21 65 21 4

3

11 12

12

11

A9

2

1

P4 P587 9 10

8

7

21

43

10

9

A4

A8

A10 A11 A12

2 8 2 91

1 7

10

9

31

Step 4. The development layer and activity order determination that determines the layer and activity order for development of system components.

ModelModel

ViewView

ControlControl

ViewView

ModelModel

ControlControl

Page 32: A Study on A Layer- and Architecture- based Agile Software Project Development Method

32

A2A1 A3 A5 A6

P2P1 P3 P6

A7

21 3 4 5 6

21 65 21 4

3

11 12

12

11

A9

2

1

P4 P587 9 10

8

7

21

43

10

9

A4

A8

A10 A11 A12

2 8 2 91

1 7

10

9

Page 33: A Study on A Layer- and Architecture- based Agile Software Project Development Method

33

A2A1 A3 A5 A6

P2P1 P3 P6

A7

21 3 4 5 6

21 65 21 4

3

11 12

12

11

A9

2

1

P4 P587 9 10

8

7

21

43

10

9

A4

A8

A10 A11 A12

2 8 2 91

1 7

10

9

Page 34: A Study on A Layer- and Architecture- based Agile Software Project Development Method

34

A2A1 A3 A5 A6

P2P1 P3 P6

A7

21 3 4 5 6

21 65 21 4

3

11 12

12

11

A9

2

1

P4 P587 9 10

8

7

21

43

10

9

A4

A8

A10 A11 A12

2 8 2 91

1 7

10

9

Page 35: A Study on A Layer- and Architecture- based Agile Software Project Development Method

35

J. Shen, S. Changchien, and T. Lin, A Petri-Net Based Modeling Approach to Concurrent Software Engineering Tasks, Journal of Information Science and Engineering, vol. 21, (2005),767-795

Page 36: A Study on A Layer- and Architecture- based Agile Software Project Development Method

36

Page 37: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Issue 2• It is necessary to identify the development

process and constituent activities for different types of components. – In addition to establishing the components, it is

also essential to consider such work for existing components as upgrades, fixes, and enhancements

– in order to effectively monitor and analyze the current progress, and estimate the future schedule.

37

Page 38: A Study on A Layer- and Architecture- based Agile Software Project Development Method

38

A2A1 A3 A4 A5 A6

P2P1 P3 P6

A7

21 3 4 5 6

21 65 21 4

3

11 12

12

11

For example, if A5 has been changed, it will restart from A1, A2, A3 or A4. If A4 is

impacted, then the A7…will be impacted, too

public enum Activity {A1("identify conceptual component") {

@Overridepublic Activity[] next() {

Activity[] nextActivities = { A2 };return nextActivities;

}}, A2("construct view component") {

@Overridepublic Activity[] next() {

Activity[] nextActivities = { A3,P1 };return nextActivities;

}},

Page 39: A Study on A Layer- and Architecture- based Agile Software Project Development Method

annotation defines

39

annotation instance

For our example, suppose that a programmer ‘lendy’ is working in Activity.A1 ( 「 identify conceptual component (A1) 」 ) for the 『 displaying topics (IV1) 』 component under the use case ‘001’. Before programmer ‘lendy’ starts and ends his work in the code, he provides information about his working status by creating the following annotation instance

Page 40: A Study on A Layer- and Architecture- based Agile Software Project Development Method

tracing program (page 34-35)

40

Page 41: A Study on A Layer- and Architecture- based Agile Software Project Development Method

41

Page 42: A Study on A Layer- and Architecture- based Agile Software Project Development Method

42

Page 60

A2A1 A3 A5 A6

P2P1 P3 P6

A7

21 3 4 5 6

21 65 21 4

3

11 12

12

11

A9

2

1

P4 P587 9 10

8

7

21

43

10

9

A4

A8

A10 A11 A12

2 8 2 91

1 7

10

9

Page 43: A Study on A Layer- and Architecture- based Agile Software Project Development Method

43

Page 44: A Study on A Layer- and Architecture- based Agile Software Project Development Method

design-oriented v.s. code-oriented

• There are already plenty of software development methods in the literature. We just divide its into two models:

– design-oriented models(more analysis and design work):• traditional generic model: Waterfall model, Evolutionary Development, Component-based ….• often used together for development of large systems: Rational Unified Process ,Spiral model• emphasize on the mathematical specification: B method and Cleanroom model

– code-oriented models(criticize the overhead on design, less or even no analysis and design work): • Agile Development, Rapid Application Development (RAD) ,Extreme Programming (XP) • code work (i.e., implementation, testing, and refactoring) are focused

• The two kinds (design- or code-oriented) of models, each one gets an extreme in its concerning spectrums

• For the comprised approach that takes advantage of the two extreme kinds

– However, such less design work on the other hand makes it lack sufficient mechanisms for supporting effective guidance on the development work

44

Page 45: A Study on A Layer- and Architecture- based Agile Software Project Development Method

this research argues

• each project should be individually tailored to fit distinct users’ needs

• appropriate to produce enough artifacts– the development team can produce high-

quality deliverables,– while the process (activities) can also follow

the project properties and set the development steps (the SOP)

45

Page 46: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Issue 3

• Only after the software development team has established an architectural framework, will they clearly be able to ascertain which types of software components are needed to complete the artifacts.

• In addition, the development team will need to follow the SOP to implement artifacts and code, which will improve the overall quality of the project.

46

Page 47: A Study on A Layer- and Architecture- based Agile Software Project Development Method

The conceptual components identification

Robustness diagrams

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

components code(control layer)

components code(view layer)

components code(model layer)

The development layer and activity order determination

step

act

ion

s fo

r ea

ch la

yer

use cases

transformation between steps

development direction

interactiondirection

development step action

developmentstep result

MVC-3 layer

architectural layer

step resultdiagram

The architectural design and system components specification

(software development framework independent)

The implement components

use cases

The use case identification

Legends

The instantiated system components design

step 1

step 2

step 3

step 4

step 5

instantiatedsystem components

(view layer)

instantiatedsystem components

(model layer)

instantiatedsystem components

(control layer)

The software components design(software development framework dependent)

step 7

step 6

47

The Development Method

Step 5. The instantiated system component design (software development framework independent) that completes the instantiated design of system components that collaborate to achieve the use case/increment where the UML-extended component diagram is used as its modeling tool.

The conceptual components identification

use cases step 1

step 4

step 5(Table 2)

View layerstub

components

Control layerstub

components

Model layerstub

components

architectural frameworks

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

The architectural design and system components specificationstep 3

Robustness diagramsstep 2

displaying topics(specific code)

View Layer Control Layer Model Layer

responding comments(specific code)

inserting experiences(specific code)

control invoker(repetition code)

displaying CMD(specific code)

responding CMD(specific code)

insertion CMD(specific code)

data access helper(repetition code)

topics manager(specific code)

experiences manager(specific code)

Page 48: A Study on A Layer- and Architecture- based Agile Software Project Development Method

48

Page 49: A Study on A Layer- and Architecture- based Agile Software Project Development Method

49

Page 50: A Study on A Layer- and Architecture- based Agile Software Project Development Method

50

The conceptual components identification

use cases step 1

step 4

step 5(Table 2)

View layerstub

components

Control layerstub

components

Model layerstub

components

architectural frameworks

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

The architectural design and system components specificationstep 3

Robustness diagramsstep 2

displaying topics(specific code)

View Layer Control Layer Model Layer

responding comments(specific code)

inserting experiences(specific code)

control invoker(repetition code)

displaying CMD(specific code)

responding CMD(specific code)

insertion CMD(specific code)

data access helper(repetition code)

topics manager(specific code)

experiences manager(specific code)

Page 51: A Study on A Layer- and Architecture- based Agile Software Project Development Method

51

IV1(A2)A1 IV1

(A3)IV1(A5)

IV1(A6)

2 65 21 4

3

12

11

IV1(A4)

IV2(A2)

IV2(A3)

IV2(A5)

IV2(A6)

2 65 21 4

3

12

11

IV3(A2)

IV3(A3)

IV3(A5)

IV3(A6)

2 65 21 4

3

12

11

IV3(A4)

1

1

1

IV2(A4)

IC1(A7)

IC2(A7)

IC3(A7)

P2P1 P3 P621 3 4 5 6 11 12

Page 52: A Study on A Layer- and Architecture- based Agile Software Project Development Method

52

IV1(A2)A1 IV1

(A3)IV1(A5)

IV1(A6)

2 65 21 4

3

12

11

IV1(A4)

IV2(A2)

IV2(A3)

IV2(A5)

IV2(A6)

2 65 21 4

3

12

11

IV3(A2)

IV3(A3)

IV3(A5)

IV3(A6)

2 65 21 4

3

12

11

IV3(A4)

1

1

1

IV2(A4)

IC1(A7)

IC1(A9)

2 8 21

43

9

IC1(A8)

IC2(A7)

IC2(A9)

2 8 21

43

9

IC2(A8)

IC3(A7)

IC3(A9)

2 8 21

43

9

IC3(A8)

IM2(A10)

IM1(A10)

P2P1 P3 P621 3 4 5 6 11 12P4 P587 9 10

1 7 10

1 7 10

1 7 10

1 7

1 7

1 7

Page 53: A Study on A Layer- and Architecture- based Agile Software Project Development Method

53

The conceptual components identification

use cases step 1

step 4

step 5(Table 2)

View layerstub

components

Control layerstub

components

Model layerstub

components

architectural frameworks

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

The architectural design and system components specificationstep 3

Robustness diagramsstep 2

displaying topics(specific code)

View Layer Control Layer Model Layer

responding comments(specific code)

inserting experiences(specific code)

control invoker(repetition code)

displaying CMD(specific code)

responding CMD(specific code)

insertion CMD(specific code)

data access helper(repetition code)

topics manager(specific code)

experiences manager(specific code)

Page 54: A Study on A Layer- and Architecture- based Agile Software Project Development Method

54

Page 55: A Study on A Layer- and Architecture- based Agile Software Project Development Method

55

displaying topics(specific code)

View Layer Control Layer Model Layer

responding comments(specific code)

inserting experiences(specific code)

control invoker(repetition code)

displaying CMD(specific code)

responding CMD(specific code)

insertion CMD(specific code)

data access helper(repetition code)

topics manager(specific code)

experiences manager(specific code)

displaying topics

responding comments

inserting experiences

system

topics manager

experience manager

user

boundary control entity

Step 2

the transformation from robustness diagramsinto the specification and instantiated design

of system components (exampled by MVC-3)

Table 2:

Page 56: A Study on A Layer- and Architecture- based Agile Software Project Development Method

56

IV1(A2)A1 IV1

(A3)IV1(A5)

IV1(A6)

2 65 21 4

3

12

11

IV1(A4)

IV2(A2)

IV2(A3)

IV2(A5)

IV2(A6)

2 65 21 4

3

12

11

IV3(A2)

IV3(A3)

IV3(A5)

IV3(A6)

2 65 21 4

3

12

11

IV3(A4)

1

1

1

IV2(A4)

IC1(A7)

IC1(A9)

2 8 21

43

9

IC1(A8)

IC2(A7)

IC2(A9)

2 8 21

43

9

IC2(A8)

IC3(A7)

IC3(A9)

2 8 21

43

9

IC3(A8)

IM2(A10)

IM2(A11)

IM2(A12)

2 8 21

9

IM1(A10)

IM1(A11)

IM1(A12)

2 8 21

9

P2P1 P3 P621 3 4 5 6 11 12P4 P587 9 10

9

9

9

1 7 10 10

1 7 10 10

1 7 10 10

1 7

1 7

1 7

Page 57: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Back to the five most important items

• the five most important items of Walker Royce’s Software Project Management:

1. Base the process on an architecture-first approach.

2. Establish an iterative life-cycle process that confronts risk early.

3. Transition design method to emphasize component-based development.

4.4. Establish a Establish a changechange management environment. management environment.

5.5. Enhance change Enhance change freedomfreedom through tools that support through tools that support round-tripround-trip engineering. engineering.

57

Page 58: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Issue 4• It is necessary to provide a round trip engineering

environment in which real-time component real-time component development development statusstatus is supported so that the overall project progressprogress is transparent.

• This also helps to ensure that whenever a component is modified, it is also in accordance with the SOP procedures.

• Finally, it ensures software qualitysoftware quality, helping to better estimate

the impact of the modification on the project schedule.

58

Page 59: A Study on A Layer- and Architecture- based Agile Software Project Development Method

59

Page 60: A Study on A Layer- and Architecture- based Agile Software Project Development Method

60

Page 61: A Study on A Layer- and Architecture- based Agile Software Project Development Method

The conceptual components identification

Robustness diagrams

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

components code(control layer)

components code(view layer)

components code(model layer)

The development layer and activity order determination

step

act

ion

s fo

r ea

ch la

yer

use cases

transformation between steps

development direction

interactiondirection

development step action

developmentstep result

MVC-3 layer

architectural layer

step resultdiagram

The architectural design and system components specification

(software development framework independent)

The implement components

use cases

The use case identification

Legends

The instantiated system components design

step 1

step 2

step 3

step 4

step 5

instantiatedsystem components

(view layer)

instantiatedsystem components

(model layer)

instantiatedsystem components

(control layer)

The software components design(software development framework dependent)

step 7

step 6

61

The Development Method

Step 6. The software components design (software development framework dependent) for book publishing that employs software framework specific features into system components for easing the generation of specific implementation code skeletons on the chosen software framework.

The conceptual components identification

use cases step 1

step 4

step 5(Table 2)

View layerstub

components

Control layerstub

components

Model layerstub

components

architectural frameworks

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

The architectural design and system components specificationstep 3

Robustness diagramsstep 2

displaying topics(specific code)

View Layer Control Layer Model Layer

responding comments(specific code)

inserting experiences(specific code)

control invoker(repetition code)

displaying CMD(specific code)

responding CMD(specific code)

insertion CMD(specific code)

data access helper(repetition code)

topics manager(specific code)

experiences manager(specific code)

step 6 (Table 5 : example by Java EE)

JSP

JSP

JSP

Servlet

Servlet

Servlet

EJB

EJB

Page 62: A Study on A Layer- and Architecture- based Agile Software Project Development Method

62

displaying topics(JSP)

View Layer Control Layer Model Layer

responding comments(JSP)

inserting experiences(JSP)

control invoker(Spring MVC)

@controllerdisplaying CMD

Responding CMD

Insertion CMD

data access helper(Srping & Hibernate)

@Service@Repositorytopics manager

@Service@Repositoryexperiences manager

Spring MVC Spring Hibernate

Page 63: A Study on A Layer- and Architecture- based Agile Software Project Development Method

63

displaying topics(JSP)

View Layer Control Layer Model Layer

responding comments(JSP)

inserting experiences(JSP)

control invoker(Struts)

extends Actiondisplaying CMD

data access helper(Srping & Hibernate)

@Service@Repositorytopics manager

@Service@Repositoryexperiences manager

Struts Spring Hibernate

extends Actionresponding CMD

extends Actioninsertion CMD

Page 64: A Study on A Layer- and Architecture- based Agile Software Project Development Method

The conceptual components identification

Robustness diagrams

boundarycomponents

controlcomponents

entitycomponents

model layercomponents

control layercomponents

view layercomponents

components code(control layer)

components code(view layer)

components code(model layer)

The development layer and activity order determination

step

act

ion

s fo

r ea

ch la

yer

use cases

transformation between steps

development direction

interactiondirection

development step action

developmentstep result

MVC-3 layer

architectural layer

step resultdiagram

The architectural design and system components specification

(software development framework independent)

The implement components

use cases

The use case identification

Legends

The instantiated system components design

step 1

step 2

step 3

step 4

step 5

instantiatedsystem components

(view layer)

instantiatedsystem components

(model layer)

instantiatedsystem components

(control layer)

The software components design(software development framework dependent)

step 7

step 6

64

The Development Method

Step 7. The components implementation that finishes the implementation of software components in specific programing languages.

Page 65: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Preliminary Results

65

Page 66: A Study on A Layer- and Architecture- based Agile Software Project Development Method

66

Page 67: A Study on A Layer- and Architecture- based Agile Software Project Development Method

67

Page 68: A Study on A Layer- and Architecture- based Agile Software Project Development Method

68

Page 69: A Study on A Layer- and Architecture- based Agile Software Project Development Method

Conclusions

• 軟體系統開發成功率仍然偏低• a hierarchical structure of a layered developmen

t of system components– directs the management of its development activities – by annotated artifacts in the code– team productivities can be greatly enhanced by intima

te collaborations between development and management staff.

• 整合

69

Page 70: A Study on A Layer- and Architecture- based Agile Software Project Development Method

• agile/rapid development are inverse with the formal concepts in CMMI

• many organizations that have improved process maturity through CMMI now also want greater agility

• agile projects may be successful but indeed are not repeatable => LADM => CMMI level two, some processes are repeatable

• LADM => possess specific structure and discipline in the agile practices and measures => CMMI level three

• At maturity level three or above => ADCT => processes are expected, significant modification to the processes must be well documented

70

Page 71: A Study on A Layer- and Architecture- based Agile Software Project Development Method

目前我所知到軟體工程研究狀況

• 北京交通大學舉辦的國際軟體工程學術研討會 ,軟體工程的 paper 仍然不多

• 軟體工程說實在話的 , 不太工程 , 其實有更多的系統分析設計與軟體專案管理成分所在

• 從實務的角度來看 :– 資訊管理部門 => 系統開發– 系統開發成功率很低

• 學術界研究難做 :– 1. 方法 2. 工具 3. 案例 <= 虛擬 ( 遜 ), 真實 ( 難 ), 真

實數據比較 ( 更難 )71

Page 72: A Study on A Layer- and Architecture- based Agile Software Project Development Method

論文發表一些心得• 方法論的發表是累積

– 黑名單期刊是毒瘤• 經世致用的 paper, 反而搶手

– 對工作上的幫助– 對研究上的幫助

72

Page 73: A Study on A Layer- and Architecture- based Agile Software Project Development Method

73

Thank You!