This document defines software and discusses key concepts in software engineering. It states that software includes computer programs, data structures, and documentation. Software products can be generic, sold to any customer, or customized to meet a specific customer's needs. The specification for generic products is owned by the developer, while customized product specifications are owned by the customer. Software engineering aims to develop software cost-effectively using appropriate theories, methods and tools across the entire software development life cycle.
Right Money Management App For Your Financial Goals
Software engineering 1 software concepts
1. Software Engineering: 1
Software Concepts
Prof Neeraj Bhargava
Vaibhav Khanna
Department of Computer Science
School of Engineering and Systems Sciences
Maharshi Dayanand Saraswati University Ajmer
2. What is software
• Computer programs and associated documentation.
• The product that software professionals build and then
support over the long term.
• Software encompasses:
– (1) instructions (computer programs) that when executed
provide desired features, function, and performance;
– (2) data structures that enable the programs to adequately
store and manipulate information and
– (3) documentation that describes the operation and use of
the programs
• Software products may be developed for a particular
customer or may be developed for a general market.
3. Software products
• Generic products
– Stand-alone systems that are marketed and sold to
any customer who wishes to buy them.
– Examples – PC software such as editing, graphics
programs, project management tools; CAD software;
software for specific markets
• Customized products
– Software that is commissioned by a specific customer
to meet their own needs.
– Examples – embedded control systems, air traffic
control software, traffic monitoring systems.
4. Software Product specification
• Generic products
– The specification of what the software should do
is owned by the software developer and decisions
on software change are made by the developer.
• Customized products
– The specification of what the software should do
is owned by the customer for the software and
they make decisions on software changes that are
required.
5. Why Software is Important?
• The economies of ALL developed nations are
dependent on software.
• More and more systems are software controlled (
transportation, medical, telecommunications, military,
industrial, entertainment,)
• Software engineering is concerned with theories,
methods and tools for professional software
development.
• Expenditure on software represents a significant
fraction of GNP in all developed countries
• Software engineering is concerned with cost-effective
software development.
6. Features of Software
• Software is developed or engineered, it is not
manufactured in the classical sense.
• Software doesn't "wear out.” but it deteriorates (due to
change).
• Hardware has bathtub curve of failure rate ( high failure
rate in the beginning, then drop to steady state, then
cumulative effects of dust, vibration, abuse occurs).
• Although the industry is moving toward component-based
construction most software continues to be custom-built.
• Modern reusable components encapsulate data and
processing into software parts to be reused by different
programs. E.g. graphical user interface, window, pull-down
menus in library etc.
8. Attributes of Good Software
• Deliver the required functionality and performance to the
user and should be maintainable, dependable and usable
9. What is Software Engineering
• Software engineering is an engineering discipline that
is concerned with all aspects of software production
from the early stages of system specification through
to maintaining the system after it has gone into use.
• Engineering discipline :
• Using appropriate theories and methods to solve
problems bearing in mind organizational and financial
constraints.
• All aspects of software production :
• Not just technical process of development. Also project
management and the development of tools, methods
etc. to support software production..