Professional Documents
Culture Documents
Lesson 1 Introduction To Software Engineering
Lesson 1 Introduction To Software Engineering
Introduction to
Software
Engineering
INTRODUCTION TO CHAPTER 1
Learning
outcomes, Part ◦ Understand the difference between a software product
and a program
1 ◦ Understand the types of a software product
◦ Get an overview of the types of software applications
◦ Review software engineering goals
◦ Introduce the quality metrics of good software
◦ Understand the need for software engineering
INTRODUCTION TO CHAPTER 1 2
Learning
outcomes, Part ◦ Understand the problems faced by software engineers
and the difficulties of building software
2 ◦ Understand the software crisis and the software
engineering remedy
INTRODUCTION TO CHAPTER 1 3
INTRODUCTION TO CHAPTER 1 4
Learning
outcomes, Part oUnderstand the professional software development
process
4 oHave an overview of the different process models and
understand how to choose between them
INTRODUCTION TO CHAPTER 1 5
Software in Real-
Life
PART I: INTRODUCTION TO
SOFTWARE
Introduction
oImagine a world without software, can you live in it?
oThink about all the devices and systems that you encounter in your everyday life which
have software controlling them
We can’t run
Introduction
oNational infrastructures and utilities are controlled by computer-based systems
oThe economies of all developed nations are dependent on software
oMost electrical products include a computer and controlling software
Legacy software
oLegacy software are up to 30 years old, but in full use in organizations today
oThey are often poorly documented
o Either because there was no documentation in the first place
o Or because the documentation is useless because it has not been kept up to date as changes have
been made
Legacy software
Why must it change?
o Must be adapted to meet the needs of new IT environments or technologies
o Needs to be improved to implement new business requirements
o Needs to be extended to make it interoperable with other more modern systems or databases
o Needs to be redesigned to make it viable in a network environment
Software vs.
Program
PART I: INTRODUCTION TO
SOFTWARE
Programs
Software
System
Documentation
Data Documentation
User Documentation
Software product
oSoftware, when made for a specific set of requirements is called software product
oSoftware products are delivered to the customer with the documentation that describes
how to install and use the system
oRepresents software which is licensed or otherwise offered, provided, distributed, made
available, commercialized, or is being developed to be commercially released
Software Types
PART I: INTRODUCTION TO
SOFTWARE
Software types
We can distinguish the following major types of software:
oSystem software
oApplication software
oEngineering/scientific software
oEmbedded software
oWeb applications
oAI software
System software
oSystem software is a collection of programs that provide service to other software
oInfrastructure software come under this category, like:
o Compilers
o Operating systems
o Editors
o Drivers
Application software
oDesigned to solve user problems as per the user’s requirements
oExamples of application software:
o Word processing software
o Graphics software
o Spreadsheet software
o Presentation software
Engineering/Scientific software
oThis software are used for carrying out calculations, modeling, prediction,
interpretation of engineering and statistical data, and decision making
oExamples of engineering/scientific software:
o MATLAB
o AUTOCAD
o PSPICE
o ORCAD
Embedded software
oThese are software control systems that control and manage hardware devices
Web applications
oThe software related to web applications come under this category.
oWeb applications execute on a browser that runs on top of an operating system.
oThe frontend of web applications is created using languages such as HTML, CSS, and
JavaScript.
oThe backend can be programmed using a variety of Frameworks/languages such as
Laravel/PHP, Node/Express, Python/Django or ASP.Net/C#.
AI software
oArtificial Intelligence (AI) software makes use of non numerical algorithms to solve
complex problems that are not amenable to computation or straight forward analysis
oExamples of AI software:
o Speech & Voice Recognition
o Virtual Assistant
o Personalized shopping
o Autonomous vehicles
Attributes of
Good Software
PART I: INTRODUCTION TO
SOFTWARE
oA software product can be judged by what it offers and how well it can be used
oThis software must satisfy the following criteria:
◦ Operational
◦ Transitional
◦ Maintenance
Operational attributes
oThis tells us how well the software works in operations
oIt can be measured on:
o Usability
o Efficiency
o Correctness
Usability
oIt is the degree to which a software can be used by specified consumers to achieve the
desired objectives with satisfaction
Efficiency
oAs, doing the objective effectively and correctly
oIt can be defined as, using the resources optimally where resources could be CPU and
memory consumption, and response time
Correctness
oA software is correct if it always produces the correct result, when given valid inputs
Transitional attributes
oThis aspect is important when the software is moved from one platform to another
oIt can be measured on:
o Portability
o Reusability
o Interoperability
Portability
oIt means the ability to move a software from one type of computer to another with the
minimum effort
Reusability
oIt is the process of creating software systems from predefined software components
Interoperability
oIt is the ease with which a software is used with other software systems
oLack of interoperability requires manual intervention to synchronize data between
different systems. For example, exporting a list of items through PDF from Software A to
be manually inserted in Software B.
Maintenance attributes
oThis aspect briefs about how well a software has the capabilities to maintain itself in
the ever-changing environment
oIt can be measured on:
o Modularity
o Maintainability
o Flexibility
o Scalability
Modularity
oIt refers to the extent to which a software may be divided into smaller programs
Maintainability
oIt is defined as the degree to which the software is understood, repaired, or enhanced
Flexibility
oIt is the ability for the software to adapt to possible or future changes in its
requirements
Scalability
oIt refers to designing software systems in such a manner that, as the number of users
of the system increases, the software will continue to function with comparable
response times
Software Product
Specification
PART I: INTRODUCTION TO
SOFTWARE
oThese are stand-alone systems that are produced by a development organization and
sold on the open market to customers
oExamples of this type of product include software for PCs such as databases, word
processors, drawing packages, and project-management tools
oThe specification of what the software should do is owned by the software developer
and decisions on software change are made by the developer
o 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