Software: Essential Concepts and Importance

What is Software?
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)
that enable the programs to adequately store and
manipulate information and
(3)
(3)that describes the operation and use of the
programs.
2
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 such as appointments systems for dentists.
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.
3
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 costs
Software costs often dominate computer system costs. The
costs of software on a PC are often greater than the hardware
cost.
Software costs 
more to maintain 
than it does to develop. For
systems with a long life, maintenance costs may be several
times development costs.
Software engineering is concerned with cost-effective
software
development.
Features of Software?
Its characteristics that make it different from other things human being
build.
Features of such logical system:
Software is developed or 
engineered
, it is not manufactured in the
classical sense which has quality problem.
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
(e.g. standard screws and off-the-shelf integrated circuits), 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.
6
Wear vs. Deterioration
7
1.
System software: 
such as compilers, editors, file management utilities
2.
Application software
: 
stand-alone programs for specific needs.
3.
Engineering/scientific software: 
Such as 
automotive stress analysis,
molecular biology, orbital dynamics
.
4.
Embedded software
 
resides within a product or system. 
(
key pad
control of a
 
microwave oven
, 
digital function of dashboard
 display in a car)
5.
Product-line software 
focus on a limited marketplace to address
mass consumer market. 
(
word processing, graphics, database management
)
6.
WebApps
 
(Web applications) network centric software.
sophisticated computing environments with remote database and
business applications.
7.
AI 
software uses non-numerical algorithm to solve complex
problem. 
Robotics, expert system, pattern recognition game playing
Software (Types) Applications
Open world computing
- 
pervasive, ubiquitous, distributed computing
due to wireless networking. How to allow mobile devices, personal
computer, enterprise system to 
communicate across vast network
.
Netsourcing
-the Web as a computing engine. How to architect simple
and sophisticated applications to target end-users worldwide.
Open source-
”free” source code open to the computing community (a
blessing, but also a potential curse!)
Also ...
  
Data mining
 
•    Grid computing
 
•    Cognitive machines
 
•    Software for nanotechnologies
Software-New Categories
Legacy software are older programs that are
developed decades ago.
The quality of legacy software is poor because it has-
inextensible design,
complex code,
poor and nonexistent documentation,
test cases and
results that are not achieved.
LEGACY SOFTWARE 
LEGACY SOFTWARE 
As time passes legacy systems evolve due to following
reasons:
The software must be
adapted to meet the needs of new computing
environment or technology.
enhanced to implement new business requirements.
extended to make it interoperable with more modern
systems or database.
Re-architected to make it viable within a network
environment
Importance of Software Engineering
More and more, individuals and society rely on advanced
software systems.
We need to be able to produce 
reliable and trustworthy
systems economically and quickly.
It is usually 
cheaper, in the long run
, to use software
engineering methods and techniques.
The majority of costs are the 
costs of changing 
the
software after it has gone into use.
Definition of 
Engineering
:
Application of science, tools and methods to
find cost effective solution to problems.
What is 
software engineering
?
Software engineering is an 
engineering
discipline
 that is concerned with all aspects of
software production.
Introduction to software Engineering
The seminal definition[Fritz Bauer]:
[Software engineering is] the establishment and use of
sound engineering principles
 
in order to obtain
economically
 
software that is 
reliable and works
efficiently
 on 
real machines
.
The 
IEEE
 definition:
Software Engineering: (1) The application of a
systematic, disciplined, quantifiable approach 
to the
development, operation, and maintenance 
of software;
that is, the application of engineering to software.
(2) The
 
study of approaches as in (1).
Software Engineering Definition
A Quality Focus:
Any engineering approach must rest on an organizational
commitment to 
quality
.
Total quality management, six sigma
 and similar philosophies
foster a continuous process improvement culture.
This culture ultimately leads to the development of increasingly
more effective approaches to software engineering.
The 
bedrock
 that supports software engineering is a 
quality focus
.
SOFTWARE ENGINEERING-
A LAYERED TECHNOLOGY
Process Layer: 
The 
foundation
 for software engineering.
Software Engineering process 
is the glue
 that holds the
technology layers together 
and 
enables rational and
timely development
 of computer software.
Process 
defines a framework
 (KPA)-
basis for 
management control of Software Projects
,
the context for applying 
technical methods
,
works products 
( like models, documents, data, reports, forms
etc.)
 are produced,
milestones
 are established,
quality
 is ensured and
change
 is properly managed.
SOFTWARE ENGINEERING-
A LAYERED TECHNOLOGY
Methods:
Methods provide the technical- 
how to‘s 
for building software.
Methods includes task such as -
communication, requirements
analysis, design modeling, program construction, testing and
support
.
Tools:
Software Engineering tools provide 
automated or semi-
automated support 
for the process and the methods.
Tools are integrated so that information created by one tool can be
used by another,
A system(tool) for the support of software development is called
computer-aided software engineering
(CASE).
SOFTWARE ENGINEERING-
A LAYERED TECHNOLOGY
A process is a 
collection of activities, actions and tasks
that are performed when some work product is to be
created.
An activity
: such as communication with stakeholders
is applied to all applications.
An action
: such as architecture design consists of set of
tasks.
Task: 
focuses on small but well defined objectives.
Software Process
A 
Generic Process framework
Establishes the foundation for a complete
software process.
Identifies a number of 
framework
activities 
applicable to all software projects
Also include a set of 
umbrella activities
that are applicable across the entire
software process.
1.
Communication
: communicate with customer to
understand objectives and gather requirements.
2.
Planning
: creates a “map” defines the work by
describing the tasks, risks and resources, work
products and work schedule.
3.
Modeling
: Create a “sketch”, what it looks like
architecturally, how the constituent parts fit
together and other characteristics.
4.
Construction
: code generation and the testing.
5.
Deployment
: Delivered to the customer who
evaluates the products and provides feedback based
on the evaluation.
Five Activities of a 
Generic Process framework
Process Flow
Umbrella Activities
Umbrella Activities help team to 
manage and control 
progress,
quality, change, and risk.
Software project tracking and control: 
assess progress
against the plan and take actions to maintain the
schedule.
Risk management
: assesses risks that may affect the
outcome and quality of product.
Software quality assurance
: defines and conduct
activities to ensure quality.
Technical reviews
: assesses work products to uncover
and remove errors before going to the next activity.
Umbrella Activities
Measurement: 
define and collects process, project,
and product measures, to ensure stakeholder’s needs
are met.
Software configuration management
: 
manage the
effects of change throughout the software process.
Reusability management
: 
defines criteria for work
product reuse and establishes mechanism to achieve
reusable components.
Work product preparation and production
: 
create
work products such as models, documents, logs,
forms and lists.
Slide Note
Embed
Share

Software is the product of instructions and programs designed by professionals to fulfill specific functions and tasks. It can be generic, stand-alone products for broad markets or customized for individual needs. The importance of software is evident in its role in modern economies and various sectors. Despite dominating computer system costs, software is crucial for the functionality and control of diverse systems. The distinct features of software, such as its development process and adaptability, set it apart from traditional manufactured products. Software engineering focuses on cost-effective development to meet evolving demands and technological advancements.

  • Software Development
  • Importance
  • Customization
  • Cost-Efficiency
  • Modern Economies

Uploaded on Oct 09, 2024 | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. What is Software? 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)that enable the programs to adequately store and manipulate information and (3)(3)that describes the operation and use of the programs. 2

  2. 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 such as appointments systems for dentists. 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. 3

  3. 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.

  4. Software costs Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost. Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs. Software engineering is concerned with cost-effective software development.

  5. Features of Software? Its characteristics that make it different from other things human being build. Features of such logical system: Software is developed or engineered, it is not manufactured in the classical sense which has quality problem. 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 (e.g. standard screws and off-the-shelf integrated circuits), 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. 6

  6. Wear vs. Deterioration 7

  7. Software (Types) Applications 1. System software: such as compilers, editors, file management utilities 2. Application software: stand-alone programs for specific needs. 3. Engineering/scientific software: Such as automotive stress analysis, molecular biology, orbital dynamics. 4. Embedded softwareresides within a product or system. (key pad control of amicrowave oven, digital function of dashboard display in a car) 5. Product-line software focus on a limited marketplace to address mass consumer market. (word processing, graphics, database management) 6. WebApps(Web applications) network centric software. sophisticated computing environments with remote database and business applications. 7. AI software uses non-numerical algorithm to solve complex problem. Robotics, expert system, pattern recognition game playing

  8. Software-New Categories Open world computing- pervasive, ubiquitous, distributed computing due to wireless networking. How to allow mobile devices, personal computer, enterprise system to communicate across vast network. Netsourcing-the Web as a computing engine. How to architect simple and sophisticated applications to target end-users worldwide. Open source- free source code open to the computing community (a blessing, but also a potential curse!) Also ... Data mining Grid computing Cognitive machines Software for nanotechnologies

  9. LEGACY SOFTWARE Legacy software are older programs that are developed decades ago. The quality of legacy software is poor because it has- inextensible design, complex code, poor and nonexistent documentation, test cases and results that are not achieved.

  10. LEGACY SOFTWARE As time passes legacy systems evolve due to following reasons: The software must be adapted to meet the needs of new computing environment or technology. enhanced to implement new business requirements. extended to make it interoperable with more modern systems or database. Re-architected to make it viable within a network environment

  11. Importance of Software Engineering More and more, individuals and society rely on advanced software systems. We need to be able to produce reliable and trustworthy systems economically and quickly. It is usually cheaper, in the long run, to use software engineering methods and techniques. The majority of costs are the costs of changing the software after it has gone into use.

  12. Introduction to software Engineering Definition of Engineering: Application of science, tools and methods to find cost effective solution to problems. What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production.

  13. Software Engineering Definition The seminal definition[Fritz Bauer]: [Software engineering is] the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. The IEEE definition: Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) Thestudy of approaches as in (1).

  14. SOFTWARE ENGINEERING-A LAYERED TECHNOLOGY A Quality Focus: Any engineering approach must rest on an organizational commitment to quality. Total quality management, six sigma and similar philosophies foster a continuous process improvement culture. This culture ultimately leads to the development of increasingly more effective approaches to software engineering. The bedrock that supports software engineering is a quality focus.

  15. SOFTWARE ENGINEERING-A LAYERED TECHNOLOGY Process Layer: The foundation for software engineering. Software Engineering process is the glue that holds the technology layers together and enables rational and timely development of computer software. Process defines a framework (KPA)- basis for management control of Software Projects, the context for applying technical methods, works products ( like models, documents, data, reports, forms etc.) are produced, milestones are established, quality is ensured and change is properly managed.

  16. SOFTWARE ENGINEERING-A LAYERED TECHNOLOGY Methods: Methods provide the technical- how to sfor building software. Methods includes task such as -communication, requirements analysis, design modeling, program construction, testing and support. Tools: Software Engineering tools provide automated or semi- automated support for the process and the methods. Tools are integrated so that information created by one tool can be used by another, A system(tool) for the support of software development is called computer-aided software engineering(CASE).

  17. Software Process A process is a collection of activities, actions and tasks that are performed when some work product is to be created. An activity: such as communication with stakeholders is applied to all applications. An action: such as architecture design consists of set of tasks. Task: focuses on small but well defined objectives.

  18. A Generic Process framework Establishes the foundation for a complete software process. Identifies a number of framework activities applicable to all software projects Also include a set of umbrella activities that are applicable across the entire software process.

  19. Five Activities of a Generic Process framework 1. Communication: communicate with customer to understand objectives and gather requirements. 2. Planning: creates a map defines the work by describing the tasks, risks and resources, work products and work schedule. 3. Modeling: Create a sketch , what it looks like architecturally, how the constituent parts fit together and other characteristics. 4. Construction: code generation and the testing. 5. Deployment: Delivered to the customer who evaluates the products and provides feedback based on the evaluation.

  20. Process Flow

  21. Umbrella Activities Umbrella Activities help team to manage and control progress, quality, change, and risk. Software project tracking and control: assess progress against the plan and take actions to maintain the schedule. Risk management: assesses risks that may affect the outcome and quality of product. Software quality assurance: defines and conduct activities to ensure quality. Technical reviews: assesses work products to uncover and remove errors before going to the next activity.

  22. Umbrella Activities Measurement: define and collects process, project, and product measures, to ensure stakeholder s needs are met. Software configuration management: manage the effects of change throughout the software process. Reusability management: defines criteria for work product reuse and establishes mechanism to achieve reusable components. Work product preparation and production: create work products such as models, documents, logs, forms and lists.

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#