definition(s) of software engineering
DESCRIPTION
Definition(s) of Software Engineering. Establishment and use of sound engineering principles to obtain economically software that is reliable and works on real machines efficiently . (Fritz Bauer). Definition(s) of Software Engineering (cont’d). - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/1.jpg)
Software Engineering - Introduction
1
Definition(s) of Software Engineering
Establishment and use of sound engineering principles to obtain economically software that is reliable and works on real machines efficiently. (Fritz Bauer)
![Page 2: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/2.jpg)
Software Engineering - Introduction
2
Definition(s) of Software Engineering (cont’d)
(i) Application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software.
(ii) The study of approaches as in (i). (IEEE 93)
![Page 3: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/3.jpg)
Software Engineering - Introduction
3
• By “systematic” we mean:
Following a well-defined sequence of activities,
- in which desired outputs (deliverables) are well-defined
- by using well-defined inputs(i.e. documented syntax, semantics, context and other relevant properties of the input)
- in a well-defined process (e.g. using organizational standards for interprocess communication, data formats, error handling etc.)
- whose outputs are in turn used similarly as inputs in subsequent process(es),
- until the final output is achieved,
- and where the correctness of the output is verifiable. Note: The “inputs” and “outputs” most often refer to requirements, software specifications, the software itself, documentation, test inputs/outputs and similar software artifacts.Back
![Page 4: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/4.jpg)
Software Engineering - Introduction
4
By “disciplined” we mean:
• Each process is followed using organizational principles (e.g. who manages whom, who is responsible for what?),
• Intermediate results are carefully documented, as well as final results,
• Actions are traceable as to their causes, individuals involved, time of occurrence and circumstances.
Back
![Page 5: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/5.jpg)
Software Engineering - Introduction
5
By “quantifiable” we mean:
• The size and extent of the required effort
(size of output code, data, documentation, manpower, duration, budget for development, expected error rate and user support)
are predictable within justifiable and acceptable bounds
![Page 6: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/6.jpg)
Software Engineering - Introduction
6
What SWE is not:
• Just “programming” or “coding”
• System engineering (in a broad sense)although software engineers may be called upon to participate in system engineering analyses
• Software salesmenshipalthough they may be called upon to help analyze customer needs
![Page 7: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/7.jpg)
Software Engineering - Introduction
7
Why Do We Need SWE?To make the production of software
• easier • more disciplined and predictable • more economical.
• Back
![Page 8: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/8.jpg)
Software Engineering - Introduction
8
Evolution of Software Technology
• Operating systems
• Languages
• Development tools
• Database and networking technology
• Project management tools
![Page 9: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/9.jpg)
Software Engineering - Introduction
9
Evolution of machine architecture
• Improvement of machine instruction sets• Invention mass storage devices• Machine interrupt schemes• Much larger physical memories • Virtual memory (paging)• Cache memory• Fault-tolerant computing• Parallel and multi-processing
![Page 10: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/10.jpg)
Software Engineering - Introduction
10
Evolution of Systems Interconnection
• Local area networking(peer-to-peer and hierarchical connection, servers)
• Wide area networking(dial-up and fixed connections)
• Networking architecture
• Communication protocols
![Page 11: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/11.jpg)
Software Engineering - Introduction
11
Database Systems
• From simple sequential “files” to “databases”
• Indexed files• Hierarchical databases• Network-style databases• Relational databases• More recently, object-oriented
databases• Database management systems
![Page 12: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/12.jpg)
Software Engineering - Introduction
12
Decreasing Hardware Costs
• Ever smaller and faster components
• More reliable
• Requiring less energy
• More easily replaceable
![Page 13: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/13.jpg)
Software Engineering - Introduction
13
Increasing Demand
• Improved user interfaces
• Cheaper and faster machines
• Increase in application areas
• Improved connections
• Most recently the Internet!
![Page 14: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/14.jpg)
Software Engineering - Introduction
14
Differences between Software Engineering and Hardware Engineering
• Software is developed or engineered, not manufactured.
• Software doesn’t wear out (in the usual sense). It is updated or replaced with a new version.
• Most software tends to be custom-builteventhough there is a movement toward component-
based assembly.
![Page 15: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/15.jpg)
Software Engineering - Introduction
15
Hardware Failure Pattern“Bathtub Curve”
![Page 16: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/16.jpg)
Software Engineering - Introduction
16
Software Failure Pattern
![Page 17: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/17.jpg)
Software Engineering - Introduction
17
Examples of Application Areas
• System software
(Operating systems, compilers, databases, graphics packages, communication ...)
• Real-time software
Interacts with external eventsHas tight timing requirementsRequires high-security, reliability and availability Often mission-critical (can not be allowed to fail)
![Page 18: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/18.jpg)
Software Engineering - Introduction
18
Application Areas (cont’d)• Business Software
Ranging from simple to very complexRequiring its own expert knowledgeVery large filesNeeds telecommunication, devices like
point-of-sale (POS) terminalsHighly organized computer organization
and personnel (esp. in large companies)
Very detailed records covering long periods
![Page 19: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/19.jpg)
Software Engineering - Introduction
19
Engineering and Scientific Software
• Complex formula evaluation
• Very high accuracy
• Interaction with data collection devices(e.g. Sensors) often at high speeds
• High resolution graphic displays of large amounts of data
• Parallel and multi-processor applications
![Page 20: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/20.jpg)
Software Engineering - Introduction
20
Embedded Software
• Software embedded in non-computer devices (e.g. cars, planes, cell phones, home appliances such as refrigerators) through special-purpose processors
• Must be resistant to failures, tough climactic conditions, rough handling
• Often optimized to require least memory and still maintain speed
![Page 21: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/21.jpg)
Software Engineering - Introduction
21
Military Software
• Often real-time
• Engineering/scientific
• Including embedded components
• High-technology (communications)
• High security and error control (reliability)
![Page 22: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/22.jpg)
Software Engineering - Introduction
22
Video Game Software
• Graphic and artistic content
• Video-type action
• Very high timing requirements
• High-sped user interaction
• Graphics and sound integrated
![Page 23: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/23.jpg)
Software Engineering - Introduction
23
Artificial Intelligence Software
Involves: Problem solving,
Complex symbolic programming(e.g. pattern recognition, theorem proving, virtual reality concepts, game playing etc.)
Physical system control (e.g. Robotic arm-leg movement)
Vision, sound/voice recognition...
![Page 24: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/24.jpg)
Software Engineering - Introduction
24
Web-based Applications
• General public information (news, info about organizations and society)
• Business-to-consumer communication(product promotions, sales)
• Business-to-business communication• Electronic mail• “Surfing”• Seach engines
![Page 25: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/25.jpg)
Software Engineering - Introduction
25
QUALITY FOCUS
Methods
Tools
Process
Building Blocks of Software Engineering
![Page 26: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/26.jpg)
Software Engineering - Introduction
26
The Generic SWE Approach
• What is the problem to be solved?-- The most important question of all...
-- Do we have sufficient detail ?-- Do we really know what the customer wants?-- Does he agree that that’s what he wants?
![Page 27: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/27.jpg)
Software Engineering - Introduction
27
More questions ...
• How will the solution be realized?
How shall we test the solution once it is constructed?
How shall we maintain the system and support the users in the short and long terms?
![Page 28: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/28.jpg)
Software Engineering - Introduction
28
The Software Development Process
The Software Development Process (also
called the Software Process) is the process used to answer the above questions, dealing with:
• Definition of the problem• Analysis of the problem• The conception and development of a
design• Implementation of the design
![Page 29: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/29.jpg)
The Software Development Process (cont’d)
• Testing
• Documentation
• User Training (if required)
• Maintenance and support
• Enhancement of the product (if required).
![Page 30: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/30.jpg)
The Software Development Process (cont’d)
The sequence and extent of activities needed to carry out the above process varies depending on:
• How well the user (customer) understands his own needs
• How well the developers know the application area
![Page 31: Definition(s) of Software Engineering](https://reader036.vdocument.in/reader036/viewer/2022062422/568134d1550346895d9bf96d/html5/thumbnails/31.jpg)
Software Process Models 31
The Software Development Process (cont’d)
• Resources available for the project (time, technology, money, people)
• The type of project (internal/external, level of secrecy, amount of documentation, user support required etc)
• The developer organization
... And many other factors