Professional Documents
Culture Documents
Faculty of Computing
Department of Software engineering
Course Title: Software Tools and practices
Course code: SEng2052
Assignment
Name ID
1. Dawit Zewdu Munie BDU1307571
2. Ephrem Habtamu Tadesse BDU1308250
1|Page
Introduction
A software or a programming tool is a set of computer programs that are used by the developers
to create, maintain, debug, or support other applications and programs.
Why Do Software Development Tools Matter?
All professionals need software designing tools in order to do their jobs. A carpenter needs an
assortment of hammers, saws, planes, tape measures and the like. An auto mechanic needs
wrenches and sockets, ratchets and impact tools. A plumber needs pipe wrenches, brazing tools,
saws, etc. Same way, software developer’s need the right software planning tools for
accomplishing their respective assignments. Software development tools play a very important
role in the IT field, although they are less substantial than the tools used by other professionals.
2|Page
1. Software Requirement Tool
Tools for dealing with software requirements. It’s classified into two categories: modeling and
traceability tools.
ERD is also known as the Entity-Relationship Model. ERD was originally proposed by Peter
Chen. Entity means any object used to store information and are distinguishable, relationship
means connection, and diagram/model means a picture uses to represent something. So, ERD
is simply the diagram or model that is used to represent or show the relationship between the
entities or data objects that are stored in a database. A basic ER model is composed of entity
types (which classify the things of interest) and specifies relationships that can exist
between entities (instances of those entity types). The main components of the E-R model are an
entity, attributes, and relationship. It is a very easy way to represent the database design.
Conceptually simple An ERD can be quickly created if relationships between entities and
attributes are known.
Visually explicit representation. The graphic can be used to quickly understand the
database structure.
Efficiency of communication Understanding how the database functions once it has been
completed is made easier by standard symbols representing various types of information.
High adaptability. Any other data model can be simply transformed from the ER data
model with a few little adjustments.
ERD has also its own disadvantages and some of them as follows:
3|Page
Limited portrayal of relationships. When compared to other data models, the model's
linkages are constrained.
There is no evidence of data manipulation. The model has only limited application
because the methods used to demonstrate data manipulation in ERD are relatively
complex.
No industry consensus exists for notation. It can be confusing to understand diagrams
since different developers use different notation standards.
Traceability window
The Traceability window is a highly helpful and adaptable traceability tool that you may use to
quickly examine the relationship chain of which any element is a component after opening a
Traceability diagram or a Package structure in the Browser window. The Traceability window
gives the modeler a hierarchical view of element connections, allowing traceability to be
visualized and queried as elements are traversed in the model. This tool is particularly powerful
because a modeler will often choose to hide diagram relationships but by selecting an element
in the diagram and viewing its connections in the traceability window all its relationships will be
displayed.
Advantages of Traceability Window are:
Gives the modeler a hierarchical view of element connections
Allowing traceability to be visualized and queried as elements are traversed in the
model.
Helpful as modeler will often choose to hide diagram relationships
Locate related elements in the Project Browser
View the properties of related elements
Open the diagrams in which related elements are used
4|Page
The Traceability window does not currently recognize extended relationship types
defined by Technologies such as BPMN; relationships defined by a Profile or
Technology are identified using their base UML type, so, for example, 'Realization'
relationships are each reported as UML 'Dependency' relationships
There are a series of options that restrict the traceability to specified connector types;
these can be set to alter what is displayed in the window.
MATLAB
MATLAB is a programming, modeling and simulation tool developed by Math Works. A
programming environment for the development of algorithms, data analysis, visualization and
numerical calculation.
If you desire an advanced-level language and interactive environment for the purpose of programming,
visualization, and numerical computation, then MATLAB is the engineering design tool of choice. Popular
among millions of software developers and engineers worldwide, MATLAB supports the exploration and
visualization of collaborations and ideas across disciplines and helps put ideas into action.
Advantages of MATLAB:
Ease of use: Because the language is so simple to use, it is optimal for the fast prototyping
of new applications.
Platform Independence: MATLAB is supported on different computer systems,
providing a considerable measure of platform independence.
Disadvantages of MATLAB
5|Page
Interpreted language: The first disadvantage is that it is an interpreted language and,
therefore, may execute more slowly than compiled language. This problem can be check
by properly structuring the MATLAB program.
Cost: A full copy of MATLAB is five to ten times more costly than a conventional C or
FORTRAN compiler. This comparatively high cost is more than offset by the decreased
time necessary for an engineer or scientist to create a working program, so MATLAB is
cost-effective for businesses.
CATIA
CATIA, which stands for “computer-aided three-dimensional interactive application,” is a
software suite of computer-aided design, manufacturing, and engineering tools. This software,
created by Dassault Systèmes, is a popular solution throughout the manufacturing industries, and
especially among Original Equipment Manufacturers, to streamline design, analysis, and project
management. It is a software that offers 3D design, computer-aided engineering solutions, PLM, and computer-
aided manufacturing solutions. It is a commonly used software on a global scale. The program is frequently used
by Original Equipment Manufacturers (OEMs) and the manufacturing sector to improve the development,
managing, and analysis of new products.
Advantages of CATIA:
o Surface modeling module is extremely developed and successful.
o 2D drafting module is doing the job effectively (AutoCAD is no more required).
Disadvantages of CATIA
o Not user friendly interface (a bit improved with v6)
o Difficult mouse operations
Compare and contrast MATLAB and CATIA
When assessing the two solutions, reviewers found MATLAB easier to use, set up, and administer.
Reviewers also preferred doing business with MATLAB overall.
Reviewers felt that MATLAB meets the needs of their business better than CATIA.
When comparing quality of ongoing product support, reviewers felt that MATLAB is the preferred
option.
For feature updates and roadmaps, our reviewers preferred the direction of MATLAB over CATIA.
6|Page
3.1. Program Editors Tool
Code editors are tools typically used by programmers and web developers to write and edit code that
saves the time to develop a software and increases the quality to a software inturn.
Robust plugin architecture replete with fantastic add-ons that make developer life delightful.
Integrated Terminal window allows you to stay in one application to perform most required
tasks.
Customization options are robust. It is easy to modify VS Code to your own specifications.
It's free! Hard to believe such a well made, well maintained, robust software is a free download.
Command+P/Command+Shift+P key commands will improve your workflow dramatically.
Inconsistent methods to change settings. Sometimes must be done in the JSON file. Sometimes
in the UI.
Application error messages sometime appear without enough information to resolve them.
Does not have built in functionality to display SVG file preview.
3.2 Compilers
A Compiler is a software that typically takes a high level language (Like C++ and Java) code
as input and converts the input to a lower level language at once. It lists all the errors if the
input code does not follow the rules of its language. This process is much faster than
interpreter but it becomes difficult to debug all the errors together in a program. A compiler is
a translating program that translates the instructions of high level language to machine level
language. A program which is input to the compiler is called a Source program. This program
is now converted to a machine level language by a compiler is known as the Object code.
7|Page
Borland C++
This is the oldest and cheaper compiler which do not have any competitors in the market.
Borland is a C++ integrated development environment and it is most widely used in the 90’s
works well in MS-DOS Prompt and Windows. They make simple editing features making their
Improved performance
Reduced system load
Protection for source code and programs
Improved productivity and quality
3.3. Interpreter
Interpreter can be termed as system software which has the capability to read and execute the
program, rather you can say interpret programs. This interpretation includes the source code of
high-level language, programs that are pre-compiled as well as scripts. It is to be noted that,
interpreter interprets program line-by-line, which means it translates one statement at a single go.
run on a computer or server. They process program code at run time, checking the code for errors
line by line.
8|Page
PyPy
PyPy is a replacement for CPython. It is built using the RPython language that was co-
developed with it. PyPy is an impressive compliant alternative implementation for the
Python programming language. PyPy is supportable for Python 2.7, Python 3.5 as well as
Python 3.6 versions.
Advantages of PyPy
o Speed: thanks to its Just-in-Time compiler, Python programs often run faster on PyPy.
o Memory usage: memory-hungry Python programs (several hundreds of MBs or more)
might end up taking less space than they do in CPython.
o Compatibility: PyPy is highly compatible with existing python code. It
supports cffi, cppyyy, and can run popular python libraries like twisted, and django. It
can also run NumPy, Scikit-learn and more via a c-extension compatibility layer.
o Stackless: PyPy comes by default with support for stackless mode, providing micro-
threads for massive concurrency.
Disadvantages of PyPy
o It doesn’t work well with C extension
o I only works well with long running program
o It doesn’t do a head of time compilation
3.4. A debugger
A bug is when a flaw in logic is coded, or an implementation is flawed. A debugger is a software
development tool that helps us hunt down where we went wrong in the code. Then we can begin
to unravel the mistake. A debugger is a computer program used by programmers to test and
debug a target program. Debuggers may use instruction-set simulators, rather than running a
program directly on the processor to achieve a higher level of control over its execution. This
allows debuggers to stop or halt the program according to specific conditions.
Very early on in our careers as developers, we start using debuggers to help us fix our logical
flaws faster. But not all debuggers do the same thing. Here are the 11 debuggers in 2021 that you
should know about.
GDB (The GNU Debugger)
GDB stands for the “Gnu DeBugger.” This is a powerful source-level debugging package that
lets you see what is going on inside your program. You can step through the code, set
breakpoints, examine and change variables, and so on. GBD allows you to run the debugger on
9|Page
your machine against the program that’s running on the remote machine. The debugging tools
include the ability to place breakpoints for inspection, step through processes and observe
variables.
Advantages of GDB(The GNU Debugger)
If a core dump happened, then It helps to show what statement or expression did the
program crash on
If an error occurs while executing a function, It helps to show what line of the
program contains the call to that function, and what are the parameters
It helps to show what are the values of program variables at a particular point during
execution of the program
It helps to show what is the result of a particular expression in a program
Disadvantages of GDB(The GNU Debugger)
Even though GDB can help you in finding out memory leakage related bugs, but it is not
a tool to detect memory leakages.
GDB cannot be used for programs that compile with errors and it does not help in fixing
those errors.
DATPROF
DATPROF is a Dutch company, founded in 1998, that specialises in test data management. Its
clients, which are concentrated in Europe but stretch to North America and the Pacific regions,
include ING, Thomas Cook and the Dutch government. Moreover, it boasts a 95% customer
retention rate. DATPROF simplifies getting the right test data at the right moment. With
DATPROF Privacy you can mask your test data and generate synthetic data. Your customer
data is protected, but software teams can still use representative.
Advantages of DATPROF
Manage and refresh your test data environments from one central platform.
Preserve data characteristics
High performance on large data sets
Consistent over multiple applications and databases
Built-in synthetic data generators
10 | P a g e
Supports CI/CD integration (continuous integration vs. continuous delivery)
Disadvantages of DATPROF
Disadvantages of Cypress
One cannot use Cypress to drive two browsers at the same time.
It doesn’t provide support for multi-tabs
Cypress only supports JavaScript for creating test cases
Cypress doesn’t provide support for browsers like Safari and IE at the moment.
11 | P a g e
Limited support for iFrames
12 | P a g e
A rising star in the test management tool market, PractiTest is a SaaS end-to-end QA management system with
some of the most advanced and interesting features. With PractiTest, testers are able to focus on quality and their
actual work rather than side tasks.
Focusing on efficiency and visibility, PractiTest’s dashboards and reports set a new standard of data intelligence.
Using their unique and customizable filters, you can efficiently organize your requirements, create & run tests
(Automated, Scripted, and Exploratory), track bugs and generate reports.
It integrates seamlessly with the leading bug tracking tools like JIRA, Pivotal Tracker, Bugzilla, and Redmine as
well as various automation tools such as Selenium, Jenkins, etc. Their API can ensure further customization for
other process needs.
Advantages of AppDynamics
Dependency View of Technical component for a business application
Transactions visibility
Predictive Intelligence
13 | P a g e
Transaction drill down and root cause identification
Disadvantages of AppDynamics
Advance Technologies which leverages multiple framework languages
Predictive Intelligence in real Integration with other event sources
Network Infrastructure in details
SLI and SLO
It becomes easier to read code and recognize its structure. Color highlighting is not
important for a machine, but it is for developers. As a result, code reviews, for example,
are (selectively) easier.
The implementation of code is easier, because the highlighting is done in real time and
typing errors can be detected faster. Wrong keywords can also be identified more quickly
because they are not colored. This leads to a higher performance during development,
especially since modern editors no longer suffer from performance losses due to
coloring / converting.
In many editors and development environments, the highlighting scheme can be
individually adapted, so that the fun of developing is also increased.
5.2. Re-engineering
Software re-engineering is the analysis and modification of a system to create a new version of it. Software re-
engineering is the term used when the Re-Engineering philosophy is applied to the software development process.
It has a favorable impact on software price, quality, customer service, and delivery time. By re-engineering the
software, we can increase its effectiveness and efficiency.
Tools used in Business Process Reengineering can include organizational charts, workflow analysis,
benchmarking, job descriptions, business process mapping, and others.
Benchmarking does more than let you know how to obtain output. It also lets you understand the output of your
competitors. This process, which can take on one of four general systems, allows you to implement metrics and
the best practices of your industry so that you can start doing things better, cheaper, and faster. Here are some of the
key pros and cons of benchmarking to consider if you’re thinking about including this process for your business.
Advantages of Benchmarking?
It gives you a performance improvement: because you’re looking at the best practices of each business
task which must be completed, benchmarking allows you to locate areas where you might be inefficient.
You are also able to compare how your performance matches up to the rest of your industry.
It inspires creativity: many organizations get stuck in the “We’ve always done things this way” trap. As
time progresses, standards evolve. Processes improve. It’s not comfortable to be innovative sometimes,
but it must be done to stay current with the competition. Benchmarking helps a business provide the
measurable goals.
It places the focus on change: benchmarking forces you to set and then follow a minimum standard of
excellence. It is often based on a combination of best practices and competitor standards that have been
analyzed in each specific industry. In return, you receive a focus on change that encourages ongoing
learning at every level of the organization.
It creates a deeper understanding: benchmarking helps an organization know itself on a deeper level. It
also forms relationships with the competition and helps a company explore what the world is offering for
ideas.
It enables comparison of performance measures in different dimensions, each with best
practices for that particular measure.
Disadvantages of Benchmarking
It doesn’t really measure effectiveness: when you’re instituting best practices, you are examining specific
efficiencies under a microscopic lens. What you are not doing is measuring how effective your processes
happen to be.
15 | P a g e
Benchmarking is important, but it can’t be the only thing a business does in order to institute change. It is
simply part of the process that will help you reach an end goal.
There tends to be a certainly level of complacency: the biggest trap of benchmarking occurs when a
business is able to exceed the standards of their competition.
It remains inadequate to measure the overall effectiveness of such metrics.
The danger of complacency and arrogance.
REFERENCES
1. https://www.smartdraw.com/entity-relationship-diagram/
16 | P a g e
2. https://www.sparxsystems.com/enterprise_architect_user_guide/15.0/model_navigation/traceability_tools.html
3. https://4dsysco.com/what-is-catia
4. https://code.visualstudio.com/docs
5. https://www.infoworld.com/article/3385127/what-is-pypy-faster-python-without-pain.html
6. https://www.sciencedirect.com/topics/computer-science/gnu-debugger
7. https://www.lambdatest.com/learning-hub/test-execution-tool
8. https://www.guru99.com/top-20-test-management-tools.html
9. https://www.wwt.com/article/what-is-appdynamics-ciscos-apm-solution-explained
10. https://lukasatkinson.de/2017/what-is-a-source-code-comprehension-tool/
11. https://www.geeksforgeeks.org/software-re-engineering/
12.https://en.wikipedia.org/wiki/Syntax_highlighting#:~:text=Syntax%20highlighting%20is%20one
%20strategy,find%20errors%20in%20their%20program.
17 | P a g e