Software Engineering

Articles about software engineering.

Software Engineers on Tap

Are you having problems with your internal software developers? It may be time to use an outside consulting service to get your important projects done. You don’t want to admit it, but you question the abilities of the internal software department. Your business needs a new critical software system completed and you don’t have the luxury of another failed software project.

In the past, you have communicated requirements and the software that was delivered missed the mark. Now you are faced with another project and you don’t want to turn it over to them again. It is time to look at

Software engineering is a tough business and there are differences in skill levels. You need to make sure that the software engineers you choose for your project are experienced with newer platforms, languages, and technologies. Get software engineers that understand the changing online landscape and are committed to staying on the cutting edge of software engineering standards.

Carefully consider your choices for software development. They hired you to make the tough decisions. Your job is on the line. Failed software projects can ruin careers. Secure your position by outsourcing software projects to a top it consulting firm.

Stubs and Drivers testing

It is all of the time a good thought, to design and check software programs in “bits”. However, it might appear impractical, as it is difficult to envisage how you are able to test only one “piece” when other “pieces”, which it utilizes, have not even developed. To figure out these types of problems developers utilize stubs and drivers testing method.

In the process of white-box testing, you should run the source code with planned input and verify to make certain that the source code gives preset outputs. For white-box testing oftentimes software testers write down stubs and drivers testing.

Driver for Software Testing

In software testing driver is the part of source code, which clear test cases into other part of code. A test driver or test Harness is supporting source data and code utilized to test software that provides an environment. It might also be called as a module of software, that is utilized to raise a module on test and render test inputs, execution, control, monitor and report results of test or most plainly a row of code, which calls a process and authorizes that process a value.

As for instance, if you desired to give motility to a player on game software, then the driver code will be moveplayer(player, LocationX, LocationY). The driver code will probably will be called from main method. A case of white-box test would run this line of code driver and verify ” player.getPosition()” to assure that the player is at present on the anticipated cell.

Stubs for Software Testing:

Stub is artificial process, unit or module, which denotes for an incomplete part of a system.

Four common types of Stubs are:

1. show a trace message
2. show parameter value(s)
3. Return a value from a table
4. Return table value selected by parameter

Stub is a program that is utilized as an alternate for the module’s body of the software which is or would be defined in a different place or an object or dummy component utilized to imitate the conduct of an actual component until that component is developed.

At last, the artificial process would be accomplished with the correct logic of a program. All the same, developing the stub permits the developer for calling a method in source code that is developed, yet the method do not have the desirable performance.

Stubs and drivers testing are frequently regarded as throwaway code. Nevertheless, they are not been cast away: Stubs might be filled to build the real method.


Incoming search terms for the article:

Test driven development (test first)

Test driven development

Test Driven Development is one of test method that specializes in the test repetition.
The reason for doing this is to test codes repeatedly with hopes of making a given software better and more effective.
The Test-Driven Design has several steps that must be followed before the test is successfully completed.
The first step requires writing a test (so it’s also called test first). There has to be a sample diagram or flowchart before any other actions can be taken.
However, when written test finish , it’s not mean to success the TDD process because it is written before the physical test (real test) is performed.
The person writing the test must know precise specification of the features being created as well as everything required for creating test suite.
In most cases the writer obtains the information about the feature required to create the test by using use cases or user stories of the software that will be run the test on.
After gather all useful information then source code is written. Next, every test must be ran to written code to determine that the written code is fail in the test suite
or not.
At this point, it should pass and if all the tests pass then it’s time to proceed to the final step. The final step is all about cleaning up the code.
This is done by re-running the test cases in search for defects and so on . There has to be certainty that there is no damage being found to any other software functionality
as a result of the new software can be released.

Advantages of test first

1. When you continue to do the test first then you will get a lot of test cases. After that when you want to restructure the system, you can do it easily
and don’t have to fear about the bugs that may happen because when you finish restructure the system , your new system may not pass some written
test cases, so at this point you can retrace to modify the written test cases and then try to validate the new system to pass to modified test cases.
(If you don’t have test cases , after complete restructure your system for 2 or 3 months , the unknown bugs may occur because the restructured system
was not tested. At this time you have to fix bugs but it’s so difficult to fix them due to you may forget about wherever in the function or files that you used
to modified source code. In my opinion, if your system is very complex , your certainly have to write intensive test cases )

2.With test first you have to write test documents before write the code , this way will help the programmer or developer to plan before they begin to write
code (they have to write the code to pass the test documents). As a result your entire code will look better and you will get the software that have a good
structure. It also help you to reduce runtime error or unexpected bugs (so cost to fix the bugs is also reduced too).

Test first is differ from unit test as follow
1. Test first is done before writing source code but Unit test is done after finish writing the code.
2. In test first , you don’t need to look at source code to write the tests but in unit test , you must use the written code to do unit test.
3. Unit test help you to ensure that your written function or piece of code is work or not but test first help you to ensure that
entire code in the project work well or not.

Thank you,

Why Is Load Testing Useful

Load testing is the process of putting increasing demand on a system or software until the system or software breaks or fails to function. The purpose of load testing is to test the system against unusually high usage patterns to determine how the system or software will react. 

One example of the need for this type of testing is a web server hosting a web site that is seasonal or receives peak levels of web traffic during highly publicized special events. Another example would be a link to a small web site from a very popular site, that then doubles or triples the number of concurrent visitors to the smaller web site. Load testing in each example could determine ahead of time whether each site could handle the increased traffic without the hosting server failing to serve web pages to visitors during the peak load. 

Continue reading

Incoming search terms for the article:

Scrum and Extreme Programming

Agile Process (Scrum and Extreme Programming)
The Agile Process or software development refers to a set of software development methods which are based on iterative development. In this process, the solutions and requirements both evolve mutual collaboration between cross functional teams. These teams are self-organizing in nature.
The Agile software development approach usually promotes a regimented kind of project management process which encourages:
* Frequent adaptation and inspection
* Self-organization and accountability
* A leadership philosophy which promotes teamwork
* A business approach which bring into line the development with customer needs and company goals
* And a group of best engineering practices having an intention to allow for rapid delivery of good-quality software.
Extreme Programming (EP)
It is a software development methodology with an intention to enhance software responsiveness and quality to the volatile requirements of customers. Being a type of Agile process, it promotes frequent releases in small development cycles. This introduces checkpoints and improves the productivity in a way that the new requirements from customers can be adopted.
The advantages of Extreme Programming are:
* Unit testing of all code
* Avoiding programming of features until needed
* Programming in pairs or carrying out extensive code review
* Clarity and simplicity in code
* Volatile customer requirements better understood
* A flag management structure
* Frequent communication between the programmers and even with the customer
It has been noted however that there are certain drawbacks with Extreme programming. They are:
* No documented compromises of user conflicts
* Unstable requirements
* Lack of overall design document or specification
* Incorporates inadequate software design
* Necessitates meetings at recurrent intervals at huge expense to customers
* Can enlarge the risk of scope creep due to the lack of thorough requirements documentation
* Requires excess of cultural change to adopt

Scrum is an incremental, iterative framework for agile software development and project management. The word “Scrum” is not really an acronym. However, many companies using this methodology spell it with capital letters. Initially Scrum methodology was focused for management of software development projects, but in recent times it can be used to run general program/project management approach or software maintenance teams.
Scrum, which contains sets of predefined roles and practices, is a process skeleton. Main roles in this method are:
1. Product Owner – Represents Stakeholders
2. Scrum Master – The one responsible for maintaining the processes
3. Team – A cross functional group of about 6-8 people who do actual design, testing, implementation, etc.
Each of the iteration is called a “sprint”, typical time frame for which is normally about two to four weeks. The length of each sprint is decided by the team. The product “backlog” pushes the set of features into a spring. These features are prioritized set of higher level requirements for the task to be carried out. Based on this product “backlog”, the team determines how many of the items can be completed in the next sprint. Once the sprint begins, nobody is allowed to alter the sprint backlog, which means that the set of requirements are frozen. On successful completion of a sprint, the team demonstrates the usage of that particular software.
This methodology should be encouraged in organizations since the major advantage of using the Scrum is that it enables the creation of teams which are highly self-organizing in nature. This is achieved by encouraging verbal communication amongst the team members, co-location of all the team members and disciplines which are involved for the project.

Differences between Scrum and Extreme Programming(EP) :
1. The time span for iterative sprints is different in both approaches.
2. Changes are not allowed by the Scrum teams during their sprints. Whereas Extreme Programming teams have to be much more agreeable to changes.
3. Work is done by EP teams in strict priority order. Whereas in case of Scrum, the product owner prioritizes the set of activities.
4. EP does prescribe some engineering practices; Scrum does not.

Thank you

Incoming search terms for the article:

Performance Testing and Regression Testing

Performance Testing and Regression Testing

Software testing or Testing is an examination conducted to present the stakeholders with data regarding the quality of the service or product under test. This type of software testing as well provides in insight on the independent views and objectives of the software to permit the business to understand all the risks involved during the implementation of the software.
Based on the testing method employed, Software testing can be put into practice at any point of time in the development process. Although, most of the efforts for testing occur after the requirements are defined and the process for coding has been completed.

This article describes two types of testing methodologies.

1. Performance Testing
Performance testing is performed to determine how quick a system or sub-system executes under a particular amount of workload. It can also provide to verify and validate other quality traits of the system, such as reliability, scalability and resource usage.

In the field of Software Engineering, performance testing comes under the testing category which is carried out to how fast a particular aspect of the system under observation performs, given a fixed amount of workload. This sort of testing is a subset of Performance Engineering (up-and-coming computer science practices build to get performance into the architecture and design of a system, prior to the actual effort of coding). There are various purposes which performance testing can serve:
It can compare given two systems and finds out which one is performing better
It can demonstrate whether or not the system meets the required performance criteria.
It can calculate which parts of the system under observation cause the system to perform badly.

2. Regression Testing
This type of testing is any software testing which seeks to find out software errors by partly re-testing a modified program. The intention of this type of testing is to provide a kind of assurance that no additional errors were added during the process of fixing the existing problems. Regression testing is generally used to proficiently examine the system by systematically choosing the appropriate suite of tests which are required to sufficiently cove all of the affected changes.
Widespread methods of regression testing comprise of rerunning earlier run tests and scrutinizing whether previously fixed faults have re-emerged. One of the chief reasons for performing regression testing is that it’s often tremendously difficult for a programmer to outline out how a change in one part of the software will reverberate in other parts of the software.

Ad hoc testing
This term is commonly used to represent software testing without any documentation or planning. The tests are made to run only once, unless a defect is discovered. This type of testing is more of a part of exploratory testing. Here, the tester seeks to find errors by any means that seems appropriate to him/her.

Unit Testing
This type of testing is a software verification and validation method where a programmer tests if individual units of system are fit for utilization. A unit is the least testable part of an application. In procedural programming, a unit might be an individual procedure or function.


The advantage of performing Performance and Regression testing are:
Reusable: Can reuse tests on diverse versions of an application, even if the user interface alters
Repeatable: Can check how the software responds under repeated execution of the identical operations.
Programmable: Can program complicated tests that bring out concealed information from the application.
Cost Reduction: Cost is reduced since the amounts of resources for regression test are reduced.
Reliable: Tests carry out precisely the equivalent operations each time they are run, thereby eradicating human error.
Comprehensive: Can build a suite of tests that wraps every feature in the application.
Better Quality Software: Can run additional tests in fewer time with less resources
Fast: Automated Tools run tests considerably faster as compared to the human users.

Incoming search terms for the article:

GIT vs Perforce vs Clearcase vs CVS


This distributed revision control system has an emphasis on speed. It was originally designed and developed by Linus Torvalds for the development of Linux kernel. Every working directory of Git is a full-fledged repository with full revision tracking capabilities and complete history, not dependent on a central server or network access. GIT is a free software which is distributed under the terms of version 2 of the GNU General Public License.


This is a proprietary and commercial revision control system developed by Perforce Software Inc. Perforce follows a client/server system. Here the server has the responsibility of managing a central database and a main repository of file versions. Developers can work on files in their local client workspace. After altering the changes, they can submit the changes to the main server. Client and server communicate via TCP/IP.


Rational ClearCase is a tool for configuration management of source code and other software assets. This tool is developed by IBM (Rational Software Division). ClearCase is the basis of version control for many mid size businesses, and has the potential to handle projects with thousands of developers.


This is a free revision control system. This system was developed by Dick Grune as a series of shell scripts during July 1986. CVS turned out to be popular in the open source software space and is released under General Public License of GNU. CVS also uses Client/Server architecture. Here, the clients connect to the server and can “check out” a version of file onto their local disk. Later after modifying the contents, they can “check in” the changes.

Incoming search terms for the article:

Types of Revision Control Software

Revision Control Software
Revision Control software are used implement Revision Control on single or multiple sites by organizations. Revision Control, also known as Software Configuration Management (SCM) or Source Control or Version Control, is the management or control of changes to programs, documents and other sorts of information data. This type of setup or mechanism is more often used in software development where a set of people may alter the contents of the same file. The changes made are generally identified by a letter code or number which is called as a revision number or simply revision. For instance, an initial revision for a file is “revision 1”. If this file is altered by any developer, its revision becomes “revision 2”, and so on. A developer can perform many operations on these revisions. These revisions of files or directories can be merged, restored or compared. Software tools for revision management are crucial for the organization where development is simultaneously in progress on multi-developer sites.

Types of Revision Control Software
The various possible approaches for revision control software are:
Local Only: In this approach, it is necessary for all the developers to use the same computer system. Examples:
a. Revision Control System (RCS)
b. Source Code Control System (SCCS)

Distributed Model: In this approach, each of the developer has his/her own setup or local repository. And at some predefined time, all of the changes from various developers are shared or synced between repositories as a different step. Examples:
c. Open Source:
i. Aegis
ii. Codeville
iii. DCVS
iv. GIT
d. Proprietary:
i. Sun WorkShop Team Ware
ii. BitKeeper

Client-Server Model: In this approach, all the developers have to share a single repository. Examples:
e. Open Source:
i. Concurrent Versions System (CVS)
iii. OpenCVS
f. Proprietary:
i. Perforce
ii. Clearcase
iii. Visual SourceSafe

Incoming search terms for the article:

User Acceptance Testing.

UAT (User Acceptance Testing)

UAT is a sort of testing that usually done at the last step of software development process (before release the software to the market).UAT is done by user (the person who will use this software or person who possess requirement of software).It is the way to increase reliance and ensure that the software was designed correctly based on requirements.

Before doing UAT your software need to pass Unit Testing,Integration Testing,System testing and must solved the defects found in each of these testing phases (in practical, the defects relate to technical or logic of software should be fixed before sending to UAT).The defects concern with appearance or color of software are acceptable during doing UAT.

Test Case is also need in UAT because it help doing UAT more effective. Otherwise the test case should be designed on the perspective of Bunsiness Flow and Business Logic that based on requirement. The tester will emphasize on testing the software like they are real user.

Procedure for doing UAT.
One important factor you must focus on while you doing UAT is Test Environment.The test environment should be similar to Production Enviroment as much as possible.

Basic step of doing UAT are as follow…

-Make the testing plan for UAT.
-Design the test cases for UAT.
-Set up testing team for operate UAT in accordance with test cases.
-Operate UAT.
-Record Bug or Defect found during operate UAT and hold a meeting in order to summarize anything we have to modify.
-Fix bug or defect found in previous step and then do Regression Testing.
-Finish UAT, sign off.

UAT is classified as Black box testing.The test cases for UAT normally designed according
to requirements of user (after finish requirements definition phase). Business Analysis
team or System Analysis team are also provide the inputs used for creating the test cases
and it should be described using simple language which easy to understand because the
tester may be the person other than programmer or tester and they don’t know the
technical phrase.

Visit these site for more information about UAT (User Acceptance Testing)
Exforsys INC

Reference for this article:

Thank you,
Jitkasem Pintaya.


How to do white box testing

The article for today is about white box testing.I had written article about white box testing in this blog but that time it was only introduction of white box testing.This article concern with how to do white box testing.

The procedure of White box testing is normally saparated into 3 topic as follow

1.Statement Coverage
It is the testing to verify that all instructions or code must be executed at least one time.We can specify one or more than one test case for doing statement coverage testing (there may be a chance that one test case is not cover all the code we need to test).Below is an example demonstate how to do statement coverage testing.

Suppose you have a piece of code to test like this



If you determin ‘C’ as the test case then the coverage reach 100% (pass through all line of code) and only one test case is sufficient for doing Statement Coverage for this code.

Advantage of Statement Coverage.
1.To ensure that all source code can be reached at least for one time.
2.It is suitable for making Performance profiling because it can be applied directly to object code without processing source code.

Disadvantage of Statement Coverage.
1.It is insensitive to logical operators such as OR (||),AND (&&) etc.
2.If your source code have a lot of IF-ELSEIF-ELSE statements or contain consecutive switch labels then the test case used for doing Statement Coverage will be increased respectively.

2. Branch Coverage (Condition judgment Coverage)
It is the testing to verify that all branches and instructions must be executed at least one time (Concentrate on testing to cover every branches or decision points in the code).It is the easiest way to perform testing of path or workflow of program.

Please consider the code below and its explanation to understand the operation of Branch Coverage testing.



In the above code we need only two test case to cover all the branches (also all instructions too), they are…
Test case #1 : Input n1 = 1 , n2 = 1
Test case #2 : Input n1 = 2 , n2 = 0

Advantage of Branch Coverage.
1.To validate all branches in the code can be reached and ensure that no branches lead to abnormal of the program’s operation.
2.It eliminate problems that occur with Statement Coverage testing.

Disadvantage of Branch Coverage.
1.There may be other condition that can be used for decision making.For the example, statement “if((b == TRUE) || functionA())”, in this statement we can define only test case with “B = TRUE” and this test case is cover this branch but functionA() isn’t tested.

3.Condition Coverage/Multiple Condition Coverage

It is the testing to verify that all condition expression within each branch will be tested (the true and the false condition of each sub-expression within the decision branch must be tested at least one time ).
It is more intensive testing than Branch Coverage and Statement Coverage.Multiple Condition Coverage has detail of testing more than Condition Coverage.Its test cases are larger than test case of Condition
Coverage because it ensures that all possible combination of conditions of sub-expression within each branch must be tested.

Please consider the code below for Condition Coverage testing.



If you want to test above code by using Condition Coverage you must specify two test
cases to cover all sub-expressions in this branch.The test cases are as follow…

Test case #1: Input n1 = 60 , n2 = 70
Test case #2: Input n1 = 40 , n2 = 110

If you want to test above code with Multiple Condition Coverage you must specify four
test cases to cover all combination of possible condition of sub-expressions in this branch and the test cases look like these

Test case #1: Input n1 = 60 , n2 = 70
Test case #2: Input n1 = 60 , n2 = 110
Test case #3: Input n1 = 40 , n2 = 70
Test case #4: Input n1 = 40 , n2 = 110

Advantage of Condition/Multiple Condition coverage.
1.It is very thorough testing and the bugs are normally found by this kind of testing.

1.If the decision branch contain lots of sub-expressions or has very complex boolean expressions , the tester will have to define a large number of test cases.

Thank you,
jitkasem pintaya.

Reference site:
1.MindBlaze Blog
3.The paper from by Arnold Zanderink

Incoming search terms for the article:

CASE tool overview.

CASE tool (Computer-Aided Software Engineering)

CASE tool is the software that support system development or facilitate in system development.It
has an ability in building various kinds of document during analysis and design the system.For the example such as building the UML diagram,the screen interface (Graphical User Interface),form and report etc…
Furthermore some CASE tool can automatically generate source code too.In system maintenance can use CASE tool to make the operation smoothly,quickly and correctly.CASE tool also help you to decrease the time in document improvement or source code improvement.So at the present time CASE tools have an important role in system development and system maintenance.

Formerly CASE tool was separated into two groups as follow…
1.Upper CASE tool is the software that used in the step of analysis and design the system.This CASE tool make various diagram such as DFD (Data flow diagram) . DFD is used for design the component of the system such as the input of system , the mechanism of system , the result of the system etc.Other diagrams such as ER diagram (Entity-relationship diagram),layout (the screen that used for bring the data into the system or screen of the report). The example of CASE tool in this group are ERwin and Visual UML.

2.Lower CASE tool is the software that can build the source code or program automatically from condition or determinate procedure such as we can write the program for manage the vacation of our employee from the specific workflow or we can write the database structure command by select from the menu.The example of CASE tool in the group are Ecore Diagram Editor and dzine.

3.Integrated CASE tool is software that fulfill the usability from system analysis,system design to the system implementation (writing the source code) and system testing.It is the software that combine Upper CASE tool and Lower CASE tool into one software.The example of CASE tool in this group is Rational Rose from IBM.

The story of CASE tool is not finish by this article.In the next article I will write about the review of CASE tools that are well-known nowadays such as MagicDraw, Visual Paradigm,Poseidon UML and the suggestion about Commercial CASE tools and Open Source CASE tools software list.

for more information please visit these sites
1.UML Modeling Tools
3.CASE tool index

Thank you,

Incoming search terms for the article:

Software testing part II (White Box and Black Box testing)

White Box testing
Another name of White box testing is Glass-Box testing or Structural Testing.
It is the test in the system.The tester have to specify the test case that will be used
for test the system.They must have an ability in programming and well understand in
software testing theory.Their task it to assign the test case to every line, every
statement or every path of the program being tested. You can compare white box
testing with the measurement of electronics circuit (In measurement of electronics
circuit,you have to measure the electric current and voltage in every node existing
in your circuit).

White box testing can be applied for testing in Unit testing,Integration testing
or System testing but in commonly the tester apply White box testing in Unit testing phase
of software development.

The advantage of White box testing.
1.The process of White box testing can increase te quality of source code and can make
the pieces of source code work more efficiency because it is the testing in the system
(In the function and in every branches of the code)

2.In White box testing we can look for an error by give an input to the system and monitor
the output from the system.Otherwise it also can look for the internal error that existing
in the mentioned system too.

The disadvantage of White box testing.
1.This kind of testing require high skill in software coding to assure the high-quality of
source code.

Black Box testing.
Another name of Black-Box testing is Functional Testing.It is the testing
that disregard internal mechanism of the system (don’t test the internal component
of the system such as source code or function).This testing method is focus on the
output that come out from the system after we sent the input to it (Output that
come out after the system responded to the input data).

In Black-Box Testing, the tester will not look for the code to test, so the code
is considered to be “Black Box” that we can’t see the content inside the box.The
tester know only they must send the input to the “Black Box” and then it will release
the output to the tester.

The tester usually use the requirement specification document (Requirement
Knowledge) to build the test case, so they know what is the outcome that the system
will send after they send the corresponding input to it.

Now I can summarize the black box testing as follow…
– It is the testing that disregard the source code or command
in the program.
– It is testing of function of system base on the requirement documents.
– The tester must assume for output that will come out from the system
after sending the various input pattern to the system (The output must match up with
the input).

Now I can summarize White Box Testing as follow…
-It is the testing that examine the structure or the work-flow of the program .
-The tester must build the specific test case used for testing in each specific condition.
-The test case must contain the case that can be executed normally and abnormally.
-Try to execute every statement in the function at least 1 time.



In the next article I will write about Test first method (Software testing part III).
You can see more information about Black box and White box testing at these websites below
1.Software Testing Fundamentals
2.Testing and Code Coverage

Reference site: lenovoblogs

Thank you,
Jitkasem Pintaya.

Incoming search terms for the article:

Software testing part I.

There are no commercial software released to the market without testing.
Testing is an important process in software development.The big or
well-known software company place importance on software testing equal to
software implementation.
At present there are many type of software testing method but I summarize the
widely used testing method as following…

1.Unit test
Unit test is the testing functional
(Or testing in detail of each function in the system) to ensure
that each individual function in the system can work well.
Unit testing is very important in software development because
it is the method for finding the functional problems (It can decrease
the time in finding bugs in the posterior process).
2.Integration test
Integration test is the testing that take each unit to
combine altogether and then test the coherence between each unit to
ensure that the communication between each unit in the system can
be done correctly.
3.System test
System test is the testing of the whole system to ensure that
the totally work-flow of the system is correct.It is also
an important test that have to do in software development process
(Normally system test is done as the last test of all
testing procedure).
4.Acceptance Test
Acceptance test is the testing of customer or user who will
use the developed software.It is the test for satisfaction of the
user or customer.This testing is done after System test.

The important testing that you must emphasize on them are
Unit testing and Integration testing because many defect or bugs
can be found by these two testing method.

Testing is not necessary to be done by tester but developer
can also do the testing.Normally the Unit testing is done by
developer because the majority of this testing use the test case
that depend on the implementation, so nobody can do this testing
better than developer.However the real tester have a responsibility
for doing the Integration test and System test because…

– These two kinds of testing must do in long time.

– To prevent the bias if the developer is also the tester at the
same time.(The developer who write the code maybe
rather sure that the code they wrote is correct and will
ignore some minor part of code that have to test)

– The real tester has more time to design the test document
and test case. He/She must know clearly in the target system
that will be tested,so He/She can do the testing better than

This is part I of software testing story.In the next part (part II)
I will write about black box and white box testing,test first method and
how to design the test plan.

Thank you very much,
Jitkasem Pintaya.

Incoming search terms for the article:

Mind map and mind mapping software.

Mind Map is the map of ideas. It is used for represent the word or the ideas of
the human that spread out from the center .To imply by using text and the picture
to look alike the ramification of the tree. This theory is getting from the brain of the human.
Mind Map was built to be the source or the beginning point of developing the project
or doing the tasks.

Mind Map can simplify everything especially the complicate one such as.
– Make from the abstraction to be concrete object.
– It help in learning everything.
– It can be used for solving the problems in daily life.
– It is used in decision-making in case that there are alternative ways to solve the problem.

You can use mind map to apply to many tasks such as…
– Brain storming
– Project planning
– Use for summarize the meeting(Meeting minutes)
– To analyze the strategy of our company.(Strategic thinking, SWOT Analysis)
– To specify the strategy of marketing (Marketing Plans)
– Use for Teaching
– Use when you want to describe something or teach someone(Training)
– To control the new product development(Product Development)
– To gather the data,the knowledge and the ideas(Capture tacit knowledge)
and much more…

Mind Mapping Software

Nowadays there are many software that use for build the mind map.
The mind mapping software in the world today can be separated into
two groups as follow…

-Commercial Mind Mapping Software is the software that was built by
private company for the purpose of business or commercial only. You have
to pay for this software.

-Open Source Mind Mapping Software is free Mind Mapping software.
You don’t have to pay for these software.It is open source so may be
you can download the software together with its source code.

Commercial software list

MindManager is commercial software.You can download it for free trial
from Mindjet here.It is easy to use software that combine many
tools necessary for build Mind map.This software can link with Microsoft
Office such as MS Word,MS PowerPoint,MS Outlook, MS project, etc.
It also can export your Mind map into image file (support various type of image file),
PDF file,”.doc” file and “.html” file.It can use under Windows and MAC OS X.

ConceptDraw is software that can design Mind map,Brainstorming,Project Planing.You can download
the free trial for 30 days from here.

NovaMind is the popular Mind map building software.You can download the trial
from here.

Another Commercial Mind mapping software that I know is as follow…
Visual Mind
Visual Concept

Open source or free Mind mapping software.

FreeMind is a good open source Mind mapping software.It was written in JAVA.
It is licenced under GPL (General Public License) so you can download it for free
without paying for it.With FreeMind you can download the source code for modify
some features but you must licence it under GPL only.Look for it at here.

CUMindMap is the free software for build Mind map.It was developed by
Faculty of Computer engineering , Chulalongkorn University, Thailand.
It also support both Thai and English language.It can run only on Windows.
I had ever used it and I think it is easy to use.
You can download it for free at here.

WikkaWiki is a flexible, standards-compliant and lightweight wiki engine written in PHP, which uses MySQL to store pages. Forked from WakkaWiki. Designed for speed, extensibility, and security. Released under the GPL license.Click here to look for it.

Another software in this group is as follow…

vym ( view your mind)

The below is some pictures of Mind map



Reference site :
Thank you
Jitkasem Pintaya,

Incoming search terms for the article:



V-model is software development model.It is improve from the waterfall model. V-model is normally used for manage the software development project in the large company (Japaneses company).

V-model is also called verification and validation model (V&V). It has a very intensive testing in order to eliminate the bug/error that may be occur during each stage of development project using V-model.

You can see the picture of V-model as below…





*The picture above is come from here

For the detail what is each stage in the V-model do, I suggest you find the information on these sites.



Advantage of V-model.

– The defect or bug can be found in the early stage.

– It is trustworthy software development model that used widely in the big company.

– V-model can be done parallel in each side of “V” (Left and right side),
that mean the testing (Right side) is acting like planning (Left side). The tester must design the test case and the testing team is joined early in the project development life cycle ,so they will receive a good
understanding of the project at the very beginning .

Disadvantage of V-model.

– Use a lot of money and resource to implement the complete V-model

– Suitable for the large project which have to do for long term (not suitable of short term project because it need to review at each stage).

– Test is important , by ignore any one of test phase may affect the quality of product.

– No prototype software can be made because the software is developed in
the implementation phase.

– It is rigid and least flexible (if something happen or change in during the middle stage of V model,
the requirement document and the test document is also need to update)

Incoming search terms for the article:

Agile software development model II.

This article is the continue version of the last article (Agile Software development model I)

The technique for development using Agile is as follow.
-Agile model driven development (AMDD)
-Code Refactor : is the method to redesign code that is to modify the code immediately and then
the design is also change.
-Pair Programming : Combine the two developers to work together for the same project.
These two developers work at the same location and
also use the same computer.Share the computer in the way that one
person implement the code and another person has a responsibility for
checking the correction of implemented code.
-Test Driven Development(TDD) : is the technique for writing the test-case and write the test
case before implement the code.

The format(pattern) of Agile.

Agile methodology has many patterns that can be used for developing the system such as Scrum, FDD,
XP (extreme programming), DSDM, RUP, etc…But the popular pattern in my opinion is XP (extreme programming) because XP is the pattern that emphasize on the satisfaction of the customer and XP can change the system easily when the customer change the requirement.

Addition aspect for Agile.
– When we have the old project that can be used for additional development.It mean that
we have the asset that can be used as the base system for develop the new project,
so if the new project arrive then we can send the old project to the customer before sending
the new one.
– In the first step of developing new project,we can also deliver the things such as the screen,
the prototype,infrastructure to our customer without the software (because we have not written
the software yet)
– We also can think about Agile as the modifier of the former software development process such as
– Use Agile for rearrange the importance of the project development activity ,
which activity should be done and which should not be done.
– Use Agile to control the former project and look at some part of former project.The part that
is important for use with the development of new project should be done ,
the unimportant part will be ignored.

Incoming search terms for the article:

Agile software development model I.


Agile is the new idea for software development
that try to scrape through the old methodology to shorten
the development process.
It is the principle of new software development methodology
that emphasize on the following topic.

– Rapid and flexible response to change
– speed up the development process
– don’t stop, do the development continuously despite
of the things that will affect the development process
– when there is a change, we can support this
alteration rapidly and flexible

The objective of Agile
1.Emphasize on the aptitude of each developer.Try
to commune with each other more than impress on the
tools and methodology.Such as the programmer have a chance
to talk with the customer and can do the project in agreement
with the customer’s requirement.
2.Do the project by concentrate on the result or final
software.The old methodology is concentrate on the document
but Agile is not,the purpose of Agile is that we have a
ready software to send to the customer on the definited time.
3.The main point of Agile is communication.Agile is not
prefer the contact but Agile is stress on the communication
between the customer and developer.
4.Accept the changefulness.The old methodology is must do
follow the plans (gantt chart) but Agile is not necessary to follow the plans.
But Agile must able to respond to the change.

The model of Agile is as follow.

– choose only some methodologies for developing project.
– the chosen methodolgy must be able to use the
priciple of Agile to manage the documents and the existing
– In Agile,It must consist of
– value (result)
– principle
– practices

The three things above are the part of Agile model that
can be use for develop the project efficiently and have
less overhead.

That’s all for this article but the story of Agile is not finish.
In my next articles I will write about technique of development using Agile and other
addition aspect for using Agile.

Incoming search terms for the article:

Software Process and Software Development model.

This article is about Software Process.

What is software process.

The software process is the process that applied to the developing
of software and accomplish the software development project.
The fundamental of software process can be devided into the 4 process
as follow
1.Software Specification
2.Software Design and Implementation
3.Software Validation
4.Software Evolution

Software Specification is the method to defind the characteristic of software we
want to develop.

Software Design and Implementation is the method to build or develop
the software to agree with the Software Specification

Software Validation is the method to check for the accuracy of the
developed software or check the function of the software whether it
match the customer’s requirement.

Software Evolution is the method to improve the software.Make the software
flexible for the alteration of customer’s requirement or to make the software
ready for support the changing of technology.

What is Software Process Model?

Software Process Model is the model of software development
of the 4 topic I mentioned above. We can write a graph or picture that easy to
understand for represent the Software Process Model.Today there are
so many software process model such as Waterfall model,V-model,Agile,
Extreme programming, Lean, etc…

I will show you only the important Software Process
Model that normally used today.

It is the V-model and agile but I will write them for my next articles.
For more information about it , you can look for it
at or other site such as

SE concept (Before know more about software engineering).

Software engineering, known as SE, is the development, design, maintenance and documentation of software by applying practices and various technologies from fields such as computer science, engineering, application domains, project management, digital asset management and interface design.

The conception, development and verification of a software system is what software engineering is all about. It is necessary to identify, define, realize and verify the resultant software’s required characteristics. Necessary testing is required for attributes such as reliability, functionality, testability, maintainability, ease of use, availability and portability. In software engineering, software can be verified to meet these requirements by having design and technical specifications prepared and implemented correctly. The characteristics of the software development process are also important in software engineering. Development itself, development duration and risks in software development are examples of such characteristics.

A computer uses software as part of its system that allows the hardware to operate properly. Software can be system software or application software. System software includes the main operating system and a variety of other utilities that enable the computer and its applications to run. Application software includes the computer programs and relevant documentation responsible for end-user data processing tasks. This kind of software is developed for such tasks as word processing, payroll, inventory and production control.

Software Development

A series of processes undertaken systematically to improve a business through using computerized information systems is what is known as software development. There are two major components to software development, which are systems analysis and design.

Systems analysis is the specification of what exactly the system is required to do, or the main objective. Design is about how to make the system do what is required of it. For system analysis, it is required to study the current system by certain procedures in order to gather and interpret data and facts, identify any problems and use this data to improve the system currently in use. System design refers to the process of developing a new system, concentrating heavily on the technical specifications and other specifications that make the system operations.

Software Development Life Cycle

Software Development Life Cycle, or SDLC, is a sequence of events done by designers, analysts and users to develop and execute an information system. There are a number of stages to this practice, which can overlap. The stages are Preliminary investigation (which is feasibility study), Determination of system requirements (which is analysis), Design of system, Development of software, System testing, System Implementation and System Maintenance in that order.

Published At: Isnare Free Articles Directory
Permanent Link:

The author of this article is Gabriel Adams

Visit the Software Management Institute, a.k.a.SMI, an association and resource for software professionals: