Lecture - 1 Introduction
Lecture - 1 Introduction
2
Textbooks
3
Software
• Instructions (computer programs) that when executed provide
desired features, function, and performance;
• Data structures that enable the programs to adequately manipulate
information.
• Documentation that describes the operation and use of the
programs.
4
What is Software Characteristics of software
5
Software Domains
• System software.
• Application software.
• Engineering/Scientific software.
• Embedded software.
• Product-line software.
• Web/Mobile applications.
• AI software (robotics, neural nets, game playing).
6
Software Domains
• Stand-alone applications
• These are application systems that run on a local computer, such as a PC. They
include all necessary functionality and do not need to be connected to a network.
• Interactive transaction-based applications
• Applications that execute on a remote computer and are accessed by users from
their own PCs or terminals. These include web applications such as e-commerce
applications.
• Embedded control systems
• These are software control systems that control and manage hardware devices.
Numerically, there are probably more embedded systems than any other type of
system.
7
Software Domains
8
Software Domains
• 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.
• Systems of systems
• These are systems that are composed of a number of other software systems.
9
Legacy Software 2a 2e
10
Need for Software Engineering 4 Points
11
Software Costs 3 Points
12
Definition
Software Engineering (IEEE):
13
Software Engineering Layers
Layer 1 — Tools
The first layer involves choosing the semi-automated and automated tools that will become the framework for the
project. Some examples may include:
Layer 2 — Method
The second layer establishes the methods of developing the software. This includes any technical knowledge and
resources required for development. Some tasks include choosing methods for:
software engineering processes define the series of activities and steps that a development team follows to create
and manage software. Common software development processes include requirements gathering, design, coding,
testing, deployment, and maintenance.
Quality is a critical aspect of software engineering. This layer involves quality assurance and control measures to
ensure that the software meets its requirements and performs reliably.
14
Software Engineering
• Software Engineering is an engineering discipline that is concerned
with all aspects of software production from the early stages of
system specification through to maintaining the system after it has
gone into use.
• Engineering discipline
• Using appropriate theories and methods to solve problems bearing in mind
organizational and financial constraints.
• All aspects of software production
• Not just technical process of development. Also project management and
the development of tools, methods etc. to support software production.
15
Software Engineering Principles Reuse
Development process
Specs and req
Dependency and performance
• Some fundamental principles apply to all types of software system,
irrespective of the development techniques used:
• Systems should be developed using a managed and understood
development process. Different processes will be used for different types of
software.
• Dependability and performance are important for all types of system.
• Understanding and managing the software specification and requirements
(what the software should do) are important.
• Where appropriate, you should reuse software that has already been
developed rather than write new software.
16
Software Engineering Process SDVE
17
Process Framework
• Communication.
• Planning.
• Modeling.
• Analysis of requirements.
• Design.
• Construction.
• Code generation.
• Testing.
• Deployment.
18
Umbrella Activities
19
Software Engineering Practice
Polya suggests:
20
Understand the Problem
21
Plan a Solution
• Have you seen similar problems before?
Are there patterns that are recognizable in a potential solution? Is there existing
software that implements the data, functions, and features that are required?
22
Carry out the Plan
23
Examine the Result
24
Hooker’s General Principles
Maintain Vision -> Think -> Plan ahead for reuse -> What you produce other will consume -> KISS -> Reason all it exist ->
Be open to future
• The Reason It All Exists – provide value to users.
• KISS (Keep It Simple, Stupid!) – design simple as it can be.
• Maintain the Vision – clear vision is essential.
• What You Produce, Others Will Consume.
• Be Open to the Future – do not design yourself into a corner.
• Plan Ahead for Reuse – reduces cost and increases value.
• Think! – placing thought before action produce results.
25
Software Engineering Ethics (IEEE)
• Public Interest – 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.
• Judgment – Software engineers shall maintain integrity and
independence in their professional judgment.
26
Software Engineering Ethics
• 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.
• 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.
27
Persons- Others
1.Client and Employer 1.Management
2.Public Interest 2.Proffesion
3.Self 3.Product
4.Colleagues 4.Judgment
THANK YOU