1. Q-1 What is software? Explain its characteristics.
Ans. Definition 1 :- Computer software, or just software, is a collection of computer programs and
related data that provides the instructions for telling a computer what to do and how to do it.
Definition 2 :- In other words, software is a set of programs, procedures, algorithms and its
documentation concerned with the operation of a data processing system.
While developing any kind of software product, the first question in any developer's mind is, “What are
the qualities that a good software should have ?" Well before going into technical characteristics, I
would like to state the obvious expectations one has from any software. First and foremost, a software
product must meet all the requirements of the customer or end-user. Also, the cost of developing and
maintaining the software should be low. The development of software should be completed in the
specified time-frame.
Well these were the obvious things which are expected from any project (and software development is
a project in itself). Now lets take a look at Software Quality factors. These set of factors can be easily
explained by Software Quality Triangle. The three characteristics of good application software are :-
1) Operational Characteristics
2) Transition Characteristics
3) Revision Characteristics
Software Quality Triangle
Software Quality Triangle with characteristics
16 Characteristics of a Good Software
2. What Operational Characteristics should a software have ?
These are functionality based factors and related to 'exterior quality' of software. Various Operational
Characteristics of software are :
a) Correctness: The software which we are making should meet all the specifications stated by the
customer.
b) Usability/Learnability: The amount of efforts or time required to learn how to use the software
should be less. This makes the software user-friendly even for IT-illiterate people.
c) Integrity : Just like medicines have side-effects, in the same way a software may have a side-effect
i.e. it may affect the working of another application. But a quality software should not have side effects.
d) Reliability : The software product should not have any defects. Not only this, it shouldn't fail while
execution.
e) Efficiency : This characteristic relates to the way software uses the available resources. The software
should make effective use of the storage space and execute command as per desired timing
requirements.
f) Security : With the increase in security threats nowadays, this factor is gaining importance. The
software shouldn't have ill effects on data / hardware. Proper measures should be taken to keep data
secure from external threats.
g) Safety : The software should not be hazardous to the environment/life.
What are the Revision Characteristics of software ?
These engineering based factors of the relate to 'interior quality' of the software like efficiency,
documentation and structure. These factors should be in-build in any good software. Various Revision
Characteristics of software are :-
a) Maintainability : Maintenance of the software should be easy for any kind of user.
b) Flexibility : Changes in the software should be easy to make.
c) Extensibility : It should be easy to increase the functions performed by it.
d) Scalability : It should be very easy to upgrade it for more work(or for more number of users).
e) Testability : Testing the software should be easy.
f) Modularity : Any software is said to made of units and modules which are independent of each other.
These modules are then integrated to make the final software. If the software is divided into separate
independent parts that can be modified, tested separately, it has high modularity.
Transition Characteristics of the software :
a) Interoperability : Interoperability is the ability of software to exchange information with other
applications and make use of information transparently.
b) Reusability : If we are able to use the software code with some modifications for different purpose
then we call software to be reusable.
c)Portability : The ability of software to perform same functions across all environments and platforms,
demonstrate its portability.
3. Q-2 What is software engineer ?
Ans. Software engineering (SE) is the application of a systematic, disciplined, quantifiable(પરિરિમાણમાં)
approach to the design, development, operation, and maintenance of software, and the study of these
approaches; that is, the application of engineering to software.[1] [2] [3] The term software engineering
first appeared in the 1968 NATO Software Engineering Conference, and was meant to provoke thought
regarding the perceived "software crisis" at the time.
Summery
o Real software runs on computers. It is a sequence of ones and zeros that is stored on some magnetic
media. It is not a program listing in programming language.
o A program listing is a document that represents a software design. Compilers and linkers actually build
software designs.
o Real software is incredibly cheap to build, and getting cheaper all the time as computers get
faster.
o Real software is incredibly expensive to design. This is true because software is incredibly
complex and because practically all the steps of a software project are part of the design process.
o Programming is a design activity -- a good software design process recognizes this and does
not hesitate to code when coding makes sense.
o Coding actually makes sense more often than believed. Often the process of rendering the
design in code will reveal oversights and the need for additional design effort. The earlier this
occurs, the better the design will be.
o Since software is so cheap to build, formal engineering validation methods are not of much use
in real world software development. It is easier and cheaper to just build the design and test it
than to try to prove it.
o Testing and debugging are design activities -- they are the software equivalent of the design
validation and refinement processes of other engineering disciplines. A good software design
process recognizes this and does not try to short change the steps.
o There are other design activities -- call them top level design, module design, structural design,
architectural design, or whatever. A good software design process recognizes this and
deliberately includes the steps.
o All design activities interact. A good software design process recognizes this and allows the
design to change, sometimes radically, as various design steps reveal the need.
4. o Many different software design notations are potentially useful -- as auxiliary documentation
and as tools to help facilitate the design process. They are not a software design.
o Software development is still more a craft than an engineering discipline. This is primarily
because of a lack of rigor in the critical processes of validating and improving a design.
o Ultimately, real advances in software development depend upon advances in programming
techniques, which in turn mean advances in programming languages. C++ is such an advance. It
has exploded in popularity because it is a mainstream programming language that directly
supports better software design.
o C++ is a step in the right direction, but still more advances are needed.
Q-3 how many Types of software? Explain each in brief.
Practical computer systems divide software systems into three major classes: system software,
programming software and application software
• System software
• Programming software
• Application software
5. A layer structure showing where the operating system software and application software are
situated while running on a typical desktop computer
Software includes all the various forms and roles that digitally stored data may have and play in
a computer (or similar system), regardless of whether
1. System software
System software is computer software designed to operate the computer hardware to provide basic
functionality and to provide a platform for running application software
System software includes device drivers, operating systems, servers, utilities, and window systems.
System software is responsible for managing a variety of independent hardware components.
Its purpose is to unburden the application software programmer from the often complex details of the
particular computer being used, including such accessories as communications devices, printers, device
readers, displays and keyboards, and also to partition the computer's resources such as memory and
processor time in a safe and stable manner.
2. Programming software
Programming software include tools in the form of programs or applications that software developers
use to create, debug, maintain, or otherwise support other programs and applications.
The term usually refers to relatively simple programs such as compilers, debuggers, interpreters, linkers,
and text editors, that can be combined together to accomplish a task, much as one might use multiple
hand tools to fix a physical object. Programming tools are intended to assist a programmer in writing
computer programs, and they may be combined in an integrated development environment (IDE) to
more easily manage all of these functions.
3. Application softwar
Application software is developed to perform in any task that benefits from computation. It is a set of
programs that allows the computer to perform a specific data processing job for the user. It is a broad
category, and encompasses software of many kinds, including the internet browser being used to
display this page.
Application software, also known as an application or an app, is computer software designed to help
the user to perform specific tasks. Examples include enterprise software, accounting software, office
suites, graphics software and media players.
Apps may be bundled with the computer and its system software, or may be published separately.
6. Application software applies the power of a particular computing platform or system software to a
particular purpose. Some applications are available in versions for several different platforms; others
have narrower requirements and are thus called, for example, a Geography application for Windows or
an Android application for education or Linux gaming.