0% found this document useful (0 votes)
54 views27 pages

1-Software Engineering IT 501/601

The document discusses software engineering and its evolution from an art to an engineering discipline. It defines software and different types of software like system software and application software. It explains that software is engineered not manufactured. It summarizes key differences between programs and software products and discusses the software crisis that led to the need for applying engineering principles to software development. Finally, it outlines some principles of software engineering practice.

Uploaded by

ARINDAM BISWAS
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views27 pages

1-Software Engineering IT 501/601

The document discusses software engineering and its evolution from an art to an engineering discipline. It defines software and different types of software like system software and application software. It explains that software is engineered not manufactured. It summarizes key differences between programs and software products and discusses the software crisis that led to the need for applying engineering principles to software development. Finally, it outlines some principles of software engineering practice.

Uploaded by

ARINDAM BISWAS
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 27

-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

You might also like