Introduction To Software Engineering: Hari Bohara Janajyoti Multiple Campus
Introduction To Software Engineering: Hari Bohara Janajyoti Multiple Campus
Introduction To Software Engineering: Hari Bohara Janajyoti Multiple Campus
Hari Bohara
Janajyoti Multiple Campus
Outline
• Syllabus
• Definition of software
• What is software engineering
• Why to study software engineering
• What are the characteristics of software
• Attribute of good software
• What are the challenges faced by software engineering
• Difference between software engineering, computer science and system
engineering
• Costs of software engineering
Syllabus
1. Introduction
2. Software Development Process Model
3. Software Requirement Analysis and Specification
4. Software Design
5. Coding
6. Software Testing And Quality Assurance
7. Software Maintenance
8. Managing Software Projects
Software
• Software is the collection of Computer programs associated
with documentation & configuration data that is needed to
make these programs operate correctly.
Software product are of two types
Generic: Developed to be sold to a range of different
customer.
Bespoke (custom): developed for a single customer
according to their specification.
Software Engineering
Software Engineering is a systematic, disciplined and quantifiable
approach in the development, operation and maintenance of software.
Its focus is the cost-effective development of high-quality software.
It is a systematic collection of past experience arranged in the form
of methodology and guidelines.
Software engineers adopt a systematic and organized approach to
solve the problem using appropriate tools and techniques depending
on the problem.
Why Study Software Engineering
To acquire skills to develop large programs.
To develop ability to solve complex programming problem.
To learn standardized technique.
To acquire skills to be a better programmer.
Characteristics of software
Software is a logical component and has characteristics that are
considerably different than those of hardware. Characteristics of
software are:
• High quality is achieved through design.
• Software does not wear out. Hardware is susceptible to
environmental maladies such as dust, vibration and temperature but
software is not.
• Software is custom made rather then reassembled through the
components.
Attribute of good software
• Functionality: Software developed should be full fill the requirement
of the user.
• Maintainability: Software written must evolve to meet the changing
requirement of the customer.
• Efficiency: Software should not waste system resources such as
processor and memory.
• Usability: Software must be usable with appropriate user interface
and documentation.
• Dependability: Software should be secure and safe to use.
Continue…
• Portability: Software should be easily transferred from one
environment to another. Should be adaptable, installable and
replaceable.
• Reliability: Software should maintain its level of performance. Should
be Recoverable, Fault Tolerant, and Mature.
Challenges faced by Software Engineering
• Heterogeneity Challenge: Software should be flexible enough to cope
with heterogenous system.
• Delivery Challenge: Software should be developed in the required
time without compromising quality.
• Trust Challenge: Software developed should be trusted. E.g. Web
application, web page
Differences Between Software Engineering,
Computer Science and System Engineering
• Computer science is concerned with theory and fundamentals that
underlies computer and software systems.
• Software engineering is concerned with the practicalities of
developing and delivering useful software. Computer science theories
are currently insufficient to act as a complete support for software
engineering.
• System engineering is concerned with all aspects of computer-based
systems development including hardware, software and process
engineering. Software engineering is part of this process.
Cost of Software Engineering
• Roughly 60% of costs are development costs and 40% are testing
costs. For custom software, evolution costs (Change Analysis, release
planning, system implementation) often exceed development costs
• Costs vary depending on the type of system being developed and the
requirements of system attributes such as performance and system
Reliability.
• Will study about the cost of Software Engineering in detail later.