Sie sind auf Seite 1von 9

SWE2005 SOFTWARE CONSTRUCTION ND MAINTENANCE

DIGITAL ASSIGNMENT 1
Q>Present a detailed literature review on Software Construction Tools with
specific focus on Development Environments, GUI Builders, Unit Testing Tools,
Profiling, Performance Analysis and Slicing Tools.
An integrated development environment (IDE) is a software application that provides
comprehensive facilities to computer programmers for software development. An IDE
normally consists of a source code editor, build automation tools, and a debugger. Most of
the modern IDEs have intelligent code completion. Some IDEs, such
as NetBeans and Eclipse, contain a compiler, interpreter, or both; others, such
as SharpDevelop and Lazarus, do not. The boundary between an integrated development
environment and other parts of the broader software development environment is not well-
defined. Sometimes a version control system, or various tools to simplify the construction of
a graphical user interface (GUI), are integrated. Many modern IDEs also have a class browser,
an object browser, and a class hierarchy diagram, for use in object-oriented software
development. Integrated development environments are designed to maximize programmer
productivity by providing tight-knit components with similar user interfaces.
IDEs present a single program in which all development is done. This program typically
provides many features for authoring, modifying, compiling, deploying and debugging
software. This contrasts with software development using unrelated tools, such
as vi, GCC or make.
One aim of the IDE is to reduce the configuration necessary to piece together multiple
development utilities, instead it provides the same set of capabilities as one cohesive unit.
Reducing setup time can increase developer productivity, especially in cases where learning
to use the IDE is faster than manually integrating and learning all of the individual tools.
Tighter integration of all development tasks has the potential to improve overall
productivity beyond just helping with setup tasks. For example, code can be continuously
parsed while it is being edited, providing instant feedback when syntax errors are
introduced. Allowing developers to debug code much faster and easier with an IDE.
Some IDEs are dedicated to a specific programming language, allowing a feature set that
most closely matches the programming paradigms of the language. However, there are
many multiple-language IDEs.
While most modern IDEs are graphical, text-based IDEs such as Turbo Pascal were in popular
use before the widespread availability of windowing systems like Microsoft Windowsand the
X Window System (X11). They commonly use function keys or hotkeys to execute frequently
used commands or macros.

GUI builders:

A graphical user interface builder (or GUI builder), also known as GUI designer, is
a software development tool that simplifies the creation of GUIs by allowing the designer to
arrange graphical control elements (often called widgets) using a drag-and-
drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying
each widget's parameters in source-code, with no visual feedback until the program is run.
List of IDE’s with GUI builders:

● Codelite:
CodeLite is a free, open-source, cross-platform IDE for the C/C++programming
languages using the wxWidgets toolkit. To comply with CodeLite's open-source spirit, the
program itself is compiled and debugged using only free tools (MinGW and GDB) for Mac OS
X, Windows, Linux and FreeBSD, though CodeLite can execute any third-party compiler or
tool that has a command-line interface. CodeLite also supports PHP and JavaScript
development (including Node.js support).
CodeLite features project management (workspace / projects), code completion, code
refactoring, source browsing, syntax highlighting, Subversion integration, cscope
integration, UnitTest++ integration, an interactive debugger built over gdb and a source
code editor (based on Scintilla).
CodeLite is distributed under the GNU General Public License v2 or Later. It is being
developed and debugged using itself as the development platform with daily updates
available through its Git repository.

● Delphi:
Delphi is an integrated development environment (IDE) for rapid application
development of desktop, mobile, web, and console software, developed by Embarcadero
Technologies. It is also an event-driven language. Delphi's compilers use their own Object
Pascal dialect of Pascal and generate native code for Microsoft Windows, macOS (IA-
32only), iOS, Android and Linux (x64 only). Since 2016, there have been new releases of
Delphi every six months, with new platforms being added approximately every second
release.
Delphi includes a code editor, a visual designer, an integrated debugger, a source code
control component, and support for third-party plugins. The code editor features Code
Insight(code completion), Error Insight (real-time error-checking), and refactoring. The visual
forms designer has traditionally used Visual Component Library (VCL) for native Windows
development, but the FireMonkey (FMX) platform was later added for cross-platform
development. Database support in Delphi is very strong. A Delphi project of a million lines to
compile in a few seconds – one benchmark gave 170,000 lines per second.
Delphi was originally developed by Borland as a rapid application development tool for
Windows as the successor of Turbo Pascal. Delphi added full object-oriented programming
to the existing language, and since then the language has grown to support
generics and anonymous methods, and native Component Object Model (COM) support. In
2006, Borland’s developer tools section was transferred from Borland to a wholly owned
subsidiary known as CodeGear, which was sold to Embarcadero Technologies in 2008. In
2015, Embarcadero was purchased by Idera Software, but the Embarcadero mark was
retained for the developer tools division.
● Lansa:
LANSA is an integrated development environment (IDE) for building desktop, web and
mobile software applications that can be deployed to Cloud, Windows, Linux and IBM i
server platforms.
The LANSA development environment includes:

High-level programming language


Business rules and data definitions metadata repository
Data management services
Application framework
Integrated development environment (IDE)

OutSystems:
The OutSystems Platform is a platform as a service (PaaS) intended for developing
and delivering enterprise web and mobile applications, which run in the cloud, on-
premises or in hybrid environments. The current version is 11, for both the paid and
unpaid versions - developers are permitted personal cloud environments to use the
platform without charge.

Clarion:

The Clarion Development Environment (IDE) sits on top of the Clarion


Programming Language. The IDE provides code generation facilities via a system of
templates which allow programmers to describe the program from an abstract level
higher than actual code statements. The generator then turns this higher level into
code, which in turn is then compiled and linked using a normal compiler and linker.
This generation layer is sometimes referred to as 4GL programming. If the templates
are used to generate code then programmers are able to inject their own code into
the generated code to alter, or extend, the functionality offered by the template
layer. This process of embedding code can be done while viewing the surrounding
generated code. This mixing of template code and generated code allows the
template settings to be updated, and the code regenerated, without the loss of the
embedded code.

● QT Creater:
Qt Creator is a cross-platform C++, JavaScript and QML integrated development
environment which is part of the SDK for the Qt GUI application development
framework.[3] It includes a visual debugger and an integrated GUI layout and
forms designer. The editor's features include syntax
highlighting and autocompletion. Qt Creator uses the C++ compiler from
the GNU Compiler Collection on Linux and FreeBSD. On Windows it can
use MinGW or MSVC with the default install and can also use Microsoft Console
Debugger when compiled from source code. Clang is also supported.

Unit Testing Tools:


Arqullium:
Arquillian is a highly innovative and extendible testing platform for JVM that
allows developers to easily create automated integration, functional and acceptance
tests for Java. Arquillian allows you to run test in the run-time so you don’t have to
manage the run-time from the test (or the build). Arquillian can be used to manage
the life cycle of the container (or containers),bundling test cases, dependent classes
and resources. It is also capable of deploying archive into containers and execute
tests in the containers and capture results and create reports.
JTest:
JTest also known as ‘Parasoft JTest’ is an automated Java software testing and
static analysis software made by Parasoft. JTest includes functionality for Unit test-
case generation and execution, static code analysis, data flow static analysis, and
metrics analysis, regression testing, run-time error detection. There are also features
that allow you to peer code review process∙ automation and run-time error detection
for e.g.: Race conditions
The Grinder:
‘The Grinder’ is a Java load testing framework that was designed to make sure it
was easy to run and distributed test’s using many load injector machines. The
Grinder can Load test on anything that has a Java API. This includes HTTP web
servers, SOAP and REST web services, and application servers and including custom
protocols and the test scripts are written in the powerful Jython and Clojure
languages. The GUI console for The Grinder allows you to have multiple load
injectors to be monitored and controlled and Automatic management of client
connections and cookies, SSL, Proxy aware and Connection throttling.
TestNG:
TestNG is a testing framework designed for the Java programming language and
inspired by JUnit and NUnit. TestNG was primarily designed to cover a wider range of
test categories such as unit, functional, end-to-end, integration, etc. It also introduced
some new functionality that make it more powerful and easier to use, such as:
Annotations, Running tests in big thread pools with various policies available, code
testing in a multi thread safe, flexible test configurations, data-driven testing support
for parameters, and more.
JUnit:
JUnit is a unit testing framework designed for the Java programming language.
JUnit has played an important role in the development of test-driven development
frameworks. It is one of a family of unit testing frameworks which is collectively known
as the xUnit that originated with SUnit. JUnit is linked as a JAR at compile- time and can
be used to write repeatable tests.

JWalk:
JWalk is designed as a unit testing toolkit for the Java programming language. It has
been designed to support a testing paradigm called Lazy Systematic Unit Testing. The
JWalkTester tool performs any tests of any compiled Java class, supplied by a
programmer. It is capable of testing conformance to a lazy specification, by static and
dynamic analysis, and from hints by the programmer behind the code.
PowerMock:
PowerMock is a Java Framework for unit testing of source code and It runs as an
extension of other Mocking frameworks like Mockito or EasyMock but comes with
more powerful capabilities. PowerMock utilizes a custom classloader and bytecode
manipulator to enable mocking of static methods, removal of static initializes,
constructors, final classes and methods and private methods. It as been primarily
designed to extend the existing API’s with a small number of methods and annotations
to enable the extra features.

Profiling:
In software engineering, profiling ("program profiling", "software profiling") is a form
of dynamic program analysisthat measures, for example, the space (memory) or
time complexity of a program, the usage of particular instructions, or the frequency and
duration of function calls. Most commonly, profiling information serves to aid program
optimization.
Profiling is achieved by instrumenting either the program source code or its binary
executable form using a tool called a profiler (or code profiler). Profilers may use a number
of different techniques, such as event-based, statistical, instrumented, and simulation
methods.
Profiler types based on output:
Flat profiler
Flat profilers compute the average call times, from the calls, and do not break down the call
times based on the callee or the context.
Call-graph profiler
Call graph profilers show the call times, and frequencies of the functions, and also the call-
chains involved based on the callee. In some tools full context is not preserved.
Input-sensitive profiler
Input-sensitive profilers add a further dimension to flat or call-graph profilers by relating
performance measures to features of the input workloads, such as input size or input values.
They generate charts that characterize how an application's performance scales as a
function of its input.

Performance Analysis and Slicing tools:

C and C++:
Arm MAP, a performance profiler supporting Linux platforms.
AppDynamics, an application performance management solution for C/C++
applications via SDK.
AQtime Pro, a performance profiler and memory allocation debugger that can be
integrated into Microsoft Visual Studio, and Embarcadero RAD Studio, or can run as
a stand-alone application.
EasyProfiler Free open source lightweight and fast instrumental profiler for C++ with
Qt-based UI client. Can profile remote applications via network.
IBM Rational Purify was a memory debugger allowing performance analysis.
Intel Parallel Studio contains Intel VTune Amplifier, which tunes both serial and
parallel programs. It also includes Intel Advisor and Intel Inspector. Intel Advisor
optimizes vectorization (use of SIMD instructions) and prototypes threading
implementations. Intel Inspector detects and debugs races, deadlocks and memory
errors.
iprof, a free cross-platform open-source profiling library for C++. Introduces little
overhead not to perturb the results. The gathered data is available real-time and can
be used to plot performance graphs.
Parasoft Insure++ provides a graphical tool that displays and animates memory
allocations in real time to expose memory blowout, fragmentation, overuse,
bottlenecks and leaks.
Very Sleepy, a free C/C++ CPU profiler for Windows systems.
Visual Studio Team System Profiler, commercial profiler by Microsoft.
VSXu has a built-in open source profiler for collecting data, call graphs with a generic
data collection back end.

JAVA:
InspectIT is an open-source application performance management (APM) solution for
monitoring and analyzing software applications, available under the Apache License, Version
2.0 (ALv2).

JConsole is the profiler which comes with the Java Development Kit
JProfiler
JRockit Mission Control, a profiler with low overhead.
Netbeans Profiler, a profiler integrated into the NetBeans IDE (internally
uses jvisualvm profiler)
Plumbr, Java application performance monitoring with automated root cause detection.
Links memory leaks, GC inefficiency, slow database and external web service calls, locked
threads, and other performance problems to the line in source code that causes them.
OverOps, Continuous reliability for the modern software supply chain, automatically
detect and deliver root cause automation for all errors.
VisualVM is a visual tool integrating several commandline JDK tools and lightweight
profiling capabilities. It is bundled with the Java Development Kit since version 6, update
7.
xray4j can be used to visualise what is happening inside any java application, profile,
performance tune.
FusionReactor, Java application performance monitoring - low overhead, production
grade tools for production debugging, code profiling, memory and thread analysis

JAVAScript:
Firebug is a Firefox plug-in for web development, also has a profiler for JavaScript.
Microsoft Visual Studio AJAX Profiling Extensions is a free profiling tool
for JavaScript by Microsoft Research.

.NET:
CLR Profiler is a free memory profiler provided by Microsoft for CLR applications.
GlowCode is a performance and memory profiler for .NET applications using C# and
other .NET languages. It identifies time-intensive functions and detects memory leaks
and errors in native, managed and mixed Windows x64 and x86 applications.
Visual Studio

PHP:
BlackFire.io
Dbg
Xdebug is a PHP extension which provides debugging and profiling capabilities.

Das könnte Ihnen auch gefallen