Contents
Chapter 4 · Development TechnologyPractice

LEARN WITH HARU

Video Lesson တွေက Haru အတန်းသားတွေအတွက်ပါ

Haru ရဲ့ ITPEC FE Full Course မှာ ယခု သင်ခန်းစာတွေကို တစ်ခုချင်း တစ်ကြောင်းချင်း အသေးစိတ်ရှင််ရှင်းပြထားပါတယ်

အခြေခံ မရှိတဲ့ ကျောင်းသားများစွာဟာလည်း ဒီ Course နဲ့ ပဲ အောင်မြင်ကုန်ကြပါပြီ

အတန်းမအပ်သေးပဲ Haru ဆီမှာ အစမ်းသင်ကြည့်ချင်ပါသလား?

သင်တန်းသားတွေရဲ့ စကားသံများ

သင်တန်းသားတွေရဲ့ စကားသံများ

Highlighted text? Practice this concept. Highlighted passages and figures open related questions.

Practice related questions (9)Progress & bookmarks

p. 258 · PDF 262

1-2-4 Software Construction Process

The software construction process produces executable software units that properly reflect the software design. (In general, this is called programming.)

[Activities of software construction process] (i) Software construction (ii) Evaluation of software code and test results

(1) Software construction

Five tasks are executed in software construction.

(i) Development of software units and databases

Each software unit and database are to be developed and documented. (ii) Development of test procedures and test data

Test procedures and test data for testing each software unit and database are to be developed and documented. (iii) Implementation of software unit and database testing

Each software unit and database is to be tested to confirm that it satisfies software requirements, and the results are to be documented in a software unit test report document. (iv) Updating user documentation

p. 259 · PDF 263

User documentation is to be updated as necessary. (v) Updating of test requirements for software integration

The test requirements and the schedule for software integration are to be updated.

In “(i) Development of software units and databases,” programming is performed according to the specifications for coding conventions and programming languages, on the basis of the software detailed design. (The work of creating (or writing) a program on the basis of algorithms (i.e., procedures) defined in the software detailed design and others is also called coding.) Coding conventions are rules for performing coding. If notational conventions for coding are not set, programs will be inconsistent and will have poor readability, which will reduce maintainability. For that reason, coding conventions (i.e., programming style) should be set, notational conventions should be unified, and program intelligibility (i.e., ease of understanding), efficiency (i.e., ease of creation), maintainability (i.e., ease of change), functionality, usability, and such other factor should be improved. In general coding conventions, indentation, depth of nesting, naming conventions (e.g., how variables are named), prohibited instructions, and others are to be set, in consideration of the standards (i.e., paradigm) of the programming languages used.

In programming, it is also necessary to determine the structure of the data (data structure) to be processed. Since appropriate data structures differ by programming language, the used data structures must be decided on the basis of the data processing to be achieved, the ease of implementation, and so on.

Basic data structure
Simple-type Integer type, real type, character type, Boolean type,
enumerated type, pointer type
Structure type Array, record type
Abstract data type Object
Problem-oriented data
structure
List, stack, queue, tree, hash
View original table · p. 259
Original Development Technology table on printed page 259; original source comparison.
Enlarge original table

One concept (i.e., technique) for creating easy-to-understand programs with high maintainability is structured programming. In structured programming, programs are created with processing procedures considered according to structure theorem, which can represent a program with one entrance and one exit as a combination of three basic structural units (i.e., sequence, selection, and iteration). Furthermore, in order to perform coding efficiently, coding support tools described below

p. 260 · PDF 264

should also be considered.

  • • Code auditor
    This is a tool to verify whether a program follows coding conventions. · 1 question
  • • Source code editor
    This is dedicated software for creating programs (i.e., the source code). It offers functions, such as code completion which displays a menu when a portion of a command or a variable name is entered, so that an input item can be selected from the input candidates in the menu, and syntax highlighting which displays an instruction in a code in color according to the type or classification of the instruction.

In “(ii) Development of test procedures and test data,” the test system (e.g., the scope and schedule of the test, the test implementer), the test tools to be used, and others are considered by using appropriate test methodology according to the software unit test specifications document, and test plans are drafted. After this, creation of test data, preparation of a test environment, and other test readiness are performed in order to execute test plans. The objective of all testing, including the software unit test performed in (iii), is the discovery of errors (i.e., bugs). Errors (i.e., bugs) are faults or defects in software, or portions of a program that do not fulfill specifications or requirements defined in design documents and specifications documents. The following is a list of testing objectives to be implemented in the software implementation process.

Type of test Objective of test
Software
unit test
This verifies whether software unit functions and others fulfill the
specifications of the software detailed design document.
Software
integration test
This verifies whether the software unit’s combined portion (e.g.,
interface) fulfills the specifications of the software architectural
design document (and the software detailed design document).
Software
qualification test
This verifies whether the software fulfills the requirements of the
software requirements definition document.
View original table · p. 260
Original Development Technology table on printed page 260; original source comparison.
Enlarge original table
Testing the combined interfaces of software units · 1 practice questions

In order to achieve such objectives, appropriate and efficient testing methods (i.e., techniques) must be used in order to reliably find errors ((i.e., bugs). Testing methods include white box tests and black box tests.

  • • White box test
    This is a test implemented with a focus on the internal specifications (e.g., algorithms, logic paths) of software units (i.e., modules). It is generally used only in the software unit test that is performed by developers.

p. 261 · PDF 265

Decision flow chart and truth-value chart; original source comparison.
Enlarge original visual
Source visual description

A decision diamond reads Condition 1 and condition 2. Yes flows down through Process; No follows the right branch and rejoins beneath Process. The Truth value chart has columns Condition 1, Condition 2, Decision condition. Row I: TRUE, TRUE, TRUE. Row II: TRUE, FALSE, FALSE. Row III: FALSE, TRUE, FALSE. Row IV: FALSE, FALSE, FALSE.

Coverage criteria Test cases that fulfill coverage criteria
Statement coverage (I)
Decision condition coverage
(branch coverage)
(I and II) or (I and III) or (I and IV)
Condition coverage (I and IV) or (II and III)
Decision condition /condition
coverage
(I and II and III)
Note: Avoid (I and IV).
Multiple-condition coverage (I and II and III and IV)
View original table · p. 261
Original Development Technology table on printed page 261; original source comparison.
Enlarge original table
Original test coverage criteria comparison · 1 practice questions

Note: Verification of all test cases may be difficult when processing is complex. In such a case, coverage rate (i.e., test coverage), a metric that represents coverage rate of test cases (or of paths), is used. The idea is to set a test coverage target in consideration of the balance between productivity and reliability from perspectives of cost, delivery, and others; in other words, the test is completed when this target is cleared.

p. 262 · PDF 266

Equivalence partitions and boundary values for inputs between 10 and 30; original source comparison.
Enlarge original visual
Equivalence partitioning: {7, 21, 39} ... One representative value from each class Boundary value analysis: {9, 10, 30, 31} ... All boundary values from each class
Source visual description

The numeric strip reads ..., 7, 8, 9, 10, 11, ..., 29, 30, 31, 32, 33, .... The middle shaded Valid equivalence class runs from 10 through 30; each side is an Invalid equivalence class. Dashed boundaries separate 9 from 10 and 30 from 31. Equivalence partitioning: {7, 21, 39}, one representative value from each class. Boundary value analysis: {9, 10, 30, 31}, all boundary values from each class.

Boundary-value test example · 1 practice questions
  • • Cause-effect graph method
    This method represents the cause-effect relationship of input (i.e., cause) and output (i.e., effect) as a graph (i.e., cause-effect graph) when class sorting of input data is difficult. It is a method that then creates a decision table based on the graph to sort out test data.

In addition to white box tests and black box tests, testing methods and test implementation methods include the following.

p. 263 · PDF 267

This is a method that collects and analyzes metrics for the size, complexity, and others of software on the basis of development information and others. Then, the possibility that errors or defects are present is investigated.

When test data is created under these methods, tools such as test data generators are used. The implementation of tests is performed according to drafted test plans. At this time, when a module (i.e., software unit) that is the target of testing is called by a higher-level module, a dummy module called a driver is used in place of the calling module (i.e., main routine). Conversely, when a module that is the target of testing calls a lower-level module, a dummy module called a stub is used in place of the called module ((i.e., subroutine). · 1 question

Fig. 4-3 Drivers and stubs; original source comparison.
Enlarge original visual
Fig. 4-3 Drivers and stubs
Source visual description

Fig. 4-3. At left, Driver (dummy module) sits above Module that is the target of testing, with a downward Call arrow. At right, Module that is the target of testing sits above Stub (dummy module), with a downward Call arrow.

Any errors (i.e., bugs) detected by testing are to be eliminated or corrected. This series of tasks, from detection of such errors (i.e., bugs) to their elimination or correction, is called debugging. For efficiency, a debugging environment that offers tools (i.e., debuggers) to support debugging and tools (i.e., test support tools) to support testing is used.

[Examples of test support tools]

(2) Evaluation of software code and test results

The following tasks are to be executed in evaluation of software code and test results.

p. 264 · PDF 268

(i) Evaluation of software code and test results

Software code and test results are to be evaluated, with consideration given to the criteria of traceability to the requirements and design of the software configuration item, external consistency with the requirements and design of the software configuration item, internal consistency between requirements for software units, test coverage of software units, appropriateness of coding methods and standards used, feasibility of software integration and testing, and feasibility of operation and maintenance.

In “evaluation of software code,” code review is performed. In code review, whether coding conventions are maintained and are based upon the software detailed design document, whether the efficiency and maintainability of code are appropriate, and others are verified along with the results of metrics measurement.

[Types of code review]

  • • Peer code review
    This is a review performed by members of the development team, colleagues, and other people primarily for the purpose of eliminating defects in deliverables (i.e., code).
  • • Code inspection
    This is a formal review performed by determining a moderator (i.e., the person responsible for implementation), primarily for the purpose of improving the quality of deliverables (i.e., code).

In “evaluation of test result,” test results are to be comprehensively evaluated by using methods as described below. Through the evaluation, errors (i.e., bugs) in the program are to be corrected as necessary.

p. 265 · PDF 269

Bug growth curve with inflection point; original source comparison.
Enlarge original visual
Source visual description

The horizontal Time axis points right. The vertical Cumulative number of bugs axis points upward. An S-shaped curve rises from the origin and levels off beneath a dotted upper horizontal line; a dot on the rising middle part is labelled Inflection point.

For using in progress management, the progress status and quality of the program are to be comprehensively assessed, including not only the cumulative number of bugs but also the number of finished test items, number of unresolved bugs, and others. As an example, even if the cumulative number of bugs exceeds expectations, the progress of testing can be considered fast if the number of finished test items also exceeds expectations. However, if the number of finished test items is below expectations, then the quality of the program should be assessed as low.

  • • Bug control chart
    This is used to understand test status, product quality, and others on the basis of bug curves. The actual bug curve is recorded onto a graph that already depicts the lower control limit line and the upper control limit line, which are predicted from past performance and such other factor, and is compared with these lines.

Original chapter exercises

Original chapter exercises →

New FE Textbook Vol.2 · First Edition, April 2015