0% found this document useful (0 votes)
615 views

01 Software TOPCIT

Uploaded by

Shawn Dacles
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
615 views

01 Software TOPCIT

Uploaded by

Shawn Dacles
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 88

ESSENCE

ESSENCE

Technical Field 01 Software Development


ESSENCE Ver.2

Technical Field
01 Software Development
16
20
ht
rig
py

Technical Field
Co

01 Software Development

16

16
TOPCIT ESSENCE is published to provide learning materials for TOPCIT
examinees.

20

20
The TOPCIT Division desires the TOPCIT examinees who want to acquire
the necessary practical competency in the field of ICTto exploit as self-
directed learning materials.

For more information about TOPCIT ESSENCE, visit TOPCIT website or send
us an e-mail.
ht

ht
As part of the TOPCIT ESSENCE contents feed into authors’ personal
opinions, it is not the TOPCIT Division’s official stance.
rig

rig
ESSENCE Ver.2

Ministry of Science, ICT and Future Planning


Institute for Information and Communications Technology Promotion
Technical Field
py

py
Korea Productivity Center

Publisher TOPCIT Division


01 Software Development
+82-2-398-7649 www.topcit.or.kr/en [email protected]
Co

Co
Date of Publication 1st Edition 2014. 12. 10
2nd Edition 2016. 2. 26

Copyright © Ministry of Science, ICT and Future Planning


All rights reserved.


No part of this book may be used or reproduced in any manner whatever
without written permission.
16

16
20

20
ht

ht
Technical Field
rig

rig
01 Software Development
ESSENCE Ver.2
py

py
Co

Co


CONTENTS ESSENCE

Software Development and Management 18 Concurrent Process 35


Deadlock 35
01 Characteristics of Software 20 Scheduling 36
Virtual Memory 37

16

16
Differences with Hardware 20
Characteristics of Software 20 File System 39
Four Critical Points in Software Engineering 21 I/O System 39

20

20
Lifecycle of Software 21 Latest OS Technologies 40

02 Introduction of Software Development 22 04 Computer Structure 40


Software Development 22 Components of a Computer 40

ht

ht
Hierarchy Structure and Mechanism of a Memory Device 41
Latest Technologies and Trends 42
Software–based Technologies 26
rig

rig
01 Data Structure 28 Analysis and Specification of Requirements 48
Definition 28
py

py
Classification 28 01 Analysis of Software Requirements 50
Selection Criteria for a Data Structure 28 Outline of Requirement Analysis 50
Utilization of a Data Structure 28 Elicitation Methods of Functional and Non-functional Requirements 51
Co

Co
02 Algorithms 29 02 Modeling 52
Definition of Algorithms 29 What is Modeling? 52
Criteria for Algorithm Analysis 29 Three Viewpoints in Modeling 52
Analysis of Algorithm Performance 30


03 Structured Analysis 53
Algorithms for Sort and Search 31
53
03 Operating System (OS) 33 Data Flow Diagram (DFD) 53
Concept of Process 33 Mini-Specification 54
Thread 34 Data Dictionary 54

06 TOPCIT ESSENCE M2 Software Development 07


CONTENTS ESSENCE

04 Object-Oriented Analysis 54 Software Architecture Design 67


Use Case 55
Information Modeling 55 01 Software Architecture Design 69

16

16
Dynamic Modeling 55 Outline of Software Architecture 69
Functional Modeling 56 Procedure of designing software architecture 69

20

20
05 Requirement Specification 56 02 Types of Architectures 70
Repository Structure 70
MVC (Model –View- Controller) Structure 70
Principles of Software Design 58 Client-Server Model 70
ht

ht
Hierarchical Structure 70
01 Principles of Software Design 60
Division 60 03 Methods of Architecture Design Expression 71
rig

rig
Abstraction 60 Context Model 71
Information Hiding 60 Component Diagram 71
Stepwise refinement 61 Package Diagram 71
py

py
Modularization 61
Structuralization 61
Object-oriented Design Process 73
Co

Co
02 Cohesion and Coupling 62
Cohesion 62 01 Concept and Principle of the Object-oriented Design 75
Coupling 62 Objects and Classes 75
Encapsulation 75
03 Structured Design Techniques 63 Inheritance 76


Transform Flow-oriented Design 63 Polymorphism 76
Transaction Flow-oriented Design 65
02 Static Modeling and Dynamic Modeling 76
Static Modeling 76
Dynamic modeling 77

08 TOPCIT ESSENCE M2 Software Development 09


CONTENTS ESSENCE

03 Design Pattern 77 C (Programming Language) 92


Singleton Pattern 77 C++ 92
Factory Method Pattern 78 Java 93
Node.js 93

16

16
Façade Pattern 78
Strategy Pattern 78
03 Code Reuse and Refactoring 94

20

20
Concept of Code Reuse and Refactoring 94
Design Concept in the User Interface 81 Key Refactoring Techniques 95

01 Design Concept and Principles of User Interface (UI) 83


Software Testing 97
ht

ht
A Need for Consistency 83
User-oriented Design 83
01 Concept and Process of Testing 98
Feedback 83
rig

rig
Identification of Destructive Actions 83 Concept of Testing 98
Testing Process 98
02 HCI (Human-Computer Interaction) 84 How to Design Test Cases 99
py

py
Concept of HCI 84
02 Testing Types and Techniques 100
Types of HCI 84
Testing Types 100
Co

Co
03 Components of the Graphic User Interface(GUI) 85 Testing Techniques 100

03 Software Build and Distribution 102


Programming Language & Code Reuse and Refactoring 88 Software Build 102
Software Distribution 102


01 Characteristics of Programming Languages 90
Concept of Programming Languages 90
Interpreter Language 90 Software Maintenance & Reverse
Compiler Languages 91 Engineering and Re-engineering 105

02 Characteristics of Major Programming Languages 92 01 Software Maintenance 106

10 TOPCIT ESSENCE M2 Software Development 11


CONTENTS ESSENCE

Definition of Software Maintenance 106 01 Outline of Software Configuration Management 122


Purpose of Software Maintenance 106 Definition of Software Configuration Management 122
Types of Software Maintenance 106
Procedure of Software Maintenance 107 02 Concept Map of Configuration Management and its Components 122

16

16
Types of Software Maintenance Units 108 Concept Map of Configuration Management 122

20

20
02 Reverse Engineering, Re-engineering, and Reuse 109 03 Activities of Configuration Management 123
Software 3R 109 Activities of Configuration Management 123
Outline of Reverse Engineering 110 Effects of Configuration Management 124
Outline of Re-engineering 111 Considerations for Configuration Management 124
ht

ht
Outline of Software Reuse 112
04 Configuration Management Tools 125
Configuration Management Tools 125
rig

rig
Management of Software Requirements 114 Subversion (SVN) 125
Distributed Version Control System (Git) 126
01 Requirement Management 115
TFS (Team Foundation Server) 126
py

py
Definition of Requirement Management 115
Importance of Requirement Management 115
Purpose of Requirement Management 115 Software Quality Management 129
Co

Co
Process of Requirement Management 115
Principles in Requirement Management 116 01 Software Quality Management 130
Definition of Software Quality Management 130
02 Requirement Specification 116 Purposes of Quality Management 130
Requirement Specification Techniques 116 Elements of Software Quality 130

03 Management of Requirement Changes and Traceability


Outline of Requirement Traceability

Software Configuration Management


118
118

121

02 Perspectives of Software Quality
Users’ Perspective
Developers’ Perspective
Managers’ Perspective
131
131
131
131

12 TOPCIT ESSENCE M2 Software Development 13


CONTENTS ESSENCE

03 Characteristics of Software Quality and Major Software Quality Models 131 Agile Concept 145
Characteristics of Software Quality 131 Characteristics of Agile 146
Key Software Quality Models 132 Types of the Agile Methodology 146

16

16
04 Methods of Software Quality Measurement 133 02 Agile Development Methodology - XP 147
XP Outline 147

20

20
05 Software Quality Management 133 Values of XP 147
Practices of XP 148
06 Activities for Software Quality Assurance 134
Techniques for Software Quality Assurance 134 03 Scrum 148

ht

ht
Software Quality Assurance Procedure and Activities 135 Outline of Scrum 148
Activities for Software Quality Control and Evaluation 136 Scrum Process 149
Characteristics of Scrum 150
rig

rig
Company A - Taking a glimpse at a business
report in setting up a next-generation system 138 Mobile Computing 152
py

py
Business Outline 138
01 Outline of Mobile Computing 153
Project Background 138
Characteristics of Mobile Computing 155
Business Scope 138
Co

Co
Expected Results 139
02 Mobile Computing Development Process 156
Execution Strategies 139
Architecture Requirements 140
Requirements of Quality Attributes 140 Cloud Computing 158


01 Definition of Cloud Computing 159
Agile Development 143
Cloud Computing vs. Other Types of Computing 160
01 Concept of Agile Development 145
02 Types of Cloud Computing 161
Agile Background 145
Classification Based on Service Types 161

14 TOPCIT ESSENCE M2 Software Development 15


CONTENTS ESSENCE

Classification Based on Cloud Operation Forms 162

03 Server Virtualization Technology 162


Hypervisors 163

16

16
Types of Hypervisors 163
Types of Server Virtualization 164

20

20
04 Storage and Network Virtualization Technology 166
Storage Virtualization 166
Network Virtualization 166

ht

ht
Software Product Line Engineering 168
rig

rig
01 Outline of Software Product Line Engineering 169

02 Components of Software Product Line 170


py

py
03 Software Product Line Engineering Process 170
Co

Co
04 Advantages of Software Product Line Engineering 171


16 TOPCIT ESSENCE M2 Software Development 17
TOPCIT ESSENCE Software Development

M1
Ⅰ Software Development and Management

16

16
Latest Trends and Key Issues
According to the June 2015 release of Gartner, an American IT research consultancy, the global software Practical Tips C
 onsequences of not understanding software development
market will reach USD 1.2692 trillion in 2014, the portion of software in the overall ICT market is going up and management

20

20
every year, and the impact of software has skyrocketed in all industries as they have become ‘smarter’
and ‘big data-based.’ Therefore, high-quality software development in the smart IT environment has It is often the case that ‘software development’ is misunderstood as simple ‘coding.’ However,
become a critical factor to determine the system quality. software development is not just about coding with programming languages. Imagine that you are
using blocks to build a house. The first step is to design the foundation and structure of the house,
then map out the blocks on their form and characteristics. The house construction is complete after
building up the blocks according to the design. What if there is no layout or design? A house with
ht

ht
Study Objectives
a simple form can be easily constructed. However, if the building blocks are not stacked correctly,
Able to explain software characteristics and problems the house has to be rebuilt from the beginning, wasting time and efforts. Even after that, there is
still no guarantee that the house would be completed correctly. The same logic applies to software
rig

rig
Able to explain the background and purpose of software engineering
development. Developing good software requires a firm understanding of the requirements and
Able to explain software development process models
knowledge of management methodologies for software development procedures, personnel and
timeline. ‘Coding’ is simply a work for converting human descriptions into easily understandable
content by computers, using a program language such as ‘C’ and ‘JAVA.’ Thus, coding does not
py

py
Practical Importance High refer to the entire software development.
The importance of software has increased over time as its applications encompass all fields
including national defense, finance, communications and household electronics. However, since
software is embedded in so many varieties of products, it is difficult to validate the internal content.
Co

Co
Keywords Moreover, due to its invisibility, progress cannot be easily identified during software development.
Therefore, it is very challenging to validate errors during and after development or to find relevant
•Software characteristics
solutions.
•Software lifecycle
In the past, software development projects could be carried out even without a systematic process
•Analyzing requirements, design, implementation, testing
but just with programmers’ experience. However, large-scale projects today involve hundreds
•M anaging software requirements, managing software maintenance, managing software
of developers and confront numerous issues: communication among programmers, timeline and


configurations, managing software quality
cost management. This is all due to long development timelines and modifications of obscure and
complicated requirements. Therefore, understanding of software development and management
methodologies is essential to developing high-quality software.

18 TOPCIT ESSENCE M1 Software Development 19


TOPCIT ESSENCE Software Development

M1
01 Characteristics of Software Four Critical Points in Software Engineering

Software engineering is defined as ‘a discipline that systematically, descriptively and quantitatively covers the
Differences with Hardware entire lifecycle of software, ranging from development, operation and maintenance.’ Four critical points in software
engineering are as follows, through which high-quality software can be produced and delivered with given cost and
While hardware is a physical system, software is a logical system. So when applying hardware engineering timeline.
methodologies to software development and management, many issues and additional tasks arise.
① Methodologies

16

16
• Methodologies consisting of project planning and estimation, system and software analysis, data structure,
<Hardware vs. Software>
① SW is easier to modify. program structure, algorithm, coding, testing and maintenance management
- So, developers came to have a practice of pre-coding and post-editing. • Adopting special language orientation (e.g. object-oriented methodologies) or graph transcription methodologies
② SW does not wear or tear even if used for long, but its maintenance cost is higher than HW’s. • Adopting a series of assessment standards on software quality

20

20
-S W reliability cannot be accurately estimated with a HW reliability model, so its maintenance is different from HW’s in a
different way. ② Tools
③ It is difficult to know the development progress status due to the invisibility of SW.
• Referring to the automation or semi-automation of methodologies used for the sake of productivity or consistency
- Due to additional staffing to fulfill the SW development timeline, there have been frequent time delays.
④ It is difficult to define requirements for SW upon performing a task
- When 30-page-long requirements are needed to purchase HW equipment of USD 5 million, approximately 150-page • Presence of numerous tools throughout the software development lifecycle (e.g. requirement management tools,

ht

ht
-long requirements are needed to purchase the SW with the same price. modeling tools, configuration management tools, and modification management tools)
• When tools are integrated so that the information generated by a single tool can be used by other tools, it could
<Hardware vs. Software>
be set up as a system to support software development.
rig

rig
• Software developers’ creativity determines the development period and performance. ③ Procedure
• The ‘Law of Increasing Returns’ is applied, inducing no additional costs even with additional production (copying)
• A procedure enables rational and timely development of software by combining methodologies and tools
unlike hardware.
• A procedure defines the order for methodologies applied, output required (documents, reports, etc.), controls
py

py
that guarantee quality and assist the adjustment of modifications, and milestones that help software managers to
evaluate the progress.
Characteristics of Software
④ People
① Competent human resources are the key to software. • In software engineering, many factors (establishment, improvement, maintenance, etc.) are operated by people
Co

Co
The number of personnel is not in proportion with performance; the personnels' qualitative competency is more and organizations, so there is a greater dependency on people.
important. • Since more diverse issues arise compared with other engineering fields, it is realistically impossible to succinctly
and logically align software development in an engineering sense.
② Software determines the cost competitiveness of devices.
Well-developed software can generate sufficient output of a product, even with inferior hardware (memories, AP
Lifecycle of Software


and batteries), thus lowering the product cost.

③ Reusability is the key to software. ① Definition


• Software is an intangible asset where human beings’ creativity and intellectual capacities are integrated, and is • R eferring to the whole process ranging from the understanding of the user environment to operation/
also easily copiable. maintenance
• It can be infinitely reused without consuming tangible resources for the sake of additional production. • A general software lifecycle consists of the following activities: [feasibility review → development planning →
• That is why there is a great interest in open source for software, allowing the usage of resources free of cost for requirement analysis → design → implementation → testing → operation → maintenance]
anyone.

20 TOPCIT ESSENCE M1 Software Development 21


TOPCIT ESSENCE Software Development

M1
② Purpose • One of the most critical tasks in the implementation stage is to set a coding standard, based on which clear
• Calculating the project cost and configuring a basic framework for development planning coding is done.
• Standardizing terminologies
• Conducting project management ④ Testing
• Referring to a whole process of mobilizing manual or automatic methodologies to test and evaluate if a system
③ Selection of software lifecycle fulfills designated requirements and if there is any difference between expectations and actual outcome
• Important in tailoring the development process for a project in a company • A series of work to detect defects in order to secure software quality as the last stage for software quality
• Based on risks and uncertainties in system development and understanding of them assurance

16

16
• A model selected must be able to minimize risks/uncertainties inherent in a project. • Including the modification task for quality evaluation and enhancement of the developed software
• Representative lifecycle models include Waterfall Model, Prototype Model, Evolutionary Model and Incremental
Model.
Software Management

20

20
Software management activities include the following: defining activities to support software development, responding
02 Introduction of Software Development to problems with software operation and requests for improvement, securing traceability, integrity and project visibility
among output generated through the development and enabling systematic operation of software development
activities.
Activities of software development can be defined according to a software lifecycle.
ht

ht
① Software maintenance management
• Unlike other systems, requiring many modifications during and after the development
Software Development
rig

rig
• Developing software to allow such continuous modifications
• Software maintenance management refers to activities of adapting many modifications that occur in the course of
① Requirement analysis
using software after it has been delivered - a process to prepare against modifications.
• The biggest challenge in software development is to accurately decide on what to develop.
• Software requirement analysis is to understand users’ requirements as the first step.
py

py
② Software requirement management
• It is a critical step to reduce development cost in the entire development process.
• Software design modifications occur more frequently than hardware’s since software is intangible and incorrect
• Once investment is made for analyzing, defining and managing requirements in the initial stage, the overall
preconceptions about software requirement management.
software development period can be shortened and excess of cost and quality reduction can be prevented.
• Software requirement management is a system-based activity that extracts, configures and documents
requirements from project-related stakeholders, and sets and manages consent for modifications.
Co

Co
② Design
• Purpose of requirement management
• While the software requirement analysis process is a conceptual stage, the design process is the first step for - Communication: communication on what to do and why, and what has been modified
physical realization. - Collaboration: a means of collaboration for joint execution of tasks
• System design determines a system structure consisting of sub-systems, which are allocated to components - Verification: verification to see if everything has been completed as planned
including hardware and software.
• Design makes a direct impact on quality. ③ Software configuration management


• Poor design lowers stability in a system.
• Activities to create configuration for a system by compiling plans on various outputs (documents, source codes)
• Doing proper maintenance for an unstable system is difficult.
generated in the course of software development and maintenance, and to systematically manage and control
the modifications
③ Implementation
• A procedure to control modifications in the course of software development and maintenance is critical to
• The goal in the software implementation stage is to do programming to fulfill requirements based on a design manage the output of software development and obtain high quality software.
specification.
• A program must be coded to comply with a specific design or a user’s manual.

22 TOPCIT ESSENCE M1 Software Development 23


TOPCIT ESSENCE Software Development

M1
④ Software quality management
• Activities to verify if software development activities are aligned with a project plan and suitable for organizational Example Question
policies
- Software quality to be defined as the extent of software attributes that can fulfill the requirements Question type
- Also defined as overall characteristics related to capabilities of software products or services to fulfill explicit or
Descriptive question
implicit demands
• Characteristics of software quality are mostly functionality, reliability, usability, efficiency, maintenance and
Question
portability. Due to diverse types of software and their different usages, it is difficult to classify software quality

16

16
characteristics in a universal and consistent manner. Describe the characteristics of the Spiral Model on software lifecycle and its execution stage, and compare
- Functionality: Completeness/Accuracy/Interoperability in implementing features, security, standard compliance, it with the Agile Technique.
etc.
- Reliability: Operational stability, ease-of-use in failure recovery, service continuity, data recoverability, etc.

20

20
- U  sability: Ease-of-use in functional learning, understanding of input/output (I/O) data, possibilities/consistency Answer and explanation
to adjust user interface, etc.
1) Characteristics of the Spiral Model
- Efficiency: Response time, resource utilization rate, throughput, etc.
• It is a lifecycle model where risk management is the key. It uses the incremental technique to finally
- Maintenance: Problem diagnosis/solving, possible to modify set-up category selection, ease-of-use in
develop a software by continously developing a prototype.
updating, etc.
• It is the most realistic approach in establishing a massive system with a high financial and technical
ht

ht
- Portability: Conformity with the operating environment, ease-of-use in uninstalling, backward compatibility, etc.
risk burden where moderate investment based on performance could reduce risks.
• D epending on the needs, suitable quality characteristics must be selected and used, and accordingly,
• Project development cost and schedule management are critical, especially risk analysis.
appropriate verification activities (e.g. review, inspection, testing, simulation) must be conducted.
• The model itself is complicated, and it has not been fully verified with a new model.
rig

rig
2) Execution Stages for the Spiral Model
• Planning → Risk Analysis → Engineering → Customer Evaluation
py

py
3) Comparison with the Agile Model
• The Spiral Model is a document-based development methodology since it is less document-oriented,
while the Agile Model is code-oriented methodology for actual coding.
• The Spiral Model aims to manage and minimize risks that might occur in executing a project, while the
Agile Model embraces changes without quality reduction, emphasizes collaboration and ‘fast product
Co

Co
delivery’ as a repetitive methodology.
• The Spiral Model is a scalable form starting off from the center along with spiral execution and
repetition, so is suitable for large software, while the Agile Model is appropriate for software in small
and medium units.


Related E-learning Contents

•Lesson 1 Introduction to Software

24 TOPCIT ESSENCE M1 Software Development 25


TOPCIT ESSENCE Software Development

M1
Ⅱ Software–based Technologies

16

16
Latest Trends and Key Issues
Computers are becoming smaller, higher in performance and lower in price. They are used in every Practical Tips What if software-based technologies are not understood?
aspect of our life. A massive amount of data used in the rapidly changing IT environment along with the

20

20
emergence of smart devices have a short lifecycle and forms including videos vary. Therefore, such
In 2003, the northeastern part of the U.S. was hit hard by a blackout. The outage affected a wide swath
new technologies emerge to utilize and manage the data as big data, cloud computing, mobile OS and
of territory: seven U.S. states and one Canadian province. The main culprit behind it was the ‘Race
parallel system.
Condition (a type of deadlock)’, a software failure within the XA/21 system that occurs in a multi-step
process. Two programs within the XA/21 system simultaneously made the ‘write access’ to the same
data structure, which caused the failure. This damaged the data structure, and as a result, an alarm
ht

ht
Study Objectives process that was supposed to alert the failure failed to handle the alarm by falling into an infinite loop,
Able to explain the definition and classification of data structure and utilize a linear/non-linear structure even failing to inform of the failure of alarm handling. The alarm queues increased with no limit, ending
up consuming all the available memories within 30 minutes. By this time, the main server stopped
rig

rig
Able to understand the roles of algorithms, and select appropriate algorithms
working, and the back-up server became the main server as a failover. However, the back-up server
Able to understand the concept and roles of OS, and explain process management methods, and could not cope with the infinitely increasing queues, leading to its failure as well.
management techniques of virtual memory The above example is a case in point where software developed without proper understanding of
Able to understand the computer structure and mechanism, and explain memory hierarchy structure software-based technologies generated critical failures, causing an enormous damage in people’s life.
py

py
and mechanism Software-based technologies are essential to generate continuous performance for creative software
development activities for the future. For instance, imagine that you build a house using blocks. You
can build an optimal house only by selecting the most appropriate blocks according to the layout in
Practical Importance High terms of the material, color and shape, etc. However, more importantly, each block’s material and
Co

Co
characteristics must be fully understood as well as their various usages. If blocks are not used right
in line with their characteristics, a house being completed is inevitably vulnerable. Software-based
technologies are analogous to these blocks. Various base technologies are used that correspond to the
Keywords rapid development of the information system. Therefore, optimized high-quality software can be applied
to a given environment by applying most appropriate base technologies for software development.
• Array, list, stack, deque, tree, graph Major software-based technologies include data structures, algorithms, OS and computer structures.


• Definition of algorithm, performance analysis of algorithm, sort/search algorithm Data structure is a critical technology in coding efficiency, helping you to easily decide on what data
• Process, process control blocks, thread, parallel process, deadlock, scheduling, virtual memory, file structure is more appropriate to implement problem-solving. An algorithm enables problems to be
system, etc. handled efficiently, considering throughput time and memory usage. The OS and computer structure
• Storage device, multi-core, parallel system consist of various characteristics to support efficient execution of systems: characteristics for the
management of storage devices and efficient management of resources, and provisioning of libraries
for convenient development of programs.

26 TOPCIT ESSENCE M1 Software Development 27


TOPCIT ESSENCE Software Development

M1
01 Data Structure structure are as follows:
① List: Implementation of array, DBMS index, such issues as search or sort, etc.
② Stack: Interrupt processing, control of the order for a recursive program, return address storage of sub-routines,
Definition calculating formulas for postfix notations, the undo feature in text editor, etc.
③ Queue: Job scheduling in OS, queue processing, asynchronous data exchange (file I/O, pipes, sockets), usage of
A data structure refers to organized and systematic classification and expression of data based on their characteristics keyboard buffers, spool management, etc.
and usages so that various data could be expressed and utilized more efficiently on a computer. ④ Deque: Used in stack and queue-related areas as a data structure that takes advantage of stacks and queues
⑤ Tree: Issues involving search and sort, parsing of grammar, Huffman code, decision tree, game, etc.

16

16
⑥ Graph: Computer networks (local area network, Internet, web, etc.), analysis of electric circuits, binary relations,
Classification simultaneous equations, etc.

A data structure can be divided into a linear structure and a non-linear structure. A linear structure is a method of

20

20
configuring data in a serial connection, while a non-linear structure is the one where the configuration of data is in a
particular form of a hierarchical structure or a network structure. 02 Algorithms
Array
Linear list Definition of Algorithms
ht

ht
Linear structure List
Linked list Algorithms refer to the description of a serial processing procedure by stage to solve given problems, and effective
algorithms must fulfill the following conditions:
Stack
rig

rig
① Input & Output: For data needed to execute an algorithm, the number of input must be zero or higher, and after
the execution, one or more output must be generated.
Queue
② Definiteness: Stages that indicate the content and the order of work to be executed must be definite without
obscurity.
Tree
py

py
Non-linear structure ③ Finiteness: An algorithm must be closed after work execution.
Graph ④ Effectiveness: Processing in all stages must be clearly executable.
<Figure 1>
Co

Co
Selection Criteria for a Data Structure Criteria for Algorithm Analysis

① Throughput time for data ① Correctness

② Size of data It is to judge if an algorithm generates proper results within a definite time for feasible input.

③ Usage frequency of data


② Amount of work done:


④ Extent of data renewal
It refers to the number of times required to execute an algorithm. The amount of work done is measured only
⑤ Ease-of-use of a program
based on core operations in the flow, except for the general ones basically included in the entire algorithms.

③ Amount of space used:


Utilization of a Data Structure It refers to the amount of a computer memory usage needed to store data and information while an algorithm is
executed.
A data structure is mostly utilized in data sort and search, and file organization and index. Applications by data

28 TOPCIT ESSENCE M1 Software Development 29


TOPCIT ESSENCE Software Development

M1
④ Optimality <Table 1> Calculating the execution frequency depending on the changes in the value of ‘n’ in the execution time functions

The saying, “An algorithm is optimal” means that, considering the environment of a system where an algorithm is logn < n < nlogn < n2 < n3 < 2n
to be applied (amount of work done, amount of space used, etc.), there is no appropriate algorithm than this. 0 1 0 1 1 2
1 2 2 4 8 4
⑤ Simplicity or definiteness
2 4 8 16 64 16
It refers to how easily and definitely algorithm expressions have been written. If an algorithm is simple, proving the
3 6 24 64 512 256
algorithm correctness, programming and debugging are more easily done.
4 16 64 256 4096 65536

16

16
5 32 160 1024 32768 4294967296

Analysis of Algorithm Performance

Algorithms for Sort and Search

20

20
Analysis of algorithm performance is to make general evaluation by estimating space complexity analyzing based on
the space required for execution and time complexity analyzing based on the time required for execution.
① Classification of sort
① Space complexity A sort can be divided into an internal sort and an external sort depending on the sorting place. Sorting processes
It refers to the total storage space needed ranging from executing an algorithm into a program and completing it. It can be chosen based on such conditions as the characteristics of a system used, the quantity, the quantity and
is a sum of the amount of fixed space and the amount of variable space. the status of data, and the required memory and execution time for sorting.
ht

ht
• Amount of fixed space: The amount of space needed in a fixed manner regardless of a program, the size of a • Internal sort: Data to be sorted is small enough to be all held in the main memory. The sorting speed is high but
program including variable and constant numbers and the number of I/O. the amount of data to be sorted by the capacity of the main memory is limited.
• Amount of variable space: A space to store data and variables used to execute a program, and a space to • External sort: Sorting is done in an auxiliary memory for large-scale data. Massive data can be divided into
rig

rig
store information on executing features. several sub-files and internally sorted. Each sub-file sorted within an auxiliary memory then is compiled, which
slows down the speed.
② Time complexity
② Types of internal sort algorithms
It refers to the total time from executing to completing a program. It is a sum of the compile time and execution
py

py
time. insertion sort
• Compile time: It is a fixed amount of time not much related to program characteristics. It is consistently maintained Insertion technique
once compiled unless there is a modification in a program. shell sort
• Execution time: It refers to a program executing time. Since it depends on the computer performance, it is
selection sort
Co

Co
calculated based on the frequency of executing commands instead of measuring the accurate execution time.

Exchange technique quick sort


In comparing algorithms, execution time is used most of the time. It is indicated as O(n) by using the Big Oh notation1)
to be represented as time complexity. There are execution time functions such as logn, n, nlogn, n2, n3 and 2n bubble sort
depending on the algorithms. It would be ideal to select an algorithm with the smallest time complexity by writing
numerous algorithms for solving problems and calculating each of the execution time functions. Internal sort Selection technique heap sort


2-way merge merge sort
technique

counting sort

Distribution technique radix sort

1 In the expression using the Big Oh notation, the execution frequency is calculated to find the execution time function. A term
bucket sort
for ‘n’ that makes the greatest impact on this function value is selected and indicated on the right-side bracket of ‘O’ with the
coefficient curtailed. <Figure 2> Types of internal sort

30 TOPCIT ESSENCE M1 Software Development 31


TOPCIT ESSENCE Software Development

M1
③ Comparison of the execution time for internal sort algorithms • A method of search by continuously comparing the key and median after
setting the upper value(F) and the lower value(L) and finding the medium(M)
<Table 2> Comparison of the execution time for internal sort algorithms
• Efficient because search is done by halving the number of files to be
Binary
searched
search
• As the number of records increases, it becomes more effective (in the worst
Sort Run time Additional
Description scenario, the number of comparison is one time higher than the mean)
techniques Worst Average Best memory
• Mean search time: O(log2n)
Assuming that data has been sorted, and the value Not • A method of search by using a Fibinacci sequential and forming sub-
Insertion sort 0 (n 2) 0 (n 2) 0 (n )
is inserted and sorted on the location. available files
Fibinacci
Dividing the given data list into sub-files with lengths • While binary search uses division, Fibinacci search uses only addition

16

16
Not search
Shell sort of particular parameter values, and executing 0 (nlog2n ) 0 (n 1'5) 0 (n 2) and subtraction, which makes it faster.
available • Mean search time: O(log2n)
insertion sort in each sub-file.
Sorting by repeating by the size (number) of data in Not • A method of selecting and searching a spot where a search target is
Selection sort 0 (n 2) 0 (n 2) 0 (n 2) Control search ○
finding and moving the minimum value to the left, available expected to be located, and later on the very spot, linear search is

20

20
Interpolation done.
Selecting a random standard using a sorting method search • Applicable for search in a dictionary, a telephone registry and an index,
designed in the way of ‘divide and conquer’, and etc.
then locating a value smaller than the standard to • Mean performance of O(log(n))
Not
Quick sort the left and a bigger one to the right. And then, 0 (n 2) 0 (nlogn ) 0 (nlogn )
available • A method of consecutively searching the key values within blocks where
selecting a random standard, and sorting to the left
and right in turns repeatedly, using the recursive data to be searched for belong after classifying the entire data into a
Block certain number of blocks
ht

ht
call.
search • An efficient block size is √n
Repeated sorting as exchanges of adjacent data Not • Easy to write and renew a program
Bubble sort 0 (n 2) 0 (n 2) 0 (n 2)
repeatedly occur. available • Mean performance of O(log(n))
rig

rig
Sorting by forming the largest heap tree or the Not Binary tree • A method of search using a binary tree
Heap sort 0 (nlogn ) 0 (nlogn ) 0 (nlogn )
smallest one. available search • Mean performance of O(log(n)) for input/search/deletion
Continuously dividing the data in half, sorting it and A way of approaching • A method of search by calculating and finding an address where data
Merge sort 0 (nlogn ) 0 (nlogn ) 0 (nlogn ) Available
combining it again while using ‘divide and conquer’. using a particular ⅹ Hashing are stored using a hashing function
Sorting by comparing from the data with the smallest function • Appropriate for data where input and deletion are frequent
Radix sort 0 (dn ) 0 (dn ) 0 (dn ) Available
py

py
digit in the data.

④ Search
It is a technique to efficiently find items in demand in a data set. Presence of data sorting would determine the
03 Operating System (OS)
Co

Co
technique into two types: linear search and control search. There is hashing to search data by calculating the
key value depending on a function. Therefore, optimal search methods must be chosen by considering the array
status of the form and data of a data structure. The following is a summary of a search algorithm. The OS is a system software that plays an intermediary role between computer hardware and application programs.
The OS efficiently manages system resources including a processor, a memory, I/O devices and communications
<Table 3> Classification of search algorithms devices to support the execution of application of programs. Core components of OS are the process scheduler,
Classification Method Data Sort Type Content and Characteristics memory manager, I/O manager, inter-process communications manager (IPC) and file system manager.


• A method of search by comparing each record in order from the
beginning till the end
Linear search ⅹ
Linear • Ease-of-use in writing a program Concept of Process
search • The bigger the file size, the higher the amount of seek time
• The simplest and most straightforward search method
• Number of mean comparisons: (n+1)/2, Mean search time: O(n) A process is defined as ‘a program that is running’, ‘a program with a Process Control Block (PCB)’, or ‘a unit of
execution managed by the OS.’ It can also be referred to as a ‘job’ or a ‘task.’
① States of process
A process is equipped with a distinguished process status throughout its lifecycle.

32 TOPCIT ESSENCE M1 Software Development 33


TOPCIT ESSENCE Software Development

M1
Dispatch This kind of thread can shorten the response time of an application program by creating a single process in many
threads, enhancing concurrency, and raising the hardware/OS performance and throughput of an application
New Ready Run Exit program. Since the execution environment is shared, waste of memory can be reduced, and it can support efficient
Timer Runout communications using commonly accessible memories.
Wake Up

Wait
Concurrent Process
<Figure 3> Lifecycle of Process

16

16
A concurrent process refers to two or more processes doing the processing concurrently. If an exclusive approach
• New: A state where a process has been newly generated but is not executable by the OS yet to common resources is not guaranteed, there could be a big problem once a failure occurs. Solutions to prevent
• Ready: A state of waiting to have a CPU allocated to execute a process this type of failure include such methodologies as critical section, mutual exclusion, semaphore and monitor.
• Run: A state where a process holds a CPU

20

20
• Exit: A state where CPU has been deallocated after process execution is over ① Critical section
• Wait: A state of waiting for some event such as I/O completion after a process is running after being allocated It is a section where only a single process is permitted to use resources or data at a particular work point for data
with a CPU and resources shared by many processes in multi-programming OS.

② Process Control Block (PCB) ② Mutual exclusion

ht

ht
The PCB is to enable a process to store necessary information for process management. Whenever a process is It is a technique to modify one process at a time in order to execute a task fairly when many processes access
generated, its unique PCB is generated, and once a process is completed, PCB is removed. The PCB includes common resources. It refers to a situation where if another process demands the already allocated resources
the Process Identification Number (PID), process state, program counter (a value referring to a command to be when a process uses common resources, the process that demanded the resources would have to wait until the
rig

rig
executed next), priorities in scheduling, leverage information and information on main memory management. resources are released.
• Solutions to mutual exclusion: Software-side solution (Dekker algorithm, Peterson algorithm), hardware-side
solution (interrupt de-activation, test-and-set command, compare-and-swap command)
Thread
py

py
③ Semaphore
It is a program unit where various resources of a system are allocated and executed as a work unit within a process. It is to guarantee accuracy and consistency of data so that proper outcome could be generated even if a process
As for a thread, unlike process creation, there is no need for the OS to initialize resources to be shared with a parent executes a task in a critical section. Semaphore is a method to form mutual exclusion by Dijkstra and to control so
process. That is why there is a little amount of overhead to create and exit a thread. that access can be made only through the two operations of protected variables P(Wait) and V(Signal).
Co

Co
Process ④ Monitor
It is a special programming technique to implement mutual exclusion in concurrent multi-programming unlike
Information accessible Address space
Other global process data semaphore supporting the OS. It has a structure of concurrency to fairly allocate common resources.
in all threads belonging
to a process ⋮


Register Register Register Deadlock
Information that can Stack Stack Stack
be accessed by Mask Mask Mask It refers to a phenomenon where two or more processes demand resources held by different processes and the
each thread only
TSD TSD TSD resources demanded are not permanently allocated, so the processes would have to wait infinitely.

Thread

<Figure 4> Thread-process relationship

34 TOPCIT ESSENCE M1 Software Development 35


TOPCIT ESSENCE Software Development

M1
<Table 4> Conditions leading to a deadlock <Table 6> Types and characteristics of scheduling algorithms

Conditions Description Type Methods Features Classification

Mutual exclusion A state where one process at a time can use common resources • A mode of allocating the CPU in the order of first
• Inappropriate for conversation
in first out it as the simplest scheduling technique
Hold & wait A state of demanding another resources while holding the current resources FIFO types
• Allocating the CPU in the way of first come Not selected
(First In First Out) • Simple and fair
A state where resources allocated for each process cannot be forcibly released until the first served in the line of resource requesting
Non-preemption • Predictable response speed
usage is completed processes (queue)
Circular wait A state where demand for resources among different processes is continuously repeated • Fixed prioritization
• A mode of allocating the CPU to a high-priority
Priority • Variable prioritization Not selected
process by prioritizing each process

16

16
• Purchased prioritization
<Table 5> Solutions to a deadlock
• A mode of allocating the CPU in the order of • Advantageous for short work
SJF
Conditions Description processes with the shortest expected task time and large tasks consuming Not selected
(Shortest Job First)
operating time a lot of time
Prevention A method of preventing a deadlock by removing conditions for a deadlock to occur

20

20
SRT • A mode of allocating the CPU to a process with • Same as SJF for work handling
A method of appropriately avoiding a deadlock without removing conditions for a deadlock (Shortest Remaining the shortest remaining time in the middle of work but theoretically taking the Selected
Avoidance
to occur Time) • Selection-type SJF shortest waiting time
A method of allowing the occurrence of a deadlock, and detecting and resolving causes • Most appropriate for TSS
Detection • Just like FIFO, a process coming in first is
when it occurs • Same as FIFO if allocated time
R-R executed first, but each process uses the CPU
A method of resolving a deadlock by restarting a process in a deadlock or returning it to is big Selected
Recovery (Round Robin) for a designated period of time.

ht

ht
an original state • Context exchange occurring
• Selection style FIFO
often if allocated time is short
• Excessive overheads and
• A way of making sure that a process is Non-
Deadline complexities occur because a
completed within a limited amount of time preemption
rig

rig
Scheduling deadline has to be calculated
HRN
• Complementing the drawback of having to spare • Priority = (waiting time + Non-
It is to allocate a process efficiently to the CPU to maximize the usage of the CPU in the OS that supports multi- (Highest Response-
excessive time in a big project at SJF execution time) / execution time preemption
programming. ratio Next)
MLQ • Processing different tasks in each queue by time • Each queue using exclusive
py

py
Preemption
① Purpose of scheduling (Multi-Level Queue) slices scheduling algorithms
MFQ
• Fairness of a process • Processing throughout multiple feedback queues • Higher efficiency in a CPU and
(Multi-Level Feedback Preemption
• Maximization of throughput per unit hour through a single stand-by queue an IO device
Queue)
• Minimization of response time
Co

Co
• Predictable execution time
• Prevention of system overload
• Balanced resource utilization
Virtual Memory
• No indefinite postponement in process execution
As a technique to resolve the limited memory space issue in the OS, a virtual memory enables the main memory
• Prioritization, etc.
lacking enough memory space to be used as a high-capacity memory with much free space. A virtual memory does


not physically exist, but logically uses a high-capacity auxiliary memory as main memory. Therefore, it is essential to
② Types and characteristics of scheduling algorithms
map the address of a virtual memory into that of a main memory to execute a program stored in a virtual memory.
• Preemptive scheduling: A way where another process overtakes the CPU (resource) when one process
occupies the CPU (resource)
① Implementation techniques for a virtual memory
• Non-Preemptive scheduling: A way where the CPU (resource) cannot be allocated to another process until a
For a virtual memory, there is a virtual address referred to in a process, and a physical address referring to an
task is completed once the CPU (resource) is allocated to a process
available section in a main memory. Whenever a process approaches a virtual address, a system has to convert
this into an actual address through the Memory Management Unit(MMU). There are two techniques depending
on the block configuration: paging and segmentation techniques. Sometimes these two methods are utilized as a
combination.

36 TOPCIT ESSENCE M1 Software Development 37


TOPCIT ESSENCE Software Development

M1
because the focus is on the frequency of usage
• Paging: A technique where a main memory is divided into the same size called ‘frame’, and a task of processing • Not Used Recently(NUR): A technique to swap a not-recently-used page with a page referred to, based on a
stored in a virtual memory is divided into the same size called ‘page’ which is loaded into the frame of a main tendency of not using it in the near future
memory
• Segmentation: A memory-saving technique where a task of processing stored in a virtual memory is divided into ③ Factors impacting the performance of a virtual memory
segments, a logical unit of various sizes, and is then loaded onto a main memory and executed • Working set: A set of a page list referred to frequently for a certain period of time to efficiently execute a process.
The phenomena of a page fault and a page swap is reduced by placing a working set frequently referred to.
• Thrashing: A phenomenon that lowers the CPU utilization rate because it takes longer to swap a page than
Memory Management Unit (MMU)

16

16
Paging processing. If the extent of multi-programming is reduced, the CPU utilization is raised or a working set is utilized
to prevent thrashing.
• Locality: A property of intensively referring to a certain page while a process is executed. It is divided into time
locality and space locality.

20

20
Scatter Loading

Logical Memory File System

A file system manages file resources, and data control and access. It provides the following: file management
Physical Memory
ht

ht
including file storage, reference and sharing; auxiliary storage management; file integrity mechanism to prevent data
damage in a file; access methods to access stored data; and file back-up and recovery.
Segment Memory Memory Management Unit (MMU)
Management
rig

rig
I/O System
Scatter Loading depending on
each size An I/O system includes an I/O device and an I/O module (controller). A physical I/O device performs I/O for data and
py

py
information between an actual processer and computer user. An I/O module provides the following characteristics:
control of an I/O device and timing adjustment; communications with a processor; communication with I/O devices;
Logical Memory
data buffering and error detection.
Physical Memory
Co

Co
<Figure 5> Comparison of memory allocation for paging and segmentation Interrupt
Processor
② Virtual memory page swap
Cache
If a page in a virtual memory for paging is filled up, a free space must be made available before a new memory
page is called in from an auxiliary memory. A page swap impacts the efficiency and performance of a system
System Bus – I/O Bus


since the system selects a page to be swapped.

• Optimal: A technique to swap a page that is not going to be used for long. It is the optimal technique with the I/O Controller I/O Controller I/O Controller I/O Controller

minimum page fault rate but cannot be implemented in reality because a process behavior is unpredictable. Main Memory
• First In First Out(FIFO): A technique to swap the first page loaded by tracking the order of loading in the main
memory
Network
• Least Recently Used(LRU): A technique to swap a page not used for a long
• Least Frequently Used(LFU): A technique where a page used the least or not used intensively is swapped
<Figure 6> Basic configuration and an I/O module in a computer system

38 TOPCIT ESSENCE M1 Software Development 39


TOPCIT ESSENCE Software Development

M1
Latest OS Technologies Hierarchy Structure and Mechanism of a Memory Device

① Mobile OS is an OS that controls a mobile device or an information device. ① Hierarchy structure of a memory device
② Web OS is a virtual OS or a series of applications that run on the web browser, referring to copying, swapping
or complementing the desktop OS environment. Compared with the existing OS, web OS is different in that it is a High Small
Fast Price Amount
highly collaborative environment with many people, and applications are run through the web. An iconic example
is Google’s Chrome, and others include myGOYA, a free online OS.

Storage Capacity
③ Embedded OS is an OS embedded in hardware, supporting a computing environment including robots,

Access Speed

Price per bit


Register

16

16
household appliances, automobiles and aircrafts. Examples are Embedded Linux, Win CE.NET and VxWorks.
④ Distributed OS is an OS that manages a distributed computing system equipped with characteristics enabling Internal Memory
Cache Memory
higher transparency and performance as if many computers logging onto a network are treated as one. Examples
include UCB’s DASH.

20

20
Main Memory

Auxiliary
04 Computer Structure External Memory
Memory

Slow Low Large


ht

ht
Price Amount
Components of a Computer
<Figure 8> Hierarchy structure of a memory device
rig

rig
Main Memory
② Evaluation factors for the performance of storage device
Central Processing Controller
Unit • Capacity
Arithmetic Unit
Hardware • Access time
• Cycle time
py

py
Input Device
Computer • Bandwidth
Peripheral device Output Device
• Data transmission rate
Auxiliary Memory • Cost
System Software
Software
Co

Co
Application Software
③ Classification and characteristics of a storage device
<Table 7> Classification and characteristics of a storage device
<Figure 7> Components of a Computer
Classification Standard Explanation Type

The Central Processing Unit (CPU) reads and encodes a command from a memory and manages data (e.g. reading,
processing and storage) if data is necessary in executing a command. The CPU consists of control units, arithmetic Main memory A memory device that temporarily stores a program or data


RAM, ROM
units, registers and buses that transfer data by connecting them. device to be processed by a computer
① Control Device: Controlling and managing all tasks that happen within the CPU
② Arithmetic Logic Unit(ALU): Performing arithmetic operation and logic operation as a core component of the CPU Usage
③ Register: A temporary storage to remember such data as a command or the arithmetic medium outcome to be
Auxiliary A memory device that complements the shortage of storage
processed within the CPU Magnetic disk, optical disk,
memory capacity of the main memory and stores the data semi-
etc.
④ Bus: A common transmission line for connection to exchange mutually necessary information such as the CPU, device permanently using the non-volatile characteristics
memory and I/O devices

40 TOPCIT ESSENCE M1 Software Development 41


TOPCIT ESSENCE Software Development

M1
Classification Standard Explanation Type with a single-core process, and is useful to execute high-performance work such as video encoding and game.
However, its weaknesses are high prices and high power consumption.
A memory that remembers binary information based on
Magnetic tape, hardware disk, ② Parallel system
Magnetic the directions magnetic flux by maintaining the magnetic
zip drive, etc.
property Parallel processing refers to the processing of many tasks concurrently by many processors such as I/O
Physical channels or processors. Writing a program is somewhat difficult, but throughput speed is high, a memory can be
CD(Compact Disc),
Storage A device to record information using laser beams on the shared, and even a failure in some hardware would cause no harm to the overall system operation. It can be
Optical DVD(Digital Versatile Disc),
Types surface of an aluminum metallic plate
BDA(Blu-ray Disk Association) applied to artificial intelligence where voices or images are processed and to a system where a large amount of
data is accurately processed in a short time frame including state-of-the-art military equipment such as guided
A device to store analogue information using the integrated

16

16
Semiconductor flash memory missiles. Such additional tasks as partitioning, scheduling and synchronization are required for parallel processing.
circuit technology
• Classification based on Flynn considering the parallel flow and data flow [7]
A memory where all the information is deleted when power
Whether or not Volatile RAM-based SSD
is down
Structure of Parallel Computing Processor

20

20
data is kept
when power
is down A memory where the remembered information is maintained magnetic core, auxiliary
Non-Volatile
even if power is down memory Single Instruction Stream Single Instruction Stream Multiple Instruction Stream Multiple Instruction Stream
Single Data Stream Multiple Data Stream Single Data Stream Multiple Data Stream
(SISD) (SIMD) (MISD) (MIMD)
Sequential Making access sequentially from the beginning to a location
Magnetic tape
access necessary for a memory space
Access

ht

ht
Mode Vector Array Shared Memory Distributed
Making direct access to a location necessary for a memory Single Processor
Processor Processor Device Memory Device
Direct access Disk, flash memory, etc.
space
Symmetric Non-uniform
rig

rig
A memory where the stored content is destroyed after Multiple Processor Memory Access Cluster
Whether Destructive Magnetic core
reading it (SMP) (NUMA)
or not the
content is <Figure 9> Structure of a parallel computer processor
maintained Non- A memory where the stored content is maintained intact A memory device excluding the
Destructive even after reading it magnetic core
<Table 8> Classification of a parallel computer processor
py

py
Type Description
④ Addressing Mode
SISD
The location where data is stored in the main memory is called an 'address.' Various addressing modes are • A single processor system that processes one instruction and data at a time consecutively
(Single Instruction Stream
offered so that a command can be designated by appropriately utilizing limited command bits and the memory • Internal structure of a processor for higher performance: pipelining and superscalar
Co

Co
Single Data Stream)
capacity can be efficiently used.
• Direct Addressing Mode
• A structure executing multiple data concurrently with a single instruction, executing the
• Indirect Addressing Mode SIMD
same operation for multiple data
(Single Instruction stream
• Implied Addressing Mode • Also called as the ‘array processor,’ enabling synchronized parallel processing by an array
Multiple Data stream)
• Immediate Addressing Mode processor

• D isplacement Addressing Mode: Relative Addressing Mode, Indexed Addressing Mode, Base-register


Addressing Mode MISD • Each processor executes different instructions from one another, but data that is processed
(Multiple Instruction stream is a single stream. It has not been designed or implemented before.
Single Data stream) • Unsynchronized parallel processing driven by the pipeline is possible.

Latest Technologies and Trends • Multiple processors run different programs for different data.
MIMD
• Most parallel computers belong to this type.
(Multiple Instruction stream
① Multi-core processor • Divided into the tightly-coupled system and loosely-coupled system depending on the
Multiple Data stream)
level of data interaction
It is a processor with two or more cores like a dual-core or a quad-core. It increases the work speed compared

42 TOPCIT ESSENCE M1 Software Development 43


TOPCIT ESSENCE Software Development

M1
<Table 9> Classification of processors with processing features [7]
Example Question
Type Description
Pipeline Process • One processor is divided into multiple sub-processors with different features, and each sub- Question type
processor processes different data concurrently.
• With an inter-sub-processor overlap, parallelity comes in with a vertical dependent structure Performance question
executing tasks by stage
Array Processor • A processing structure that arrays arithmetic units parallel to process data at a high speed, which is
Question
used to calculate vectors or matrixes
• A processing structure where different processing elements are synchronized in a single control
A step-stone bridge made of many stones as shown in the [Image] is the only way to cross the river

16

16
device, and each processing element processes each data concurrently based on a single instruction
between two villages, and has three constraints.
• As the most common model for parallel processing, allocating many independent tasks to many
processors in a system and enables task execution concurrently
Team A is entering the step-stone bridge to head toward a mountain village, and Team B is entering the
Multi-processor
• Needs additional features such as scheduling, synchronization, memory management resources and bridge to go to a village from the opposite side.

20

20
performance management
1) Explain how you would call this state in a paragraph.
2) Suggest four conditions that would cause this state (5 points).
3) Explain an algorithm to avoid this problem (10 points)

[Image]
ht

ht
[Table for the Question]

Constraints
rig

rig
1) Only one person can step on one stone at a time.
2) Once you are on the bridge, you cannot go back.
3) If both sides have already entered, the team that heads
towards the mountain village is given a chance to proceed first.
py

py
Intent of the question

To validate if one can infer a state of deadlock through an example, and also accurately explain
Co

Co
conditions leading to deadlock and express using the Banker's algorithm or the natural language in order
to avoid deadlock based on the understanding of the algorithm for parallel processing.

Answer and explanation

1) Deadlock


Team A is entering the step-stone bridge to head toward a mountain village, and Team B is entering the
bridge to go to a village on the opposite side. As they meet in the mid-point, they would proceed to go
on in opposite directions and retreating is impossible. Therefore, each team would wait for the other to get
out of the way, blocking all each other and getting stuck. This is an actual example of deadlock.

2) Conditions leading to a deadlock


• Mutual exclusion: A condition where only one process can utilize resources at a time. Resources
occurred by one process cannot be approached by other processes.

44 TOPCIT ESSENCE M1 Software Development 45


TOPCIT ESSENCE Software Development

M1
• Hold-and-wait: A condition of waiting, since a process waiting for resources is already occupying {
other resources currentavail = currentavail + alloc[k, *] ;
rest = rest - {Pk} ;
• No preemption: A condition where resources occupied by a process cannot be forcibly taken away
}
by another process
else
• Circular wait: There is a presence of a closed chain among processes: a state where a process possible = false;
occupies a resource blocked in a closed chain with a circle formed within a resource allocation graph, }
and this resource is demanded by another process in the chain, which is waiting for them. return ( rest == null);
}
struct state

16

16
Once up to this condition is met, sufficient conditions leading to deadlock would occur.
{
int resource [m]
3) Examples of algorithms to avoid deadlock int abailable [m]
1. Status check int claim [n][m]

20

20
int alloc [n][m]
Condition Explanations
}
A state where all the people can pass through steps and enter
Stable
the step ramps if (alloc [i, *] + request [*] > claim [i, *]
Unstable A state where people are on the steps <Error> ; /* The total request is bigger than what was demanded.
else if (request [*] > available [*])
A state where people that have entered the steps are in opposite
Deadlock <Process suspended>;
ht

ht
directions
else /* Simulation of resource allocation
{
2. Concept of algorithms <Defining the new Status as follows :
rig

rig
• To write algorithms so that people could wait without entering the step-stone bridge if there are alloc [i, *] = alloc [i, *] + request [*]
available [*] = available [*] - request [*] >;
people there, in order to avoid deadlock and enter it only when the bridge is completely empty
}

3. Algorithms (possible to write the natural language) if (safe(newStatus))


py

py
1) Checking out the current status of the step-stone bridge <Executing resource allocation> ;
2) Changing the occupation status of the step-stone bridge if it is in a stable state else
{
3) Allowing the current team members to enter the bridge
<Recovering the original status> ;
4) Handing over the resource after the entrants of the bridge have been emptied out
<Suspending the process>;
Co

Co
5) Waiting if it is an unstable state }

[Banker's algorithm to avoid the general deadlock - Psudo Code]

boolean safe(state e) Related E-learning Contents


{
int currentavail[m] ;
•Lecture 2 Software Engineering


process rest[<number of the process>]process rest[<number of the process>]process rest[<number of the process>]
currentavail = available; •[Advanced] Lecture 1 Data structure/Algorithm (1) Linear data structure
rest = {all processes}; Lecture 2 Data structure/Algorithm (2) Non-linear data structure
possible = true; Lecture 3 Data structure/Algorithm (3) Sort and search

while (possible)
{
< find a process Pk in rest such that
claim [k, *] - alloc[k, *] <= currentavail ; >
if (found)

46 TOPCIT ESSENCE M1 Software Development 47


TOPCIT ESSENCE Software Development

M1
Ⅲ Analysis and Specification of Requirements

16

16
Latest Trends and Key Issues
The importance of object-oriented analysis has been consistently emphasized, and specifications using UML Practical Tips Intensity of requirement analysis
have been much utilized.

20

20
The most intensive process in a software development project includes collecting, organizing and
confirming customer requirements, which, in fact, is the biggest cause for a project delay and
Study Objectives failure.
Able to understand the modeling techniques required in the analysis of requirements, and validate three At a time when there is a greater need for specialists to clearly understand and analyze customer
perspectives toward the software system (functional, dynamically and information-wise) requirements, and new diverse information technologies are leading customers' business, the
ht

ht
importance of business analysts capable of planning a business model and making suggestions to
Able to understand structural analysis and object-oriented analysis and explain their differences
customers is emphasized significantly.
Definition of corporate requirements is organized by members of a project T/F representing tasks,
rig

rig
requiring the refining of very specific levels of requirements.
Practical Importance High The process of analyzing these requirements has been made intensive based on the following
reasons:
py

py
•Customers are required to provide specific requirements, but customers, in many cases,
Keywords request developers to organize requirements based on their expertise and experiences.
•Requirements continue to flow into the entire project process, so sometimes a negotiation takes
 Functional and non-functional requirements

place to stop any additional receipt of requirements.
•Data flow, data dictionary, mini-specification
Co

Co
•When related failures occur, requirements can be used to determine who is to be held
•Use case diagram, class diagram, sequence diagram, activity diagram
accountable depending on the presence of requirements, approval and verification.


48 TOPCIT ESSENCE M1 Software Development 49
TOPCIT ESSENCE Software Development

M1
01 Analysis of Software Requirements organizational environment and task characteristics, therefore lowering consistency. It is the norm that requirements
are modified amid continued evolution, driven by new knowledge and environment acquired through users'
demand for change for the system and during the system development stage. Analysis of requirements is difficult
Outline of Requirement Analysis because of the following reasons, given such characteristics of requirements:

① Definition and importance of requirements • Difficult to acquire expertise on problem domains


• Difficult to maintain consistency in analysis due to different perspectives among participants
Requirements are the most important information to determine the scope and scale of a project, so constant
• Difficulties resulting from higher complexity in communication as a project gets bigger in scale
updates are needed through change management tracking throughout the entire project. Requirement analysis

16

16
• Difficulties in tracking management due to continued changes in requirements
is a process of refining requirements of a requestor depending on the scope and characteristics of a system
to be developed. Analysis of requirements is a process to enhance the understanding of a given system prior
to the designing stage. Validating customers' demands to make software satisfying customer needs is critical to
managers and practitioners developing a system and is also the biggest challenge. Elicitation Methods of Functional and Non-functional Requirements

20

20
The key focus in the stage of analyzing requirements is on ‘what’ in the perspective of customers instead of ‘how
to’. Analysis of requirements is a process of learning about a user by observing the user's activities. Defining what ① Elicitation methods of functional requirements
roles software would perform and what it would provide to customers is significantly different from the issues of Elicitation methods might vary depending on the classification of functional requirements, which can be
development, that is, ‘what’ to make and ‘how’. summarized as follows:
Analysis of requirements focuses on what features a system would perform in the application perspective in

ht

ht
describing the goal of a system without describing how the function would perform in the engineering perspective. <Table 11> Elicitation methods per classified functional requirements

Type Elicitation Methods


② Classifications of requirements
• Validating the purpose (role) of executing a system
rig

rig
Requirements can be divided into functional and management aspects, and classification of functional • Validating the system execution point and the execution mode upon the operation (input, correction,
Features
requirements is frequently utilized. deletion, inquiry, output, etc.)
• Validating the timing of changes and expansion in a system
• Input and output data and forms of data
<Table 10> Classification of requirements (functional/management perspectives)
Data • Data accuracy and amount of data injected into a system
py

py
Type Requirements Description • Period of data storage

• Software features and attributes required to implement a target system • Validating the presence of particular media used to transmit data
Functional
• Directly describing features and movements, and behaviors required for a Interface • What would be the input flowing out and in from an outside system?
Functional requirements
system (output, input, deletion, interface, etc.) • Is there a particular form of data?
Aspect
Co

Co
Non-functional • Requirements to define the overall quality or characteristics of a system • Who is going to use the system?
requirements (performance, availability, maintenance, security, etc.) User • Validating the user group and computer usage experiences per user group
• Validating training needed per user group
Continuous • Inducing problem domains from a model to stable requirements on core
requirements organizational activities
Management aspect
• Requirements that change depending on the system development
Volatile requirements
environment and user demand ② Elicitation methods of non-functional requirements


Non-functional requirements can be broadly classified into resources, performance, security, and quality, etc., and
③ Difficulties in analyzing requirements each domain is separated so there could be various elicitation methods.
Requirements are obscurely written with a lack of knowledge about various domains, or by misunderstanding or
wrongly analyzing the demand suggested by a user. Conflicts over description or obscurity in meanings occur
as participants would express or analyze problems suggested among each stakeholder in different perspectives
depending on their own roles and environment. Factors that hamper communication increase, difficulties arise
in sharing tasks and features clearly as the development system gets bigger in scale, many analysts execute
tasks jointly, and it gets difficult for adequate communication to occur among participants depending on the

50 TOPCIT ESSENCE M1 Software Development 51


TOPCIT ESSENCE Software Development

M1
<Table 12> Elicitation methods per classified functional requirements <Table 13> Three viewpoints in modeling

Type Elicitation Methods Viewpoints Description


• Validating necessary resources and personnel for system setup and maintenance A functional model describes a system in a viewpoint where what features are executed by
• Capacities required of developers Function Viewpoint software. The model shows what outcome will be generated for given input, describing arithmetic
Resources • Characteristics of hardware to be used and constraining conditions.
• Research on electric power, temperature and humidity of a system
Describing the system state and causes changing the state (including events and time) by
• Constraints in storage space of a development system Dynamic Viewpoint
focusing on system operation and control

Performance • System speed, response time, throughput rate and size of throughput data Used to catch static information structure of software, validating information entities used in a

16

16
Information Viewpoint system and detecting the characteristics of these objects, and relationships and relevance
• If there is access control over data and the system between the objects
• Allocation of rights per user R&R (roles and responsibilities)
Security • System back-up period and personnel in charge
• Countermeasures against disasters (fire, flood and human disasters)

20

20
• Physical security measures
03 Structured Analysis
• A need for quality characteristics including reliability, availability, maintenance and security
• Mean time between failure (between MTTF, mean time to failure)
Quality • Allowable recovery time after the system operation stops
• Ease-of-use in design modifications Structured analysis is a representative modeling method oriented to processing by functionally viewing software as
• Efficiency in resources usage and methods to measure response time data and data processing. Its function is to generate outcome by receiving input, and the activity to perform features
ht

ht
is called a process. A process refers to a transformational course of receiving and processing input and generating
new output, and each process can be defined as input, instruments and techniques used in a process, and output
generated as output.
rig

rig
02 Modeling
Data Flow Diagram (DFD)

What is Modeling?
py

py
It is an analytical output by validating problem domains in the target analysis system, service and software, and
distinguishing a process of input/output for given domains and processing the input, and expressing the overall
Modeling refers to a process of simple diagramming or mathematically expressing the characteristics of the system data flow. The DFD is completed by continuously dividing the highest-level context diagram into a child process as
to analyze the target system performance or its operational process. Modeling is used to understand our real world, needed. The DFD uses the four following notations for indication:
enabling its expression.
Co

Co
Modeling must help validating views of software in various perspectives and software requirements. Modeling
<Table 14> DFD notations
outcome becomes a core part of a requirement specification, providing information to move to the progress of the
Signs Explanations
next stage in a project. Modeling outcome is used as a means of conversation between users and developers, being
significantly conducive to validate the framework and skeleton of a system needed in the development stage (design, External Entity
implementation and testing included) while eliciting requirements needed in the initial stage of a project. An external entity including a user exchange information with a system outside the system
External Entity


Three Viewpoints in Modeling Process
A converter and bubble that processes and converts information within a system. Indicated as a
Software may look different and be used differently depending on viewpoints, which can be expressed in three circle or a circular square
Process

perspectives.

52 TOPCIT ESSENCE M1 Software Development 53


TOPCIT ESSENCE Software Development

M1
Signs Explanations Use Case
Data Flow
Once the Use Case technique, well known for object-oriented analysis is utilized, communication between customers
A data flow or a data unit indicating the information flow between processes with the arrow
indicating the data flow and system developers can be made more seamlessly and customer requirements can be more effectively found
out. The Use Case can offer many benefits to various stakeholders in a project including customers, project
managers, developers and designers. Customers' active participation can be induced by utilizing the Use Case, and
Data Source by validating customer requirements quickly, functional requirements in a system can be determined initially, and the
An information source, file or database system storing data preserved for long relevant outcome can be documented.
Data Source

16

16
In the Use Case, stakeholders can be found out, and they can be classified into homogeneous groups depending
on the roles of stakeholders, who are then classified into actors. Each actor has different views and usages for the
system. Based on which Use Case, a usage of a system for each actor can be identified. The Use Case represents

20

20
Mini-Specification a usage of use of a system used by each actor. Each Use Case is a set of scenarios for a particular actor to fulfil a
function or a duty.
A mini-specification is used to describe what features will be executed in the lowest-level process in the DFD where A scenario is written for each Use Case. The scenario refers to a flow and course of events, and may include not
division has been completed. The lowest-level process that cannot be further divided is called 'functional primitive' only information exchange between the system and actors but also a circumstance, an environment or a background
whose specific explanations are recorded in the mini-specification. where interactions occur. The Use Case technique represents interactions between users and the system, being

ht

ht
capable of clearly expressing what the system is executing, so it is utilized to verify requirements of users.

Data Dictionary
rig

rig
Information Modeling
The Data Dictionary enables developers or users to conveniently use data by compiling that data shown in the DFD
in a single location. The Data Dictionary is a compilation of definitions of data items within the DFD, consisting of Information exchanged between an actor and a system can be found out based on the Use Case scenario.
definitions and explanations. The Data Dictionary is a metadata source for data on data including the definitions of Information modeling can be executed to validate information to be stored and managed within a system by utilizing
data items and data flow. the information and the output can be represented in the Class Diagram of the Unified Modeling Language (UML).
py

py
The basic class required in a system can be identified through information modeling. Relatedness between classes
can be found out through the inter-class relationships and attributes of each class can be found through information
modeling, too. In this stage, the Class Diagram can be objected only where the Class, internal attributes of the Class
04 Object-Oriented Analysis and relationships between Classes are expressed.
Co

Co
Object-oriented analysis refers to an interaction between objects by considering given problem domains as a set
of objects. It is understood as process of virtualization of transferring problem domains into a computer world in Dynamic Modeling
the same viewpoint toward the actual world. Its advantage lies in increasing reusability of objects and enhancing
Using the Information Modeling mentioned above, attributes and relationships of the Class comprising a system have
the understanding of participants. The aforementioned three viewpoints (information, dynamic and functional) are
been represented in the Class Diagram, based on which dynamic modeling can be looked into. Dynamic modeling is


applied by phase to find out objects (or classes demanded in software) and discover attributes and operation
a process of finding the operation of Classes by taking an interest in the changes in the state or operations of objects
of objects. Methodologies for object-oriented development are beneficial in that the identical methodologies and
comprising a system, or in the interactions among objects.
expression techniques can be applied to the entire software development process ranging from analysis, design and
For the UML, the Sequence Diagram is used to validate cross-object interactions, based on which operations of
programming.
each Class can be elicited. The Sequence Diagram is normally written for each Use Case. If the Use Case scenario
is the one written by regarding a system as a black box, the Sequence Diagram even represents a process of
interaction among objects within a system by expanding the Use Case scenarios.

54 TOPCIT ESSENCE M1 Software Development 55


TOPCIT ESSENCE Software Development

M1
Functional Modeling
[Case]
Sometimes, various features must be executed to execute the operations elicited from the Sequence Diagram. These
features have an internally complicated logic within which they can be expressed as smaller operations. The Activity A) A
 student can register by choosing one of the two options: a full-time student or a part-time
Diagram enables the elicitation of potential and new operations. As a diagram used to accurately understand the student.
event processing within a Class, the Activity Diagram is used to understand the processing of a complicated process • A full-time student can be converted into a part-time student and vice versa upon follow-up
or validate additional operations of a Class. requests.
B) There are mentor-mentee relationships among students.

16

16
• A single student can be a mentor for many students.
• A single student can have a single mentor, and if unwanted, a mentor does not have to be
designated.
05 Requirement Specification

20

20
* Do's and don'ts upon writing: Use associations related to the minimum number of Class on
Users' requirements and system features must be identified and documented based on the requirement analysis requirements, indicating inheritance and multiplicity. Attributes and operations, etc. are to be omitted.
process. The requirements provide basic data to the Scope Management, impacting the entire project stages. Output
of the requirement analysis is the Requirement Specification, which is also dubbed as the Function Specification or
Intent of the question
Target Document. The requirement specification is an important document connecting users and system developers.
ht

ht
There are several mantras in software development: "set a goal and act it out", "define requirements and develop To validate if one has the knowledge on requirement analysis methods and writing the Class Diagram
them." Their message is to utilize the Requirement Specification as the criteria and standard to test the product
performance and quality made from the beginning of the project. For software development, a system is made twice: Answer and explanation
rig

rig
first, based on requirement analysis, and second, through the actual development.
The Requirement Specification is often written by analysts, but is sometimes co-developed with customers. It must be mento
0.1
written for users and developers to easily understand it. It is used as a commitment document between customers 1 1
Registration Type Student
(or users) that have made investment for development cost and developers. It would later clearly validate who is to *
mentee
py

py
be accountable for potential problems and changes that might occur. To this end, stakeholders related to the system
would ideally agree to the requirement analysis outcome (Requirement Specification), sign on it, and move onto the
next stage (design, coding and testing). Fulltime Parttime
Co

Co
Related E-learning Contents
Example Question •Lecture 5 Analysis of Software Requirements


Question type

Performance question

Question
The following [Case] is a part of requirements on a student management system. Write the UML Class
Diagram reflecting all of these requirements.

56 TOPCIT ESSENCE M1 Software Development 57


TOPCIT ESSENCE Software Development

M1
Ⅳ Principles of Software Design

16

16
Latest Trends and Key Issues
The world has now entered an era of infinite competitions over quality, and software is no exception. Software Practical Tips Rocket explosion due to failure in software design
design is closely related to software quality. Making efforts in the analysis of requirements is a part of a

20

20
process to make a favorable design. In the stage of analysis and design, failure cost of software can be
Software is abstracted into the computer world based on the analysis of requirements in the design
significantly saved as quality management and prevention are made more robust.
process, which must include numerous variables defined in the design, the variable types where
variables are utilized, and exception handling resulting from errors. Design defects in software are
limited in the process of repeating a test such as the analysis of boundary values. Data backup
Study Objectives and dual servers must be designed to stably support this for stable execution.
ht

ht
On June 4, 1996, an Ariane 5 rocket exploded on launch due to the design of a software exception
Able to explain the mechanism of software design, its types and descriptions to be considered in software
resulting from the mismatch in processing types of variables and inadequate consideration in
design
redundancy design.
rig

rig
Able to explain concepts of cohesion and coupling as standards for module design evaluation
The processing variable types were 16-bit integers, but because 64-bit numerics were entered,
Able to understand structural design methods and express the description for the designs the processing that occurred in the course of transforming the integers was not fully reflected in
the design, leading to the overflow error. As a result, information such as altitude and speed could
not be sent to the central control computer.
py

py
Practical Importance High At a time when SRI-2 ceased to function, SRI-1 in parallel had to be in active mode. However,
there was no effect when the identical data were entered in the same architectural design. The
Ariane 5 rocket lost control of engine nozzle angle and propulsion, and exploded after failing to
orbit.
Co

Co
Keywords According to the hazard analysis, three out of seven exception handlings were omitted to fulfill a
maximum workload target of 80%, so the software development side was not the only cause of the
 Division, abstraction, information hiding, stepwise refinement, modularization, structuralization

problem. At the end of the day, high-quality software design cannot be guaranteed by a design
•Cohesion, coupling
per se. High-quality software can be completed only when cases to guarantee the highest testing
•Transform-oriented design, transaction-oriented design, structure chart
scope are used in the development and test process, through which unpredictable defects could
be completed so that the design could be repeatedly complemented.


58 TOPCIT ESSENCE M1 Software Development 59
TOPCIT ESSENCE Software Development

M1
01 Principles of Software Design in a module, the modifications are limited to the data structure within a module and to behaviors that access it, thus
providing a basis for easy adaption to modifications and easy maintenance.

Division
Stepwise Refinement
In the software design stage, user requirements must be continuously divided to reduce complexity in a problem
domain, and outcome gained through this must be recombined into an appropriate group, considering the Stepwise refinement is specified by moving down from a program structure to specifics on a module. The level of
independence and dependence of role units. This is sometimes expressed as the basic design principle of ‘divide abstraction goes down in stepwise refinement, and each function is decomposed, suggesting a solution. Refinement

16

16
and conquer.’ If a system is considered by dividing it, problems can be more easily solved, and once features are consumes a lot of efforts, and enables a specific description to enable system implementation.
divided or user interfaces are logically divided, solutions can be found more easily. Designing is a stepwise refinement process from high abstraction to low abstraction stages. The engineering flow
System components divided in an upper level are generally called ‘subsystems’, referring to program components leading to requirement analysis, design and program in problem description is also a stepwise refinement. In a
that can independently execute features and be compiled. Subsystems refer to the division in the upper level in a structural analysis technique, the process of starting with a big process and dividing it stepwise into small processes

20

20
system structure. A system designer divides a problem into subsystems, enabling many developers and designers to perform specific features is also a stepwise refinement.
to independently develop different subsystems. Clarity in this course of division aims to operate the entire system by
seamlessly integrating subsystems to be developed by other developers.
Modularization

ht

ht
Abstraction In any engineering field, most of the approaches are to divide a system into components. In software, a module
represents these components. A module in software is called ‘subroutine’, ‘procedure’ or ‘function.’ A top-down
Abstraction refers to a technique for implementing a product in a higher level, suppressing the more complex approach is used to modularize a system to divide into functional units and in this case, control layers appear
rig

rig
details below the current level to gradually approach a problem domain without losing the track of a big flow. Since between modules.
what is neither of one’s interest nor essential but specific is omitted, only the easy-to-handle and essential are Modularization enables a system to be intelligently managed, and solves problems of complexity. In other words,
expressed. Abstraction is an important principle occurring throughout the entire engineering process, and engineering problems are divided into small-unit modules to solve big and complicated ones, and the modules are then divided
is a process of moving from a high-abstraction level to a low-abstraction level. Abstraction is divided into data and conquered. Modularization makes maintenance and modification of a system easy. However, as the number of
abstraction, control abstraction and procedure abstraction. Knowing the behaviors that occur outside on how modules increases, the size of each module decreases, cross-module exchanges increases, system performance
py

py
components (or modules) interact by dividing a system precedes knowing specific implementation methods within a drops and overload occurs. Therefore, minimizing cross-module interference for each role, focusing on each of its
component. In other words, abstraction refers to dramatic omissions of implementation methods of components and purposes and enabling it to play roles effectively become an imporntant criteria for module evaluation.
focusing on the outside interface.
Co

Co
Structuralization
Information Hiding
Structuralization of a software system can be acquired by the division process, which is linked to the concept of
Information hiding is a concept of hiding the internal description of each module and sending a message through divide and conquer mentioned earlier. Division takes place as a primary step in the requirement analysis, and
the interface only: allowing a module or a subsystem to be designed without any impact of implementation of other becomes more specified in the design stage.
modules by restricting the access to internal information. For instance, if modifications occur in a design process, the It is the duty of an analyst to find out important elements and features of a system and divide them, and that of a


impact is to be on the minimum amount of modules. In other words, a module is defined by the interface with the designer is to structuralize the outcome of analysis. How to divide a system is not a simple matter and there is no
outside, and information is said to be ‘hidden’ if specific information including an internal structure or a progress of a perfect guideline on the best way to divide it. However, experiences with the existing systems and relevant guidelines
module is hidden in other modules. Information hiding maintains independence among modules. can be used by considering the system characteristics.
Information hiding can be made available not just by using a programming language equipped with an information The existing systems would have several structural frameworks depending on the characteristics of a system. Once
hiding mechanism. It is a basic principle in designing software, which is critical in maintaining independence among these frameworks are used, efforts and time can be saved to make a system that is similar in characteristics.
components in system design. It hides an internal structure among modules (abstraction) and communicates only
with a designated interface without having to know about each other’s internal structure. If modifications are required

60 TOPCIT ESSENCE M1 Software Development 61


TOPCIT ESSENCE Software Development

M1
02 Cohesion and Coupling difficult to do system maintenance: when impact is on one, it would have the spread of impact on others. If such a
phenomenon occurs in system development, it would be a headache for many people.
Therefore, it would be essential to minimize coupling in system design. If modules share variables and exchange
It is not easy to accurately define a good design. A good design can be the one enabling efficient programming or control information, cross-module coupling would increase. Parameters are used for programming instead of global
the one helping to easily adapt to modifications so that the issue of software evolution could be properly resolved. In variables in the course of learning to program because of this reason (this way, coupling would be lowered).
order for a design to be evaluated as a good design, its design document as the design outcome must be easy to
read and understand, and the impact of modifications in a system must be localized.
Maximizing functional independence and reducing cross-module coupling would be the principle for an excellent
03 Structured Design Techniques

16

16
design that enables easy maintenance. Object-oriented design is also a design technique improving design quality
since it maximizes independence. In this section, let’s take a look at cohesion and coupling as facts impacting the
quality in the design stage. Data flow-oriented design refers to a process of transferring the outcome of structured analysis, a function
modeling technique, to structured design. When structured techniques are applied, a system is logically divided and

20

20
modularized in the initial design stage, and as top-down refinement take places, top-down specification occurs.
Cohesion A notation technique used in the structured analysis to represent a data flow is called ‘bubble chart’ or ‘Data Flow
Diagram (DFD).’ While the DFD used in a structured analysis technique describes data flow and features in a logical
Cohesion is a measurement of the maturity of a model to show how cohesive the inside of a module is. In other sense, the structure chart used for structured design is to specifically represent a structure and design of software.
words, it shows the level of relevance of each component within a module to achieve a common goal. Cohesion The structure chart is a notation technique mostly used to represent a program structure. The structure chart

ht

ht
represents the level of affinity of components within a module, serving as cement to tie each component. The highest represents not only a program structure but also other descriptions, showing the data among all modules and control
level cohesion is the functional cohesion performed for upper modules while all components within a module perform flow, and representing a program control structure like iteration and selection.
a single function, and the lowest level cohesion is with the smallest coincidental cohesion where a module consists of The structure chart is a model that shows cross-module data, exchanges of control information, major loops and
rig

rig
irrelevant processing components. decision-making, and descriptions on among module systems and modules in the design stage. Data flow and
Cohesion refers to the extent of performing a duty per module and a measurement to measure the independence of control flow in the structure chart can be distinguished as follows. Data is used to generate or modify new data
a module. Therefore, it would be desirable in a design where cross-component cohesion within a module is high, by being used for calculation. However, control represents the order or conditions for calculation although it is not
and also ideal if components in a module or a system perform a single logical function or represents a single logical directly used for calculation. The ‘flag,’ mostly used in programming, has the value of ‘on’ or ‘off’ as a control signal
entity (a component of a model). In this case, exchanges with the outside could be minimized. used to imply the occurrence of conditions or to distinguish the boundary.
py

py
Once the cohesion of a module increases, cross-module cohesion could be low, and vice versa. The best scenario The structured design suggests a guideline necessary to change a requirement specification into a design document.
in designing a software is to enable a high cohesion in modules, and low cross-module cohesion. This type of transform is determined by the type of information flow in a system. The information flow can be
divided into two types: transform-based and transaction-based. A design document can be made by utilizing the
characteristics of these two types represented in a requirement specification by transferring from analysis to design.
Co

Co
Coupling

Modules are correlated with other modules, and coupling refers to the complexity of correlation among modules. If Transform Flow-oriented Design
cross-module exchanges occur a lot, and mutual dependence is high, cross-module coupling would go up. If an
interface is not accurately configured or if its features are not accurately divided, an unnecessary interface would The transform flow-oriented design is a technique where information is received and processed, and the system to
appear, leading to higher cross-module dependence and higher coupling. output to the external world as the outcome is mapped into an appropriate computer structure. This technique divides


Coupling is a method to indicate correlation among program components, being closely related to independence and a system into components and generates modules performing basic features and a hierarchical structure among
cohesion of a module. If two modules perform features perfectly, regardless of the fact they are near each other or modules. The transform flow-oriented design can divide systems in three ways: the first part refines data usable in
not, they are said to be ‘completely independent’, meaning there is no mutual exchange. The most ideal coupling is a system by receiving the input; the second one processes data; and the third one receives processed information,
the data coupling communicated via cross-module parameters, having the weakest coupling. If one module directly transforms it into adequate output and generates the output. The system can be threefold: i) the incoming flow, a
refers to or modifies internal features and data of another module in the descriptive coupling, it would have the combination of processes in charge of input; ii) the transform center, a group of processes that process information
strongest coupling level, so must be avoided. input; and iii) the outgoing flow, a group of processes generating processed information.
If the coupling is higher, it would be difficult to modify one module independently, causing ripple effects since
modifications in one module would have a great impact on other modules. If ripple effects are big, it gets more

62 TOPCIT ESSENCE M1 Software Development 63


TOPCIT ESSENCE Software Development

M1
Transaction Flow-oriented Design
A B G J L
A transaction refers to a situation where data or control signals, etc. induce some action. Transaction flow-based
C F I design is made possible when incoming input can be divided into different outgoing flows. A transaction evaluates
the input value and flows into one of the many output paths based on the outcome. In this case, the center of the
E H K information flow is called the ‘transaction center.’ The figure below represents these characteristics, and Bubble T is
the transaction center.
D

16

16
Input Flow Transform-oriented Output Flow
B
<Figure 10> The incoming and outgoing flow in a DFD Transaction
item Mutally exclusive

20

20
Now, a data flow-oriented program structure is formed. The guideline needed to make a transform-based program A T C action paths
structure is based on validating the incoming flow, transform-orientedness and outgoing flow in a DFD. Mapping Transaction
into a structured chart in a DFD complies with the guideline. In order to make the highest program structure in a center D
transform-oriented DFD, three components can be detected as follows:

<Figure 12> Transaction flow


ht

ht
•  Input controller processing the input
•  Transform controller processing the transform
•  Output controller processing the output If a DFD has a transaction flow, the first thing to do is to validate where the transaction center is. The transaction
rig

rig
center is a bubble that receives a transaction as input and is connected to many output bubbles. Therefore, the
The input controller receives input data from modules in lower layers, sends it to upper layers, and if necessary, transaction center has a single input path and many output paths. Each action path (output path) may consist of
refines the input data and transfers to upper layers. The output controller, meanwhile, receives the output data from many bubbles, and have a transform flow or a transaction flow.
higher layers and sends to lower levels. Again, if necessary, the output flow is refined to be sent to a module in lower Accordingly, a program structure based on a transaction can be made. The structure consists of three components
levels. as follows:
py

py
The number of controllers might vary by system complexity, and the number of controllers processing transforms •  Modules that act based on transactions
could be determined by the transform-oriented complexity. A simple program structure based on transforms is as •  Modules that receive the input
follows: •  More than one modules relevant for each action path
Co

Co
A transaction-based program structure is in the following figure:

Overall Controller
Overall Controller

Reception paths


Input Controller Transaction Controller
Input Controller Transform Controller Output Controller

Action paths
<Figure 11> Tranform flow-based high-level program structure

<Figure 13> A transaction-based program structure

64 TOPCIT ESSENCE M1 Software Development 65


TOPCIT ESSENCE Software
SoftwareDevelopment
Development

M1
Example Question

Question type
Ⅴ Software Architecture Design
Short-answer question

Question
The following example is a module written in a structured English or structured natural language. What is

16

16
Latest Trends and Key Issues
the relevant cohesion (write down the name of cohesion?
Soft architecture has recently been highlighted to play fundamental, useful and core roles to effectively reflect
[Example] changes in IT and effectively develop high-quality software in a timely manner. Architecture design is an initial

20

20
step in the design process to validate how a system is configured and how it interacts among components. It
file_process (data) { is also an essential stage to manage the system complexity.
.....
Enter the data.
Edit the data. Study Objectives
ht

ht
Store the data.
..... Able to list the basic concept of software architecture (SA) and its components
} Able to explain representative SA types
rig

rig
Able to explain methods to express SA

Intent of the question


To check out if one knows about types of cohesion and has the competency to distinguish them Practical Importance Medium
py

py
Answer and explanation
Sequential Cohesion
Keywords
Common data are used and the order of input → edit → store must be maintained, so the order of these
Co

Co
three features must not change. Therefore, the answer is ‘sequential cohesion’.  Modules, components and connectors, subsystems, frameworks

•Repository structure, MVC(Model-View-Controller) structure, client-server model, hierarchy structure,
piper-filter structure
•Context model, component diagram, package diagram, deployment diagram
Related E-learning Contents


•Lecture 7 Specific Software Design

66 TOPCIT ESSENCE M1
M2Software
SoftwareDevelopment
Development 67
TOPCIT ESSENCE Software Development

M1
01 Software Architecture Design
Practical Tips Roles of software architects
Outline of Software Architecture
•Creating Vision – Software architects must identify requirements and constraints of products
Software architecture is a blueprint of software to be developed to systematically handle various elements that directly
to produce them based on expertise and experiences, and upgrade their understanding of
and indirectly impact software development and raise complexity. The definition of software architecture can be
technological updates. Creativity of the architects to complete the framework of software to be
diversely expressed.
developed is critical, and they also need the capability to communicate it based on summarized

16

16
Booch defines the architecture as a group of critical decision-making on a software structure. According to Myron
description.
Ahn, software architecture is the sum of the nontrivial modules, processes, and data of the system, their structure and
exact relationships to each other, how they can be and are expected to be extended and modified, and on which
•Key Technical Consultant – The architects are to provide technical consulting on development
technologies they depend, from which one can deduce the exact capabilities and flexibilities of the system, and from

20

20
units based on expertise. This stage being the first one is very important where appropriate
which one can form a plan for the implementation or modification of the system. Software architecture serves as a
selection of design patterns and development frameworks would ensure appropriate quality for a
means for communication and a decision-making tool in an initial stage of a project. It is sometimes referred to in
software product, requiring continued updating of knowledge and competency development. deciding on the entire system structure and the formation of a development project.

•Makes Decisions – The architects lead a design team for development of a software product,
and make decisions on important domains impacting the entire design. Developing knowledge of
ht

ht
Mission
the domains where the product is used or applied is defined as an important element.
fulfills
Their role has become more important in that appropriate decisions for such circumstances as 1..*

agile development must be made and evaluated promptly.


rig

rig
influences has an
Environment inhabits
System Architecture
described
•Coaches – The role here is similar with that of technical consultants: training on the defined has by1
1..* identifies
architecture, processing related improvements and handling feedback. The role of coaches as is important 1..* Architectural provides
Stakeholder Rationale
technical leaders is exerted in various sponsorships and their positioning is also made firm. to 1..*
Description participates
py

py
is addressed in
has 1..* organized
1..* identifies by1..*
•Coordinates – Differences of opinions among various participants in a project must be adjusted 1..*
selects
1..*
and coordinated to maintain and guarantee the design integrity. This element requires a Concem Viewpoint View
used to conforms to
cover 1..*
technical coordinator because a project might be subject to a critical risk, and the architect is an participates in
Co

Co
has source 1..* consists of
authoritative technical coordinator. Therefore, competency for seamless communication is also 0..1
1..* aggregates
1..*
critical besides a technical competency. Library
Viewpoint estabish methods for Model
1..*
•Implements – In adopting a new technology, its impact must be evaluated from the design
stage, and possibilities of implementation are evaluated based on prototypes. A developer <Figure 14> Components of software architecture (IEEE-1471)
normally builds up expertise and know-how to grow into an architect.


•Advocates – Continuous new architectures must be evaluated, and grounds for continued
investment must be provided. Based on this, technical competencies and architecture
Procedure of Designing Software Architecture
advancement must be continued on.
Designing a software architecture is carried out in the order of requirement analysis, architecture analysis and design,
(Source: Applied Software Architecture)
and architecture verification and approval.
Requirements are specifically identified through a proposal statement, interviews and meetings, while functional
and non-functional requirements are classified and specified. Architecture analysis is to validate and prioritize
quality elements, and elicit the architecture style and candidate architectures upon designing an architecture. The

68 TOPCIT ESSENCE M1 Software Development 69


TOPCIT ESSENCE Software Development

M1
architecture is subject to final approval through evaluation and specification. Hierarchical Structure
In the initial design stage, a system structure must be set to satisfy user requirements. It would be desirable to divide
a system to resolve problems. Once a system is divided, complex problems become easy to solve. If features are A system consists of many layers, and each layer can be defined to provide particular services. Once a hierarchical
divided and the user interface is logically divided, solutions can be found more easily. structure is applied, problem-solving becomes easy. If problems occur, they can be identified gradually in each
System components divided in the upper level are called ‘subsystems.’ Subsystems normally include data and control layer, and equipment becomes interoperable by being standardized. The seven-layer structure of Open System
structures, referring to program components that can execute features independently and be compiled. Moreover, Interconnection in a network protocol developed by the ISO is a representative example of a hierarchical structure.
subsystems are distinguished based on available services or features.
Frameworks are supporting units where the knowledge is collected to repeatedly reflect on the architecture design

16

16
in designing subsystems. Frameworks are general structures extendable to make specific subsystems, and enhance
the level of abstraction by providing specific implementation methods. 03 Methods of Architecture Design Expression
Architecture design is a process to configure the system composition to satisfy system requirements, describing the
cross-component(module) relationship within a program structure by utilizing the outcome in the requirement analysis.

20

20
The main purpose of structure architecture is to develop a modularized program structure and represent the cross- Context Model
module control and interface.
The Context Diagram describes the domains of a system to be developed and suggests the boundary and interface
with the external environment. This regards the system as a big single process before the partitioning process, and
shows the relevant input/output data. This model focuses on the interface between the system and the outside
02 Types of Architectures environment. In the initial analysis, analysts must first pay attention to what kind of data is exchanged between the
ht

ht
user and the system, and what kind of exchanges occur between them. Once the system boundary is established,
internal analysis of the system takes place to realize the system. This is analogous to prioritize goals for system
Let’s take a look into representative architecture types found in developing software. development.
rig

rig
Repository Structure Component Diagram
py

py
It is a structure where all shared data to be used in a system is stored in a single spot so that all subsystems can Reusable components or parts that can be made by plugging into well made parts as in other fields to enhance the
share the data in case a subsystem generates data and other subsystems use the data. The structure of a shared speed and productivity of software development are called ‘components’. The foundation of this technology boils
repository is appropriate to share a large amount of data. down to reusability, which is an acceleration technology to raise the speed and productivity of software development
by reusing possibly the tested parts.
Components must communicate and cooperate with other systems or external devices. In order for components to
Co

Co
be guaranteed with interoperability, standards on the implementation and documentation of components must be
MVC (Model –View- Controller) Structure
defined. Combination of components is a process to assemble components, and there are such types as sequential
MVC structure is a framework frequently used to design the GUI as an approach to support various expressions to combination, hierarchical combination and additional combination.
interact with one another: if the expression of one object is modified, all other expressions are renewed. Using this
method, modification becomes simplified and reuse becomes easier.
Package Diagram


Commercial software developed for multiple users is called the ‘package’, and subsystems often appear in the
Client-Server Model form of packages. Once defined as the package, internal specificities of a package are hidden to minimize the
interdependence between packages. A package consisting of subsystems is a gathering of functionally related
The client-server model is a model consisting of a set of servers and clients. It is comprised of servers demanding classes.
services and servers providing services. There could be many client instances. Usually, the client-server model is A package diagram is appropriate to express the software architecture by representing the highest level of
implemented as a distributed system, effectively using the network system. abstract subsystems as it shows the interdependence of subsystems. If the subsystems are divided to minimize the
interdependence of subsystems, dependence among objects can be minimized and the complexity can be reduced.

70 TOPCIT ESSENCE M1 Software Development 71


TOPCIT ESSENCE Software Development

M1
Example Question

Question type
Ⅵ Object-oriented Design Process
Short-answer question

Question
What kind of a structure is it among software architecture types where all the shared data used in a

16

16
system is stored in a single spot so that all subsystems can share the data?
Latest Trends and Key Issues
The object-oriented development method has more applications due to its advantage of applying the identical
Intent of the question methods and expression techniques in the entire software development process covering analysis, design

20

20
To validate architecture types and characteristics and programming.

Answer and explanation


Repository structure Study Objectives
The essay-type answer is on the explanation of a repository structure.

ht

ht
Able to explain the concept and principle of the object-oriented design
Able to execute static and dynamic modelling and express them in the Unified Modeling Language (UML)
Able to list the concept of design patterns and representative patterns
Related E-learning Contents
rig

rig
•Lecture 6 Basic Design of Software
Practical Importance Medium
py

py
Keywords
Co

Co
 Object, class, encapsulation, inheritance, polymorphism, correlation, set

•Class, attributes, relationship, correlation, operation, class diagram
•Interaction diagram (order diagram, communication diagram), state diagram, activity diagram
•Singleton Pattern, Factory Method Pattern, Façade Pattern, Strategy Pattern


72 TOPCIT ESSENCE M1 Software Development 73
TOPCIT ESSENCE Software Development

M1
01 Concept and Principle of the Object-oriented Design
Practical Tips Five Principles in the Object-oriented Design: 'SOLID'
In the object-oriented analysis, requirement analysis covers writing the class diagram, sequence diagram, and activity
diagram. Requirement analysis usually describes the customer-oriented conceptual aspect without representing the
•SRP (the Single Responsibility Principle)
physical side of how to store.
Since one class has one method, there must be a single reason for modification. However,
In the object-oriented design stage, the focus is on how to represent user requirements identified in the object-
problems become complicated and larger in scale in the actual environment, and the actual use
oriented analysis. In the design stage, specificities on implementation are suggested to set specific methods to enable
is challenging, so it would be better to apply in the form of utility.

16

16
physical implementation of requirements. The object-oriented design is advantageous in that the notations used in
the object-oriented analysis are used again so that the design can be made without much modification.
•OCP (the Open Closed Principle)
In one class, it should be closed to modification but open to extension. This is related to

20

20
polymorphism and abstraction, which are the key characteristics of the object-oriented design.
Objects and Classes
It would be better to make improvement through inheritance instead of direct modification in
improving features. Abstraction class must be implemented, considering whether or not the
A class is a group of similar objects. Objects refer to the things and objects in the real world that exist independently,
logical can be modified.
e.g. Kim Cheol-su (an employees) and Seoul (a place). Each object is described by the group of each attribute,
and is distinguished from other objects based on the attribute values. For instance, Kim Cheol-su would have such
•LSP (the Liskov Substitution Principle)
ht

ht
attributes and attribute values as the resident registration number (i.e. social security number) of ‘830425-1XXXXXX’
It is the most important principle in designing for inheritance. It must be complied with since and the date of birth of ‘April 25, 1983’.
the IS-A relationship becomes valid for inheritance. In other words, it is a principle related to There are sets with similar attributes within a single system. In a university, there are many students, and they
inheritance where a subclass can refer to a super class.
rig

rig
share similar information. They share the same attributes (including student ID number, major, GPA, etc.) and each
student(object) has the exclusive value of each attribute. Here, the set of objects with the same attributes is called the
•ISP (the Interface Segregation Principle) ‘class’. That is, an instance of a class is ‘an object’. For instance, such objects as ‘Kim Cheol-su’ and ‘Lee Yeong-
It is a principle on the exposed method where cross-object communication takes place through hi’ belonging to the same class share the same attributes (student ID number, major and GPA) and ‘Kim Cheol-su’
the interface of exposed objects. It must be designed to provide a different interface per user. has ‘925462’, ‘CS’ and ‘3.8’ and ‘Lee Yeong-hi’ has ‘956234’, ‘Math’ and ‘4.2’ as attribute values, respectively for
py

py
One example is that the interfaces given to an ordinary user and a manager must differ. student ID number, major and GPA.
In validating the features of data required in a system, it is more convenient to describe a clustered class instead
•DIP (the Dependency Inversion Principle) of describing each object. Clustering similar objects is called ‘classification’ of tasks. Objects clustered through
When there are two types of classes, a class that uses another class (Class A) and a class that classification share the same types of attributes, constraints and behaviors.
Co

Co
is being used (Class B), the interface of Class A might be modified. In this case, Class A would
have dependence of having to check out the modification. Even though the modification is small,
it would be difficult to guarantee completeness and integrity in reality. Therefore, this principle Encapsulation
aims to minimize modification possibilities by having the loosest design through interface-based
abstraction. The goal of designing is to make a software that is easy to understand and modify. The key lies in designing
modules with a high independence. Software tends to show maturity when its components execute features with


independence. Functional independence of software components is byproduct in the modularization and information
hiding. Functional independence of modules can be maximized by enhancing the completeness of processing unit
modules, and minimizing the dependence of cross-module processing.
Once critical concept in the object-oriented development method is encapsulation which can obtain abstraction and
higher independence through information hiding, a protection method by grouping attributes and operations. Object-
oriented languages have the feature of supporting encapsulation included in the languages.

74 TOPCIT ESSENCE M1 Software Development 75


TOPCIT ESSENCE Software Development

M1
Inheritance Diagram as an information model representing a static information structure of a system is used to show classes
needed for the system and their relationship. Each class consists of various attributes and operations representing
Each class has its own attributes and operations, and there might be common attributes and operations found characteristics of each object. Documents written in the previous stage can be utilized to find out classes, attributes
among many classes. Generalization is to gather the similarities among classes to define a new class. For instance, of classes and the relationship among classes. The problem statement and use case scenarios can be used to elicit
professors and students share the common attributes (e.g. resident registration number, name, address, and phone classes.
number). In this case, a class of professors and a class of students can be grouped together to define a generalized
class of ‘people’. In this case, ‘students’ and ‘professors’ can be called the subclass of ‘people’ and people can be
called the superclass of ‘students and professors.’ Dynamic Modeling

16

16
In this case, ‘people’ in the superclass have the common attributes and operations with the subclass of ‘students’
and ‘professors.’ ‘Students’ and ‘professors’ as the subclass have attributes and operations that are not shared In the previous part, we found out classes consisting of a system, and identified the attributes and the relationship
among each subclass. A key feature found through generalization is that common attributes and operations are of classes. Now, let’s take a look into how dynamic modeling is executed based on the outcome of static analysis.
indicated in the superclass, and the information of the superclass is inherited to the subclass. Inheritance represented Dynamic modeling is a course of finding operations of classes with an interest in the changes in the states or

20

20
through generalization simplifies the definition of classes, enabling one to use the pre-defined class to easily define a behaviors of objects and interactions among objects. Static modelling, by constrast, focuses on a static structure of a
new class. system.
Dynamic modeling elicits operations of classes through inter-class interactions. Operations of classes are defined
to execute features requested by messages of other objects. Normally, the Sequence Diagram of the UML is used
to represent interactions among objects. The Sequence Diagram emphasizes how messages are communicated
Polymorphism that are exchanged among objects according to the flow of time, and the Communication Diagram is the one that
ht

ht
expresses changes in the cooperative relationship among objects and changes in messages. These two diagrams
One feature of object-orientation is polymorphism. Polymorphism refers to a state where operations with the same
are called ‘interaction diagrams.’
name have different behaviors depending on the class, and the name of a single function or a single operator can
The Activity Diagram is a diagram to accurately understand the event processing procedure within classes. It is used
rig

rig
be used for different purposes. Polymorphism in object-orientation is mostly used in the inheritance relationship,
to understand the processing of complicated processes or to validate additional operations of classes. It could be
allowing for flexibility so that responses can be made in ways exclusive to each subclass for a single operation
helpful to understand activities that occur by use case and the dependence among activities. When operations of
defined in the superclass. Polymorphism is a concept to invoke the subclass method (the serial order of tasks to be
specific objects are internally based on a complicated structure, they can be expressed, using the Activity Diagram of
executed per message) through the superclass. It can be divided into overriding that redefines the method defined
the UML.
in the superclass in the subclass, and overloading that defines the method in multiple ways with different parameter
py

py
There are also the Timing Diagram expressing the waiting time when it consists of the objects’ waiting state and
types and numbers. On the side of sending a message, only superclass operations are invoked without having to
execution-entry state, and the State Machine Diagram expressing the changes in the state of individual objects.
know the objects are of what type(subclass) and depending on the types of objects in run time, the appropriate
behaviors in the subclass are determined automatically. The run-time binding is to set behaviors through objects
of the subclass in run time. Polymorphism and run-time binding are essential concepts for understanding design
Co

Co
patterns. 03 Design Pattern

A pattern is a repeated solution when trying to solve problems. A software design pattern is a standardization of
02 Static Modeling and Dynamic Modeling a pattern used frequently in certain circumstances in designing software. It is also a byproduct gained through
experiences of developers for a good software design. This byproduct could be an optimized algorithm code or


a good structure of classes or modules. The design of an application to be developed can be improved by using
Static Modeling a design pattern that is suitable for certain circumstances. A design pattern aims for the reusability of software by
improving the quality of a software code.
Static Modeling is the concept which is the same as what was explained above. It is to validate static information of
objects where the concept of time has not intervened. Information modeling describes data by validating the structure
of database used in a system. An information model consists of relationships that validate basic objects required in a Singleton Pattern
system and represent cross-object correlation.
The class diagram of UML is an information model representing a static information structure of a system. Class The Singleton Pattern as a pattern related to the generation of objects guarantees that instances of a certain class

76 TOPCIT ESSENCE M1 Software Development 77


TOPCIT ESSENCE Software Development

M1
are the exclusive ones (restricting objects of a class into a single object), and provide ways to access this instance. them to be substituted. This allows transformations into various algorithms without impacting clients, so clients do not
Although the Singleton Pattern has a simple structure, it can be useful in the following circumstances. It is used when have to transform anything despite changes in algorithms.
many of the objects processing the same resources or data do not have to be made unnecessarily. It is also useful Taxonomically speaking, the Strategy Pattern is a behavioral pattern made to distribute responsibilities by making
upon having to consecutively do connection processing or thread management in a field preference management each class in charge of algorithms, and is an object pattern in terms of scope because each algorithm can be
class in a program and a network program in the form of pool, and upon having to manage the number of same changed into dynamic one when each algorithm is needed (in runtime). It is a pattern where the aforementioned
characters in a game. concepts of polymorphism and dynamic binding have been applied.
The Observer Pattern belonging to the Behavioral Pattern like the Strategy Pattern is the one that automatically notifies
and changes other objects in the dependent relationship when the state of a single objects changes.

16

16
Factory Method Pattern

When a certain process is needed to generate objects or the timing of generating objects is not clear, methods that
generate objects can be used. Imagine that you make an application program where a file in a folder selected by a

20

20
user can be read at a time wanted by him or her. Within the folder, there could be different types of files including
document files, figure files and video files, and you can tell that there is a variety of programs that have to be
connected as many as the number of file types.
Application program objects can be generated in advance so that once the user selects the file, he or she can read
it immediately. However, as the number of files types increases, the number of application program objects that are to

ht

ht
be generated in advance would go up, ending up as a program overusing memories unnecessarily. In this case, if
the Factory Method patterns are used, application program objects can be generated at the time wanted by the user,
and application programs can be made so that the user can generate and read the file objects he or she selected.
rig

rig
The Factory Method pattern would define an interface to generate objects, but the responsibility of generating
instances is delayed so that the decision on generating what class of instances will be generated could be made in
the subclass. This pattern is useful in cases where the base class does all (or most of) the tasks but postpones to
the runtime on what objects are to be used.
py

py
Façade Pattern

A façade refers to the front side of a building facing a street or a space (a garden or a plaza, etc.), including the
Co

Co
entrance as its front gate. The front gate is the area most frequented by people coming in and out, so there comes
in the ‘information desk’ for a big building. Since it lobbies of a hotel or a theater are located toward the front gate,
people naturally seek for the front gate when having to be guided in or outside a building or pay the bill.
The Façade Pattern is also located on the very front side of subsystems that are to be used by developers just like
the information desk near the front gate of a building. It also plays the roles of enabling objects within a subsystem to
be used. In other words, the Façade Pattern structuralizes the subsystem to reduce the complexity of a system and


provides access to the subsystem as a façade object. Therefore, the GoF classifies the Façade Pattern as the one
related to objects in its scope, which is a structural pattern given its purpose.

Strategy Pattern

The Strategy Pattern encapsulates each algorithm into a single class when various algorithms exist, and enables

78 TOPCIT ESSENCE M1 Software Development 79


TOPCIT ESSENCE Software Development

M1
Example Question
Ⅶ Design Concept in the User Interface
Question type

Essay-type/Long-answer question

Question

16

16
Explain 'inheritance' as a representative feature of object-orientation and its advantage. Latest Trends and Key Issues
The User Interface is the most important element in a computer system. Its importance is getting higher today
Intent of the Question
as it significantly impacts the user satisfaction with its user-oriented planning and designing.

20

20
To validate if one understands the characteristics of object-orientation and explain them

Answer and explanation Study Objectives


The representative attribute of object-orientation is that classes are divided into the superclass (parent
class) and subclass (child class), and common attributes are to be reused by the subclass after defining Able to understand and apply the design principle for the User Interface

ht

ht
them in the superclass. The subclass additionally defines individual attributes to utilize polymorphism. Able to explain the Human Computer Interaction (HCI)
Able to understand components of the Graphic User Interface (GUI) and apply them appropriately
rig

rig
Related E-Learning Contents
Practical Importance Medium
•Lecture 6 Basic Design of Software
•Lecture 7 Specific Design of Software
py

py
•[Advanced] Lecture 4 Design Pattern (1) Creational Patterns
Lecture 5 Design Pattern (2) Structural Patterns Keywords
Lecture 6 Design Pattern (3) Behavioral Patterns
 UI/UX

Lecture 7 Object-oriented Design (1) Static Modeling (Class Diagram)
Co

Co
•HCI (Human Computer Interaction)
Lecture 8 Object-oriented Design (2) Static Modeling (Component & Batch Diagram)
Lecture 9 Object-oriented Design (3) Dynamic Modeling (Sequence & Communications
•GUI (Graphic User Interface)
Diagram)


80 TOPCIT ESSENCE M1 Software Development 81
TOPCIT ESSENCE Software Development

M1
01 Design Concept and Principles of User Interface (UI)
Practical Tips Poorly Designed UX Causing Casualties
The word ‘interface’ literally refers to the part that ‘faces’ with each other ‘between(inter)’ two objects. The UI is
analogous to the window of software, referring to a device or a software enabling a proper interaction between the
In the medical equipment field where software directly impacts the life of humans, small defects
user and the system. One example of the UI is input/output of a command using a keyboard or a mouse, or selection
in medical equipment can bring about enormous outcome, which makes the field more sensitive
of a menu to use a particular software. Even with a superior system, the product value would dramatically drop if the
than any others. When asked which one would be more deadly among physical defects of
UI as the contact point where the user uses the system is inconvenient or difficult to use.
medical equipment or operational errors of users, most would answer it would be the former, but

16

16
in fact, it is the opposite. If there is no intuitive explanation about where to attach a pad of the
Designing of the interface must have the following points in mind:
Automated External Defibrillator(AED), taking actions for an emergency would fail or the result
might turn out to be the total opposite. These possibilities evidence the importance of UX.

20

20
A Need for Consistency

The UI must be made to be consistent but in developing a big system, it would be difficult to maintain consistency
because many people design and implement the UI. No consistency among UIs will cause a big confusion among
users. In order for the UI to be consistent, there must be a standard on the UI before developing it, and even after

ht

ht
the development, the UI must be checked to correct errors.
rig

rig
User-oriented Design

The UI is to for the sake of users, so it must be designed in a user-oriented manner. It must be made so that users
can control the interface. To this end, input must be simple, and the UI must be suited to user attributes and easy to
A patient died of excessive radiation exposure due to a defect in Therac 25, a radiation therapy
py

py
remember. The output scheme must also be easily understandable and friendly. The UI must be designed so that
equipment developed in the early '70s. According to the accident analysis, a wrongly designed users can easily learn the ‘input and output language’ of the interface.
error message was generated in the process of upgrading that resolved the inconvenience of
having to additionally deal with physical setting and subscription processing through manager
consoles. This led to the tragedy of the patient death in November who was subject to excessive Feedback
Co

Co
exposure in radiation treatment at the Ontario Cancer Foundation in July 1985. It was because
the radiation therapist was insensitive to the unknown error message of Therac 25 (unable to The UI must provide meaningful feedback. If users press a wrong button or are to execute an operation wrongly,
clearly distinguish the numbers that come after the same message). As the abnormal stop was it must be easily identifiable. Visual or sound feedback helps mutual communications. For a data error, it must be
repeated five times in the course of the patient therapy, the patient ended up being exposed to explained where the error occurred in the data instead of notifying with a message that says, “You entered wrong
excessive radiation. data.” The error can be easily corrected as the cursor indicates the wrong data.


Many companies have recently maximized the customer usability by utilizing the information
on the limited screen size in mobile business vis smartphones, through which securing more Identification of Destructive Actions
customers and expanding sales. More and more companies tend to acquire specialist units
to address a bunch of concerns over UI/UX to provide more customer-oriented invaluable It must be checked out if users are to delete data or files before they execute the actions. Normally, data are
services. correlated with other data, and if referential integrity is required, other data might be subject to deletion, which might
not be known to users. The UI must be designed so that users do not induce any critical errors. One useful way is to
use the ‘Undo’ feature.

82 TOPCIT ESSENCE M1 Software Development 83


TOPCIT ESSENCE Software Development

M1
02 HCI (Human-Computer Interaction) following features. The following items show the menu of a specific system:

•  System management
Concept of HCI •  Component management
•  Product structure management
Any system can be divided into two parts: one part performing features and the other part in charge of the interface.
Software design can also be divided into two: the one on design operations and the one on exchanges with users. ③ Form Fill-in
The internal design is the part about computer operation, while the external design is the part about exchanges with When there is a lot of data to be entered, the Form Fill-in Interface can be used, which provides various fields

16

16
users. The two designs have the equal importance, and neither of them must be neglected. The UI, in the users’ depending on the information to be entered. The Form Fill-in Interface collects related items on one screen, and
perspective, is the way of conversation between users and their computer, that is, the input/output language of the names the screen representing the whole. Users can directly type in relevant information on the fields, and each
software for users. field has its own field name. The field name is intuitive, and is easy to use since its format is similar with the one
used in daily business. It is also easy to learn since there is not much difference with a manual task. Therefore,

20

20
the Form Fill-in Interface is appropriate for beginners, and for entering much information concurrently. This type of
Types of HCI interface is used a lot in the database system or MIS system.

The UI comes in various styles, which must be properly utilized to design a good interface. This section looks into ④ Direct Manipulation
common styles of the UI. The Direct Manipulation Interface supports the execution of tasks to be achieved by showing a simple work

ht

ht
environment and directly manipulating objects. Tasks to be done can be expressed in simple pictures for access
① Command Language at ease, and the Direct Manipulation Interface is commonly found in software using the mouse as in the Window
The command language used to be a common interface type in the initial period when the computer system was System.
rig

rig
adopted. The command language is a formal language like a programming language. For a system operated by Icons must be made to be easily understood in designing the Direct Manipulation Interface, being suited to
the command language, users type in the command language on the keyboard to talk and exchange with the purposes. Users must be designed to avoid wrong predictions because icons allow users to guess what tasks
computer. A specific command language is provided per behavior of the computer system, and various options are to be performed. Expectations about icon characteristics might differ by culture and custom, requiring caution
are offered to specify the same types of behaviors. Users that are to use the command language can form in dealing with icons.
py

py
commands with the command name and options to execute necessary features.

For instance, the UNIX system provides following commands:


03 Components of the Graphic User Interface(GUI)
•  Display or print the description of ‘cat’ files
•  Change the task list for cd and chdir.
Co

Co
•  Change the access permission of the chmod file or the list Let’s take a look at the Graphic User Interface (GUI) widely used today. There are diverse benefits in using the
•  Copy the cp file. Window in the UI: other types of information can be concurrently seen, and users can see the screen by exchanging
it with one another. Therefore, many tasks can be executed by using the Pull-down Menu. Moreover, the amount
② Menu-driven System of entry can be reduced and mutual exchanges with the system can be efficiently performed. The components
A menu consists of items, and users execute necessary features by selecting an item on the menu. Menu supporting the GUI are as follows:


selection is an appropriate interaction method for beginners or intermediate-level users. The menu-driven system
is currently used widely. There is no need for users to remember each item, and as long as they can judge what ① Menu Bar
features each item executes, they can use the menu system. Since users select items on the menu system and The Menu Bar is the part showing such menus as ‘Files’, ‘Edit’ and ‘Help’ that are horizontally listed on the top
execute necessary characteristics, keyboard typing is not necessary and errors that might occur in entering a part of the screen.
command can be eliminated. The menu system provides a variety of menu items. Designers can design a good
interface by utilizing these diverse menu formats. ② Tool Bar
The Tool Bar consists of icons for frequently used commands of users in such application programs as the
In the full-screen menu, users whose menu fills up the whole screen have to select menu items to execute the
Window or the Web Browser.

84 TOPCIT ESSENCE M1 Software Development 85


TOPCIT ESSENCE Software Development

M1
③ Command Button
Example Question
There are buttons such as ‘OK’ button and ‘Cancel’ button waiting for users’ instruction, while executing
commands imposed by users on a computer program to start, finish or control some behaviors or features.
Question type
Descriptive question
④ Toggle Button
This button is used to select one out of two states like the on/off button.
Question
⑤ Dialog Box Describe the Characteristics of the Form Fill-in Interface among the types of the User Interface.

16

16
It is a special type of the Window indicated by a system or an application program to accept some reactions or
Intent of the question
entry from users.
To distinguish the types of the User Interface, and understand the features for each type

20

20
⑥ Text Box
It provides a message or a place for users to type in. Answer and explanation
Users can directly enter the relevant information in fields, and each field has its own name, so it is intuitive.
⑦ List Box Due to its similarity in its format with the one used in daily business, it is easy to use and learn.
It shows a list which users can select from and is also called the ‘Combo Box.’ Therefore, the Form Fill-in Interface is appropriate for beginners, and also to enter much information
concurrently. This type of interface is used often in a database system or the MIS system.
ht

ht
⑧ Radio Button
It is used when only one of many options can be selected, and what is selected is indicated with a black dot.
rig

rig
Related E-learning Contents
⑨ Check Box
When more than one options can be selected in a group, it can be ticked with a mark(ν) in the Check Box. •Lecture 6 Basic Design of Software
py

py
Co

Co


86 TOPCIT ESSENCE M1 Software Development 87
TOPCIT ESSENCE Software Development

M1
Ⅷ Programming Language & Code Reuse
and Refactoring

16

16
Latest Trends and Key Issues
Many companies use Java and C languages because software and app development has been highly Practical Tips Selection of Programming Languages
demanded in mobile/cloud recently. These two languages have been mostly used by developers as

20

20
two major languages in programming for long. These languages serve as the basics in acquiring other
Criteria to select programming languages to develop products or services are determined
in various ways in the actual business environment. Such criteria include the hardware, OS
programming languages, being used in many business fields, so it would be critical to acquire relevant skills.
environment, solutions that are adopted, business characteristics, application of recently developed
languages and status of personnel being capable of development. Despite the high usage of the
languages, if there is a small number of their developers whose labor cost is high, companies, in
Study Objectives
fact, would seek for alternative languages.
ht

ht
Able to explain the characteristics of programming languages (unstructured language, structured language, For instance, if Java is selected for all implementations in a project where systems are set up
object-oriented language) requiring a lot of batch-type work, users would confront the severe issue of enhancing the
performance of batches. If C language is selected only to raise the speed, there would emerge the
rig

rig
Able to compare the characteristics of major programming languages (C, C++, Java, Node.js)
issues of productivity and a very severe test coverage.
Able to explain the concepts of code reuse and refactoring and representative refactoring techniques
Therefore, selection is made based on past experiences in many projects, and even in the same
project, various languages and architectures are used. In recent development projects where
mobile services have become essential in many areas, the complexity and diversity increase to a
py

py
Practical Importance High great extent.

Software Maintenance and Refactoring


Co

Co
Keywords The bottom line in software maintenance and operation units is to minimize failures and to increase
the quality of modification development reflecting customer requirements demanded in the
 Programming languages, compiler, interpreter

changing environment. In the recent business environment, many next-generation projects are
•Code reuse
implemented for innovating fundamentals and improving the IT service quality through improved
•Refactoring, code smell
business processes, and for executing timely projects to enhance productivity. At a time when
such large projects come to an end, the handover process between development units and


maintenance units must be cautiously and promptly implemented.
The operation and maintenance units that are handed over with new tasks would experience the
aging of systems and a continued increase of complexity in processing logics amid the continued
process of reflecting and modifying new requirements responding to the market changes. Against
this backdrop, refactoring normally takes place in such forms as prevention of failures and
improvement in tasks to achieve a higher performance.

88 TOPCIT ESSENCE M1 Software Development 89


TOPCIT ESSENCE Software Development

M1
01 Characteristics of Programming Languages ① Advantages of Interpreter Languages
•  Executable whenever needed without having to wait for the complete interpretation of a machine languages
•  Saving memories because the form of source language is maintained until a program is executed
Concept of Programming Languages
② Disadvantages of Interpreter Languages
Programming languages: These languages enable users to do programming using languages that are similar with •  Requiring a lot of time to decode a source program upon each re-execution.
daily languages. There is a compiler or interpreter for a computer to understand languages because programs written
in each programming language are interpreted in a machine language.

16

16
Moreover, each programming language has a different usage, so it is essential to secure target productivity and
Compiler Languages
quality by using appropriate programming languages in each case.
A compile refers to modifying a certain language into another that has the same meanings.
<Table 15> Areas of Usage of Programming Languages

20

20
It is to make object modules by interpreting a high language into a machine language, a low language through a
compiler and link, load and execute these modules. Examples of compiler languages include FORTRAN, PASCAL, C/
Areas Major Programming Languages
C++.
Flat science & technology (for arithmetic) FORTRAN, ALGOL60
For business COBOL
Compile Process
For artificial intelligence LISP, PROLOG
Writing with development tools Storing Loading onto the
ht

ht
For system programming PL/S, BLISS, ALGOL, C/C++, Java
register first
For special purposes GPSS (General Purpose Simulation System)
rig

rig
Writing a source Generating an
code using a executable pro-
Interpreter Language programming OS Computer
Interpret gram Execute
language program hardware
The interpreter directly changes a source program into a low language without an intermediary process. Instead program.js etc. messenger.exe,
Void abc(), etc. etc.
of making a machine program by interpreting a high language up to the intermediate code and executing the
py

py
interpreted code using a software interpreter, subroutines which are the features of each intermediate code are
invoked for execution. Examples of interpreter languages include LISP and PROLOG. Source file Binary file

<Figure 16> Compiler Process


Co

Co
Interpreter Process
Writing with developing tools Loading onto the register first ① Advantages of Compiler Languages
•  Possible to store interpreted object codes
•  Re-executable after compiling
•  Shortening the execution time through fast re-execution after compiling once in a program that is reused
Writing a source code


using a programming Interpret OS Computer
language: program.js, program hardware ② Disadvantages of Compiler Languages
and execute
etc., Void abc (), etc. •  Consuming much time to convert into a machine language
•  Causing the waste of memory by interpreting one line of a source program into hundreds of lines of a machine
language
Source file

<Figure 15> Interpreter Process

90 TOPCIT ESSENCE M1 Software Development 91


TOPCIT ESSENCE Software Development

M1
02 Characteristics of Major Programming Languages Java

① Introduction of Java
C (Programming Language) James Gosling at Sun Microsystems started to develop Java, a simple debugging programming language
controlling household appliances in 1991. It started off as C++ as a language that improved many pitfalls of C++.
① Introduction of C Yet, with the spread of the Internet in the name of World Wide Web or WWW in 1995, it was applied to the Internet
C was developed by Dennis Richie at AT&T Bell Labs who worked on UINX OS in the ‘70s. Most of the computer by Hot Java, so a strong output form called ‘Applet’ gained popularity. Java as a small and simple structure is
programming languages had their motif from C, and famous OS’ such as iOS(iPhone) and Android mostly consist efficiently changed and executed. Its advantages have been recognized because many features causing errors in

16

16
of C. the existing languages have been complemented. Java is now the mostly commonly used programming language
in apps and on mobile devices. These days, Java is used and developed to make applications for household
② Characteristics of C appliances and Android.

20

20
•  High execution speed and ease of use in managing memories fast and promptly
•  Possible to implement features with paragraphs due to simple notations ② Characteristics of Java
•  Procedure-oriented language: program execution is done according to a fixed order • Java generated from C++ being grammatically similar with C/C++
•  A program considering arrays, and memories, etc. is needed, so more difficult than Java • Complexity of C++ being simplified
•  Difficult to port upon changing the execution environment and machine • Always executing automatic garbage collection
• Object-oriented: a perfect object-oriented language applying the object concept

ht

ht
• Java program being independent on a platform by being executed by a virtual Java machine

C++
rig

rig
① Introduction of C++ Node.js
C++ is suited to system programming because it includes most characteristics of C, and also suited to object-
① Introduction of Node.js
oriented programming because of such characteristics as class, operator overloading and virtual features.
If software is developed based on object-oriented programming techniques, the reusability, scalability and Started to be developed by Ryan Dahl in 2009, it is currently one of open source projects. As a network
py

py
maintenance of software would increase, so it is suited to writing large programs, and has high readability. server supporting the Async/Non-blocking IO of high performance, it behaves based on single threads. It uses
programming models based on JavaScript and events. Many Internet companies including LinkedIn, Paypal and
② Characteristics of C++ Groupon have recently adopted Node.js, converting the internal system.

• Object-orientation: It reflects the characteristics of object-orientation as a language developed to support object-


Co

Co
② Characteristics of Node.js
oriented programming.
• Encapsulation and data hiding: Class as a feature of C++ is commonly used in an encapsulated form, and the • Its development structure based on JavaScript has become very simplified, allowing for fast development. In
structure of the internal mechanism is hidden, so users don’t have to know how the class behaves and only other words, developers that used to develop the front end on the client side through JavaScript can easily do
have to know how to use it. server programming. Companies do not have to divide technical sets of front-end and back-end engineers.
• Inheritance and reusability: C++ has reusability through inheritance. Inheritance is a process of making common Therefore, it has an easy learning curve and technical integration on front-back ends is easy.
characteristics in one class, extending them and making a new class. Program reusability is enhanced through • Socket.io-based web push can be easily implemented. Appropriate push methods can be automatically selected


inheritance, and productivity of software can be raised. and used depending on the types of web browser. This is not a complicated consideration due to abstraction
• Polymorphism: It means that a single name has many forms. For instance, a person named ‘John Smith’ is not within Socket.io API, but only Socket.io is used. Therefore, developers can implement the push service in such a
only an office worker in a company but also an instructor in a private institute at night. simple manner.
• Possible to make resources efficient by supporting the non-blocking IO model. Instead of waiting for a response
in a waiting state per IO request, the response is processed at a point when events are generated for the
completion of IO processing. As a result, threads or processes can be effectively executed and scheduled,
enabling resource efficiency.

92 TOPCIT ESSENCE M1 Software Development 93


TOPCIT ESSENCE Software Development

M1
03 Code Reuse and Refactoring ④ Timing and Procedure of Refactoring
• Timing is important for refactoring as seen in the rule: when coding is done first, it is done from scratch, and
when done the second time, it is coded duplicately, and for the third time in doing a similar task, refactoring is
Concept of Code Reuse and Refactoring done.
• Refactoring is mostly executed when timing is inefficient to add new features to a code, and upon having to
① Outline and forms of code reuse change a design in a form that cannot be easily added, debug or review a code.
Code reuse is to use a part of or the entire program written at a certain point to make a different program later. • Procedure of Refactoring
Code reuse is a typical technique to save time and energy consumed in redundant tasks. A library is a good

16

16
example here. <Table 16>
Companies choose to extract a part of or entire codes from the existing program and copy them to a new
Target Selection Maintenance, Inspection, XP Methodologies
program for the sake of fast development. However, a repetition of copy and paste might lead to duplicate coding
Unit configuration Composite configuration with mentors
later.

20

20
Execution control Change management, configuration management, CCB control
Methods to accelerate and facilitate reuse include object-oriented programs, generic programming, automatic
programming and meta programming. Execution Techniques Design pattern, AOP execution
Test Unit/Integration Test, Regression Test
② Considerations in reuse Outcome Compilation Documentation, update, application of management systems
•  Software development process based on systematic reuse
ht

ht
•  Training and quality enhancement for better reusability • In refactoring, when after a small modification (single refactoring), the presence of behaviors is tested and
•  Setup of a reuse environment through initial investment behaviors are executed, users would move to the next refactoring stage: if behaviors are not operated, problems
•  Continued improvement and reinforcement of libraries are resolved, and what has been refactored is undone so that the system could be in operation.
rig

rig
•  Reuse backed by tools
•  Evaluation of and scales for software productivity
•  Management of information set for reused components
- Output of targets to be reused in software
Key Refactoring Techniques
py

py
- A rchitecture, source code, data, designs, documents, estimates (templates) Human interfaces, plans,
① Code Smell: Low readability or duplicated logic in codes
requirements, test cases
• Composition-based, component-based development Model
② Causes:
③ Outline and Definition of Refactoring •  Programs with low readability of codes (comment, indentation, names of variables/features)
Co

Co
• Code refactoring is to modify the internal structure of software without changing the external behavior of a code •  Programs with duplicated logics (Copy & Paste)
to make it easy to understand and change it with little cost. •  Programs where complicated conditional statements are included (excessive case statements)
• There are following reasons that challenge modification when software developers do maintenance for programs.
- Low readability ③ Types of Code Smell and major refactoring techniques as solutions
- Duplicated logic •  Duplicated Code, Switch Statements, Comments
•  Long Method, Large Class, Long Parameter List, Lazy Class, Incomplete Library Class, Data Class


- Complicated conditional statements
• Refactoring is executed for the following reasons: •  Primitive Obsession, Temporary Field
- Improving the software design •  Parallel Inheritance Hierarchies and Message Chains, etc.
- Raising software readability
- Making debugging easier
- Raising program productivity and quality

94 TOPCIT ESSENCE M1 Software Development 95


TOPCIT ESSENCE Software Development

M1
Example Question
Ⅸ Software Testing
Question type
Descriptive question

Question
Code refactoring is the maintenance of convenience, improving the internal structure by raising readability

16

16
Latest Trends and Key Issues
of complicated sources by maintaining the execution outcome of computer programs, thus increasing
scalability to enhance efficiency. The portion of efforts and cost for software testing in developing software has recently gone up. IT companies
Explain the field encapsulation among code refactoring techniques. recognize the importance software testing to the extent of running a quality assurance (QA) team or

20

20
department specialized in software testing.
Intent of the question
To validate the understanding of types and characteristics of code refactoring techniques
Study Objectives
Answer and explanation
Able to explain the concept of testing and compare test case designing methods
ht

ht
Field encapsulation means to hide fields (variables), that is, to access using such methods as Set~ and
Able to explain levels (types) and purposes of testing
Get~ without a direct access. This can prevent a mistake of directly configuring a wrong value and help
more efficiently in responding to changes in data types. However, having to go through a function would
rig

rig
slow down the speed, but in a language such as C++, such features as inline features are provided to
enable implementation without speed reduction. Practical Importance High
py

py
Related E-learning Contents
Keywords
•Lecture 8 Programming Language  Testing process, testing types

•Lecture 9 Code Reuse and Refactoring •Specification-based Technique, Structure-based Technique, Experience-based Technique
Co

Co
•White-box Testing, Black-box Testing
•Software build and distribution


96 TOPCIT ESSENCE M1 Software Development 97
TOPCIT ESSENCE Software Development

M1
<Table 17>
01 Concept and Process of Testing
Process Major Activities
• Reviewing the test basis
Concept of Testing • Validating testing circumstances/requirements/data
Test Analysis and Design • Allocating testing techniques
• Evaluating testability
Testing is a method to detect defects to validate or verify if the behaviors, performance and stability of applications or • Establishing the testing environment
systems satisfy the expectations of users or customers. General principles of testing are as follows:
• Specification of test cases: prioritization, data generation and procedure writing
• Pre-testing
Test Implementation and Execution

16

16
① Activities to detect the presence of defects • Executing testing and recording results
• Comparing with expected results
Testing is to detect the presence of defects. It is almost impossible to proof the integrity of software.
• Validating if exit criteria are met
Evaluation and Reporting of Exit Criteria
• Writing the first testing report
② No perfect testing

20

20
• Validating the output and storing testware
Even for a very simple program, it is impossible to do the testing for all cases. Test Closure Activities
• Evaluating the test process
• Setting the test purpose/goal and researching targets
③ Testing to start in the initial development stage Test Planning and Control • Developing test strategies and analyzing risks
• Establishing strategies and exit criteria
This will shorten the development period, prevent defect prevention activities, and ultimately, reduce cost.
• Test planning and controlling test management

ht

ht
Test Estimation and Unit Formation • Reporting and report planning/design
④ Pesticide Paradox
• Progress reporting
According to the Pesticide Paradox, if the same pesticide is sprayed, insects will be immune to it and the pesticide
will no longer become effective. Likewise, if the same testing is repeated, it will fail to discover new bugs any
rig

rig
more.
How to Design Test Cases
⑤ Testing being context-dependent
In designing and specifying test cases as the essence in test designing activities, various designing techniques can
Each area would require different approaches, priorities and the level of severity.
py

py
be used. Designing techniques are broadly divided into Specification-based Technique, Structure-based Technique
and Experience-based Technique as in <Table 18>
⑥ Absence-of-Errors Fallacy
If a developed system fails to cater to users’ need and expectations, it will become futile, and the process of
<Table 18> Test Designing Techniques
finding and debugging is meaningless.
Co

Co
Type Technique Explanation
A test case designing technique to execute as representative values
Equivalence Partitioning
in the equivalently partitioned domains
Testing Process A technique to design test cases even including boundary values
Boundary Value Analysis because it is highly probably to defect defects in the entry values
Testing must be adjusted and managed based on a process that covers various components. The testing process belonging to the boundary of equivalence partitioning

and its major activities are as follows: A designing technique to make a table so that each value needed


Pairwise Testing for testing could form a pair at least once with other values, and
Specification-based
executing testing accordingly
Technique
A designing technique for a test case to test a pair of the entry
Decision Table Testing
value indicated on the decision table and a stimulus (a cause)
A technique to design the relationship between events, actions,
State Transition Testing activities, states and state transition based on the State Transition
Diagram
A technique to invoke test cases from use cases when a system is
Use Case Testing
modelled as a use case

98 TOPCIT ESSENCE M1 Software Development 99


TOPCIT ESSENCE Software Development

M1
A designing technique to enable testing of the all possible event flow • It is to detect defects within frequently used and testable software (module, program, object, class, etc.) in unit
Control Flow Testing
(path) structures upon execution via components or systems testing, and verify relevant features. Control Flow Testing, Condition/Decision Coverage Testing and Elementary
A test case designing technique to achieve the coverage to the Comparison Test are conducted using the source code.
Structure-based Coverage Testing extent where the structure of systems or software is tested by the
• For integration testing, structural approaches can be used and applied.
Technique Test Suite
A test designing technique of invoking test cases so that testing can • There are two types of analyses: the static analysis on the internal structure of an implemented source code
Elementary Comparison
be done for pairs of entry values by using the concept of Modified and find out predefined errors; and the dynamic analysis to find out possible errors in an actual circumstance by
Testing
Condition/Decision executing a program.
A technique to design informal tests using information obtained while • Types of representative techniques for the White-box Testing are as follows:
Exploratory Testing executing tests in order to proactively control the test design for

16

16
Experience-based testers upon testing and design new and better tests
Technique A designing technique to execute test cases expressed as the <Table 20>
Classification Tree Method Classification Tree by pairing and executing the representative
values of input/output domains Type Description

20

20
Structural Technique To measure and evaluate the logical complexity of a program
Loop Test To conduct the test limited to the loop structure of a program

02 Testing Types and Techniques


② Black-box Testing
• It is also called the ‘functional test’ or ‘specification-based test’.
ht

ht
Testing Types • It is mostly used in system testing, verifying both functional and non-functional requirements. Functional
requirements are verified based on the specification, and the system testing on non-functional requirements is
Software testing types vary by different levels as in <Table 19>, and in principle, testers, the purpose and the based on the defined specification for non-functional testing of performance, availability and security, etc.
rig

rig
environment must be considered in each type. • The testing is focused on whether or not software operates according to the requirement specification.
• The internal structure of software modules/components or systems is not referred to. Functional and non-
<Table 19> Testing Types functional testings are carried out based on the requirement specification and the interface with the outside world.
• Types of representative techniques for the Black-box Testing are as follows:
Testing Type Purpose Tester Environment
py

py
Validating the conformance to
Acceptance Test Users User environment <Table 21>
requirements
Validating entire functional Type Description
and non-functional tests in an An environment similar with
System Test Testing organization • Testing by selecting testing cases with various input conditions
Co

Co
environmental similar with the the actual user environment Equivalence Partitioning
e.g. testing by partitioning into x < 0, 0, x, 100, x > 100 in the scope of 1~100
actual one
• Testing the correctness of outcome based on the boundary values
Detecting defects in an interface Development/Testing Boundary Value Analysis
Integration Test Development/testing unit e.g. testing with x=0, x=100, x=-1, x=200, etc. in the scope of 1~100
between unit modules environment
Cause-Effect Graphing • Detecting errors by graphing the impact of input values on the output values
Detecting defects within unit
Unit Test Development unit Development environment
modules • Detecting negligible errors based on senses and experiences
Error Guessing
e.g. checking out without entry values and entering the numbers in the text entry boxes

Testing Techniques

For testing techniques, there are the White-box Testing and Black-box Testing whose characteristics are as follows:

① White-box Testing
• It is also called the ‘structural test’ or ‘code-based test.’

100 TOPCIT ESSENCE M1 Software Development 101
TOPCIT ESSENCE Software Development

M1
03 Software Build and Distribution Example Question

Question type
Software Build Performance question

The software build refers to a process of transforming source code files into an independent software workpiece that
Question
can be executed in a computer, or the corresponding outcome. It is one of the software quality assurance activities,
and the daily build facilitates the reduction of integrated risks, prevention of low quality, analysis of early defects, Explain the concept of the Equivalence Partitioning of Black-box Testing, and suggest test case types

16

16
progress monitoring and morale boosting among developers. for input conditions of the information of elementary school students given in the [Example] using the
Equivalence Partitioning.
① Daily Build and Behavior Test
• It is a process to re-compile the entire software products every day, and undergo a series of necessary tests to [Example]

20

20
verify basic behaviors. ⓐ For gender distinction, we use these numbers for boys(1) and girls(2).
• The daily build can reduce such risks as failure in software integration, low quality and low project visibility, thus ⓑ The range of school years is from first to sixth grade.
raising project efficiency and satisfying customers.
• The daily build and behavior test can be used in all projects, being relevant for big and small projects, OS, off-
the-shelf software and business systems. Answer and explanation

ht

ht
Input conditions are partitioned into over two equivalence types to design test cases in the Equivalence
Partitioning, which is useful to determine the number of test cases depending on the given input
Software Distribution conditions.
rig

rig
Software distribution refers to all acts of making a software system to be used, and the distribution process consists Minimum test cases are written for each test case type:
of possible transformations among them along with interactions. Such activities can occur on both producer and ⓐ Gender=1 or Gender=2, Gender<>1 and Gender<>2: 2 types
consumer sides. Because distribution is exclusive to all software systems, it is difficult to define an accurate procedure ⓑ 1<=Grade<=6, Grade<1, Grade>6: 3 types
py

py
within each activity. Therefore, ‘distribution’ must be interpreted as a general procedure that can be defined
depending on the specific requirements or features of customers or users. Types and activities of software distribution The Equivalence Partitioning is divided into valid equivalence and invalid equivalence domains, and normal
include release, installation and activation, inactivation, adaptation, update, built-in, version tracing, deletion and value and abnormal value domains are distinguished to be compiled in the conditions. For particular code
retirement. values like gender, which are not intervals, it would be mostly two types, and if there are interval values,
they can be diversely partitioned depending on conditions.
Co

Co
Scoring criteria

The concept part must include input conditions and over two equivalence partitioning keywords. If there
are two or more keywords, and the concept summary is properly done, there is one or less keyword
whose full score is 20 points. If the concept summary is properly done, and the 15-point concept summary


is not done well, the score is 5 points, and if not, 0 point.

Scoring based on the 15-point full score per test case question.
If a) is the same as the correct answer, 15 points.
If it is written with 1<= gender <=2, gender < 1, gender > 2, 10 scores, and if it is other than these, 0 point.
If b) is the same as the correct answer, 15 points. If it is similar with the following, 10 points, and if it is other
than these, 0 point.
Class Number=1 or Class Number=2 or Class Number=3 or Class Number=4 or Class Number=5 or Class
Number=6 or Class Number=7 or Class Number=8 or Class Number=9

102 TOPCIT ESSENCE M1 Software Development 103


TOPCIT ESSENCE Software Development

M1
Related E-learning Contents
Ⅹ Software Maintenance & Reverse
•Lecture 10 Software Testing
Engineering and Re-engineering

16

16
Latest Trends and Key Issues
About 70% of the application lifecycle cost in IT companies is spent in the software maintenance stage.
Therefore, a lot of attention is on systematic software maintenance. Activities are proactively underway to

20

20
extend the actual software usage period through systematic management, and obtain high-quality software by
adopting reverse engineering and re-engineering.

Study Objectives
ht

ht
Able to explain the concept and types, process and activities of software maintenance
Able to explain the concepts of reverse engineering and re-engineering
rig

rig
Practical Importance High
py

py
Keywords
 Concept of software maintenance

Co

Co
•Software maintenance process
•Reverse engineering, re-engineering, re-structualization, re-documentation


104 TOPCIT ESSENCE M1 Software Development 105
TOPCIT ESSENCE Software Development

M1
01 Software Maintenance Data/Program
Processing when needed such as data conversion
Maintenance
Target-based
Documentation Processing when needed such as modification of document
Maintenance
Maintenance standards
Definition of Software Maintenance
System Maintenance Maintenance of systems
Software maintenance is the last stage of the Software Development Life Cycle (SDLC) as an operation-oriented work
stage extending the life of software, referring to a series of works that correct errors, clarify the original requirements
and enhance features and the execution capacity. It is the entire software engineering work to enable the removal
Procedure of Software Maintenance

16

16
of defects, enhancement of performance and adaptation to a changed environment after software is delivered to
customers.
Software maintenance is usually conducted in the following order:

20

20
<Table 23>
Purpose of Software Maintenance
Maintenance Procedure Description
The purpose of software maintenance is broadly to improve the software performance and repair damage, and port, Understanding the currently • Program structure analysis, variable/data structure,
correct and prevent damage to enable actions in a new environment. As mentioned above, software maintenance is used software applications, working knowledge
a critical stage in the efficiency of software lifecycle due to the following reasons: • Types of maintenance, strategy setup (modified/new)
Requirement analysis
ht

ht
• Identification of targets such as changed programs

• A dramatic growth in the maintenance cost even more so than the existing development cost in the total budget Validating and modifying • Impact of the existing function due to changes in software
for software development and maintenance the scope of impact • Modification and correction of programs
rig

rig
• Increases in management tasks including documentation due to highly complicated software Testing/Maintenance • Document correction, configuration management, maintenance
• A greater emphasis on the importance of management due to a long period of use compared with the
development period The ‘requirement analysis’, a major activity in the order of maintenance mentioned above, is to promptly validate how
• Increases in maintenance amid the spread of package development compared with service development much the demand for maintenance impacts the currently used system. The scope of impact can be easily identified
py

py
depending on how much ease of maintenance has been already acquired for the software in the existing system. Or,
it might require enormous efforts as seen in the above example. Ease of maintenance represents the level of difficulty
Types of Software Maintenance in software maintenance, and can be divided into following types:
Co

Co
<Table 22> • Ease of use: A feature that represents how easy it is to understand an application or a program
• Modifiability: A feature that represents how easy it is to modify an application or a program
Classification Criteria Type Description
• Testability: A feature that represents how easy a process is to show the correctness of an application or a
Error-driven maintenance, processing, execution and implementation,
Corrective Maintenance program
and error identification
Reason-based
Processing for adaptation to changes in a data environment and an
Maintenance Adaptive Maintenance Therefore, if systematic activities take place to improve the ease of maintenance as follows in developing software,
infrastructure environment
user or customer requirements can be continuously met despite changes in the environment, and economical


Perfective Maintenance Maintenance for the addition, modification and quality of new features
responses can be made to the rapidly rising maintenance cost.
Scheduled Maintenance Periodic maintenance
Time-based
Preventive Maintenance Maintenance for prevention • Analysis Activities: to decide on customer requirements and constraints, and reveal the validity of products to be
Maintenance
developed
Emergent Maintenance When ratification of maintenance is needed
• Standard and Guidelines: to prescribe various types of standards and guidelines to enable the ease of
maintenance
• Design Activities: to emphasize and utilize clarity, modularity and modifiability

106 TOPCIT ESSENCE M1 Software Development 107


TOPCIT ESSENCE Software Development

M1
• Implementation Activities: to apply the standard structure and coding style Type Description
• Supporting Documents: to require guidelines and test manuals needed for maintenance activities • Distinguishing the unit into development and maintenance parts
Unit based on the life cycle • Specializing in development and maintenance techniques
• A need for coordination cost between analysts and programmers

Types of Software Maintenance Units

IEEE/EIA 12207 defines maintenance operators as a unit that performs maintenance activities, sometimes referring to
individuals involved in maintenance to distinguish them from developers. Maintenance operators can obtain much 02 Reverse Engineering, Re-engineering, and Reuse

16

16
knowledge from developers on the software. If maintenance operators meet with developers, or are involved from the
very beginning, it might be helpful to ease the maintenance burden. When software engineers have been transferred
to other tasks or are not in touch, it would make things more difficult for maintenance operators, who are supposed Software 3R
to support after being handed over with products that are developed (e.g., codes or documents), and to gradually

20

20
Software 3R refers to techniques to maximize software productivity based on the repository through reverse
evolve/maintain them throughout the software lifecycle.
engineering, re-engineering and reuse.
The following <Table 24> represents various actors per stage of general maintenance. Each actor conducts given
maintenance activities and is accountable for them. The Maintenance Management Board makes the final approval or
① A need for 3R
rejection on a need for maintenance on changes, and finally reviews and approves of the changes that have been
• Reducing cost resulting from maintenance errors and reuse
executed.
• Enhancing productivity in software development
ht

ht
• Understanding and modifying the system and enabling testability
<Table 24> Actor per Software Maintenance Activity
• Accelerating the Time to Market for requests for software modifications
Stage Activities Actors
rig

rig
• Writing the Modification Request Form (MRF) Users, customers ② Concept Map for Software 3R
Request
• Writing the Change Request (CR) <Figure 17> shows how reverse engineering, re-engineering and reuse are used in the development stage, and
• Classifying types of maintenance and determining the severity Analysts <Table 26> explains about the 3R.
Analysis • Analyzing the maintenance requests and the impact
• Deciding on the maintenance priority
py

py
• Approving of a need for maintenance based on the analysis outcome Maintenance Management Requirement Analy-
Approval sis (constraints,
• Approving of the execution of maintenance Board
purposes, etc.) Design Implementation
• Executing maintenance on the targets Maintenance operators Forward Forward
Engineering Engineering
Execution • Writing the Software Change Report (SCR)
Co

Co
Reverse Reverse
• Modifying related reports Engineering Engineering
Design
Recovery Design
<Table 25> explains the types of software maintenance units. Recovery

<Table 25> Types of Software Maintenance Units Reverse Reverse


재공학(개선)
Engineering Engineering


(improved) (improved)
Type Description
• Analyzing user requirements, and designing, implementing and testing systems Restructuring Restructuring Restructuring
Unit based on the form of • Each team conducting separated roles and responsibilities Re-documentation
tasks • A need for coordination cost between analysts and programmers although they might be
specialized in programming knowledge and techniques <Figure 17> 3R Concept Map

Unit based on the application • Classifying the unit depending on applications


area • Being equipped with expertise on the development of applicable knowledge

108 TOPCIT ESSENCE M1 Software Development 109


TOPCIT ESSENCE Software Development

M1
<Table 26> Composition of 3R ⑤ Types of reverse engineering

Composition Explanation <Table 28> Types of Reverse Engineering

• Analyzing the software that has been implemented → Designing → Analyzing requirements, Type Explanation
being opposite from forward engineering
Reverse Engineering Logic Reverse Eliciting information from a source code, and storing it in a repository on physical design information
• Forward engineering: actualization of abstract concepts, requirement analysis → design →
implementation Engineering Obtaining physical design information

• Actualizing into abstract concepts based on software restructured through reverse engineering Data Reverse
Re-engineering Correcting the existing database, or porting it to a new database management system
• Restructualization: modifying source codes without modifying features (modification of expressions) Engineering

16

16
Reuse • Using the software being implemented and used through re-engineering

Outline of Re-engineering
Outline of Reverse Engineering

20

20
① Definition of Re-engineering
① Definition of reverse engineering It is a representative software engineering technique to improve the maintainability and quality and reduce the
Reverse engineering is a type of engineering to reversely trace the system already made, and obtain data such maintenance cost by altering and improving the existing software data and features, given that maintenance cost
the original documents and designing techniques. This is a series of activities to understand and correct the takes up most of the software development cost. Re-engineering is a task of conforming the existing system to
system and move onto the software maintenance stage. In other words, it is a task of generating information or the widely used programming standard, reconfiguring it into a high language, or transforming it to be used in other

ht

ht
documents considered as the output of the initial stage of the lifecycle by using the document or documents hardware.
acquired in the last stage of the software lifecycle. Reverse engineering is opposite from forward engineering of Re-engineering can be defined as software examination and alteration to reconfigure software in a new form,
consecutive execution starting from designing. even including the implementation of new forms that follow. Although re-engineering is the most radical and
rig

rig
expensive alteration, it is sometimes executed for small-scale alternations. It is often used to replace the existing
② Cases requiring reverse engineering obsolete software instead of improving the maintainability. Normally, after reverse engineering is conducted,
forward engineering is conducted again in consideration of alterations.
• When it is difficult to do maintenance for the system already in operation
• When changes are frequent, which has lowered the system efficiency
② Purpose of applying re-engineering
py

py
• When re-establishing a task developed as a file system into a relational database
• When downsizing the basic mainframe • Enhancing the maintenance in the current system
• Facilitating the understanding and modifiability of the system
③ Advantages of reverse engineering • Reducing the maintenance cost and time
• Facilitating the conformance to standards and use of CASE
Co

Co
• Helping to analyze software that has been commercialized or already developed
• Enhancing maintainability by being able to analyze the data and information in the existing system in the
③ Software re-engineering stage
designing level
• Storing the existing system information in a repository and facilitating the use of CASE • Stage of eliciting information from a source code
• Stage of re-engineering, system configuration and verification: recognizing repository information
④ Input/Output of reverse engineering • Stage of forward engineering and stage of design optimization


• Stage of source code generation

<Table 27> Input/Output of Reverse Engineering


④ Advantages of re-engineering
Input Output • A method of handling complicated systems: CASE
Data and documents in forms of input/output including source Structure chart, data flow diagram, control flow graph, • Generation of other views: graphing using re-engineering tools
codes, object codes, working process and libraries entity relationship diagram • Detecting side-effects
• Synthesizing high-level abstraction
• Facilitating reusability

110 TOPCIT ESSENCE M1 Software Development 111


TOPCIT ESSENCE Software Development

M1
⑥ Methods of applying re-engineering
Example Question
<Table 29> Methods of Applying Re-engineering
Question type
Type Description
Descriptive question
A method of gathering software components in libraries, and finding and combining necessary
Re-structualization
components for new software development
Question
A method of altering the module structure of systems which is associated with cluster analysis
Re-modularization
and coupling of system components Read the following scenario and describe what kind of software engineering techniques will be useful for
Semantic information A method of recovering in the document level instead of the code level Mr. K to execute tasks continuously, and state why.

16

16
elicitation
Mr. K was assigned a new task who joined a software package development company as an
experienced staff. It was a development project exclusively developed and handed over by a

20

20
previous software engineer who suddenly quit the company.
Outline of Software Reuse The company could afford Mr. K adequate training and time to get to know the work, so Mr. K had
to seamlessly carry on his predecessor's task no matter what. He needed design documents such
① Definition of software reuse
as a structure map to understand the source code as soon as possible, but having searched for
Software reuse is a method of configuration to be suited to repeated use to raise the development productivity by documents his predecessor has left, he could only find a simple requirement specification written in
standardizing software development-related knowledge (features, modules, composition, etc.). the planning department, and some source codes written by his predecessors. Therefore, the only
ht

ht
data for reference available were the simple requirement specification and source codes.
② Advantages of software reuse
• Reducing TCO1) in software production
rig

rig
• Effects of sharing and utilization for the production of high-quality software Answer and explanation
• Sharing information on system development, and output of other projects
The concept of reverse engineering is used:
①T he system source code is analyzed in reverse engineering to generate components(ingredients) of
③ Purpose of software reuse
software and their relationship.
py

py
<Table 30> Purpose of Software Reuse ② It is a process of re-writing the design and requirement analysis information.
③ If Mr. K uses this technique, he can reconfigure the data dictionary, data flow, control flow, data
Goal Description
structure, entity-relationship diagram, process specification and structure chart based on the source
Reliability Verified performance in features, stability, speed, etc.
code analysis.
Scalability Easy to upgrade based on a verified function
Co

Co
④ Information on the written codes is obtained by escalating from the lowest abstraction level to the
Productivity Overall improved development process e.g. cost and time risks highest abstraction level, validating software that is currently developed and carrying on the
Usability Providing the assembly as independent components development task.
Maintainability Ease of quality enhancement, error correction, operation and upgrading ⑤ The information reconfigured by reverse engineering is lower than the ideal level, but it is the only
Adaptability Ease of applying a new process as independent components
viable option.

1 TCO (Total Cost of Ownership): This concept considers the investment effects in IT cost used in a company released by Gartner
Group, a prestigious consultancy in the U.S. in 1997. In other words, it considers not only initial investment cost but also operatig

Related E-learning Contents

•Lecture 11 Management of Software Maintenance

and maintenance cost when companies adopt a computer system.

112 TOPCIT ESSENCE M1 Software Development 113


TOPCIT ESSENCE Software Development

M1
01 Requirement Management
ⅩⅠ Management of Software Requirements
Definition of Requirement Management

Requirement engineering can be broadly divided into requirement development and management. It is to develop
requirements defining what to do, identifies if requirements defined to be fulfilled have been reflected properly and
continues to manage the initial requirement changes.

16

16
Latest Trends and Key Issues
It is the most basic and important process in the entire lifecycle of applications, and various techniques and
Importance of Requirement Management
tools are developed for efficient management of requirements.
Appropriate management of requirements provides effective means of communication among various stakeholders,

20

20
prevents delivery delay and budget excess, and enables the execution and management of user requirement
specification.
Study Objectives
Able to understand the concept and the process of managing software requirements, and utilize the
Purpose of Requirement Management
management of tracing and modifications
ht

ht
Requirement management aims to accurately validate and satisfy customer needs in the customer perspective and
produce high-quality software within limited timeline and duration.
rig

rig
Practical Importance High Process of Requirement Management

<Figure 18> explains requirement management activities in the entire software development lifecycle.

Keywords
py

py
Eliciting Analyzing Requirement Software
Software Software
software re- software re- specification design/imple-
architecture testing
 Process of managing requirements
• quirements quirements and verification mentation

•Requirement specification technique


Defining software requirements Managing modifications in software requirements
•Management of requirement changes
Co

Co
Overall Activities of Requirements Engineering
<Figure 18> Requirement Management Activities

<Table 31> explains the specific activities of the requirement management process and the output.


<Table 31> Specification of Requirement Management Activities

Process Explanation Output


• Defining business requirements
Eliciting Requirements • Distinguishing participants Candidate Requirement
• Eliciting initial requirements
• Modelling candidate requirements
Analyzing Requirements • Prioritizing requirements Agreed Requirement
• Negotiating on requirements

114 TOPCIT ESSENCE M1 Software Development 115


TOPCIT ESSENCE Software Development

M1
• Defining requirement specification criteria / specification statement ① Principles in Requirement Specification (IEEE 830)
Specifying Requirements Formal Requirement
• Storing information on requirement traceability
<Table 33> Principles in Requirement Specification
• Reviewing the requirement specification / terminology verification /
Verifying Requirements Baselined Requirement
baseline setting Principle Explanation

Managing Requirement • Controlling requirement changes, traceability and version (track Verifiability • Requirement specification to be verifiable
Consistent Requirement
Changes record management) Modifiability • Requirement specification to be modifiable
Clarity • Requirement specification to be clearly suggested per stakeholder
Correctness • Requirement specification to be correctly described

16

16
Principles in Requirement Management Traceability • Fundamentals and mechanisms of requirements to be traceable
Consistency • Requirement specification to have no collision among requirements
Principles in managing requirements are as follows:
Completeness • All major descriptions on functionality, performance, constraints, etc. to be documented
• Prioritizing the customer value-oriented requirements / Acquiring consent on stakeholder requirements

20

20
Interpretability • Requirements: providing consistency in interpretation
• Accurately distinguishing goals of systems required (expectation management / scope management)
Understandability • Ease of understanding among stakeholders
• Analyzing the impact of requirement changes by operating the Change Control Board (CCB) and setting the
baseline for each level of change
<Table 34> explains the form of requirement specifications defined in the IEEE.
<Table 34> Requirement Specification (complying with the IEEE 830 Guideline)
ht

ht
02 Requirement Specification Content Explanation
• General introduction of software
rig

rig
1. Outline • Description of the purpose of software requirement specification
Requirements must be defined by specification techniques, and in specifying requirements, correct specifications can 1.1 Purpose • Stakeholders reading the software requirement specification
be defined in complying with principles. 1.2 Related Departments/Parties • Purpose of the software, restrictions, characteristics, benefits, business strategies,
1.3 Scope of Development relationship with common goals
• (Overall explanation about the software)
2. Outline
py

py
Requirement Specification Techniques 2.1 Project Outline
Description on the origin of the software, replacement of the existing system and whether
or not the software is an independent product, etc.
2.2 Product Function Description of the function list only, and specific description in Chapter 4
<Table 32> Requirement Specification Techniques
• Description of user characteristics (experience, academic background, tendency, etc.)
2.3 User Characteristics
• Description on the frequency of usage per user
Co

Co
Type Specification Techniques Explanation
2.4 S
 oftware Operating Description on the hardware environment for software to operate in, OS and the software
• Vienna Development Method
VDM Environment environment, etc.
• State-based graphic specification method
Formal Specification • Constraints with the hardware, memory constraints, usage of specific technologies,
• Providing a verification framework for specification development and 2.5 Decisions and
Mathematical technique multi-language support, security
systematic systems Distribution
• Design conventions, programming conventions
• Finite State Machine 2.6 Assumptions and Assumptions impacting the software (dependence on outsourced components,
FSM
• Expressing the state transition with input signals Dependence dependence technique of other project components)


• Structured Analysis and Design Technique 2.7 Data Requirements Input/Output data per function in the user perspective
SADT
• Graphic-based structural analysis model 2.8 Use Scenarios Scenarios in the user perspective to explain the system
Informal Specification
Use case • User-based modeling 3. Interface
Decision Table • Indicating probability and cases for decision-making Sample screen image, standard button, standard error message, keyboard short-cut,
3.1 User Interface
etc.
ER modeling • Expressing the entity relationship
Protocol exchange, interactions between the hardware components of the system and
3.2 Hardware Interface
software products
3.3 Software I/F Defining the data or messages entering the software from other software components

116 TOPCIT ESSENCE M1 Software Development 117


TOPCIT ESSENCE Software Development

M1
• Description of specific requirements on the features listed in Chapter 2 in the Content Marketing requirements System requirements Subsystem requirements Detail design requirements
• Purpose: purpose of/reasons for the features
4. Functional Requirements • Inputs: data entering the features
4.1 <Function Name> • (Validation check, error corrections)
• Outputs: data derived from the features
• (process error message, parameter scope, form, shape, distance, volume output)
5. Non-functional Requirements
5.1 Performance Number of users logging in, response time, file/table size, number of transactions per unit
Requirements time
Encryption of data and telecommunication, access control and authority management,

16

16
5.2 Security Requirements
etc.
5.3 Software Quality Availability, flexibility, interoperability, maintainability, portability, reliability, usability, etc.
Requirements Description on software quality requirements
5.4 Business Rule Operating rules, rules complied with when individuals/organizations execute tasks using

20

20
the software CBP (Current Biz Process) and FPM (Future Process Model)

<Figure 19> Sentence-Specific Traceability

03 Management of Requirement Changes and Traceability If there is traceability attached to individual requirements within the development output as above, it is clear how
marketing requirements are reflected in the system requirements, and to what subsystems they are allocated and
ht

ht
reflected in design. It is possible to validate some points. What would be the estimated additional development efforts
Outline of Requirement Traceability due to changes in marketing requirements resulting from users’ request for changes? When developers want to
arbitrarily change a part of design requirements, what would be the impact on high-level requirements? What are
rig

rig
Once the requirement baseline is set and a project begins, requirements are inevitably subject to changes. the requirements that are omitted in the intermediate stage? Management of requirement traceability can be effective
Management of requirement changes is a process to officially control all changes that occur based on the baseline when requirements are managed by unit. The benefits from traceability management for each requirement unit within
of requirements. It provides official control of changes on requirement changes that occur in the project execution all document output requiring traceability management can be summarized as follows:
process, and provides consistency and integrity on changes resulting from such activities and tracing. Changes in
py

py
requirements are subject to errors due to the following reasons: • Reducing rework by preventing omissions of high-level requirements
• Raising individual requirement quality by securing traceability (clarity, traceability, testability, etc.)
• Errors, collision and inconsistency in requirements • Analyzing the impact of change
• New understanding and knowledge acquisition on the system of participants • Effectively collaborating among various departments/companies
• Changes in the system environment and units
Co

Co
• Securing test coverage by acquiring traceability with test cases and raising the product quality
• Occurrence of technical, time and cost issues • Securing cross-output consistency through the management of various changes
• Raising productivity with the reduction in miscommunication due to changes
Ways to reduce the above errors are to define and configure traceability of requirements. Tracing requirements does
not mean the tracing of document-specific requirements but the tracing of sentence-specific requirements within
requirement documents. The concept of traceability in the unit of individual sentences is easily understandable if the
following figure is referred to:


118 TOPCIT ESSENCE M1 Software Development 119
TOPCIT ESSENCE Software Development

M1
Example Question
ⅩⅡ Software Configuration Management
Question type
Descriptive question

Question

It is guided that in defining requirements, domains are divided into problem domains and solution domains.

16

16
Latest Trends and Key Issues
Explain the differences between the two domains and explain what problems can be addressed.
As software configuration management is perceived as a critical element impacting the quality, its importance
has gradually been highlighted, and the use of CASE tools for configuration management has been

20

20
Intent of the question emphasized. Configuration management in the distributed environment has become a spotlighted issue too.
To validate if the procedures defining requirements and their differences are understood

Study Objectives
Answer and explanation
Able to explain the concept and activities of software configuration management and to utilize its tools
ht

ht
In the stage of defining customer requirements, what customers want for software services/products in
the perspective of problem domain customers can be accurately described, and in the stage of defining
system requirements, how customer requirements can be contained in the system can be described in
rig

rig
order to complement the following problems: Practical Importance High
1. Accurate understanding of actual problems
2. Scope setting for the system, and accurate understanding of each function consisting of the system
3. Search for optimal solutions due to a lack of design freedom
4. Avoidance of development oriented toward developers and solution providers in explaining the solution Keywords
py

py
-oriented system
•Software configuration, Software configuration management, configuration management element,
procedures to control software change
•Control of software configuration access and synchronization
Co

Co
Related E-learning Contents •Version management tool, configuration management tool

•Lecture 12 Management of Software Requirements



120 TOPCIT ESSENCE M1 Software Development 121
TOPCIT ESSENCE Software Development

M1
01 Outline of Software Configuration Management Configuration Library
Management Activities Management
CCB
Identifying
Definition of Software Configuration Management Configuration Meta Data Approving Modification,
Identifying Modification
Controlling
Software Configuration Management(SCM) refers to a series of activities developed to manage changes in software. Configuration Allowing
Modification
Software configuration management is to control by finding the causes for software changes, validate if changes
Repository
are made appropriately and notify them to related operators. As the stage is applicable for the entire software Auditing
Configuration

16

16
development process, it can be conducted not only in development and maintenance in order to reduce the entire Conducting
Modification
cost for software development and guarantee the minimization of many risks rampant in the development process. Recording
Configuration
Here, the word ‘configuration’ encompasses programs made in the software development stage, and documents
and data explaining the programs. Software configuration management is a management technique to systematically

20

20
manage various outputs generated in the software development process. In other words, it is to manage all behaviors Integration CASE / OO CASE / Intelligent CASE
related to records of change for all components generated from the software development stage up to maintenance.

<Figure 20> Concept Map of Configuration Management


<Table 35> explains general problems when configuration management is poorly done

② Components of configuration management


ht

ht
<Table 35> Background for a Need for Configuration Management The below table explains major items as components of configuration management.
Causes of the Problems Description
rig

rig
Poor Visibility There is no visibility for software as an intangible output. <Table 36>

Difficulties in Control It is realistically difficult to control invisible software development. Components Description
Poor Traceability It is difficult to trace the entire process of software development. Baseline Timing of technical control of each configuration item, and timing to control all changes
A Lack of Monitoring It is difficult to continue on with project management due to poor visibility and traceability. Configuration Items Basic targets that are officially defined and described in the software lifecycle
py

py
Endless Changes Endless user requirements Configuration Products Configuration management targets where officially implemented entities are realized in the
software development lifecycle
Technical documents, hardware products, software products
Configuration Information Configuration Information = Configuration Items + Configuration Products
Co

Co
02 Concept Map of Configuration Management and its Components

Concept Map of Configuration Management 03 Activities of Configuration Management


<Figure 20> conceptually explains the entire activities and mutual relationships of configuration management.
Activities of Configuration Management


Configuration management activities consist of validating, controlling, auditing and recording configurations, and are
explained specifically as follows.

122 TOPCIT ESSENCE M1 Software Development 123


TOPCIT ESSENCE Software Development

M1
<Table 37>
04 Configuration Management Tools
Activities Description
Validating • Distinguishing targets for configuration management and numbering items to be managed
Configurations • Objectives to validate configuration items: facilitating the process of defining document structures to Management of source codes is one of the critical points in developing software. The Version Control System (VCS)
be clear and predictable, and also traceability and management based on information records or the Source Code Management (SCM) System is required which is a system to store and manage source codes
• Description to validate configuration items: products/various documents/configuration item number for managing various versions of records and changes and for collaboration among team members.
Controlling • Reviewing and approving requests for changing software configuration and controlling them so that Let’s have a look at the flow of the system for software configuration management. First, there is configuration
Configurations they could be reflected in the defined baseline
management that executes version updating using shared folders, etc. based on file systems in the local part. In
• Managing requirements for change/controlling changes/operating configuration management units

16

16
and supporting to control configuration for developers and outsourcing companies the next phase, network-based client/server type management systems came to be used, making distributed
management highly popular. Tools for configuration management for each type are as follows.
Auditing • Serving as a means to determine integrity of software baseline
Configurations • Successfully setting the software baseline by successful configuration auditing
• Reviewing to see if changes in the baseline are in line with requirements

20

20
• Verification, validation
Configuration Management Tools
Recording • Recording various statuses and execution results on software configuration and change
Configurations management, and writing a report by managing the database
The following table explains the types of representative configuration management tools, and their application
techniques and characteristics. SVN and Git as key open source configuration management tools, and TFS, a
commercialized tool from Microsoft will be explained from the next chapter.

ht

ht
Effects of Configuration Management
<Table 39>
Once activities of configuration management are applied to software development and management, the following
Type Tools Note
rig

rig
effects can be obtained:
Shared Folders RCS, SCCS
<Table 38>
Subversion(SVN), CVS, Perforce, Centralized Version Control System
Client/Server
Type Description ClearCase, TFS
• Providing the criteria for systematic and effective management of a project Git, Mercurial, Bitkeeper, SVK, Darcs Providing distributed repositories
py

py
• Facilitating the project control Distributed Repository Offline development work
Manager Side
• Securing project visibility and guaranteeing project traceability Advantageous for a multiple number
• Suggesting the baseline for quality assurance
• Minimizing the impact resulting from software change, and facilitating management
• Techniques for software quality assurance
Co

Co
Developer Side
• Enabling appropriate change management for software Subversion (SVN)
• Improving maintainability

The Subversion is a management system of an open software version. It is called the ‘SVN’ named after a command
used in a command-type interface. It has been developed by CollabNet since 2000 to replace the CVS that had
Considerations for Configuration Management restrictions.
Currently, it is being co-developed with the global developer community as the highest-level project of Apache. The


The following points must be considered for efficient configuration management: Subversion follows the server-client model. The server can be included within a computer being used, or be placed
• Forming an appropriate operating unit and utilizing tools specialized in management in a separate computer connected to the network. The Centralized Version Control System like the Subversion is
• A need for continued management and management criteria and for problem-solving measures used by multiple clients as they check out files from the central server.
• Appropriately tailoring the extent of configuration management for a smaller project As for the Centralized Version Control System, codes are stored in a store server only. When developers download a
• Setting items for configuration management and implementing all changes based on official negotiations source code, and edit/store it, the descriptions are reflected in the Centralized Version Control System. In other words,
• Cautiously implementing changes for the software in operation there is a master version (latest version) source code stored always in a server, and when a server is disconnected
or network access is impossible, the code cannot be committed or the latest code cannot be downloaded. As a
result, when all the data is lost due to a problem in the hard disk of the central server, there is no way to recover

124 TOPCIT ESSENCE M1 Software Development 125


TOPCIT ESSENCE Software Development

M1
it. The biggest pitfall is that the version management server must be concentrated in a single spot, and is entirely • Version Control – managing source codes requiring version management and other execution files
dependent on the server account. • Work Item Planning and Management – continued tracing of defects, issues, requirements, tasks and scenarios
• Project Management Function – supporting for planning and tracing by forming a team project according to the
software process that users can tailor and aligning with Microsoft Excel and Microsoft Project
Distributed Version Control System (Git) • Team Build – providing a process and a workflow to build into executable products
• Data Collection and Reporting – supporting to evaluate and make decisions on a team project based on
With the Distributed Version Control System like Git, the client does not have to download the last snapshot directly in various information acquired from TFS
copying the entire version control system. Even for a problem with a server, the server can be restored with a copy • Team Project Portal – providing a collaborative workplace to enable seamless communication for team projects

16

16
of the client. With the Distributed Version Control System, a source code is not only stored in a central server, but in • Team Foundation Sharing Service – providing shared infrastructure services that are critical to tool developers
local PCs of multiple servers or developers, and each becomes a source repository. The source code stored in each and scale-up providers although end users might not be able to see them
source repository is not of the same version and the code is stored in different branches. In other words, Server A
can store Versions A, B, and C and Server B can store different branches such as Branch A, C, and D. In short, the

20

20
branch version of each repository is all different, and the place that is brought in by accessing a source code is all
different, so there is no such concept as ‘master version’ in the system.
The source code version management can be highly flexible because repositories can be separately developed
in team or function units, or repositories can be separately developed in release version units. There is no such
concept as a central repository, so despite a failure in a particular VCS system, as long as the VCS one uses is not

ht

ht
problematic, the development can be continued on. As mentioned earlier, the VCS can be installed in local PCs of
developers, so with no network connectivity, development can be carried on. Because the source code is stored
in not only the central server but also multiple servers and PCs in a distributed manner, despite any damage done
rig

rig
to a repository due to a server failure, other servers or PCs would store all the source codes and histories, so the
Distributed Version Control System is easy to recover compared with the central server system.

TFS (Team Foundation Server)


py

py
The Team Foundation Server (TFS) is a product of Microsoft that provides the following features: management (team
foundation version control), reporting, requirement management, project management (agile software development,
Waterfall model), automated build, lab management, and test and launch management. TFS can be used as a back-
Co

Co
end in numerous integrated development environments, but is designed to provide optimized advantages when used
as a back-end for Microsoft Visual Studio or Eclipse (Window and non-Window platforms). TFS is an integrated
repository based on the SQL server. It can store all types of information related to software development activities
of development teams including source codes, output and development activities for them to achieve effective
collaboration. Source control in TFS is a version management tool that has nothing to do with the existing Visual
Source Safe. The main difference is that security configuration and authority configuration have been strengthened


in TFS as SQL-based storage types. TFS also has improved stability due to the execution of database transactions,
and its scalability has become stronger so that it can be configured to a large team of thousands. TFS includes a
strong version control system to cater to requirements for source control for a company as a whole, so it has been
developed to provide high-speed security access to guarantee reliability of the data available in this version. TFS
has not only check-in, check-out, and a standard version control mechanism for version control and branch/merge
but also features to solve specific problems of large-scale distribution such as shelving (a function to store changes
without executing the entire validity check-in) and dynamic check-in policy.
The following explanations are on key features provided by TFS:

126 TOPCIT ESSENCE M1 Software Development 127


TOPCIT ESSENCE Software Development

M1
Example Question

Question type
ⅩⅢ Software Quality Management
Short-answer question

Question

The example shows a circumstance that occurred as a result of an activity omitted in the process of

16

16
configuration management. Latest Trends and Key Issues

Recently, many companies have stayed away from the rule of thumb-based management to develop and
There was no new defect even after source codes were corrected and tested to resolve two cases manage high-quality software, establishing a quality management system in a systematic and quantitative

20

20
of defects detected while doing the system testing. Correction was made again along with testing,
manner and making consistent investment.
but new defects were additionally detected, and this phenomenon repeatedly occurred. Thus, to do
it again from the beginning, one wanted to go back to the state prior to the defect correction, but the
source code was repeatedly corrected, and due to no records of change, it was impossible to return
to the original state.
Study Objectives
Able to explain the concept and activities of software quality management
ht

ht
Answer and explanation
rig

rig
Change Control or Change Management Practical Importance Medium
The above description is slightly detached from the definition and scope of change control. However,
given that the concept is not to correct the original file and maintain it before completing the change, that
is, completing the test for changes and quality assurance, it is not a problem even if change control is
written in the answer. Similar with versioning or version control, but it cannot be the right answer because Keywords
py

py
it is an act conducted to manage each version after completing a version.
 Software quality

•Software Quality Model
Related E-learning Contents
Co

Co
•Lecture 13 Software Configuration Management


128 TOPCIT ESSENCE M1 Software Development 129
TOPCIT ESSENCE Software Development

M1
01 Software Quality Management 02 Perspectives of Software Quality

Definition of Software Quality Management Software quality might vary by stakeholder, so it is essential to fully check out quality expectations and requirements
from all stakeholders before executing projects in evaluating the quality.
Software quality management refers to activities to control and guarantee the quality of all activities taking place
throughout the application lifecycle the output as a result of these activities, consisting of software quality guarantee Users’ Perspective
and software quality control activities. Software quality management is a comprehensive quality activity by deciding on

16

16
the quality goals, policies, responsibilities and roles of software, and conducting quality planning, guarantee, control • Mostly taking an interest in the software usage, performance, and usage effects
and improvement within the quality system. It means an operating scheme to control management driven by statistical • Evaluating software not knowing the internal aspect of software and how it is developed
numeric through development activities so that software product quality could be maximized with the given amount of
cost input under the same conditions.

20

20
Developers’ Perspective

Purposes of Quality Management • Taking an interest in not only the quality of final products but also that of intermediate ones
• Using different scales for different stages for quality evaluation in each stage in the development stage
Purposes of software quality management can be summarized as follows: • Including the quality feature perspective needed by software maintenance personnel

ht

ht
<Table 40> Purposes of Quality Management

Purpose Description
Managers’ Perspective
rig

rig
Technical Evaluation Predicting appropriate estimation standards and software quality
Resources Evaluation Estimating appropriate resources and cost
• Taking an interest in the overall quality instead of particular characteristics of quality
Process Evaluation Controlling the application lifecycle process • Requiring to impose a weight to reflect business requirements in each feature
Conducting routine test, checking out the output, comparing with other products (adopting • Requiring to harmonize management criteria such as deadline delay and cost addition with quality enhancement
Product Check
packages)
py

py
03 Characteristics of Software Quality and Major Software Quality Models
Elements of Software Quality
Co

Co
Key elements of software quality can be broken down as follows. Characteristics of Software Quality
<Table 41> Elements of Software Quality
Characteristics of software quality refer to those of software, and are used as quality evaluation items for software. ISO
Purpose Description
9126 is a representative standard for quality characteristics, and can be classified as follows in <Table 42>:
Operation Correctness, reliability, efficiency, scalability, ease-of-use, integrity, maintainability


Correction Maintainability, portability
Adaptation Testability, reusability, interoperability, maintainability

130 TOPCIT ESSENCE M1 Software Development 131


TOPCIT ESSENCE Software Development

M1
<Table 42> ISO 9126 Quality Characteristics
04 Methods of Software Quality Measurement
Quality Characteristics Description Quality Sub-characteristics
• A software product capability providing features Suitability, correctness, interoperability,
Functionality Software measurement is a method of quantifying software codes or a development process. Software
that meet explicit and implicit requirements flexibility, security
• A quality to maintain the prescribed performance
measurement(metrics) can be done through the following methods.
level in using prescribed conditions • Direct Measure: a method of measuring the size of software as a bundle, measuring cost, timeline, effort, Lines of
Reliability Maturity, fault tolerance, recoverability
• A software product capability to enable users to Code (LOC), memory size and error, etc.
prevent errors
• Indirect Measure: a method of measuring the quality of software based on the directly estimated value, measuring

16

16
• A software capability to enable users to easily features, quality, complexity, reliability, maintainability, efficiency, etc.
Usability Understandability, operability, learnability
understand, learn and prefer
• The extent of performance provided to input Types of software metrics are as follows:
resources
Efficiency Execution efficiency, resource efficiency • Quality Metric: explicitly and implicitly indicating the software quality metric on user requirements
• The extent of the consumption of resources

20

20
required to execute required features • Productivity Metric: focusing on the output of the engineering procedure
• A capability that can be changed including • T echnical Metric: focusing on software characteristics including a logical complexity or the extent of
software correction or improvement according Interpretability, stability, ease of change, modularization
Maintainability
to the operating environment, requirements and testability • Size-oriented Metric: directly measuring and collecting the size of output based on the software engineering
functional specifications
procedure
• A capability for software to be ported to other
ht

ht
• Human-oriented Metric: collecting information on efficiency including developers’ attitude, tools or methods
hardware or software Adaptability, conformity, workability in porting,
Portability • Feature-driven Metric: information based on the Indirect Measure, including quality, reliability, complexity and
• The extent of software’s capability to be ported substitutability
to another environment maintainability
rig

rig
Key Software Quality Models 05 Software Quality Management
py

py
Software quality models can be referred to in evaluating a product or a process, and considering it as a model case
to be executed in a company, thus improving the quality. <Table 43> as follows classifies the quality standard and The software quality management system can be broken down into planning, execution and control stages, and
models in the product and process perspectives each stage determines necessary activities and subjects, and enables quality activities to be continuously executed.
Co

Co
<Table 43> Key Software Quality Models

Type Product Perspective Process Perspective Quality


Management
Product measurement, product verification, Improving and inspecting software
Characteristics
product identification
Evaluating functionality, reliability, usability, Evaluating process (procedure) conformity
Methods
efficiency, maintainability and portability Quality Quality Quality


Plan Assurance Control
ISO/IEC9126,14598,12119, ISO 9000, ISO/IEC 12207, SPICE,
Standards and Models
25000SQuaRE CMM, CMMI
QC → QM → QA
• Applicable to many types of products
• Applicable to all types of software <Figure 21> Software Quality Management
Advantages • Shortening the test time and reducing certification
• Objectification of specialized judgment
cost
• Consuming cost and time of routine test • Impossible to guarantee the quality comparatively The following <Table 44> explains components and major activities of software quality management.
Disadvantages
• Difficult to evaluate latest software • Difficult to apply to innovative software

132 TOPCIT ESSENCE M1 Software Development 133


TOPCIT ESSENCE Software Development

M1
<Table 44> Breakdown of Software Quality Management and the Major Activities • Clearly define problem domains.
• Avoid discussions on solutions or improvement measures
Type Concept Activities
• Limit the number of participants and make sure to prepare for a review.
• Validating requirements in the quality system
• Develop a checklist on the output to be reviewed.
• Validating the quality assurance procedures
Validating the standard of quality to be • Allocate resources, time and timeline in advance.
• Identifying the quality control procedures
Quality Plan executed, and determining execution
• Defining operating procedures • Make sure that all reviewers take training in advance.
methods
• Making the quality management checklist
• Share reviewed outcome among reviewers.
• Writing quality management plans
• Check out the review process and outcome.
Executing quality assurance to see if • Reviewing project output

16

16
Quality Assurance software products conform to requirements • Reinforcing preventive measures for quality accidents
in a third-party perspective • Reviewing project procedures Types of official technical review include the Walkthrough and Inspections, which are all executed in forms of
• Monitoring quality outcome meetings.
Autonomously executing quality activities in • Analyzing differences with planned quality levels The Walkthrough is to do a small-scale review on software modules or source codes as a technical evaluation

20

20
Quality Control
the software lifecycle • Establishing correction plans if necessary meeting that can be executed in each software development stage. The purpose is early detection of defects, and
• Documenting correction activities and updating the plans
the detected are documented. Defects that are detected are not addressed in a review meeting, but are compiled
for post-meetings. Meeting participants must be 3~5, and the review time can be made effective if it is less than two
hours. Review data are distributed in advance for people to review in advance which is supposed to take less than
2 hours.
06 Activities for Software Quality Assurance The inspections are more standardized and formalized forms of the Walkthrough, reviewing and improving the output
ht

ht
quality in the software development stage. The Inspection Team consists of 1~4 members that are trained on the
field. Inspectors execute the process by using the checklist on the inspection items.
Software quality assurance is a planned and systematic task executed in the entire development stage to validate if
rig

rig
a particular software conforms to predefined requirements. Activities for software quality assurance set quality goals
by thoroughly validating software characteristics and requirements from the starting point of software development. In
the development stage, standardized review activities take place to check out if quality goals have been met. After Software Quality Assurance Procedure and Activities
development, debugging and testing occur.
There are the following necessities for software quality assurance: For software quality assurance, the execution procedure must be defined and systematically executed. First of
py

py
• Enhancing productivity by satisfying user requirements as much as possible all, quality assurance plans are set, which are then subject to reviews among stakeholders. Mutual consensus is
• Detecting quality problems in the development stage and removing them made on quality activities and metrics, and the execution outcome are documented, reported and notified so that
• Ensuring deadline conformity, and product robustness and scalability the execution outcome of quality activities can continuously monitored and appropriate corrective measures can be
• Saving cost, improving productivity and increasing reusability taken.
Co

Co
Key software quality activities are as follows besides technical review activities:

• Verification: an activity to inspect if each stage of software analysis and design is correct, or if source codes are
Techniques for Software Quality Assurance defective
• Validation: an activity to inspect if defining and analysis of requirements has been properly done so that proper
The key technique for software quality assurance is the Formal Technical Review (FTR), an activity to guarantee
software products can be developed in line with the operating environment of customers or users
software quality executed by developers. In order to assure the software quality, developers must conduct technical


• Certification: an activity where users or customers, or experts on behalf of users officially validate the software
review for software. Technical review for software detects problems or defects that might occur in the development
quality
stage including planning, analysis, design and implementation, thus improving the software quality.
• Software Test: an activity to execute a program to detect defects
• Debugging: an activity to accurately diagnose and correct the causes for defects that are detected
The following is a guideline on official technical review:
• Audit: an activity based on the project audit to evaluate the conformity with the project standard process,
• Only focus on the review of source codes and output
requirement documents and project plans. The audit is executed as defined in the standard process, enables
• Define the agenda and execute it.
observation on conformities with standards or plans, and requires corrective measures, if necessary.
• Minimize debates and counter arguments

134 TOPCIT ESSENCE M1 Software Development 135


TOPCIT ESSENCE Software Development

M1
Software quality activities can enable the acquisition of the quality levels that need to be systematically executed
throughout the software lifecycle. Since software quality activities are not one-time ostentatious ones, it must be Example Question
aligned with the software development process to establish systematic quality planning and executing it continuously.
Question type
Multiple choice question
Activities for Software Quality Control and Evaluation
Question
Software quality management consists of software quality control and quality assurance. Software quality control is an
The quality of good software can be distinguished in the perspectives of clients, users and maintenance

16

16
essential process in order to maintain the quality levels expected in software in the process of software development,
operators. Choose the most appropriate software quality standard in the perspective of maintenance
operation and maintenance. By contrast, software quality assurance is a process to support the quality control
operators.
process to guarantee the reliability of a particular software to related stakeholders. While software quality control is
executed within software development units, operation units and maintenance units, software quality assurance is ① Functional accuracy, portability, ease of use and productivity

20

20
executed by a third party that mostly has an objective stance. Thus, for software quality management, only when ② Efficiency, productivity, re-usability and ease of comprehension
quality control is organically aligned with quality assurance and executed accordingly, can the quality levels in ③ Portability, re-usability, interoperability and reliability
demand be effectively achieved. ④ Flexibility, portability, reliability and ease-of-use

Answer and explanation


ht

ht
Answer : ③
Software quality standards can be distinguished in the perspectives of clients, users and maintenance
operators.
rig

rig
Clients’: minimum cost, productivity, flexibility, efficiency, reliability
Users’: functional correctness, understandability, ease-of-use, consistent integration, efficiency, reliability
Maintenance Operators’: portability, reusability, maintainability, interoperability, reliability
py

py
Related E-learning Contents

•Lecture 14 Software Quality Management


Co

Co


136 TOPCIT ESSENCE M1 Software Development 137
TOPCIT ESSENCE Software Development

M1
Company A - Taking a glimpse at a business report in
setting up a next-generation system Expected Results

① Making business more efficient and securing information reliability


01 Project Outline • Enhancing cross-system information conformity based on development in consideration of business
linkage among individual systems
Business Outline • Raising business efficiency by complementing business features and reinforcing business support by

16

16
expanding the domains of e-payment
① Project Title: Next-Generation Comprehensive Information System Set-up
• Raising efficiency in business processing by improving the process and simplifying unnecessary
② Project Period: from the contract signing date to XX (date), 201X administrative process
③ Project Cost: approximately KRW XX million (including VAT) ② Raising user convenience and shared usage of knowledge

20

20
• Raising convenience in usage by directly accessing the services in demand through individualized
Project Background menus
• Raising the user satisfaction levels by providing differentiated information and services depending on
① Requirements to reshuffle the information system individual tasks
• The current system cannot make prompt and flexible responses to changes in the business process. • Enhancing task applicability by being able to concentrate on high value-added tasks with shortened

ht

ht
• There is a lack of information linkage among internal systems. time to acquire information necessary for tasks and to easily acquire and process the knowledge that
• Efficiency in the information system has dropped due to the absence of a standardized business has been built up
process. • Ensuring the acquisition of knowledge by applying the process of managing the knowledge that can
rig

rig
② A lack of enterprise-wide business process system be applied to actual tasks, instead of merely registering or inquiring knowledge
• There is a need to establish an information system based on an efficient and standardized business
process. Execution Strategies
③ Absence of strategic corporate management
py

py
① Establishing a field-oriented system
• There is a lack of mutual conformity of IT with the vision, strategic goals, execution strategies, business
process and personnel. • Facilitating a field-oriented system development by expanding staff communication channels including
④ A lack of linkage among unit systems forming and operating a field-oriented working-level unit to set up a user-oriented system and
conducting a survey
• Since the current information system was individually developed due to the demand, there is a lack of
Co

Co
• F orming a field-oriented working-level unit for reinforcing quality assurance by constantly
linkage among unit systems.
complementing problems in the process of work analysis, design and development by applying latest
analysis design techniques based on architecture development strategies, and also for minimizing on-
Business Scope
site trials and errors in opening the system
• Establishing a user-oriented system by expanding the scope so that staff can be directly engaged in
① Establishing the next-generation corporate management system
development through various surveys and their participation in tests on major features
• Personnel, wage, budget, accounting, purchase, contracting, asset, lease, training, EIS, EDMS,
② Prioritizing in-house development


e-payment
• Initiating the development of an optimized in-house information system to elastically respond to internal
② Establishing the UC-based EKP
and external changes in the environment, given that there are frequent modifications in units and
• The EKP is to be re-established to be user-oriented by strengthening knowledge management
tasks
features, personalization services and integrated search features. It therefore enhances convenience
in usage and supporting prompt business processing.

138 TOPCIT ESSENCE M1 Software Development 139


TOPCIT ESSENCE Software Development

M1
02 Requirements for Developing the Next-Generation Information
Architecture Requirements
System
① Requirements for the methodologies for developing the next-generation information system
<Table 45> Architecture Directions
• Developing it by using the architecture-based latest development methodology (Component-Based
Architecture Components Current State Directions Development (CBD), etc.)
Programming Languages COBOL + JAVA JAVA • Developing the next-generation information system based on an iterative development process
Application Servers IBM Mainframe-based JAVA operating environment

16

16
• User screen: Java-based web • User screen: Java-based web
Tier Architecture • Processing logic: COBOL-based • Processing logic: Java-based
• Database: relational DBMS • Database: relational DBMS 03 Analysis of the Next-Generation Information System and Design

20

20
Operating Platform Mainframe + Unix server Mainframe Requirements
Authentication management through Introducing the EAM (including authentication
Single Sign On management and screen authority management ① Requirements for analyzing requirements
Security
through the Enterprise Access Management-Single
Sign on) • To develop the analytics for the next-generation information system based on object-oriented
analysis modeling
• To be able to partially use a structural analysis model to reflect the characteristics of the work process
ht

ht
Requirements of Quality Attributes for the next-generation information system
Non-functional conditions of the next-generation system describe applications excluding infrastructure and • To write the analysis output for the next-generation information system based on the UML modeling
output
rig

rig
satisfy quality attributes suggested in ISO 9126.
② Requirements for system design
<Table 46> ISO 9126 Quality Attributes • To write the next-generation information system by reflecting 'Architecture Requirement'
Quality Attributes Description Quality Sub-characteristics • To write the next-generation information system based on object-oriented design modeling
• A software product capability providing features that Conformity, correctness, interoperability,
• To seek to establish the UX-based user-oriented interface to achieve 'Strategies for Establishing the
py

py
Functionality Field-oriented Information System'
satisfy explicit and implicit requirements flexibility, security
• A capability to maintain the prescribed performance
level in being used for prescribed conditions
Reliability Maturity, fault tolerance, recoverability
• A software product capability for users to prevent
errors
Co

Co
Usability
• A software product capability to enable users to Understandability, applicability, 04 Software Execution and Testing
easily understand and learn, and prefer learnability
• The extent of performance provided to resource ① Programming language
input Efficiency in execution, resource To develop the software by using the object-oriented language of JAVA, a programming language of
Efficiency
• The extent of requiring necessary resources to efficiency
the Architecture Requirements in the previous paragraph
execute required features
② Core reuse


• A capability to be modified including correcting
and modifying software in line with the operating Interpretability, stability, ease-of- • To develop the next-generation information system based on components to increase the code
Maintainability
environment, requirements and functional change, testability reusability
specifications • To develop in the direction of code reusability by utilizing refactoring in the development stage
• A capability for software to be ported to other ③ Software testing
hardware or software Adaptability, consistency, workability in
Portability To verify and inspect the software components and sub-systems developed by applying the testing
• The extent of software’s capability to be ported to porting, substitutability
another environment strategies, test plans and design process, various testing techniques and levels starting from the project
planning stage in order to assure quality in the next-generation information system.

140 TOPCIT ESSENCE M1 Software Development 141


TOPCIT ESSENCE Software Development

M1
05 Software Management
① Information system maintenance ⅩⅣ Agile Development
Applying reverse engineering and reengineering process in order to enhance maintainability after
developing the next-generation information system
② Management of information system requirements
Applying the requirement management process and guaranteeing bi-directional traceability to develop
a user and field-oriented system

16

16
③ Information system configuration management Latest Trends and Key Issues
Applying the configuration management system in developing the information system to maintain The speed of changes in the recent business environment is getting higher and higher. Companies’ top
configuration of the next-generation information system, and applying the configuration management competitiveness is now to acutely adapt to and change the rapidly changing business. As such, amid the

20

20
process during and after development greater importance of business acuity in the corporate environment, there emerged methodologies to secure
④ Information system quality management
acuity in software development and visibility in development progress. The Agile methodology came to emerge
Tracing the ISO 9126 requirements in quality attribute requirements among 'Architecture Requirements' against this backdrop, whose importance has rapidly risen. The Agile Development Methodology did not start
to develop a high-quality information system throughout the entire project period, and managing if as denial of the value of the traditional software development methodology or output. Its starting point lies in
quality management goals are met improving inefficiency in modeling beyond the inherent goal and value from the existing style.

ht

ht
Study Objectives
rig

rig
Able to explain the concept and characteristics of Agile development and types of its methodologies
Able to explain the principle of characteristics and execution methodologies of XP, a representative
methodoloy in Agile
py

py
Able to explain the characteristics, roles, output and process of Scrum, Agile’s representative management
theory
Co

Co
Practical Importance High

Keywords


•XP, SCRUM, TDD

142 TOPCIT ESSENCE M1 Software Development 143


TOPCIT ESSENCE Software Development

M1
01 Concept of Agile Development
Practical Tips
Agile Background
The speed of changes in the recent business environment is getting higher and higher, and
In the mid- ‘90s, software development methodologies based on the Agile methodology started to emerge. The Agile
companies’ top competitiveness is now to acutely adapt to the rapidly changing business
methodology came into being as a light methodology by staying away from the existing heavy-toned, regulatory
environment. With the conventional software development method that focuses on stringent
methodology. The Agile methodology used to be known as the ‘lightweight method’, and it ended up being called
process-based roles and activities, efficiency in development cannot be easily secured.

16

16
‘Agile’ with the Agile Manifesto. From then on, Agile began to have a meaning as a development method for software
Therefore, by using the frequent check, test and distribution of the Agile Development
development. Compared with software engineering that kicked off in 1945, the Agile methodology is a new domain
Methodology to complement these issues, an effective, productive and measurable development
with a history of only 20 years or so, which is now making a great progress.
environment can be secured. The Agile Methodology can allow for the following effects:

20

20
•Risk Management - A project team can identify problems early through the small incremental
release method and adapt to changes easily. Clear visibility in the Agile development provides
Agile Concept
information to make important decisions in the initial stage of development.
In January 2001, the Agile Alliance made the Agile Manifesto which is an important manifesto that has been discussed
•Quality - As tests are developed, acute software development is possible that can be as the basic principles and spirit behind Agile software development. The description of the Agile Manifesto is as

ht

ht
inspected in the execution code level, and product integration can improve. A project team follows.
can change the software if necessary at any time, and the team can detect quality problems
early resulting from particular changes through the existing testing environment and unit tests. <Table 47> Manifesto for Agile Software Development
rig

rig
•Quick Launch – Iteration of Agile Development implies that features are gradually transferred. “We are uncovering better ways of developing software by doing it and helping others do it. Through this work
Products can be continuously evolved and released in the market fast. we have come to value:
•Visibility – The principle of Agile development recommends the user participation throughout Individuals and interactions over processes and tools
the very cooperative shared approach with product development. In other words, it is helpful in Working software over comprehensive documentation
py

py
Customer collaboration over contract negotiation
validating if project progress and updates are effectively managed that are to provide superb
Responding to change over following a plan
visibility to major stakeholders.
That is, while there is value in the items on the right, we value the items on the left more.”
•Flexibility / Acuity – As for Agile development, flexible responses to changes can be made. As
Co

Co
development progresses, its duration gets fixed, and requirements become crystal clear and
can be further developed. To this end, customers must take part in the development process • 12 Principles behind the Agile Manifesto
① Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
for proactive negotiations.
② Welcome changing requirements, even late in development. Agile processes harness change for the
•Proper Products – The capability of Agile that evolves and embraces changes lies in team customer’s competitive advantage.
building to make proper products. While conventional development focused on successful ③ Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the
project development, Agile must aim to develop a project in a proper manner.


shorter timescale.
④ Business people and developers must work together daily throughout the project.
⑤ Build projects around motivated individuals. Give them the environment and support they need, and trust them
to get the job done.
⑥ The most efficient and effective method of conveying information to and within a development team is face-
to-face conversation.
⑦ Working software is the primary measure of progress.
⑧ Agile processes promote sustainable development. The sponsors, developers, and users should be able to

144 TOPCIT ESSENCE M1 Software Development 145


TOPCIT ESSENCE Software Development

M1
maintain a constant pace indefinitely. • Scrum, Ken Schwaber/ Jeff Sutherland
⑨ Continuous attention to technical excellence and good design enhances agility. • Adaptive Software Development (ASD), Jim Highsmith
⑩ Simplicity - the art of maximizing the amount of work not done - is essential. • Feature Driven Development (FDD), Peter Coad/ Jeff DeLuca
⑪ The best architectures, requirements, and designs emerge from self-organizing teams. • Dynamic Systems Development Method (DSDM), Dane Falkner
⑫ At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior • Crystal Family, Alistair Cockbum
accordingly. • eXtreme Programming (XP), Kent Beck/ Erich Gamma
• Lean Software Development Methodology, Tom Poppendieck/Mary Poppendieck
• Agile Unified Process (AUP), Scott W.Ambler

16

16
Characteristics of Agile

Agile-based software development is iterative and incremental. In order to effectively proceed with these types of
development, such techniques as self-organizing and cross-functional teams are used. Agile practices are derived
02 Agile Development Methodology - XP

20

20
from the process of realizing the value and principles of the Agile Manifesto. The values and principles of the
manifesto must be looked into to properly understand the pursuits of the methodology.
XP Outline
① Key Differences between the Waterfall Methodology and Agile methodology
eXtreme Programming (XP) is a methodology established based on the lessons that many engineers spearheaded
• Plan-oriented vs Customer-oriented by Kent Beck had learned through projects in the late ‘90s. It is a light-weight development method suited to small-
ht

ht
The Waterfall Methodology is to make a timeline for the entire project before starting it and execute it based on and medium-sized development units. As for XP, defining it as ‘a methodology’ is sometimes controversial because it
the schedule. The Agile methodology, meanwhile, is to devise a plan for a project, but given the uncertainties of is significantly linked to development techniques such as Test Driven Development (TDD), Daily Build and Continuous
the project, it is planned based on the descriptions that are important to customers at this point or those that are Integration. In Korea, it is the norm that a part of the technique is applied especially by small-scale development
rig

rig
confirmed instead of making an unrealistic plan. teams. In more and more cases, such additional Agile development methodologies as Scrum are applied instead of
• Big Bang Release vs. Small Release sticking to XP only. XP consists of its values and practices to achieve these values upon its application, and requires
While the Waterfall Methodology is to release all features at a time when a project ends, the Agile methodology a principle to maintain a balance of the two. XP is a type of an iterative development methodology. There are
iterates small releases continuously in small intervals called ‘iterations.’ Customers can promptly check out if numerous iterations in the project, and tasks are iterated based on test outcome.
requirements are reflected through this method.
py

py
• Output-oriented vs Software Behavior-oriented
In the Waterfall Methodology, whether or not a project is executed properly is checked out by validating if the
Values of XP
output has been written for each planned stage. In the Agile methodology, meanwhile, what is critical is if software
properly behaves, and how well it has been developed in line with requirements. Due to these characteristics,
Co

Co
Five values are suggested in XP:
it is misperceived that if the Agile is applied for development, there is no need to make a document. It must be
① Communication: The most important element in software development for each team is communication and a
understood, however, that it is not that a document is not made but its output can be made in various forms of
typical cause in project failures is communication errors. Problems must be solved through communication among
output suited to different circumstances. customers, developers and managers while reinforcing team building.
② Simplicity: There is a question that lingers all the time: “What is the simplest of all?” It must be ensured that
unnecessary complexities are removed for a simple and clear design.
Types of the Agile Methodology


③ Feedback: Making incremental improvement is more effective than pursuing completeness at a time when the
output or values of the past become futile amid the flow of changes. Feedback can be produced as much as
Various Agile methodologies came into being with the launch of the Agile Manifesto, among which, the globally
possible in the fastest manner within the manageable scope for a team.
adopted Agile methodologies are Scrum and eXtreme Programming (XP). XP was mostly used at the beginning
④ Courage: Believing that modifications are reflected and delivered to customers as fast as possible, one must
but as Scrum came to be popular, XP is now used along with Scrum. Recently, the Lean software development
bravely address requirement and technical changes. Courage to proactively address problems pursues simplicity,
methodology has rapidly emerged as a favorable option where Toyota System’s Lean Manufacturing System is to be
and courage to make specific suggestions reinforces feedback.
applied to software development, and is now used mostly with Scrum.
⑤ Respect: A project cannot be properly underway if there is no respect for other team members based on the four
Major Agile methodologies are as follows.
values above.

146 TOPCIT ESSENCE M1 Software Development 147


TOPCIT ESSENCE Software Development

M1
Practices of XP <Table 49> Types of Scrum Roles

Role Explanation
XP suggests 12 practices in <Table 48> besides the five values.
Product Owners • Making a product backlog which is a product feature list, and managing the tasks of adjusting
<Table 48> Basic Practice Methods for XP the priority or adding new items
• Playing core roles in establishing Sprint plans. But product owners are not recommended to be
Type Practice Explanation engaged in a team’s operation as much as possible.
Simple Design Voice call using the wired/wireless Internet network and mobile Scrum Master Striving to remove obstacles against a team’s tasks, and supporting a team to execute
telecommunication network development by abiding by principles and values
Test-Driven Development Make a test before writing a code and automate it by using a testing tool.

16

16
Scrum Team Usually consisting of 5~9 people, and devising features to be developed during Sprint by using
Refactoring Improve the design of the existing code by removing the duplication and the user story
complexity of code.
Coding Standard Make a coding standard for effective communication.
Development

20

20
Pair Programming Execute development tasks with two developers sitting at a computer
together.
Scrum Process
Collective Code Ownership Make sure all developers in a team are jointly accountable for a source
The Scrum process consists of the following three:
code so that codes can be corrected at any time by anyone to make
them better. • Sprint: referring to an iterative development period of 1~4 weeks according to the calendar
Continuous Integration Execute integrated tasks to finish tasks. • 3 types of meetings: Daily scrum, Sprint plans, Spring reviews

ht

ht
• 3 types of output: Product backlog, Sprint backlog, Burn down chart
Planning Game Devise the entire project plan and cycle plan in consideration of business
and technical aspects, and maintain updates through execution and 3 types of output can be summarized as follows in <Table 50>.
feedback.
rig

rig
Management Small Release Distribute executable modules as fast as possible so that customers could <Table 50> Scrum Process Output
see how software is run frequently.
Roles Explanation
Metaphor Describe the entire picture of a system using easily understandable
figures and stories. It is a priority list of features to be included in products and a product supervisor mostly decides on
Product Backlog priorities on behalf of customers. Features defined in a product backlog is called the ‘user story.’
40 hours/week Do not work for over 40 hours a week to maintain good quality.
py

py
Estimation of the user workload is based on the standard called the ‘story point.’
Environment On-site Customer Ensure that customers that have used the actual system stay on the
It is a list to be developed during a single Sprint, and the task is defined as the user story and
development field. Sprint Backlog
work to complete it. Each task size is estimated based on time units.
A graph showing the remaining workload to complete development and the remaining workload for
Burn Down Chart
each iteration are represented as the ‘story point.’
Co

Co
03 Scrum
Three types of meetings in the Scrum process can be summarized as follows in <Table 51>.
<Table 51> Scrum Process Output
Outline of Scrum Roles Explanation


Setting goals for each Sprint, and selecting items to be executed in the Sprint from a product backlog.
Scrum is an Agile methodology for project management and is a representative form of the estimation and Sprint Plans
Operators are allocated for each item, and task-specific plans are devised.
adjustment-based experiential management technique. It is derived from an article titled “The New Product
It is a daily meeting to share project updates for 15 minutes. Every team member takes part to talk
Development Game” at HBR by two professors, Ikujiro Nonaka and Hirotaka Takeuchi in 1986. The method was Daily Scrum
about what they have done, what they are to do and problems.
introduced to software development by Ken Schwaber and Jeff Sutherland in 1995 who called it ‘Scrum.’ Scrum has
It is a meeting to check out task progress and outcome if Sprint goals are met. Scrum Team
the following three roles in <Table 49>. demonstrates the outcome generated during Sprint to participants and receives feedback. It would be
Sprint Review desirable if the demonstration on all tasks executed during Sprint and participants could participate.
Here, Scrum Master can conduct a ‘project retrospective’ to find out what went well, what was
regrettable and needs to be improved.

148 TOPCIT ESSENCE M1 Software Development 149


TOPCIT ESSENCE Software Development

M1
Characteristics of Scrum Example Question
Characteristics of Scrum are as follows:
Question type
• Transparency: It might be difficult to accurately identify at what state the current project is, if everything is going
as planned, and what problems there are. Scrum effectively identifies the state or problems of a project using Short-answer question
such techniques as Scrum Meeting, Burn Down Chart and Sprint Review.
• Time Boxing: It is possible to concentrate on proceeding with a project by constraining the time needed to carry Question
on with Scrum. Daily Scrum is carried out within a limited timeframe of 15 minutes every day, while Sprint Review
Scrum as an Agile methodology for project management consists of three roles. What is the name of ‘a

16

16
is periodically executed for each iteration.
• Communication: Numerous efforts are poured in to facilitate cross-team member communication. Sharing role that removes disruptions for a team’s tasks, sticks to principles and values and helps it to carry on
problems confronted by developers in Daily Scrum, and discussing the level of difficulty/time in implementing the development?’
the user story using the Planning Poker is one of the characteristics to facilitate communication among team

20

20
members.
Intent of the question
• Empiricism Model: Scrum has its own process models, and many techniques emphasize the experiences of
individuals taking part in projects. Because each project has unique circumstances and characteristics, the Understanding the roles of Scrum
existing standardized process is not sufficient to track the circumstances of these projects. Scrum recognizes that
the basic structure remains the same but Scrum might differ by team in reality.
Answer and explanation
ht

ht
Scrum master
rig

rig
Related E-learning Contents
py

py
•Lecture 15 Agile Development
Co

Co


150 TOPCIT ESSENCE M1 Software Development 151
TOPCIT ESSENCE Software Development

M1
ⅩⅤ Mobile Computing

16

16
Latest Trends and Key Issues
With the emergence of Android and iPhones, the impact of mobile computing has gradually intensified. The Practical Tips
penetration rate of mobile computing has skyrocketed with strengths in mobility, convenience and accessibility,

20

20
and the impact of computing, especially in social deals and SNS, dominates the desktop computing. The mobile transaction volume for all product categories in e-commerce in Korea has skyrocketed, and
Companies have recently and strategically emphasized the mobile computing-based mobile service in order in the fashion field, over 50% of transactions take place on mobile platforms as of 2015. In non-fashion
to acquire competitive edges in business. fields, the mobile transaction volume is over one third, and the mobile transaction volume and growth
rate outperform those of the desktop.
For domestic mobile devices in Korea, the portions of Android and iPhone are dominant. The mobile

ht

ht
Study Objectives portion in e-commerce will be even higher driven by high-performance smartphones, a superior
network environment, convenience in payment via smartphones and customized curated services for
Able to explain the concept and characteristics of mobile computing mobile users. Consequently, companies planning to launch B2C services are tapping onto ‘mobile-first’
rig

rig
Able to understand strategies to set up mobile computing and the process to develop mobile apps strategies. More companies provide the mobile service even before developing services for the desktop.
The importance of mobile computing in the B2C market will be higher and this trend will be more
intensified down the road.

Practical Importance High


py

py
Keywords
01 Outline of Mobile Computing
Co

Co
mobile computing, mobile application, mobile computing service

The mobile concept refers to a capability to enable ubiquitous portability and exchanges of data using mobile
telecommunication devices without wire connection and to execute digital data exchange in real time on the move
using portable devices. Characteristics of mobile computing include mobility, personality and presence. One of its
element is the ubiquitous environment enabling free Internet access with ‘three any’s: anytime, anywhere and any


device. There are four components that make the mobile service environment: devices, network, platforms and
content.
• Devices: mobile phone, PDA, smart phone, DMB device, PMP, eBook
• Network: mobile telecommunication, satellite communication, wireless LAN, portable Internet, etc.
• Platforms: mobile operating system, VM (Virtual Machine), browser
• Content (application programs and data):
o Mobile information

152 TOPCIT ESSENCE M1 Software Development 153


TOPCIT ESSENCE Software Development

M1
o Mobile entertainment developed beyond merely responsive content in the mobile environment. Types of mobile OS include Symbian OS,
o Mobile communication Windows Mobile OS, iPhone OS, Android, Blackberry OS and Palm OS.
Mobile content refers to digital content used in a mobile telecommunication environment including texts, sounds, Recently, mobile computing has been emphasized as a means of strategy to secure corporate competitive edges.
videos and games. Characteristics of mobile content include communicability, instant connectivity, localization Companies need to, first and foremost, think of ways to utilize mobile computing to steadily secure their competitive
and personalization. However, the size, functions and quality of content are limited due to constraints with device edges. Mobile computing is proactively utilized to seek for corporate survival and growth, and secure competitive
functionalities and performance. Mobile content can be used relatively for a short time span and the usage edges in the competitive market. It serves as an essential survival competency for companies instead of being a
environment is also limited. Mobile content can be divided into four types: information service, mobile entertainment, target of investment.
mobile communication and mobile commerce.

16

16
• Information service: informative content
o General information including news, weather and sports Characteristics of Mobile Computing
o LBS including maps, transportation information and GPS
• Mobile entertainment: entertaining content It would be essential to look into characteristics of mobile computing in order to strategically tap onto it.

20

20
o Games, ring tones, characters, VOD, DMB • Ubiquity
• Mobile communication: sending messages or emails, etc. via mobile devices Ubiquity is the most outstanding advantage of using mobile devices. Using wireless devices in forms of
o Text messages, multimedia messages, instant messages, video calls, community services, SNS smartphones or communicators, users can do information search and use communications service anytime and
• Mobile commerce: e-commerce including ads, payment and shopping anywhere.
o Mobile ads, mobile payment, mobile shopping • Reachability
The value chain in the mobile market consists of the following: device makers, carriers/telco’s, solution providers and
ht

ht
Reachability or accessibility is a major feature for communication among users. Users with a mobile device can
content suppliers, etc. log in anytime, but reachability can be limited to designated people or time for particular cases. Reachability is
• Device makers gaining more and more importance in line with recent trends such as individualization and diversification.
o Designing/Manufacturing mobile phones, smart phones, and devices for DMB and PMP • Security
rig

rig
• Carriers/Telco’s Wireless communication security technologies are specialized in the form of secure socket layers within the closed
o Mobile carriers in Korea: SK Telecom, KT, LG Telecom end-to-end system. In Europe, a higher level of security is guaranteed in the wireless environment compared
o Satellite DMB service is provided by TU Media, and terrestrial DMB services are provided by six companies with the wired Internet network because the smart card attached to a device and the Subscriber Identification
including KBS Module (SIM) card are to be authorized proprietarily by users that hold them.
py

py
• Solution Providers • Convenience
o Platform developers: developing VMs like WIPI, iPhone, Android and mobile browsers Convenience is an attribute of wireless devices, and many related features are made available based on users’
o Developers of multimedia component technologies: audio, video, graphics, etc. needs as the data storage capacity gradually increases. With the emergence of diverse wireless devices, the
o Developers of retail management technologies: providing content security and protection, etc. usage will be made more convenient. The characteristic as such will be in line with the technological advancement
Co

Co
• Content Providers/SPs: of hardware, and will be further strengthened through an improved device size, increased capacities for batteries
o Directly executing services by developing mobile content and storage, and diversified wireless devices and features
o Providing developed content to mobile carriers • Localization
Technological development of mobile phones is from first-generation simple (or normal) phones to second- This feature can upgrade features of wireless devices by coupling location information to wireless services.
generation feature phones to third-generation smartphones. Smartphones are almost like mobile computers. The Once users’ location at a certain point is identified, appropriate services can be offered to arouse a desire to
first-generation simple phones only enabled voice communication at first, were in black and with low resolution have transactions with users. Various services can be provided including sending hotel information in a city to


specifications embedded with real-time OS. The second-generation feature phones were mostly convergent with people that have arrived at an airport, which is available now in some regions, and sending discount coupons for
MP3 phones, DMB phones and camera phones. They had such specifications as colored LCDs and high resolution, restaurants and clothing stores which users might be interested in via wireless Internet when they are at a certain
and were embedded with real-time OS. The third-generation smartphones implemented the same features including space in a specific shopping mall at a particular time.
Internet, email and fax like PCs. With a large LCD touch screen and a general-purpose OS are embedded, they play • Instant Connectivity
the roles of mobile computers equipped with such features as information search online and data transmission. In the Users can immediately access the Internet anytime and anywhere via wireless devices. Communication services
world of smartphones, ‘mobile user experiences’, that is, content capable of communicating with five senses of users in such packet modes as GPRS and IS-95C will be enabled, so a mobile phone could be used to access the
are spotlighted, being used through gesture recognition, multi-touch, vibration feedback and tactile feedback. Content Internet conveniently and fast without having to connect to a communication network for log-in.
services enabling stimulating users’ tactile sense and vision so that they could be immersed into content are being

154 TOPCIT ESSENCE M1 Software Development 155


TOPCIT ESSENCE Software Development

M1
• Personalization critical to execute an app quality test to secure app stability and to provide a favorable app to actual users. If a
It is to provide customized content befitting individual users based on the information already provided to them or preliminary user research has been conducted, it would be desirable to conduct a user research so that users
the pre-determined content. Currently, a limited scope of services including the validation of purchase through could actually use an app that has been somewhat completed.
credit cards are available. However, the level of personalized information and transaction handling can be • Feedback
upgraded through a wireless portal site, while wireless devices can serve as essential instruments in daily life. Once an app is completed after development and testing, it would be subject to promotion and sales. If the
customer feedback is positive in a country after it started to sell there, it can be sold in many other countries.
One of the myths is that mere translation of a menu would still gain the same popularity in other countries, but
since each country has different cultures and lifestyles, simple translation of a menu is likely to fail. It is desirable
02 Mobile Computing Development Process

16

16
to take each step at a time as if to make a new app from the beginning.

Mobile application development is significantly different from ordinary web development because an integrated mobile
development process is applied.

20

20
• Possible to be used anywhere and at once (integrated to be used in all mobile devices and OS’ where Apple Example Question
iPhone, RIM Blackberry, Window Mobile, Google Android and Farm are included)
• Supporting all devices and channels which customers use Question type
• Newly launching and upgrading mobile applications within weeks or months, if necessary Multiple choice question
• Resources and outsourcing to achieve predictable development cost and an efficient cost structure

ht

ht
Major companies develop applications every three months to be distributed to all channels. ‘UI design’ is located Question
between ‘design’ and ‘programming.’ UI development is to connect the design image in the affective domains and
Describe all the characteristics of mobile computing.
manipulability, and serves as a bridge between the subjective and the objective, and between the affective and

rig

rig
the logical in a process. It is a series of process starting with ideation, and then leading to verification of feasibility,
production of icon design and resources, design of UI and architecture, programming and completion and distribution ① Mobility
of an application. It represents that the development task has been completed by connecting the beginning with the ② Personality
end. In the next section, the development process is explained in more details. ③ Presence
• Ideation (defining product concepts) ④ Localization
py

py
Ideation is a stage of planning/designing the concept of an app, user research, research analysis, and
competitor app analysis. It is the most essential stage of cross-departmental idea exchanges and in this stage, Intent of the question
once an accurate product concept is confirmed based on the requirements of user research or customers/ To understand characteristics of mobile computing
internal departments, specific planning is required and cross-departmental idea exchanges. Overall strategies
Co

Co
are devised on what forms an app would have and through what forms it would be sold. The bottom line is that
Answer and explanation
the app concept/specifically defined content is communicated to all participants.
• Design 1, 2, 3, 4
Once the app concept and specifics are defined, a big frame of the app must be designed. The app concept
might differ as development proceeds, so the design might be subject to change after designing it first.
• UI Design


In order to develop the mobile UI for a particular app project, information of a platform of target devices, specific Related E-learning Contents
information and a design guideline can be identified, design strategies can be set, and prototyping can be
executed many times. Accordingly, it is reviewed if the concept can be reflected or implemented. •Lecture 16 Mobile Computing
• Programming (Development and Test)
Programming is the actual development stage where the participation of staff involved in marketing/planning/
sales is relatively low, it is always needed to share individual builds in the middle of development, and have
meetings/validation through the developed builds so that the tasks are not carried on in a wrong direction. It is

156 TOPCIT ESSENCE M1 Software Development 157


TOPCIT ESSENCE Software Development

M1
ⅩⅥ Cloud Computing

16

16
Latest Trends and Key Issues
The conventional IT environment that used be based on high-performance serversmostly represented by Practical Tips
the mainframe and the Unix server has rapidly replaced by a cloud computing environment with virtualization,

20

20
presence and linear scalability. In particular, the importance of cloud computing is likely to go up, especially Developing services fast in the rapidly changing business environment and scaling out the system
when the enormous growth of SNS and online services, big data and IoT have been established as keywords promptly depending on market responses is recognized as a critical corporate competitiveness. Once
to describe Cloud computing must be fully understood to promptly respond to the rapidly changing business cloud computing is used, acute infrastructure can be secured, and it is possible to secure and scale up
environment and provide continued scalability in the IT environment. resources in a scale in need at a point in demand. Companies that use a cloud can effectively maintain
the infrastructure operating personnel, and maximize the efficiency in system management. Cost-

ht

ht
efficient infrastructure for scale-out and scale-in can be secured at a time in need with the minimum
number of infrastructure operators. In case companies prepare for a global service, they can utilize
Study Objectives
the infrastructure of providers of cloud computing so that hub services per continent can be effectively
rig

rig
Able to distinguish and explain the characteristic, concept and types of cloud configured. Start-ups can configure a system acutely with minimum cost using a public cloud in a cloud
Able to explain the virtualization technology which is the backbone of cloud computing and its components environment and scale it out depending on the business circumstances. Conventional companies can
also secure operating efficiency by configuring a hybrid environment of the existing computing resources
Able to distinguish types of the virtualization technology in virtualizing servers for cloud computing and
and a cloud. Cloud computing is recognized as an essential technology that is acute and scalable and
explain the differences
py

py
forms efficient infrastructure.

Practical Importance High


Co

Co
01 Definition of Cloud Computing
Keywords
Cloud computing, types of cloud, virtualization Cloud computing was developed to efficiently utilize a surplus computer capacity in individual servers and flexibly
respond to the uncertain service demands. Prior to the emergence of cloud computing, users had to own and


manage resources to utilize computing resources. However, it has been shifted to the mode of using computing
resources provided via Internet in a virtualized form when needed in the recent cloud environment.
The key point in a cloud is that because computer resources are provided in an invisible state as they are
accumulated in a network, users can do a job using computer resources in demand anywhere without knowing the
complexities therein. Various services started to be launched in 2008 or so to utilize computing resources online,
and the word ‘cloud computing’ to encompass it all came to be used. Consequently, users could use services they
wanted from the Internet without expert knowledge on technical infrastructure available.
Expected results in adopting cloud services are as follows.

158 TOPCIT ESSENCE M1 Software Development 159


TOPCIT ESSENCE Software Development

M1
• Cost: CAPEX1) reduction, OPEX 2) increase, TCO 3) reduction ② Utility computing and cloud computing
• Period: shortening the development period and the product development cycle Utility computing is a type of providing computing resources by billing the amount based on the amount of
• Operation: reducing the operating personnel and strengthening efficiency of resources computer resources used. Billing on the resources used is a commonality of utility computing and cloud
• Products: boosting the product concentration level computing. Cloud computing is a developed version of abstraction on computing resources based on utility
The words ‘cloud service’ and ‘cloud computing’ are usually used as synonyms but the Telecommunications computing.
Technology Association defines the two words as follows:
<Table 51> ‘Cloud Computing’ and ‘Cloud Service’

Terminology Definition 02 Types of Cloud Computing

16

16
Cloud Service On-demand outsourcing IT service providing a user-oriented cloud computing environment
A computing environment where IT resources are leased via Internet based on virtualization and
Cloud Computing
distributed computing technologies and charged to the extent of usage Classification Based on Service Types

20

20
Cloud service can be divided into IaaS (Infrastructure as a Service), PaaS (Platform as a Service) and SaaS (Software
as a Service) based on the types of service.
Cloud Computing vs. Other Types of Computing
① IaaS (Infrastructure as a Service)
① Grid computing and cloud computing
IaaS is to provide infrastructure resources (server, storage, network) via the Internet network. Infrastructure
ht

ht
Grid computing defined as ‘a structure to virtualize and integrate resources including a computer or data in a
resources provided at IaaS are done so in a virtualized environment but the virtualization environment is not
network, and to dynamically generate a virtual computer, if necessary.’ Grid computing and cloud computing
essential for IaaS. The form of providing physical infrastructure resources that are not virtualized is called ‘bare-
are similar in that they use a distributed computing structure and provide virtualized computing resources. Yet,
metal.’ IaaS users must manage domains beyond the OS directly. It is similar with users receiving hosting from the
rig

rig
while grid computing uses all computer resources in the Internet, cloud computing only uses enterprise-owned
existing service provider.
computing.

② PaaS (Platform as a Service)


<Table 52> Distinctions between Grid Computing and Cloud Computing
PaaS is a type of service where the concept of SaaS has been applied to the development environment as
py

py
Grid Computing Cloud Computing a type of using a necessary development and operating environment in the form of service without having to
Geographically distributed and managed by sep- Geographically distributed but managed by establish a development or operating environment. PaaS considers the application development environment and
Location of a Computer
arate units a central unit the service distribution and operating environment as the service scope. PaaS provides the network infrastructure
Composition of a and a runtime to execute applications. The scope of management for users includes applications and data that
Presence of heterogeneous types Mostly same models
Co

Co
Computer are on top of the application runtime.
Standardization For instance, PaaS can be used that provides MySQL and Apache Tomcat in development a new Java web
Available Not available
Organization application using MySQL as database so that a development/operating environment can be prepared for promptly
Standards available on resource management, while enabling prompt application development/services.
Technical Standard None
scheduling and data management security, etc.

Interconnectedness Critical Not considered ③ SaaS (Software as a Service)



Applications with a high level of parallelism in- SaaS is a service to provide software as a model where the software made available at the center can be
Usage cluding scientific/technical calculation and large- Widely used including web applications transferred to users through such clients as web browsers. SaaS users can use the necessary functions without
scale arithmetic operations
having to know where the software being used is located, what OS is used and through what language, it has
been developed. Examples of using SaaS include Google Docs and SalesForce.com. Usually SaaS has the
following characteristics.
1  CAPES: Cost spent to generate future profits • Access via web browsers: accessing via web browsers instead of installable software
2  OPEX: Operating cost • Cost based on the amount of usage: paying cost to the extent of software usage
3  TCO: The total cost including the cost for system adoption up to maintenance • On-demand: possible to immediately use necessary software

160 TOPCIT ESSENCE M1 Software Development 161


TOPCIT ESSENCE Software Development

M1
• Optimization of IT demand: no issue in terms of managing and scaling out IT infrastructure computer resources. Once the server virtualization technology is used, the utilization rate and management efficiency
The scope of management for users and service provides for IaaS, PaaS and SaaS are as follows in [Figure 22]. of computer resources can be maximized because it is possible to operate more than one OS on a single computer.
Normally a cloud service uses the virtualization technology and provides computer resources that have become
In-house Infrastructure IaaS PaaS SaaS abstract. In particular, x86 Server Virtualization Technology has been rapidly disseminated driven by the mature
Data
technology and market, logically paving the way for a cloud computing environment for sharing and distribution of
computing resources beyond physical limitations.
Application
Runtime
Middleware

16

16
Hypervisors
OS
Virtualization A host OS refers to a server that physically exists in server virtualization, and the virtually provided server is called a
Server ‘guest OS.’ Server virtualization technologies can be distinguished based on how to allocate physical resources that

20

20
Storage a virtual server could look like a physical one. A technology to virtualize a physical server is called a ‘hypervisor’,
Network which is a logical platform for server virtualization. A hypervisor is also called a ‘virtual machine monitor(VMM).’ A
hypervisor can be classified depending on types of installation and types of virtualization.
User Management Domain Service Provisioning Domain

[Figure 22] Scope of User Management by Cloud Service Type


ht

ht
Types of Hypervisors

Hypervisors can be classified into native and hosted hypervisors depending on the types of installation. Native types
Classification Based on Cloud Operation Forms
rig

rig
are installed directly in hardware, while hosted types are installed on top of an OS like an ordinary program [Figure 3].

Cloud services can be classified into three types as follows based on the forms of service operation and the scope ① Native Hypervisors
of disclosure.
It is a type where a host OS is not needed because the Virtual Machine Monitor (VMM) is directly installed on
<Table 53> Types of Cloud Services Based on the Scope of Disclosure
py

py
a physical hardware. Since a host OS is not needed, resources can be saved compared with the virtualization
mode where a host OS is needed. The native type is also called Type1. Virtualization technologies in a native type
Cloud Service Explanation
include Xen, Citrix’ XenServer, VMVare’s ESXServer, IBM’s Power Hypervisor and Microsoft’s Hyper-V ad KVM.
A cloud service accessible through the Internet access, being opened to unspecified individuals
Public Cloud
online
Co

Co
A cloud service allowing for access to a limited group of users by establishing a cloud service in
Private Cloud APP1 APP2 … APP1 APP2 …
a closed network in companies and institutions
• A combination of a public cloud and a private cloud, using both an externally disclosed cloud
service and a closed one OS 1 OS 1 …
Hybrid Cloud
• Interoperability is very important so that a service distributed to a public cloud could be
migrated to a private cloud and vice versa. Hypervisor


Hardware

03 Server Virtualization Technology [Figure 23] Native Hypervisors

② Hosted Types
It is the norm for the existing computing environment to have a single OS dependent on a single hardware, and
run an application on the OS. Virtualization as a mode of virtualizing computer resources refers to a technology that A hosted-type hypervisor is a software installed on the existing OS. These types of hypervisors include Microsoft’s
enables multiple computer resources to seem like a single server, or a single computer resource to seem like multiple Virtual PC, VMWare’s Workstation and Oracle’s VirtualBox.

162 TOPCIT ESSENCE M1 Software Development 163


TOPCIT ESSENCE Software Development

M1
going through hardware emulation. Yet, the pitfall is that a part of the kernel of the guest OS must be modified, so
… APP2 only the open source OS can be used as a uest OS.
APP1 APP1 APP1

OS 1 (Guest OS) OS 2 (Guest OS) …


APP1 APP2 APP1
APP1 APP2 Hypervisor
Guest OS Guest OS …
Operating System (Host OS)

16

16
Hardware Hypervisor Hypercall

[Figure 24] Hosted-type Hypervisor Hardware

20

20
Types of Server Virtualization [Figure 26] Concept Map of Para Virtualization

Depending on virtualization modes, server virtualization technology can be broken down into Full Virtualization, Para-
Virtualization and OS-level Virtualization. ③ OS-level Virtualization
It is a virtualization technology to make believe as if the same OS is being used in an OS. It uses a virtualization

ht

ht
① Full virtualization technology included in the OS without using a hypervisor. Currently, a container technology that allocates and
It is recognized that a guest OS directly owns and access a hardware as it is fully virtualizing the hardware, but isolates the resources included in the OS. Representative technologies here include Solaris Containers, FreeBSD
in fact, a virtual server uses the resources where a hypervisor did emulation for the hardware. When a guest Jails and Linux Docke. Since the OS’ container feature is used without using a hypervisor, a guest OS must be
identical to a host OS. Containers that get to be on the OS are basically allocated with such resources as memory,
rig

rig
OS is to dominate the hardware, a hypervisor has to process this command separately. In order to fully emulate
the hardware resources except for the CPU, a CPU to support virtualization (Intel’s VT, AMD-V) is needed. The storage and network. Each of them is operated between containers inependently.
performance has significantly increased because the hypervisor included in the CPU does processing fast. Since
full virtualization is processed in the CPU, the guest OS does not have to be modified. Therefore, there is no
constraint on the guest OS. Linux-based guest OS and the Windows Guest OS can be run at the same time. Application 2 Application 2
py

py
Normally, a native-type hypervisor is referred to as full virtulization.
Application 1 Application 1

APP1 APP2 APP1 Container Container


Co

Co
Guest OS Guest OS … Host OS

Virtualization Software
Hardware
Hypervisor
<Figure 27> OS-level Virtualization
CPU (Intel VT-X, AMD-V)


Container-type virtualization technology, compared with the existing virtualization technologies, is light and superior in
[Figure 25] Concept Map of Full Virtualization portability. In Linux Containers(LXC), there are the ‘kernel space’ to manage physical resources and ‘user space’ to
② Para Virtualization execute the user process in the OS. Container-type virtualization technology is operated by dividing the user space
into 10, and limiting the resources seen in each user process.
Para virtualization is different from full virtualization of hardware, and in order for a guest OS to access hardware
resources, it has to pass through a hypervisor. It is to use a hypervisor API without hardware emulation. As for the
OS of a guest OS, its kernel must be partially modified to use the hypervisor API.
The advantage is that a high performance is guaranteed because the control is through the hypervisor without

164 TOPCIT ESSENCE M1 Software Development 165


TOPCIT ESSENCE Software Development

M1
<Table 54> Hypervisor Virtualization vs. OS-Level Virtualization
Example Question
Item Hypervisor Virtualization OS-Level Virtualization
Hardware Question type
Fully independent within VM Using the host OS
Independence
Essay-type question
OS Independence Fully independent from the host OS The host OS and the guest OS are the same.

• High overhead Question


Performance • Applying hardware virtualization for a higher No overhead
performance Server virtualization technologies are divided into full virtualization and para virtualization depending on

16

16
Management Separately managed per VM Centralized management of shared software virtualization modes. Select a mode of virtualization mode where kernels have to be modified, and explain
advantages of the virtualization model that has been selected.
• Heterogeneous integration
Applications Resources integration of a single OS environment
• Linux & Windows integration
Intent of the question

20

20
Virtualization
Xen, MS Virtual Server, KVM Solaris, LXC (Linux Container), Docker
Technology
To understand the operating mechanisms of full virtualization and para virtualization

OS-level virtualization (container virtualization) has the following strengths.


• Fast start and closing: very fast compared with hypervisor-based virtualization Answer and explanation
• High level of integration: minimizing resources to be consumed because there is a single OS upon operating
ht

ht
1. A mode of virtualization where kernels have to be modified: para virtualization
many containers 2. Advantages of para virtualization: higher in speed because a hypervisor directly controls
• Low overhead: isolating the user space without emulation resources instead of the OS controlling them
• Supporting application containers: supporting container configuration per application In explaining an answer in Question 2, that the hypervisor directly controls resources and is fast must be
rig

rig
included.
OS-level virtualization has the following weaknesses.
• Dependent on the host OS
• Impossible to form a container-specific kernel
py

py
04 Storage and Network Virtualization Technology
Co

Co
Storage Virtualization

A method called a ‘thin provisioning’ is used instead of a storage space so that the minimum required space in
the initial stage can be virtually allocated to implement a service. Moreover, an environment to use heterogeneous
storage integration is made available.

Network Virtualization

L2/L3/L7 switching, network firewalls and security device that used to exist in the form of hardware appliances are
implemented as virtual machines, and networking resources are to be separated and manipulated internally through
virtualization in a single shared physical environment.

166 TOPCIT ESSENCE M1 Software Development 167
TOPCIT ESSENCE Software Development

M1
ⅩⅦ
Ⅰ Software Product Line Engineering

Practical Tips

16

16
Latest Trends and Key Issues
Various attempts are made to shorten the period for software development and secure higher
Amid the increases in the usage frequency and dissemination of software, it has become more important quality at the same time in the rapidly changing business environment. Software product line
to raise the software quality and productivity. To this end, similarities and differences in the functional engineering is a software development paradigm that considers both the reuse techniques, and

20

20
aspect belonging to similar domains must be analyzed to secure core assets and improve on the business profits and technical strategies. Software product line engineering is a technique to adopt
development period and quality in developing software through the assets. This is what the software a production line engineering in manufacturing companies and strategically pursue the reuse in
product line engineering is all about. If software product line engineering is applied, such benefits as large units aligned with business strategies.
quality improvement, higher productivity and shortening of product launch time can be achieved. If the concept of the reuse repository concept is lacking in software product line engineering, the
already implemented features would have to be repeatedly developed whenever new products are
developed, and architecture would have to be designed anew each time, wasting corresponding
ht

ht
time and cost. By contrast, if software product line engineering is applied, there would occur the
Study Objectives
development time and cost to set up a reuse repository, but over the long term, the reuse rate
Able to explain the concept of software product line engineering would increase, being a merit in terms of time and cost.
rig

rig
Able to explain advantages of software product line engineering
py

py
Practical Importance Low

01 Outline of Software Product Line Engineering


Keyword
Co

Co
• software product line engineering
The software penetration rate and complexity have rapidly increased recently. The development period for high-
quality software would be relatively higher. Raising the quality and productivity of software would require the adoption
of reuse repository so that the component reuse rate could go up. Software product line engineering came into being
as a development methodology in the ‘80s, aiming to maximize the productivity and quality of developing software


by developing, managing and reusing common features such as core assets of software by analyzing the common
aspects and variable aspects of functionalities in many systems in a domain so that component reuse rate could be
boosted. Software product line engineering is a methodology to satisfy high quality and productivity of software by
focusing on reusability. Software product line engineering boils down to the addition of domain engineering to the
CBD methodology. Software product line engineering makes development easier by standardizing CBD components
as domain units. While CBD is simple and suited to the broad implementation of applications, software product line
engineering is more suitable for package software or embedded software.

168 TOPCIT ESSENCE M1 Software Development 169


TOPCIT ESSENCE Software Development

M1
02 Components of Software Product Line Lastly, the final application software is developed through a code generation stage that automatically generates codes
based on the predetermined architecture platform.

The software product line consists of three core activities: core asset development, product development and product
management. Developing core assets is a development stage of discovering commonalities of products through
repeated execution and of enhancing productivity in developing the existing products. The product development
04 Advantages of Software Product Line Engineering
stage is to utilize core assets in developing core common features in products to be developed, thus shortening the
production period and systematically executing product development. Lastly, ‘management’ here refers to technical/ Since software product line engineering induces broad reusability, the reuse rate in organizations where this

16

16
organizational management including having a proper organizational structure, allocating resources, mediating and methodology has been successfully applied is over 80%. This, at the end of the day, can save efforts and cost. In
supervising, training, giving rewards and devising plans for the organization. Software product line engineering organizations where software product line engineering is successfully applied, the cost saving effect is over 50%.
consists of two steps: domain engineering and application engineering. Domain engineering is to make product Software product line engineering will bring about the following benefits.
line assets by analyzing commonalities and differences of products included in a particular domain, consisting of

20

20
architecture design and component design. In architecture design, design decisions are made in a broad sense, • Higher productivity in development
while in component design, design decisions are made in a narrow sense. In component design, reusability and • Higher quality in software
assembly are considered to refine architecture components, enabling products planned for a product line to be • Shorter product development period
assembled from reusable asset components. Application engineering consists of activities to produce particular • A smaller number of personnel required
products which customers want by using product line assets made in domain engineering. Codes of final products

ht

ht
are generated by analyzing product requirements based on customer requirements, using corresponding software With the reuse rate going up, such benefits as the efficiency in handling defects and saving maintenance cost can
product line assets, and comprising of components and architecture. be achieved. That is why not only large enterprises including Nokia, Cummins, Siemens and Thales but also SMEs
prove the success of software product line engineering in various domains.
rig

rig
03 Software Product Line Engineering Process
py

py
Software product line methodologies consist of two steps: domain engineering making product line assets (PLA)
by analyzing commonalities and differences, and application engineering producing particular products customers
want using the PLA. Domain engineering is also divided into domain modeling and component modeling processes.
Domain modeling consists of the following: context analysis to configure the scope of domains, feature modeling to
Co

Co
analyze commonalities and differences of systems within domains in the feature aspect; operational modeling to model
internal features and behaviors of systems within domains, and architecture modeling representing the upper design
structure of systems within domains. Meanwhile, component modeling is a course of developing reusable components
commonly used among systems within domains. It consists of the following: candidate object identification finding
objects as basic units of components, object component development defining the interface and implementations
of objects based on candidate objects, and reusable component development enabling the developed object


components to adapt to different environments. In application engineering, final software is developed through the
five-step process: feature selection, object selection and response, model testing, architecture selection and code
generation. Feature selection is a process of eliciting user requirements, and object selection and response is a
process of eliciting an overall analysis model by configuring a response relationship between objects elicited through
the feature selection and requirement analysis modeling. In the stage of model testing, the analysis model elicited is
simulated, and errors in the model are traced and corrected through logic testing. When this stage is done, the next
stage is to select a design model. Software systems in various structures can be developed by selecting specific
architectures fitting user requirements among many reference architecture models elicited from domain engineering.

170 TOPCIT ESSENCE M1 Software Development 171


TOPCIT ESSENCE

Example Question

Question type

Multiple choice question

Question

16
Select all the benefits in applying software product line engineering.

① Higher quality
② Higher productivity

20
③ Technology internalization
④ Saving the preparation time for product launch

Intent of the question


ht
To check out if one understands the concept of software product line engineering

Answer and explanation


rig
1, 2, 3, 4
py
Co

172 TOPCIT ESSENCE

You might also like