Deployment involves distributing and installing the software and any other components of the
system such as databases, special hardware etc. It also involves managing the transition from
any previous system.
7. Managing software configurations:
Configuration management involves identifying all the components that compose a software
system, including files containing requirements, designs and source code. It also involves
keeping track of these as they change, and ensuring that changes are performed in an
organized way. All software engineers must participate in the configuration management of
the parts of the system for which they are responsible.
8. Managing the process:
Managing software projects is considered an integral part of software engineering. All
software engineers assist their managers to some extent, and most will, at some point in their
careers, become managers themselves.
The manager has to undertake the following tasks:
■ Estimating the cost of the system. This involves studying the requirements and
determining how much effort they will take to design and implement.
■ Planning. This is the process of allocating work to particular developers, and setting a
schedule with deadlines. Both cost estimates and plans need to be examined and revised on a
regular basis, since initial estimates will only be rough.
Data abstraction refers to providing only essential information to the outside world and
hiding their background details, i.e., to represent the needed information in program without
presenting the details.
Data abstraction is a programming (and design) technique that relies on the separation of
interface and implementation.
In C++, classes provides great level of data abstraction. They provide sufficient public
methods to the outside world to play with the functionality of the object and to manipulate
object data, i.e., state without actually knowing how class has been implemented internally.
One of the most important concepts in object-oriented programming is that of inheritance.
Inheritance allows us to define a class in terms of another class, which makes it easier to
create and maintain an application. This also provides an opportunity to reuse the code
functionality and fast implementation time.
When creating a class, instead of writing completely new data members and member
functions, the programmer can designate that the new class should inherit the members of an
existing class. This existing class is called the baseclass, and the new class is referred to as
the derived class.
The idea of inheritance implements the is a relationship. For example, mammal IS-A animal,
dog IS-A mammal hence dog IS-A animal as well and so on.
Base and Derived Classes
A class can be derived from more than one classes, which means it can inherit data and
functions from multiple base classes. To define a derived class, we use a class derivation list
to specify the base class(es). A class derivation list names one or more base classes and has
the form −
class derived-class: access-specifier base-class
Where access-specifier is one of public, protected, or private, and base-class is the name of
a previously defined class. If the access-specifier is not used, then it is private by default.
Type of Inheritance
When deriving a class from a base class, the base class may be inherited through public,
protected or private inheritance. The type of inheritance is specified by the access-specifier
as explained above.
We hardly use protected or private inheritance, but public inheritance is commonly used.
While using different type of inheritance, following rules are applied −