0% found this document useful (0 votes)
31 views49 pages

Software Engg - Week-01

Software Engg -Week-01

Uploaded by

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

Software Engg - Week-01

Software Engg -Week-01

Uploaded by

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

Software Engineering

Sobia Iftikhar week 01


[email protected]
Grading Scheme
• Mid-1 and 2: 10 each
• Assignment: 10
• Quiz: 10
• Project: 15
• Final: 45
Referred Books
• Software Engineering by Ian Sommerville (10 edition)
• Software Engineering Practitioner’s Approach by Roger S. Pressman (Seventh Edition)
Content
• Software
• Software Crisis
• Software Engineering
• Need of SE
• Factors of Software Failure
• Professional Software Development,
• Kinds of Software Products,
• generic software product development v/s custom
• Software Application Domains(pressmen),
• Key phrases of SE,
• Essential attributes of good software
Class 01
What is Software?
• The product that software professionals build and then support over the long term.
✔ Software encompasses:
✔ (1) instructions (computer programs) that when executed provide desired features, function, and
performance;
✔ (2) data structures that enable the programs to adequately store and manipulate information
✔ (3) documentation that describes the operation and use of the programs.
Software Crisis
• Software Crisis is a difficulty of writing useful and efficient computer programs in the required
time .
• software crisis was due to using same workforce, same methods, same tools even though rapidly
increasing in software demand, complexity of software and software challenges.
• With increase in the complexity of software, many software problems arise because existing
methods were insufficient.
• . This condition is called software crisis.
Software Crisis cont’d ro c e ss
a lP
rm
No

What if demand is increase with all same


Limitation. Then what if?

Software Crisis
Software Crisis cont’d
If we will use same workforce, same methods and same tools after fast increasing in software demand,
software complexity and software challenges, then there arise some problems like software budget problem,
software efficiency problem, software quality problem, software managing and delivering problem etc.

Increasing
Demand

Software Crisis

Same Same
Workforce Resources
Software Crisis Solution
• Solution was to the problem was transforming unorganized coding effort into a software
engineering discipline.
• These engineering models helped companies to streamline operations and deliver software
meeting customer requirements.
Why Software is Important?
• The economies of ALL developed nations are dependent on software.
• More and more systems are software controlled ( transportation, medical, telecommunications,
military, industrial, entertainment,)
• Software engineering is concerned with theories, methods and tools for professional software
development.
What is Software Engineering
• Software engineering is defined as a process of analyzing user requirements and then designing,
building, and testing software application which will satisfy those requirements.

Software is more than just a program code. A


program is an executable code, which serves
some computational purpose. Software is
considered to be collection of executable
programming code, associated libraries and
documentations. Software, when made for a
specific requirement is called software product.

Engineering on the other hand, is all about


developing products, using well-defined,
scientific principles and methods.
Need of SE
Product

User

Testing
UML Development
Why Software Engineering is Popular?

• Large software – In our real life, it is quite more comfortable to


build a wall than a house or building. In the same manner, as the
size of the software becomes large, software engineering helps
you to build software.

• Scalability- If the software development process were based on


scientific and engineering concepts, it is easier to re-create new
software to scale an existing one.
Scalability
• Distributed Systems Architecture:
• Example: Consider a real-time messaging application like WhatsApp or Slack. Software
engineers design the architecture to distribute the load across multiple servers. This allows the
system to handle a growing number of users and messages by scaling horizontally.
• Load Balancing:
• Example: In a web application, a load balancer distributes incoming traffic across multiple
servers. This ensures that no single server becomes a bottleneck. Load balancing helps in
achieving both horizontal and vertical scalability. Popular examples include Nginx and HAProxy.
Why Software Engineering is Popular?
• Adaptability: Whenever the software process was based on
scientific and engineering, it is easy to re-create new software with
the help of software engineering.
• two-factor authentication
• optimize route

• Dynamic Nature- Always growing and adapting nature of the


software. It depends on the environment in which the user works.

• Quality Management: Offers better method of software


development to provide quality software products.
Software Failure?

• Every software failure indicates an error in design or in the process through which design was
translated into machine executable code.
• System software may fail because of mistakes in its specification, design, or implementation.
Key Points of Software Failure?

• Not Enough Time. ...


• Insufficient Budget. ...
• Poor Communication. ...
• Never Reviewing Project Progress. ...
• Inadequate Testing. ...
• Testing in the Production Environment. ...
• Lack of Quality Assurance. ...
• Not Conforming to Industry Standards.
Factors of Software
Failure

1. Increasing system complexity.


2. Failure to use software
engineering
Class 02
Activity
• Imagine waking up one day, checking your mailbox an receiving a letter from your hospital saying
you died. Well, that is precisely what happened to 8500 people who received treatment between
Oct 25 and Dec 11 at St. Mary’s Mercy Hospital. So what happened? It turns out the hospital had
recently upgraded its patient-management software system. However, a mapping error in the
software resulted in the system assigning a code of 20 (which means “expired”) instead of 01
which meant the patient had been discharged. But that is not all. The erroneous data was not only
sent to the patients but also to insurance companies and the local Social Security Office.

Immature Engineering
Software Failure
Low Quality Management
Professional Software Development
✔ Software engineering is intended to support professional software development rather than
individual programming.

✔ It includes techniques that support program specification, design, and evolution, none of which are
normally relevant for personal software development.

✔ software is not just the programs themselves but also all associated
✔ Documentation
✔ Libraries
✔ support websites, and configuration data that are needed to make these programs useful.
Professional Software Development
✔ A professionally developed software system is often more than a single program.
✔ A system may consist of several separate programs and configuration files that are used to set up
these programs.

✔ It may include system documentation, which describes the structure of the system, user
documentation.

✔ which explains how to use the system, and websites for users to download recent product
information.
Why Professional Development is important

Reuse-code Re
ode us
e-c
c
se- od
u e
Re
Why Professional Development is important
• This is one of the important differences between professional and amateur software development.
If you are writing a program for yourself, no one else will use it.
• and you don’t have to worry about writing program guides, documenting the program design.
kinds of software product
1. Generic products
2. Customized (or bespoke) software
Generic Product
• The term generic brand refers to a type of consumer product on the market that lacks a widely
recognized name or logo because it typically isn't advertised. Generic brands are usually less
expensive than their brand name counterparts due to their lack of promotion.
• These are stand-alone systems that are produced by a development organization and sold on the
open market to any customer who is able to buy them.
• This kind of software also includes “vertical” designed for a specific market such as library
information systems, accounting systems, or systems for maintaining dental records.
Generic Product

They are formulated to be alternatives for expensive brand-name goods.


Generic Product-Example
• Imagine you go to a grocery store and want to buy chocolate.
• You can either buy Cadbury chocolate, like Dairy milk or,
you can purchase generic brand chocolate. Since you have
both choices, you can choose any.
• As Cadbury is a well-known brand, indeed it will cost more
than generic chocolates.
• But if you find that both taste the same, you opt for the
generic chocolate because it costs less. Thus the generic
product wins over brand names.
Customized (or bespoke) software
• These are systems that are commissioned by and developed for a particular customer.
• A software contractor designs and implements the software especially for that customer.
• Examples of this type of software include control systems for electronic devices, systems written
to support a particular business process, and air traffic control systems.
Generic product vs branded products
Software Application Domains
• Seven broad categories of computer software present continuing challenges for software engineers:
1. Application Software
2. Software System
3. Engineering/scientific software
4. Embedded software
5. Product-line software
6. Web applications
7. Artificial intelligence software
System Software
• System Software is a set of programs that control and manage the operations of computer
hardware. It also helps application programs to execute correctly.
• System Software are designed to control the operation and extend the processing functionalities of
a computer system.
• System software makes the operation of a computer more fast, effective, and secure.
• Example: Operating system, programming language, Communication software, et
Application Software
• Application Software is a program that does real
work for the user. It is mostly created to perform a
specific task for a user.

• Application Software acts as a mediator between


the end-user and System Software. It is also
known as an application package.
Class 03
Key Phases of SE
1. Engineering discipline
Engineers make things work. They apply theories, methods, and tools where these are
appropriate. However, they use them selectively and always try to discover solutions to problems even
when there are no applicable theories and methods. Engineers also recognize that they must work within
organizational and financial constraints, and they must look for solutions within these constraints.

2. All aspects of software production


Software engineering is not just concerned with the technical processes of software
development. It also includes activities such as software project management and the development of
tools, methods, and theories to support software development.
Ethics of software Engineering

Intellectual
Competence Confidentiality Computer misuse
property rights
Essential attributes of good software
1. Efficiency
1. Software should not make wasteful use of system resources such as memory and processor cycles.
Efficiency therefore includes responsiveness, processing time, resource utilization, etc.

2. Maintainability
1. Software should be written in such a way that it can evolve to meet the changing needs of customers. This
is a critical attribute because software change is an inevitable requirement of a changing business
environment.
Essential attributes of good software
3. 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.

4. 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.
Software has to be secure so that malicious users cannot access or damage the system.
Importance of SE
1. More and more, individuals and society rely on advanced software systems. We need to be able
to produce reliable and trustworthy systems economically and quickly.
2. It is usually cheaper, in the long run, to use software engineering methods and techniques for
professional software systems rather than just write programs a personal programming project.
Issues that affect many different types of software

Business and
Heterogeneity Security Scale
social change
• Systems are increasingly • business and society are • We must ensure that • The software must be built
essential to operate as evolving extremely rapidly. unauthorized users are unable over a broad range of scales,
distributed systems across They need to be in a position to target our applications, and from very tiny embedded
networks, which include to update their current that information is protected systems in portable or
various types of computers software and create new and secured. wearable devices through the
and mobile devices. software quickly. Internet sizes, a cloud-based
framework that serves global
population
Software engineering diversity

phones, or
tablets. Entertainment
systems

Batch processing
games
Embedded
control systems systems

manage Interactive process data


hardware transaction- in large
devices based batches
applications
Big data
Stand-alone Systems for
applications modeling and
simulation

interacting
Data collection
and analysis objects Systems of
systems systems
run on a
personal ERP system
computer
Case Studies
• An embedded system

This is a system where the software controls some hardware device and is embedded in that
device.
Issues in embedded systems typically include physical size, responsiveness, and power
management, etc.
The example of an embedded system that I use is a software system to control an insulin
pump for people who have diabetes.
An insulin pump control system
• An insulin pump is a medical system that simulates the operation of the pancreas (an internal
organ). The software controlling this system is an embedded system that collects information from
a sensor and controls a pump that delivers a controlled dose of insulin to a user.
• The problem is that the level of insulin required does not just depend on the blood glucose level
but also on the time of the last insulin injection
Insulin pump hardware architecture
• hardware components and
organization of the insulin pump
Activity model of the insulin pump

activity model that illustrates how the software transforms an


input blood sugar level to a sequence of commands that drive
the insulin pump.
Analyze
• Clearly, this is a safety-critical system. If the pump fails to operate or does not operate correctly,
then the user’s health may be damaged or they may fall into a coma because their blood sugar
levels are too high or too low. This system must therefore meet two essential high-level
requirements:
• 1. The system shall be available to deliver insulin when required.
• 2. The system shall perform reliably and deliver the correct amount of insulin to counteract the current
level of blood sugar.
The system must therefore be designed and implemented to ensure that it always meets these requirements.
Activity- Read the case study
• An information system (medical records system)
• A sensor-based data collection system (a wilderness weather station)
• A support environment (support students’ learning in schools)
THANK-YOU

You might also like