Se 1
Se 1
UNIT .1
NOTES
1.2 INTRODUCTION
Software Engineering is an engineering discipline which is used to solve larger and more
complex problem in cost-effective and efficient ways. It is mainly related with software system
implementation, operation and maintenance etc. Software engineering uses systematic
approaches, methods, tools and procedure to solve a problem.
In this unit we will introduce you a brief description of software components, software
characteristics, different software attributes, software processes and also the phases of a
software development life cycle (starting from software requirement specification to design,
testing, implementation and maintenance phase) and different software development life cycle
models.
1.3 SOFTWARE COMPONENTS
A software component is an independent software unit that can be composed with other
components to create a software system.
Component characteristics:
Independent: A component should be independent
Composable: It means that all the external instruction must take place through publicly
defined interfaces.
Deployable: A component has to be self-contained and must be able to operate as a
stand-alone entity.
1|Page
Fundamental Principle of component:
Independent Software development:
Large software system are necessarily assembled from components develop by
different people.
To facilitate independent development, it is essential to decouple developers and
users of components.
Reusability:
Some parts of a large system will necessarily be special-purpose software, it is
essential to design and assemble pre-existing components in developing new
components.
Software quality:
A component or system needs to be shown to have desired behavior, either
through logical reasoning or testing.
Terms & attributes used in Software component model:
Syntax: It refers to the grammar or rules followed in the code as per the specific
programming language.
Semantics: It refers to the actual meaning and view of components .A component is
associated with name, an interface and body that includes the code.
Composition: This relates to the construction and working together of components.
Component Based Software development (CBSD) or Component Based Software
engineering (CBSE)
Component-based software engineering (CBSE) is an approach to software that relies
on software reuse. It is based on the idea to develop software system by selecting appropriate
off-the-shelf components and then to assemble them with a well-defined software architecture.
Here Efficiency and flexibility is improved due to the fact that component can easier be added or
replaced. CBSD is best implemented using more modern software technologies like:
COM
JAVA
EJB
Active X
CORBA etc.
2|Page
1.4 SOFTWARE CHARECTERSTICS
Now we are going to discuss about the different software characteristics that the good
software should have. While developing any kind of software product, the first question in
developers mind is, “What are the characteristics that good software should have?”In a simple
way the answer is that good software must meet all the requirement of customer and the cost of
developing and maintaining the software is low.
But these are the obvious things which are expected from any software. If we observe
the technical characteristics of software then there are different characteristics. Following are
the different characteristics which can be easily explain with the help of software quality triangle
(Fig.1.1)
The three characteristics of good application software are:-
1) Operational Characteristics
2) Transition Characteristics
3) Revision Characteristics
3|Page
1.4.1 OPERATIONAL CHARACTERISTICS
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: 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 software may have a
side-effect i.e. it may affect the working of another application. But 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.
1.4.2: TRANSITION CHARACTERISTICS OF THE SOFTWARE
Various transition characteristics of software are:
a) Interoperability: Interoperability is the ability of software to exchange information with other
applications and make use of information transparently.
4|Page
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.
1.4.3 REVISION CHARACTERISTICS OF SOFTWARE
Revision characteristics relate to 'interior quality' of the software like efficiency, documentation
and structure etc. 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 make 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.
5|Page
6. PROBLEM OF DIFFERENT VERSIONS OF SOFTWARE.
7. ECURITY PROBLEM FOR PROTECTED DATA IN SOFTWARE
1.6 SOFTWARE ENGINEERING PROCESSES
The term process means “a particular method of doing something, generally involving a
number of steps or operations”. In Software engineering, the phrase software process refers to
the methods of developing software. The process that deals with the technical and management
issues of software development is called software process. Many different types of activities
need to be performed to develop software. All these activities together comprise the software
process.
1.6.1 DESIRED CHARACTERISTICS OF A SOFTWARE PROCESS
Let us discuss some of the important desirable characteristics of the software process:
Predictability: Predictability of a project determines how accurately the outcome of
process in a project can be predicted (About quality, cost estimation, LOC etc) before
the project is completed. Predictability can be considered a fundamental property of
any process.
Support testability and Maintainability: In software Engineering maintenance cost
generally exceed the development costs. Clearly, one of the objectives of the
development project should be to produce software that easy to maintain. And the
process used should ensure this maintainability. The Second importance about process
is testing. Overall we can say that the goal of the process should not be to reduce the
effort of design and coding, but to reduce the cost of testing and maintenance. Both
testing and maintenance depend heavily on the quality of design and code, and this cost
can be considerably reduced if the software is designed and coded to make testing and
maintenance easier.
Support change: Software change for a variety of reasons. Though changes were
always a part of life, change in today’s world is much faster. As organization a business
change, the software supporting the business has to change. Hence, any model that
builds software and makes change very hard will not be suitable in many situations.
Early defect removal: Software development is actually going through some phases
(see 1.8). Error can occur at any phase during development. We should attempt to detect
errors that occur in phase during phase itself and should not wait until testing phase to
detect errors. Error detection and correction should be a continuous process that is done
throughout software development.
Process improvement and Feedback: A process is not a static entity. Improving the
quality and reducing the cost of product are fundamental goal of any engineering discipline.
Process improvement is also an objective in a large project where feedback from early
parts of the project can be used to improve the execution of the rest of the project.
1.7 SOFTWARE QUALITY ATTRIBUTES
Like all engineering discipline, software engineering has also three major attributes:
Cost
Schedule
Quality
The cost of developing a system is the cost of the resources used for system. Which in the
case of software is determined by the manpower cost, as development is largely labor-intensive.
Hence, the cost of a software project is often measured in terms of person-month spent in a
project.
6|Page
Person-month: In software engineering Person-month is a measure of work effort. It can be
converted into dollar amount by multiplying it with average dollar cost.
Calculation:
If a project will take 2 months to finish with 3 people working full time on it, the project
requires
2*3=6 person-month effort.
If an employee worked 20 days on a project, his contribution to the project is 1*20/30 =
0.6666
person-month. (Note that month is considered 30 days in such calculations.)
Schedule is also an important factor in software projects. Business trends are dictating
that the time to market of a product should be reduced; i.e. the cycle time from concept to
delivery should be small. For software this means that it needs to be developed faster.
The other major attribute of any production discipline is quality. Today, quality is the
main thing. So, clearly developing high quality Software is another fundamental goal of software
engineering. However the concept of quality in the context of software needs further discussion.
We use the international standard on software product quality as the basis of our discussion
here. According to the quality model adopted by this standard, software quality comprise of six
main attributes as shown in the fig 1.2-
Functionality: The Capability to provide functions which meet stated and implied needs
when the software is used.
Reliability: The capability to maintain a specified level of performance.
Usability: The capability to be understood, learned, and used.
Efficiency: The capability to provide appropriate performance relative to the amount of
resources used.
Maintainability: The capability to be modified for the purpose of making corrections,
improvements etc.
Portability: The capability of the software to be work properly in different environment
without applying any action.
7|Page