-1-
SOFTWARE ENGINEERING
IT 501/601
INTRODUCTION
SOFTWARE:
Software is a generic term for organized collections of
computer data and instructions.
System software is responsible for controlling, integrating,
and managing the individual hardware components of a
computer system.
Operating system, disk formatters, file
managers, display managers, text editors, user
authentication (login) and management tools, and
networking and device control software.
Application software is used to accomplish specific tasks
other than just running the computer system.
Microsoft Office - word processor, spreadsheet,
database, etc. DBMS – SQL, DDL, DML, TCL
Introduction to Software Engineering1 2
• Software is developed or engineered, it is not
manufactured in the classical sense.
• Software doesn’t wear out.
Increased failure rate
due to side effect
Infant mortality
Change
Failure rate
Failure rate
Wear out
Bath tub curve Actual curve
Idealized curve
Time Time
HARDWARE SOFTWARE
• Most software are custom built, though the industry is
moving towards component-built.
Introduction to Software Engineering1 3
PROGRAMS SOFTWARE PRODUCTS
Developed by individuals for Multiple developers and users, too large- it is
personal use a combination of many programs
Small in size Large in size
Limited functionality Systematically designed functionalities
Author maintains his program Group of people involved
Less user interface Good user interface
Less or no documentation Proper user manual, good documentation
support
Individual effort Team effort
Rigid adherence to SE Systematically designed, tested and
principles is not worthwhile implemented
No training required Trainings given to the users
NB: Use of civil and architectural engineering principles
not required to build a sand castle for children to play.
Introduction to Software Engineering1 4
SOFTWARE PRODUCTS
• Word Processing software -
MS Word, WordPerfect, MS Works, AppleWorks, ....
• Desktop Publishing software - banners, greeting cards,
newsletters..
Adobe PageMaker, MS Word, MS Publisher, AppleWorks, MS
Works, Quark Express,.....
• Spreadsheet software - budgeting, forecasting, Graphs &
Charts…
MS Excel, Quattro Pro, Lotus 1-2-3, MS Works, AppleWorks, ....
• Database software - address, membership and other text info.
MS Access, Filemaker Pro, AppleWorks, MS Works, ...
• Presentation software - create multimedia screens
MS PowerPoint, AppleWorks (slideshows), HyperStudio, Flash,
Director, HyperCard, Digital Chisel, SuperCard, Corel Envoy,...
Introduction to Software Engineering1 5
• Internet Browsers - to surf the Web, to create Web pages
Netscape Navigator, MS Internet Explorer, AOL Browser....
• Email programs - send and receive email.
Netscape Messenger (part of Netscape Communicator), MS
Outlook Express, MS Outlook, Eudora, AOL browser (has
email built in)....
• Graphics Programs (pixel-based) - to touch up photographs
and create graphics from scratch.
Adobe Photoshop, Paint Shop Pro, AppleWorks, MS Works,
MS Paint (comes free on Windows PC's), Painter, ....
• Graphics Programs (vector-based) - creates graphics that
are similar to illustrations or cartoon drawings.
Adobe Illustrator, Corel Draw, AppleWorks, MS Works, MS
Word, .....
• Communications software - allows two computers with
modems to communicate through audio, video, and/or chat-
based means.
MS NetMeeting, AOL Instant Messenger, IRC, ICQ, CU-
SeeMe, ... Introduction to Software Engineering1 6
SOFTWARE ENGINEERING
Software Engineering (SE) is the application of a
systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software,
and the study of these approaches; that is, the
application of engineering to software.
It is the application of Engineering to software because it
integrates significant mathematics, computer science
and practices whose origins are in Engineering.
It is also defined as a systematic approach to the
analysis, design, assessment, implementation, test,
maintenance and reengineering of software, that is,
the application of engineering to software
Introduction to Software Engineering1 7
SW Evolution & Impact
rin g
in e e
Eng
Evolution of
Technology
an art to an Craf Systematic use of past experience
Engineering Unorganized use of past experience
discipline in
last 50 yrs.
Esoteric use of past experience
Art
Time
Exploratory programming: earlier style, own intuitions, whims
and fancies, art is guided by
intuitions. Secrecy in programs.
Craftsmanship: Tradesman sharing his knowledge with the
apprentices and growing of knowledge pool.
Engineering: Systematic organization of knowledge, use of
scientific tools and SW engineering techniques.
Introduction to Software Engineering1 8
Sofware Crisis
1. Software products became larger
2. More professionals got involved
3. Cost escalation, Time overrun
4. More resources (time, budget, HW…)
5. Complexity of project (modularization, integration)
6. Difficulty in debugging, handling errors, altering
7. Skill shortage 8. Low
productivity 9. Lack
of documentation 10. Frequent
crashing, late delivery, project failures
Need for Software Engineering approach.
Introduction to Software Engineering1 9
Software Engineering Practice
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
The Essence of Practice
1. Understand the problem (communication and analysis)
2. Plan a solution (modeling and software design)
3. Carry out the plan (code generation)
4. Examine the result for accuracy (testing & quality assurance)
Introduction to Software Engineering1 10
Software Engineering Conclusion
• Software is developed or engineered, not manufactured
• Software does not “wear out”
• Most software are custom-built, rather than are being
assembled from the existing components.
Introduction to Software Engineering1 11
SOFTWARE CHARACTERISTICS
A good(or successful) software...
...provides the required functionality
...is usable by native) users
...is predictable, reliable and dependable
...functions efficiently
...has a "life-time" (measured in years)
...provides an appropriate user interface¤
...is accompanied by complete documentation
...may have different configurations
...can be "easily" maintained
Introduction to Software Engineering1 12
What the software consumer wants?
1. Cheap to buy
2. Easy to learn
3. Easy to use
4. Solves the problem
5. Reliable
6. Powerful
7. Fast
8. Flexible
9. Available
Introduction to Software Engineering1 13
What the software producer wants?
1. Cheap to produce
2. Quick to produce
3. Well-defined behavior
4. Easy to "sell"
5. Easy to maintain
6. Reliable
7. Easy to use
8. Flexible
Introduction to Software Engineering1 14
Emergence of Sofware Engineering
1. Early Computer Programming
Slow computers, small programs (around 100 lines), assembly
language, less sophistication, individual development on own
intuition, exploratory programming style
2. High-Level Language Programming
Fast and powerful computers, high storage, large and complex
problems, easy to write programs using better languages
(FORTRAN, COBOL, ALGOL), large programs (around 1000
lines), exploratory software development cycle
3. Control Flow-Based Design
Use of control flow structure (flow charting technique) for
design algorithm, easy to write programs correctly with better
understanding, use of GOTO statements and jumping,
unstructured programming
Introduction to Software Engineering1 15
GOTO statements are harmful, need of structured
programming, 3 programming constructs-
sequence - a = b
selection - if-then-else formed the basis of iteration
- do-while structured programming
- Supports single entry and single exit program constructs.
- Modular program
- One module is decomposed into several other modules
- Modules having low interdependency
- Less error prone
- More readable, easier to maintain, requires less effort to
develop compared to unstructured programs
- better support to exception handling
Introduction to Software Engineering1 16
4. Data Structure-Oriented Design
• Both SW (code) and HW (ICs) are ready to handle more
complex and large programming.
• Control flow-based program found to be unsuitable to handle
problems.
• Need for more effective program development techniques.
Design techniques based on principles:
• Design program’s data structure
• Derive the program design from the data structure
• Adopt JSP (Jackson’s Structured Programming) methodology
designing the notations for sequence, selection and iteration
• Derive the program structure from data structure
Introduction to Software Engineering1 17
5. Data Flow-Oriented Design
More powerful HW (VLSI) and sophisticated SW
products need to solve more challenging problems.
Therefore,
• The major data items handled by a system are identified.
• Determine the processes required for desired output.
• Exchange the data items between the functions
(processes)
The process is represented in a diagram called DFD.
Engine store Door store
Fit Chassis with Fit Partly Fit Assembled
Paint & Car
engine engine doors assembled car wheels car test
Chassis store Wheel store
Data flow model oftoaSoftware
Introduction carEngineering1
assembly plant 18
6. Object-Oriented Design
• Development of OO concepts invited OOD techniques.
• Paradigm shift from Data flow-oriented technique to OOD.
• Usage of natural objects (employee, pay-roll-register…).
• Identifying the relationship among the objects
(composition, reference, and inheritance are determined).
• Object characteristics (data hiding, data abstraction…)
• Code and design reuse
• Lower development time
• Lower development cost
• Mode robust coding
• Easier maintenance
Introduction to Software Engineering1 19
Introduction to Software Engineering1 20
Sofware Engineering as a Layered Technology
a. Quality Focus
Organizational Commitment to Quality
b. Process
Foundation of Software Engineering
c. Methods
Technical ‘How-To’s
d. Tools
(Semi-) Automated Support for Process and
Methods
Introduction to Software Engineering1 21
A Layered Technology
Quality, Process, Methods, and Tools
• Software engineering is a layered technology. Most
engineering approaches (including software engineering)
must rest on an organizational commitment to quality. The
bedrock that supports software engineering is a ‘quality
focus‘ layer.
Quality: A product should meet its specification. This is
problematical for software systems. There is a tension
between customer quality requirements (efficiency, reliability,
etc.), developer quality requirements (maintainability,
reusability, etc.), users (usability, efficiency, etc.), and etc. But
note:
1. Some quality requirements are difficult to specify in an
unambiguous way.
2. Software specifications are usually incomplete and
often inconsistent. Introduction to Software Engineering1 22
Process: The foundation for software engineering is the
process‘ layer. Software engineering process is the glue
that holds the technology together and enables rational and
timely development of computer software. The work
products are produced, milestones are established, quality
is ensured, and changes are properly managed.
Methods: Software engineering methods provides the
technical how-to‘s for building software. Methods
encompass a broad array of tasks that include the
requirements analysis, design, program construction,
testing, and support.
Tools: Software engineering tools provide automated or semi-
automated supports for the process and the methods. When
the tools are integrated so that the information created by
one tool can be used by another, a system for the support of
software development, called computer-aided software
engineering (CASE). CASE combine software, hardware,
and software engineering database.
Introduction to Software Engineering1 23
Generic Phases
DEFINITION DEVELOPMENT MAINTENANCE
1. Definition Phase
Key Requirements are identified Major Tasks
System or Information Engineering Software Project
Planning & Management Requirements
Analysis
2. Development Phase
Focuses on ‘How’. Major Tasks Software Design
Code Generation Software Testing
Introduction to Software Engineering1 24
3. Maintenance Phase
focuses on ‘Changes’.
Major Tasks
Correction to correct defects
Adaptation to external environment and
business rules
Enhancement for additional functions
Prevention for more easier maintenance
Introduction to Software Engineering1 25
Introduction to Software Engineering1 26
Questions
• What is the problem to be solved?
• What characteristics of the entity are used to solve the
problem?
• How will the entity (and the solution) be realized?
• How will the entity be constructed?
• What approach will be used to uncover errors that were
made in the design and construction of the entity?
• How will the entity be supported over the long term,
when corrections, adaptations, and enhancements are
requested by users of the entity.
Introduction to Software Engineering1 27