0% found this document useful (0 votes)
3 views

01-SE-Intro

The document provides an overview of software engineering, defining software as a combination of instructions, data structures, and documentation. It discusses the importance of software engineering in adapting legacy software to modern requirements, enhancing business functionalities, and ensuring software quality. Additionally, it highlights the economic significance of software in various sectors, including communication, healthcare, and business operations.

Uploaded by

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

01-SE-Intro

The document provides an overview of software engineering, defining software as a combination of instructions, data structures, and documentation. It discusses the importance of software engineering in adapting legacy software to modern requirements, enhancing business functionalities, and ensuring software quality. Additionally, it highlights the economic significance of software in various sectors, including communication, healthcare, and business operations.

Uploaded by

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

Software Engineering

FALL 2024
INTRODUCTION
2
Objectives
• From software to software product.
• Software Engineering
• Importance of Software Engineering

3
What is a Software?

4
What is Software
• Software is: (1) instructions (computer programs) that when executed
provide desired features, function, and performance; (2) data structures
that enable the programs to adequately manipulate information and (3)
documentation that describes the operation and use of the programs.

• Computer programs and associated documentation


• Software, when made for a specific requirement is called software
product.

5
6
S/W characteristics different from H/W

Hardware Software
Legacy Software
• Support core business functions
• Have longevity and business criticality
• Exhibit poor quality
• Poor documentation, poor testing, poor change management

10
Legacy Software
Why must it change?
• software must be adapted to meet the needs of new
computing environments or technology.
• software must be enhanced to implement new business
requirements.
• software must be extended to make it interoperable with
other more modern systems or databases.
• software must be re-architected to make it viable within a
network environment.

11
Legacy Software
• 1. **Adaptation for New Computing Environments or Technology**: - *Example*: A legacy accounting software
developed in the 1990s that runs on a mainframe system using outdated programming languages. The company
now wants to migrate to cloud computing to improve accessibility and scalability. To adapt, the software needs to
be re-written using modern languages and architectures to function effectively in a cloud environment.

• 2. **Enhancement for New Business Requirements**: - *Example*: An inventory management system developed
a decade ago that lacks features for real-time tracking and integration with supplier systems. With new business
requirements emphasizing just-in-time inventory management, the software needs enhancements to allow for
automatic inventory updates, supplier communication, and predictive analytics to optimize stock levels.

• 3. **Extension for Interoperability with Modern Systems or Databases**: - *Example*: A customer relationship
management (CRM) system developed in the early 2000s that does not integrate with modern marketing
automation tools or social media platforms. The company needs to extend the CRM's capabilities to allow for
seamless data exchange with platforms like Salesforce, HubSpot, and Facebook for a comprehensive view of
customer interactions.

• 4. **Re-architecture for Viability in a Network Environment**: - *Example*: A legacy banking application built in
the 1980s designed for standalone use, now needs to be accessed by multiple branches and online banking
customers. To make it viable in a networked environment, the software requires re-architecting to implement
robust security protocols, web interfaces, and API integration with modern payment gateways to ensure safe and
efficient transactions across the network.

12
Example of Legacy Software
• For example, an application that runs on Windows 7 may not
be able to run on Windows 10.
• Microsoft Windows 7: Windows 7 officially became a legacy
OS in January 2020 after Microsoft halted security updates and
support for it. However, over 100 million machines continue to
run this operating system.
• COBOL: Common Business-Oriented Language or COBOL is
still used 55 years after its development. Forty-eight percent of
businesses and government organizations reportedly depend on
this language more than others.
• Discontinued Oracle products: Oracle database software such
as E-Business Suite and Peoplesoft.
13
Example of Legacy Software
• For example, at the start of 2016, Microsoft ended support for all versions
of Internet Explorer (IE) prior to version 11. Users still browsing with IE
6 may continue to do so, but webpages will no longer be coded to be
compatible, and any bugs or errors within the program will not receive
attention from Microsoft -- making all versions older than IE 11 legacy
software.
• Operating systems, such as MS-DOS, Windows 3.1 or XP.
• Hardware, such as Apple IIGS machines or Intel 286 computers

14
15
Types of software products
• Generic products: This type of software product are
developed by a organization and sold on open market to any
customer (end users)
• The specification of what the software should do is owned
by the software developer and decisions on software
change are made by the developer.
• Examples – PC software such as graphics programs, project
management tools; CAD software.

16
Types of software products
• Customized products
• This type of software products are developed by a software contractor
and especially for a customer.
• Software that is commissioned by a specific customer to meet their
own needs.
• Examples
• air traffic control software, traffic monitoring systems.
• the BBC spent a great deal of money on a project to develop its own custom
management software.
• Software for specific clients such as appointments systems for dentists.
• The specification of what the software should do is owned by the
customer for the software and they make decisions on software
changes that are required.

17
Software Application Domain

19
Software Application Domains
• System software (Service other programs like compilers, operating
system)
• heavy interaction with hardware
• Application Software
• Stand alone programs to solve specific business needs (point of sale)
• Engineering/scientific applications
• Astronomy, molecular biology, simulation software
• MATLAB, AUTOCAD
• Embedded software – washing machines, satellites, microwaves,
Software Application Domains (cont.)
• Web apps
• Artificial Intelligence (AI) software
• Voice/pattern recognition, Apple Siri, ChatGPT
Software Quality

24
Software Quality
• Portability: A software product is said to be portable, if it can be easily
made to work in different operating system environments, in different
machines, with other software products, etc.
• Usability: A software product has good usability, if different categories of
users (i.e. both expert and novice users) can easily invoke the functions
of the product.
• Reusability: A software product has good reusability, if different modules
of the product can easily be reused to develop new products.
• Correctness: A software product is correct,
• Maintainability: A software product is maintainable, if errors can be
easily corrected, new functions can be easily added to the product, and
the functionalities of the product can be easily modified, etc.

25
Software Engineering

26
27
What is Software Engineering?
• The practical application of scientific knowledge to the design and
construction of computer programs and the associated documentation
required to develop, operate, and maintain them [Boehm].
• The systematic approach to the development, operation, maintenance,
and retirement of software [IEEE].
• The establishment and use of sound engineering principles (methods) in
order to obtain economically software that is reliable and works on real
machines [Bauer].
• The application of systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software; that is, the
application of engineering to software. [IEE93]

28
Why Software or Software Engineering?
• Software is critical to society
• Economically important
• Essential for running most enterprises
• Key part of most complex systems

29
Why Software or Software Engineering?
• Software is critical to society

30
Why Software or Software Engineering?
• Software is critical to society
• Communication: Software enables us to communicate with people across the world. Social media,
email, messaging apps, and video conferencing software have revolutionized the way we communicate
with each other.
• Education: Software has transformed the way we learn and educate ourselves. E-learning platforms,
online courses, and educational apps have made education more accessible and affordable.
• Healthcare: Software plays a crucial role in the healthcare industry, from managing patient records and
medical history to developing new treatments and medical technologies.
• Business: Software is essential to the smooth functioning of businesses of all sizes. It enables
organizations to automate tasks, improve efficiency, and make better decisions.
• Entertainment: Software has transformed the entertainment industry, providing new forms of
entertainment and making it easier for people to access music, movies, and other forms of media.
• Transportation: Software plays a significant role in the transportation industry, from managing traffic
flow to improving safety and developing autonomous vehicles.

31
Why Software or Software Engineering?
• Economically important

32
Why Software or Software Engineering?
• Economically important
International Trade

Production

Innovation

33
Why Software or Software Engineering?
• Economically important
• Job Creation: The software industry has created a significant number of jobs worldwide.
According to some estimates, the software industry employs millions of people globally. This
includes software developers, project managers, quality assurance professionals, and technical
support staff, among others.
• Increased Productivity: Software enables organizations to automate processes, reducing manual
labor and increasing productivity. This can result in cost savings and increased efficiency, allowing
companies to produce more goods and services.
• Innovation: Software drives innovation, creating new products and services that generate
economic growth. Many software companies focus on research and development, creating new
technologies that can be used in other industries.
• International Trade: The software industry is a significant contributor to international trade.
Many software companies have operations in multiple countries, allowing them to access global
markets and contribute to the global economy.
• Revenue Generation: The software industry generates significant revenue for companies,
governments, and individuals. Software sales, licensing, and subscriptions generate revenue for
companies, while governments collect taxes on software sales and income generated from
software-related services.

34
Why Software or Software Engineering?
• Essential for running most enterprises

35
Why Software or Software Engineering?
• Essential for running most enterprises
• Automation of Business Processes: Software enables the automation of business
processes, from accounting and payroll to inventory management and customer
relationship management. This automation can save time and money, increase
accuracy, and free up staff for more important tasks.
• Collaboration and Communication: Software enables collaboration and
communication between employees, departments, and even different locations.
This improves efficiency, productivity, and overall effectiveness of the organization.
• Data Analysis and Management: Software provides tools for data analysis and
management, allowing enterprises to make data-driven decisions. This can help
identify trends, opportunities, and potential risks.
• Customer Service and Support: Software enables enterprises to provide better
customer service and support. With software tools, customer inquiries and issues
can be addressed quickly and effectively, improving customer satisfaction and
loyalty.
• Competitive Advantage: Software provides enterprises with a competitive advantage
by enabling them to be more efficient, innovative, and responsive to market
changes. Enterprises that use software effectively can outperform competitors and
gain market share.

36
Why Software or Software Engineering?
• Key part of most complex systems

37
Why Software or Software Engineering?
• Key part of most complex systems
• Operating systems: The software that controls and manages the hardware
resources of a computer system, including the CPU, memory, and storage
devices.
• Aerospace and aviation systems: Software is used to control and manage
various systems in aircraft, including flight control systems, navigation
systems, and communication systems.
• Medical devices: Software is used in medical devices such as MRI machines,
pacemakers, and defibrillators to control and manage their operation.
• Automobiles: Software is used in modern automobiles to control and
manage various systems, including engine control, transmission control, and
entertainment systems.
• Financial systems: Software is used in financial systems such as trading
platforms, banking systems, and payment gateways to manage transactions,
accounts, and investments.

38
Software BUGs – SPACE disaster

Maiden flight of the


Ariane 5 rocket on the 4th
of June 1996
• The reason for the explosion was
a software error (Attempt to cram
a 64-floating point number to a
16-bit integer failed)
• Financial loss: $500,000,000
(including indirect costs:
$2,000,000,000)

39
Air Transport 40
Examples of Software Errors

Radio Therapy Machine


software error
→ 6 people overdosed

Year 2010 Bug


30 million debit and credit cards have been
rendered unreadable by the software bug

software in modern cars


>100K LOC
2006: error in pump control
software
→ 128000 vehicles recalled 41
Financial Impact of Software Errors
Research at Cambridge University (2013, link) showed that the global cost of software
bugs is

around 312 billion of dollars annually

Goal: to increase software reliability

42
Why Software Engineering?
• 7 out of every 10 major weapons development programs are
encountering software problems and the rate is increasing.
• Risks of cancellation or major delays rise rapidly as overall application
size increases.
• Failure or cancellation rate of large software systems is over 20%

43
Why Software Engineering?
• After surveying 8,000 IT projects, Standish Group reported about 30% of
projects cancelled before they ever get completed.
• Average cancelled project in U.S. is about a year behind schedule and has consumed
200% of expected budget (Capers Jones).
• Work on cancelled projects comprises about 15% of total U.S. software efforts,
amounting to as much as $14 billion (Capers Jones).

• Of completed projects,
• 2/3 experience schedule delays and cost overruns (Capers Jones) [bad
estimates?]
• 2/3 of completed projects experience low reliability and quality problems in
first year of deployment (Jones).
• Software errors in fielded systems typically range from 0.5 to 3.0 occurrences
per 1000 lines of code Bell Labs survey).

44
Why Software Engineering?

• Have you ever been on a project where the


software was never finished or used?

• What were some of the problems?

45
Reasons
• Feature (scope) creep
• Integration problems
• Overwriting source code
• Constant re−estimation Redesign and rewriting
during test
• No documentation of design decisions Etc.

46
Understanding the Problem

47
Software Engineering: A layered
technology

48
Software Engineering: A layered technology
• Software engineering is a layered technology divided into 4 layers:-

49
Software Engineering: A layered technology
A quality Process :-
• The "Bed Rock" (foundation) that supports software Engineering
is Quality Focus.
• Six Sigma, Total Quality Management
Process :-
• Foundation for SE is the Process Layer.
• It defines a framework that includes different activities and tasks.
• In short, it covers all activities, actions and tasks required to be
carried out for software development.
• Answer “What to”

50
Software Engineering: A layered technology
Methods :-
SE methods provide the "Technical Questions" for building
Software.
• Methods contain a broad array of tasks that include
communication requirement analysis, design modeling, program
construction testing and support.
• “How to” implement.
Tools :-
SE 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.

51
Software Engineering: A layered technology (Summary)
• Quality, pretty self explanatory - its not about software either
every product puts quality first. quality is bed rock for any
product.
• Once the quality is assured. It is thought out to package it. For
ex. which process go first which go later.
• Now that we know what to do. We will think how to do it.
That’s where method comes in. The method is an answer to
all the HOW'S that are asked during the process.
• Once we know exactly what to do. We think of tools
(awesome right?). Tools are the helping hands of process. To
do anything we need it. to code, design, test or sell

52
Software Engineer

53
54
What is the difference between software engineering
and system engineering?

• System engineering is concerned with all aspects of


computer-based systems development including hardware,
software and process engineering
• Software engineering is part of this process
• System engineers are involved in
• system specification
• architectural design
• integration
• deployment
55
Professional and ethical responsibility
• Software engineering involves wider responsibilities
than simply the application of technical skills
• Software engineers must behave in an honest and
ethically responsible way if they are to be respected as
professionals
• Ethical behaviour is more than simply upholding the
law.

56
Issues of professional responsibility
• Confidentiality
• Engineers should normally respect the confidentiality of
their employers or clients irrespective of whether or not a
formal confidentiality agreement has been signed.
• Competence
• Engineers should not misrepresent their level of
competence. They should not knowingly accept work which
is outwith their competence.

57
Issues of professional responsibility
• Intellectual property rights
• Engineers should be aware of local laws governing the use
of intellectual property such as patents, copyright, etc. They
should be careful to ensure that the intellectual property of
employers and clients is protected.

• Computer misuse
• Software engineers should not use their technical skills to
misuse other people’s computers. Computer misuse ranges
from relatively trivial (game playing on an employer’s
machine, say) to extremely serious (dissemination of
viruses).
58
ACM/IEEE Code of Ethics
• The professional societies in the US have cooperated
to produce a code of ethical practice.
• Members of these organisations sign up to the code of
practice when they join.
• The Code contains eight Principles related to the
behaviour of and decisions made by professional
software engineers, including practitioners, educators,
managers, supervisors and policy makers, as well as
trainees and students of the profession.

59
Code of ethics - principles
• PUBLIC
• Software engineers shall act consistently with the public interest.

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

• PRODUCT
• Software engineers shall ensure that their products and related modifications meet
the highest professional standards possible.

60
Code of ethics - principles
• JUDGMENT
• Software engineers shall maintain integrity and independence in their professional
judgment.

• MANAGEMENT
• Software engineering managers and leaders shall subscribe to and promote an
ethical approach to the management of software development and maintenance.

• PROFESSION
• Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest.

61
Code of ethics - principles
• COLLEAGUES
• Software engineers shall be fair to and supportive of their colleagues.

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

62
Software Engineering Myths: Management
• “We have books with rules. Isn’t that everything my
people need?”
• Which book do you think is perfect for you?
• “If we fall behind, we add more programmers”
• “Adding people to a late software project, makes it later” –
Fred Brooks (The Mythical Man Month)
• “We can outsource it”
• If you do not know how to manage and control it internally,
you will struggle to do this with outsiders

63
Software Engineering Myths: Customer
• “We can refine the requirements later”
• A recipe for disaster.
• “The good thing about software is that we can
change it later easily”
• As time passes, cost of changes grows rapidly

64
Software Engineering Myths: Practitioner
• “Let’s write the code, so we’ll be done faster”
• “The sooner you begin writing code, the longer it’ll take to
finish”
• 60-80% of effort is expended after first delivery

• “Until I finish it, I cannot assess its quality”


• Software and design reviews are more effective than testing
(find 5 times more bugs)
• “There is no time for software engineering”
• But is there time to redo the software?

65
Reading Assignment
• Reading of Chapter 1

• List of software in different areas of knowledge:


https://www.informit.com/articles/article.aspx?p=2163344&s
eqNum=5

67

You might also like