You are on page 1of 22

Software Engineering & Information System Design

Objectives of course
 Understand Software Engineering:
• Build complex software systems in the context of frequent change
 Understand how to
• produce a high quality software system within time
• while dealing with complexity and change
 Acquire technical knowledge of Software Engineering
 Acquire managerial knowledge
 Understand the Software Lifecycle
• Process vs Product
• Learn about different software lifecycles
Chapter 1- Introduction
Topic Covered
 Software and Software Engineering
 Why Software Engineering is Important
 Types of Software Product
 Essential attributes of good software
 Software Engineering Diversity
 Fundamentals applied to software
 Software engineering and the Web
 Software Engineering Ethics
What is Software ?

 Software is a general term for the various kinds of programs used to


operate computers and related devices with all its associated documents
and configuration data
 A program is a specific set of ordered operations for a computer to
perform
 Software is a collection of instructions that enable the user to interact
with a computer, its hardware, or perform tasks
 For example,
• without your Internet browser, you could not surf the Internet or read this
page
• without an operating system, the browser could not run on your computer
Types of Software

 Two fundamental types of software product :


• Generic Product
These types of software are produced by the development
organization and sold on open market to any customer who is able to
buy them. Example: any software for PCs i.e. word processor, editing
tools, drawing package etc.
• Customized Product
These type of software are produced by software developer or
organization for a particular type of customer. Example : air traffic
control systems, Auction system, card payment software etc.
Importance of Software

 We can’t run the modern world without software


• Business data analysis i.e Microsoft Excel, Scientific Investigation i.e. in
bio-informatics for DNA decoding, different types of game, Car
equipment, electronic devices e.t.c
 Growth of software has a great impact on economical activity of a
country
 World wide software has economical impact of trillion of dollar
 It involves number of people and money all over the world
What is Engineering?
• Productive use of scientific knowledge by using different innovative ideas
and techniques
• Based on scientific rules and techniques. For example: Civil Engineering,
Mechanical Engineering, Electrical Engineering works based on physics
• Physics is not engineering but effectively used in building, motor, electrical
engine
• Like other engineering software engineering is based on computer science
• Different knowledge of Computer Science is effectively used for software
development i.e. data structure, algorithm
Difference between Software and other Systems
 Software is developed not manufacture.
• In manufacturing the creation of a product is heavily process driven and
develop a finish and companies achieve 99.99966% defect free products, But
in software we may have processes for source control, code review, check in
sheets, requirements gathering, the SDLC, etc. But executing those processes
does not in and of itself create a finished product.
 Software does not wear out
Difference between Software and other Systems
 Frequency of changes in software in a big component based
construction range i.e. fundamental change, enhancement of
feature, interface change
 Most software development is moving towards component based
construction
History of Software Engineering
 Earlier in 1950 when digital computer created and used then software
used only for some scientific applications or processing sensor data.
 In 1960 changes in hardware. New hardware i.e. computer available with
new technique. So software became more complex and big. Hard to write.
Tools that were used in previous software not applicable for this type of
software.
 The term software engineering used by Margaret Hamilton was used in
1968 as a title for the world's first conference called the ‘software crisis’
on software engineering, sponsored and facilitated by NATO (North
Atlantic Treaty Organization) .
 Throughout the 1970s and 1980s, a variety of new software engineering
techniques and methods were developed, such as structured
programming, information hiding and object-oriented development.
 In 1984, the Software Engineering Institute (SEI) was established as a
federally funded research and development center of software
engineering
Software Engineering

 Software engineering is the application of engineering to the design,


development, implementation and maintenance of software in a
systematic method
 An engineering discipline that is concerned with all aspects of software
production
 The establishment and use of sound engineering principles in order to
economically obtain software that is reliable and works efficiently on real
machines
 The systematic application of scientific and technological knowledge,
methods, and experience to the design, implementation, testing, and
documentation of software
Well Engineering Software

• A well engineered Software will be reliable, user interface user friendly ,


good performance, better quality and cost effective. If there is unlimited
resource and time any organization can develop any software.
• Software Engineering has a relationship with economy. For any
engineering product economic feasibility is checked. Software Engineering
challenge is to make software within limited time and budget.
• Conflict arises when balancing all these requirement necessary for good
engineered software . They need to perform a Balancing act between
these requirement. For example: User friendliness and efficiency ,
performance and quality. Software Engineering challenge is to make a
proper balance between this requirement
Software Engineering and computer science

 Computer science is concerned with theories and methods that underlie


computers and software system whereas software engineering is
concerned with practical problem to produce software using knowledge of
Computer Science
 All software engineer should have minimum knowledge of computer
science
Software Process
 According to Software Engineering, Software process means the set of
activities that leads to produce a software product
 Four fundamental processes :
• Software specification, where customers and engineers define the
software that is to be produced and the constraints on its operation.
• Software development, where the software is designed and
programmed.
• Software validation, where the software is checked to ensure that it
is what the customer requires.
• Software evolution, where the software is modified to reflect
changing customer and market requirements.
Essential Attributes of Good Software
• Maintainability
Software should be written in such a way so that it can evolve to meet the
changing needs of customers. This is a critical attribute because software
change is an inevitable requirement of changing business environment.
• Dependability and security
Software dependability includes a range of characteristics including
reliability, security, and safety. Dependable software should not cause
physical or economic damage in the event of system failure. Malicious
users should not be able to access or damage the system.
• Efficiency
Software should not make wasteful use of system resources such as
memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilization, etc.
• Acceptability
Software must be acceptable to the type of users for which it is designed.
This means that it must be understandable, usable, and compatible with
other systems that they use.
Software Engineering Diversity
 According to software Engineering there are many different types of
application :
• Stand-alone applications These are application systems that run on a local
computer, such as a PC and do not need to be connected to a network.
Examples : office applications on a PC, CAD programs, photo manipulation
software, etc.

• Interactive transaction-based applications These are applications that


execute on a remote computer and that are accessed by users from their
own PCs or terminals. Obviously, these include web applications such as e-
commerce applications , mail and photo sharing

• Embedded control systems These are software control systems that


control and manage hardware devices. Examples of embedded systems
include the software in a mobile (cell) phone, software that controls anti-
lock braking in a car, and software in a microwave oven to control the
cooking process.
Software Engineering Diversity
• Batch processing systems These are business systems that are designed to
process data in large batches. Examples: billing systems, such as phone
billing systems, and salary payment systems
• Entertainment systems These are systems that are primarily for personal
use and which are intended to entertain the user
• Systems for modeling and simulation These are systems that are
developed by scientists and engineers to model physical processes or
situations. These are often computationally intensive and require high-
performance parallel systems for execution.
• Data collection systems These are systems that collect data from their
environment using a set of sensors and send that data to other systems for
processing.
Software Costing
 Cost may depends on economic condition, culture, labor costing of a
country
 Cost distribution depends on different activities in the software process
and the type of software product.
 Depending on the nature of software cost varies
 Two types of software :
• Off the shelf: Ready product and open for global market i.e.
Microsoft office, games etc.
• Be-spoke : Developed for a particular company for particular
requirement. i.e. Payroll management, inventory management
Key Challenges of Software Engineering
 Heterogeneity challenge
Developing techniques for building dependable software that is flexible
enough to cope different kind of support system. i.e. integrate new
software with old system written in different language
 Delivery Challenge
shortening delivery times of large and complex system without
compromising system quality
 Trust Challenge
Develop technique that demonstrate that software can be trusted by the
user
Software Engineering and Web

 The development of the World Wide Web has had a profound effect on all
of our lives
 Around 2000, the Web started to evolve and more and more functionality
was added to browsers
 Instead of writing software and deploying it on users’ PCs, the software
was deployed on a web server
 It is much cheaper to change and upgrade the software, as there was no
need to install the software on every PC
 The next stage in the development of web-based systems was the notion
of web services
 ‘computing clouds’ concept is introduced i.e. web-based mail
Software Engineering Ethics
• Like other engineering disciplines, software engineering is carried out
within a social and legal framework that limits the freedom of people
working in that area
• As a software engineer, You must also behave in an ethical and morally
responsible way
• According to IEEE-CS/ ACM join taskforce software engineer should follow
eight principles:
1. PUBLIC — Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER — Software engineers shall act in a manner that is in the best interests
of their client and employer consistent with the public interest.
3. PRODUCT — Software engineers shall ensure that their products and related modifications meet
the highest professional standards possible.
4. JUDGMENT — Software engineers shall maintain integrity and independence in their
professional judgment.
5. MANAGEMENT — Software engineering managers and leaders shall subscribe to and promote
an ethical approach to the management of software development and maintenance.
6. PROFESSION — Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest.
7. COLLEAGUES — Software engineers shall be fair to and supportive of their colleagues.
8. SELF — Software engineers shall participate in lifelong learning regarding the practice of their
profession and shall promote an ethical approach to the practice of the profession.
Thank You

You might also like