Vì một số lý do về lịch sử mà chương trình giảng dạy công nghệ phần mềm của HANU đã được thiết kế dựa trên phiên bản cũ hơn của chương trình khung. Trong bài báo này, tác giả nghiên cứu cách cập nhật chương trình này sử dụng phương pháp phát triển phần mềm hướng miền. Tác giả định nghĩa phương pháp cập nhật dựa trên một phương pháp tiếp cận hướng miền, được áp dụng để khái niệm hóa cấu trúc của chương trình giảng dạy CNPM. Tác giả áp dụng phương pháp để chỉnh sửa ba môn học nòng cốt của chương trình giảng dạy công nghệ phần mềm HANU. Mời các bạn cùng tham khảo chi tiết nội dung bài viết!
Trang 1NGHIÊN CỨU SƠ BỘ VỀ XÂY DỰNG CHƯƠNG TRÌNH GIẢNG DẠY
Lê Minh Đức *
Trường Đại học Hà Nội
Tóm tắt: Giáo dục về công nghệ phần mềm (CNPM) đóng vai trò quan trọng trong việc
phát triển các kiến thức nghề và học thuật của lĩnh vực CNPM Sách chương trình khung giảng dạy của ACM/IEEE-CS gần đây giúp cung cấp cho các nhà thiết kế chương trình giảng dạy các hướng dẫn cập nhật và cần thiết Tuy nhiên, vì một số lý do về lịch sử mà chương trình giảng dạy CNPM của HANU đã được thiết kế dựa trên phiên bản cũ hơn của chương trình khung Trong bài báo này, tác giả nghiên cứu cách cập nhật chương trình này sử dụng phương pháp phát triển phần mềm hướng miền Tác giả định nghĩa phương pháp cập nhật dựa trên một phương pháp tiếp cận hướng miền, được áp dụng để khái niệm hóa cấu trúc của chương trình giảng dạy CNPM Tác giả áp dụng phương pháp để chỉnh sửa ba môn học nòng cốt của chương trình giảng dạy CNPM HANU
Từ khóa: Giáo dục công nghệ phần mềm, phương pháp công nghệ phần mềm, thiết kế
định hướng miền
Abstract: Software engineering (SE) education plays an important role in advancing
professional and academic SE knowledge The recent ACM/IEEE-CS SE curriculum guidebook provides necessary and up-to-date guidelines for SE curriculum designers However, for historical reasons, the current HANU’s SE curriculum was designed based on an older version
of the guidebook In this paper, we investigate an approach to update this curriculum using the domain-driven software development (DDSD) method We define the update method based on
a model-driven approach to conceptualise the SE curriculum structure We apply the method to revise three core courses of the HANU’s SE curriculum
Keywords: software engineering education, software engineering method, domain-driven
design
A PRELIMINARY STUDY ON IMPLEMENTING SOFTWARE ENGINEERING CURRICULUM USING THE DOMAIN DRIVEN SOFTWARE DEVELOPMENT METHOD
I INTRODUCTION
There is no doubt that software engineering (SE) education has been playing a crucial role in consolidating, disseminating and advancing both the professional and academic knowledge and skills of the SE discipline The first formal attempt to standardise the body of knowledge for the undergraduate SE education was a joint effort
Trang 2from the world’s largest professional computing organisations: Association for Computing Machinery (ACM) and IEEE Computer Society In 2004, an
ACM/IEEE-CS joint task force released the first version (SE 2004) of the SE curriculum guidebook [1] Ten years later, another joint task force from the two organisations was formed to revise the first guidebook and released an updated SE 2014 version [2] The two guidebooks both recognise SE as a computing discipline and provide a set guiding principles and a body of knowledge for SE curriculum designers
Since its establishment in 2012, the Department of SE1 (Hanoi University, HANU) has been adopting the SE 2004 guidebook to design the SE courses that form part of the Faculty of IT’s undergraduate program Initially, these include 6 core courses [3] that were taught in the first two years of the IT program Since 2018, the curriculum has been undergoing an extensive revision and expansion to include a more complete set of courses The aim is to teach these courses over the entire duration of the IT program However, for historical reason, the foundation of the updated curriculum was still kept to the SE 2004 A question that can be asked, therefore, is whether or not this curriculum is up to date with regards to the SE 2014 guidebook
Our study of the literature concerning SE 2014 guidebook [2], [4], [5] reveals one
of the key issues facing curriculum review is identify new and relevant course topics, which have emerged from state-of-the-art software development methods (e.g service-oriented) It is important to note that the SE 2014 guidebook defines its knowledge elements as abstractions from the methods, techniques and tools that are performed in different phases of the software development process The knowledge body is, however, designed to be independent from any particular software development methods This provides curriculum designers with a flexibility to choose an implementation method suitable for their contexts
Hence, it is possible to argue for the application of an “abstract” and modern software development method to revise SE curriculum The idea is to map the curriculum’s courses to components of the method and then analyse them for new knowledge elements that need to be added Our goal in this paper is to investigate the application of the domain-driven software development (DDSD) [6]–[8] method to revise the HANU’s SE curriculum DDSD has been proven in research and has successfully been applied in teaching and in practical software development DDSD is based on the well-known domain-driven design (DDD) method [9], which has shown to
be compatible with other contemporary software development methods, such as service-oriented software development DDSD tackles two core problems in DDD-based software development: domain modelling and scalable software construction from this model DDSD is practical in its use of high-level programming languages, such as Java and C#
1 http://fit.hanu.edu.vn
Trang 3Figure 5: Knowledge map of SECF Source: [2]
Our approach is based on conceptual modelling and model evolution [10] We first construct a conceptual model of the SE curriculum and then identify suitable DDSD-specific topics to match this model Our main contribution is therefore a revised
SE curriculum for HANU that incorporates state-of-the-art SE topics, identified based
on the DDSD method The rest of the paper is structured as follows Section 0 reviews the background concepts Section 0 explains the research method Section IV discusses our application of the method to revise the HANU’s SE curriculum Section V presents
an evaluation of the result Section VI concludes the paper and briefly discusses plan for future work
II.BACKGROUND
This section reviews the background concepts concerning DDSD, SE guidebook and HANU’s SE curriculum We describe the SE guidebook using a meta-model and SE curriculum as a model that realises the meta-model in a specific institutional context
A Domain driven software development (DDSD) method
The domain driven software
development (DDSD) method [6]–[8], [11]
has recently been proposed by this paper’s
author in a collaborative research work with
two researchers from the University of
Engineering and Technology (Vietnam
National University, Hanoi) DDSD was
designed based on the classic domain driven
design (DDD) method [9], [12], [13], but
incorporates a number of useful modern SE
features, such as iterative development and
annotation-based domain specific language In essence, DDSD is an iterative
development method, whose process model (shown in Figure 4) consists in a sequence
of three phases: (1) construct the domain model, (2) construct a module-based software from the domain model and (3) review the software More recently, DDSD has been applied in teaching an SE course [14] This is an advanced SE course, named Special Subject 2 (SS2), that is taught in the undergraduate IT program at HANU
B Software engineering 2014 guidebook
In this paper, we call to the SE curriculum
guidebooks [1], [2] software engineering curriculum
frameworks (SECFs) Our main focus is on the current
SECF 2014 version In addition, we will refer to a
particular implementation of SECF in an SE
undergraduate program (such as the one being offerred at
HANU) as SEC model In software design terminology,
SECF is a specification (describing what content SEC
models should have), while SEC model is a particular
Figure 4: The DDSD process model
Trang 4Figure 6: The SECF model (Adapted from [4])
implementation of this specificiation, describing how the content is realised in terms of
one or more course sequences
The knowledge structure of SECF is organised into three levels: knowledge area (KA), knowledge unit (KU) and knowledge topic (KP) One KA consists of one or more KUs, each of which consists of a set of KPs The knowledge map of SECF [2] (shown
in Figure 5) consists of 10 KAs and their dependencies The figures displayed within brackets are the required numbers of lecture hours of each KA
1) SECF model
Figure 6 shows a model for SECF,
which is extended from the meta-model
proposed in [4] In this paper, we call this
model SECF model The three concepts
on the left hand side of the figure form the
software engineering education
knowledge (SEEK) structure of SECF
The reflexive “precedes” association
shows the dependency between the KAs On the other hand, the three concepts on the right hand side form the structure of an
SE curriculum that implements SECF
The reflexive “precedes” association models course sequences A curriculum is an SEC model that implements (realises) the SEEK An SEC model is composed of one or more course sequences Note from the figure that both KU and Course consist of some Learning Objectives (LOs) LO, which is treated as being synonymous to ‘outcome’ by SECF2, is the basic unit for mapping the courses of a curriculum to its KPs
2) General learning objectives
SECF [2] provides curriculum designers with a generic list of LOs that students of
an SEC model are expected to obtain To ease reference, the following list was reproduced from [2]:
1 Professional knowledge: acquire necessary software engineering knowledge,
skills and professional standards
2 Technical knowledge: apply foundational theories, models, and techniques
concerning problem identification and analysis, software design, development, implementation, verification, and documentation
3 Team work: work effectively as part of a team in a software development
project
4 End user awareness: understand the importance of upholding professional
working standards with stakeholders
2 curriculum guideline 2 (Section 5.2, Chapter 5) of SECF [2]
Trang 55 Design solutions in context: design one or more domain-specific solutions using multi-faceted software engineering approaches
6 Perform trade-offs: resolve conflicts in project objectives within project
constraints (cost, time, knowledge and organisational)
7 Continuing professional development: demonstrate the ability to learn new
software engineering knowledge and skills
It is observed that while LOs 1, 3, 4, 6 and 7 are fundamental to engineering curriculums in general, LOs 2 and 5 relate to the core SE technical knowledge areas First, LO 2 summarises the SE’s KAs shown in Figure 5, while LO 5 highlights the essence of SE design (the DES KA) More specifically, the KAs of SECF were identified based on the core activities that are performed as part of a software development process [15] These activities include overall project management and those that are performed at different phases of the development process These phases include requirement definition, design, implementation, testing, operation and maintenance Conceptually, PRF, PRO and QUA concern project management, MAA concerns requirement definition and design, REQ and V& V concern requirement definition, DES and V&V concern design Note that these mappings are coarse-grained, because there are aspects of some KAs (e.g SEC and QUA) which concern all phases Second, LO 5 emphasises two aspects of design that are particularly relevant to the research question of this paper: domain-specific context and the multi-faceted software engineering approaches This last observation raises an interesting prospect of applying the DDSD method to study SE at the undergraduate level
C SEC-HANU: A SEC model for
FIT-HANU
In this paper, the concept of SEC
model is applied to construct an SEC model
of the SE curriculum, which is currently
being taught at the Faculty of IT, HANU
Figure 7 shows the SEC model of this
curriculum In this paper, we call this model
SEC-HANU The arrowed lines in the
model express the course sequences They
are instances of the “precedes” association
on Course in Figure 6 The model includes
a subset of courses, originally designed [3]
based on the SECF2004 model [1], and a
number of newly-developed courses There
are two main reasons why SEC-HANU is a
valid model for SECF2014: (1) the
designated teaching staff consulted
SECF2004 to select and design the Figure 7: The SEC-HANU model
Trang 6new courses and (2) according to [5], the guiding principles and SEEK elements of SECF2004 are preserved in SECF
The first 9 courses of SEC-HANU are compulsory courses, which together form
the required sequence The remaining three courses are elective
The required courses are:
1 PR1: Programming 1
2 PR2: Programming 2
3 SS1: Special Subject 1
4 WPR: Web programming
5 SE1: Software Engineering 1
6 SS2: Special Subject 2
7 SQA: Software Quality Assurance
8 SE2: Software Engineering 2
9 SPM: Software Project Management
The core sequence of SEC-HANU is a subsequence of the required sequence,
which consists of these 5 courses: PR2, SE1, SQA, SE2, and SPM The names of these core courses are highlighted in Figure 7
III.METHOD
This paper argues that DDSD is suitable for implementing SEC model There are two reasons for this First, DDSD’s incremental and layered approach to software development is fits naturally with the knowledge acquisition process More specifically, the courses relevant to the software development activities that are performed at one development layer can be taught in isolation from those at other layers Further, the courses can be taught incrementally, allowing the students to gradually acquire the knowledge Second, SECF [2] is designed to be software-process-model-independent, which allows different SDLC process models to be used to realise it
The overall goal of our research is to investigate the possibility of implementing
an SEC model using DDSD In this preliminary research, we examine how to apply DDSD to update the current SEC-HANU model More specifically, we focus on updating the following three courses of the core sequence (presented in Figure 7): PR2, SE1 and SE2 The first two courses are taught by this paper’s author The third course is taught by Mr Nguyen, Dinh Tran Long, a teaching staff in the SE department We will investigate the remaining courses of SEC-HANU in future work
Our method is based on the model-driven approach to conceptualise SECF (see Section B) and is inspired by model evolution theory [10] We update the aforementioned courses as follows:
1 data modelling: to construct the curriculum structure model (as explained in
Trang 7Section 0)
2 model match and merge: identify DDSD-specific topics that match the
SEC-HANU model and add them to this model
In step 2, the suitable DDSD topics are identified based on this paper author’s experiences in teaching and in DDSD research and curriculum design Care is taken in order to not exceed the total number of credit hours of each course The current HANU teaching guideline states that these can be measured from the lecture hours As of this writing, the standard lecture hours of the three selected courses are 30 Each course has
between 2 to 4 hours at the end (called the revision time) that are reserved for reviewing
the course content The objective is then to use a portion of these hours for the additional DDSD-specific topics Each course is presented with two tables: one table listing names of the existing course topics and the newly proposed DDSD-specific topics (if any), the other table listing descriptions of these DDSD topics The first table has a row that shows the total lecture hours of both the existing and the new topics
This section describes the result of applying the method discussed in the previous section to revise the three core courses of SEC-HANU Each course is presented in a separate subsection
A Course module PR2
Since the PR2 course already uses a simplified version of the DDD specification approach [7] of DDSD, a necessary update to this course only involves making explicit the connection to DDSD Table 1 lists the detailed update to the existing PR2 course topics Table 2 lists the descriptions of the DDD-specific topics presented in Table 1 In Table 1, column “As-is” lists the existing course topic names, while column “DDSD-Specific” list the update The total row shows that we can incorporate the new topics into the course without affecting its standard lecture hours Specifically, the number of additional hours is 1.05, which is well within the revision time range of the course
Table 1: DDSD-specific update to the PR2 course
No
1
Introduction:
- Overview of programming languages
- Overview of programming languages:
(+) Object-based programming language [9]
(0.15)
2
The Java programming language:
- Syntax and semantics
- Java syntax: BNF-typed grammar rule,
identifier, method, block, statement,
-
3
Trang 8expression
3
Operational principles of compiler:
- Compiler and virtual machine
- Operational principles of compiler and
virtual machine
-
2
4
Verifiable program:
- Concept of verifiable program
- Design specification of a verifiable,
procedural program
- Coding a verifiable program
- Design specification of a verifiable, procedural program:
(+) DDD and procedural program design (0.1)
5
Object oriented program:
- Concepts of and motivation for object
oriented program
- Comparison between OOP and
procedural program
- Benefits of OOP
- Concepts of and motivation for object oriented program:
(+) OOP and DDD [9] (0.15)
6
Design and implementation of class:
- Basic terminology
- Design specification method
- Specifying class, field, method
- Implementing class, field, method
- Design specification method (+) DDD specification of OOP [7] (0.15)
- Specifying class, field, method
(+) DDD specification of class, field, method [7] (0.2)
7
Class design issues:
- Basic issues
- Private constructor
- Derived attribute
- Cloning
- Nested class
- Recursive class
- Basic generic class
(+) Applying DDD specification to address the design issues (0.15)
8
Object oriented design and
implementation of abstract data types:
- Overview of ADT
- Design method
- Tree
- List
(+) Applying DDD specification to design the ADT (0.15)
9
Object oriented design automation:
- What is and why OOP design
automation?
- Design automation method: concepts,
technique and tool
- Method demonstration
-
2
Table 2: Descriptions of the DDD-specific topics for PR2
1 (+) Object-based programming language
[9]
- highlight the features of OOPL which make them suitable for solving real-world
Trang 9problems (synthesised from Evans’s discussion on the suitable programming languages for DDD [9])
4
(+) DDD and procedural program design - demonstrate the benefit of
domain-specific design domain-specification of procedural program (e.g by using OpenJML to automatically verify a procedure’s code its design specification)
5
OOPL and DDD and why it is a better candidate for DDD than procedural program
6
(+) DDD specification of OOP [7]
(+) DDD specification of class, field,
method [7]
- make explicit the connection between DDD and the OOP design specification currently being taught
7
(+) Applying DDD specification to address
the design issues
- explicitly use the design specification to realise definition of the design rules for resolving the issues
8
(+) Applying DDD specification to design
the ADT
- explicitly use the design specification to design the ADTs
B Course module SE1
As shown in Table 3, the update does not violate the standard lecture hours of the SE1 course The number of new lecture hours of the DDSD-specific topics is 1.85, which is less than half of the 4-hour revision time of the course
Table 3: DDSD-specific update to the SE1 course
No
1
Advanced design:
- Type hierarchy
- Exception
- Iteration abstraction
- Type hierarchy:
(+) Applying DDD specification to design type hierarchy (0.25)
- Iteration abstraction:
(+) Applying DDD specification to design iteration abstraction (0.15)
2
Testing and debugging:
- Testing concept
- Testing procedural program
- Black and white box testing
- Defensive programming
- Debugging
- Black box testing:
(+) Applying DDD specification to design the test data (0.15)
3
Software and requirement
engineering:
- Introduction to software
engineering
- Requirement engineering
- Introduction to software engineering:
(+) Domain-driven software engineering [9] (0.15)
4
Requirement modelling and
specification:
- UML class and use case
diagrams
(+) Domain modelling concepts and
Trang 10- Requirement specification
5
Object oriented design:
- Design overview
- Design principles and process
- Design notebook
- Case study: KEngine
- Design overview
- Design principles and process:
(+) DDD principles [9] (0.5)
6
Implementation:
- Design evaluation
- Implementation strategies
- Case study: KEngine
- Implementation strategies:
(+) Domain driven implementation strategies (0.15)
7
Software testing:
- Software testing methods
- Development testing
- Test program design
- Case study: KEngine
- Development testing:
(+) Domain driven testing strategy (0.25)
Table 4: Descriptions of the DDD-specific topics for SE1
1
(+) Applying DDD specification to design
type hierarchy
(+) Applying DDD specification to design
iteration abstraction
- make explicit that the existing design specification is DDD
2 (+) Applying DDD specification to design
the test data
- explain how BBT rules can be applied using the existing design specification (DomainConstraint, DOpt)
- demonstrate the benefit of the design specification by showing how the test data can automatically be generated from it
3 (+) Domain-driven software engineering [9] - formally introduce DDD as a software
engineering method
4 (+) Domain modelling concepts and
technique [7], [9]
- relate requirement modelling and specification to domain modelling in DDD
for design
6 (+) Domain driven implementation
strategies
- explain how the 3 implementation strategies can be adapted to DDD
is adapted to DDD
C Course module SE2
As shown in Table 5, the update does not violate the standard lecture hours of the SE2 course The number of new lecture hours of the DDSD-specific topics is expected
to take up the 4-hour revision time of the course Although this is acceptable, it would
be recommended to adjust the existing course topics (e.g by increasing the overlapping contents with the DDSD topics), so that the additional lecture hour time would be