0% found this document useful (0 votes)
20 views13 pages

01 SE en Introduction Updated 2020

Uploaded by

quoctuan27072004
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)
20 views13 pages

01 SE en Introduction Updated 2020

Uploaded by

quoctuan27072004
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/ 13

References

[1] Ian Sommerville, Software Engineering, 9th ed.,


Addison-Wasley, 2011.
[2] Pankaj Jalote, A Concise Introduction to
INTRODUCTION Software Engineering, Springer, 2008.

INTRODUCTION TO
S O F T WAR E E N G I N E E R I N G

Vu Son Lam
08/2019
1 2

Contents Contents
1. Professional software development 1. Professional software development
2. Softwares vs Computer programs 2. Softwares vs Computer programs
3. Kinds of software products 3. Kinds of software products
4. Software engineering 4. Software engineering
5. Fundamental activities in a software process 5. Fundamental activities in a software process
6. Types of application 6. Types of application
7. Frequently asked questions about software 7. Frequently asked questions about software
8. Software problem 8. Software problem

3 4

History of software engineering History of software engineering


• The notion of ‘software engineering’ was first • Software crisis
proposed in 1968 at a conference held to discuss – Projects running over-budget
what was then called the ‘software crisis’. – Projects running over-time
– Software was very inefficient
– Software was of low quality
– Software often did not meet requirements
– Projects were unmanageable and code difficult to
maintain
– Software was never delivered

https://medium.com/@ryancohane/has-the-software-crisis-passed- Nguồn: https://en.wikipedia.org/wiki/Software_crisis


d45ce975a1e7 5 6
Professional software
History of software engineering development
• Throughout the 1970s and 1980s, a variety of • Lots of people write programs:
– People in business write spreadsheet programs to simplify their
new software engineering techniques and jobs,
methods were developed, such as – Scientists and engineers write programs to process their
experimental data, and
– structured programming, – Hobbyists write programs for their own interest and enjoyment.
– information hiding and • Professional software development:
– object-oriented development. – Software is developed for specific business purposes, for
inclusion in other devices, or as software products such as
– Tools and standard notations were developed and are information systems, etc.
now extensively used. – Professional software, intended for use by someone apart from its
developer, is usually developed by teams rather than individuals.
It is maintained and changed throughout its life.

7 8

Professional software
development
• 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, etc.
– However, if you are writing software that other people
will use and other engineers will change then you
usually have to provide additional information as well
as the code of the program.

9 10

Contents Softwares vs Computer programs


1. Professional software development • A professionally developed software system is
2. Softwares vs Computer programs often more than a single program. The system
3. Kinds of software products usually consists of:
– A number of separate programs and
4. Software engineering
– Configuration files that are used to set up these
5. Fundamental activities in a software process programs.
6. Types of application – Documents:
7. Frequently asked questions about software • system documentation: describes the structure of the system,
• user documentation, which explains how to use the system,
8. Software problem
• websites for users to download recent product information.

11 12
Software definition Contents
• What is software? 1. Professional software development
– Computer programs and associated documentation. 2. Softwares vs Computer programs
Software products may be developed for a particular
3. Kinds of software products
customer or may be developed for a general market.
(Ian2011) 4. Software engineering
5. Fundamental activities in a software process
6. Types of application
7. Frequently asked questions about software
8. Software problem

13 14

Kinds of software products Kinds of software products


• Generic products These are stand-alone systems • Customized (or bespoke) products These are
that are produced by a development organization and systems that are commissioned by a particular
sold on the open market to any customer who is able customer. A software contractor develops the
to buy them. software especially for that customer.
• Examples of this type of product include software for • Examples of this type of software include control
PCs such as databases, word processors, drawing systems for electronic devices, systems written to
packages, and project-management tools: support a particular business process, and air traffic
– MySQL, SQL Server, Oracle control systems.
– Microsoft project, Redmi – Libary management system for Quy Nhon university.
– Microsoft Offices: Word, Excel, Powerpoint. – BIDV smart banking
– Photoshop, Corel,… – VN Railway ticket…

15 16

Kinds of software products Kinds of software products


• An important difference between these types of
software is that:
D What is difference between these types?
– In generic products, the organization that develops the
If you a software company, which software software controls the software specification.
products you like to develop? – For custom products, the specification is usually
Customized products or Generic products. developed and controlled by the organization that is
buying the software. The software developers must
work to that specification.

17 18
Kinds of software products Contents
• However, the distinction between these system 1. Professional software development
product types is becoming increasingly blurred. 2. Softwares vs Computer programs
– More and more systems are now being built with a
generic product as a base, which is then adapted to 3. Kinds of software products
suit the requirements of a customer. 4. Software engineering
• Enterprise Resource Planning (ERP) systems, such as the
SAP system, are the best examples of this approach. Here, a 5. Fundamental activities in a software process
large and complex system is adapted for a company by
incorporating information about business rules and
6. Types of application
processes, reports required, and so on. 7. Frequently asked questions about software
• Quy Nhon University’s Portal (customized from a base
product) 8. Software problem

19 20

Software engineering Software engineering


• Software engineering is an engineering • All aspects of software production
discipline that is concerned with all aspects of – Software engineering is not just concerned
software production from the early stages of with the technical processes of software development.
system specification through to maintaining the – It also includes activities such as software project
system after it has gone into use. management and the development of tools, methods,
• Engineering discipline and theories to support software production.
– 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.
21 22

Why software engineering is


important? Contents
• Software engineering is important for two reasons: 1. Professional software development
– More and more, individuals and society rely on advanced 2. Softwares vs Computer programs
software systems. We need to be able to produce reliable
and trustworthy systems economically and quickly. 3. Kinds of software products
– It is usually cheaper, in the long run, to use software 4. Software engineering
engineering methods and techniques for software systems
rather than just write the programs as if it was a personal
5. Fundamental activities in a software process
programming project. For most types of systems, the 6. Types of application
majority of costs are the costs of changing the software
after it has gone into use. 7. Frequently asked questions about software
 Quality, Cost, Schedule. 8. Software problem

23 24
Fundamental activities Fundamental activities
in a software process in a software process
• The systematic approach that is used in software • Software specification, where customers and
engineering is sometimes called a software engineers define the software that is to be produced
and the constraints on its operation.
process.
• Software development, where the software is
• A software process is a sequence of activities designed and programmed.
that leads to the production of a software • Software validation, where the software is checked
product. to ensure that it is what the customer requires.
• There are four fundamental activities that are • Software evolution, where the software is modified
common to all software processes. to reflect changing customer and market
requirements.

25 26

Contents
1. Professional software development
2. Softwares vs Computer programs
3. Kinds of software products
4. Software engineering
5. Fundamental activities in a software process
6. Types of application
7. Frequently asked questions about software
8. Software problem

27 28

Types of application Types of application


• Stand-alone applications These are application • Interactive transaction-based applications These are
systems that run on a local computer, such as a applications that execute on a remote computer and that
are accessed by users from their own PCs or terminals.
PC. They include all necessary functionality and
– Includes web application such as e-commerce applications where you
do not need to be connected to a network. can interact with a remote system to buy goods and services.
– Examples of such applications are office applications – program and cloud-based services, such as mail and photo sharing.
on a PC, CAD programs, photo manipulation software, – Interactive applications often incorporate a large data store that is
accessed and updated in each transaction.
etc.

29 30
Types of application Types of application
• Embedded control systems: control and • Batch processing systems These are business
manage hardware devices. systems that are designed to process data in
– software that controls anti-lock braking in a car, and large batches. They process large numbers of
– software in a microwave oven to control the cooking process. individual inputs to create corresponding outputs.
– Examples of batch systems include periodic billing
systems, such as phone billing systems, and salary
payment systems.

31 32

Types of application Types of application


• Entertainment systems These are systems that • Systems for modeling and simulation:
are primarily for personal use and which are developed by scientists and engineers to model
intended to entertain the user. physical processes or situations.
– Games…

33 Gennymotion 34

Types of application Types of application


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

VISSIM là phần mềm mô phỏng, phân tích luồng giao thông, hỗ trợ công
tác phân luồng, góp phần giảm tắc nghẽn giao thông trong các đô thị.
Được áp dụng ở một số thành phố: Hà Nội, Huế, Đà Nẵng...
Nguồn: https://www.ptvgroup.com/en/solutions/products/ptv-vissim/
https://www.cic.com.vn/san-pham/phan-mem-mo-phong-giao-thong-ptv-vissim
35 36
Choosing software
Types of application engineering techniques
• Systems of systems: These are systems that • We use different software engineering techniques
are composed of a number of other software for each type of system because the software has
systems. quite different characteristics.
• Some approaches for software development:
– Plan-drive approach
– Agile approach

Which approach we should use for:


D • Embedded systems
• Web-based systems
• Systems of systems
37 38

Choosing software Choosing software


engineering techniques engineering techniques
• For embedded systems: • For a web-based system
– An embedded control system in an automobile is – An approach based on iterative development and
safety-critical and is burned into ROM when installed delivery may be appropriate.
in the vehicle.
• For system of systems:
– It is therefore very expensive to change. Such a
system needs very extensive verification and – However, iterative development and delivery may be
validation so that the chances of having to recall cars impractical for a system of systems, where detailed
after sale to fix software problems are minimized. specifications of the system interactions have to be
– User interaction is minimal (or perhaps nonexistent) so specified in advance so that each system can be
there is no need to use a development process that separately developed.
relies on user interface prototyping.

39 40

Frequently asked questions


Contents about software
1. Professional software development • What is software?
2. Softwares vs Computer programs – Computer programs and associated documentation.
Software products may be developed for a particular
3. Kinds of software products
customer or may be developed for a general market.
4. Software engineering (Ian 2011)
5. Fundamental activities in a software process • What is software engineering?
6. Types of application – Software engineering is an engineering discipline that
is concerned with all aspects of software production.
7. Frequently asked questions about software
8. Software problem

41 42
Frequently asked questions Frequently asked questions
about software about software
• What are the fundamental software engineering • What are the costs of software engineering?
– Roughly 60% of software costs are development costs; 40% are
activities? testing costs.
– Software specification, software development, software – For custom software, evolution costs often exceed development
validation, and software evolution. costs.
• What are the best software engineering techniques
• What is the difference between software
and methods?
engineering and computer science? – While all software projects have to be professionally managed
– Computer science focuses on theory and and developed, different techniques are appropriate for different
types of system.
fundamentals; software engineering is concerned
– For example, games should always be developed using a series
with the practicalities of developing and delivering of prototypes whereas safety critical control systems require a
useful software. complete and analyzable specification to be developed.
– You can’t, therefore, say that one method is better than another

Nguồn: Ian 2011 43 44

Contents Software problem


1. Professional software development
Cost
2. Softwares vs Computer programs
3. Kinds of software products
4. Software engineering Schedule Quality
Software
5. Fundamental activities in a software process problem
6. Types of application
7. Frequently asked questions about software
Scale Change
8. Software problem

45 The major factors drive software engineering 46

Cost, schedule and quality Cost


• The software should be produced • Lines of code (LOC) or thousands of lines of code
(KLOC) delivered is by far the most commonly used
– at reasonable cost, Các yêu cầu của measure of software size in the industry.
– in a reasonable time, and một sản phẩm • The cost of developing software is generally
– should be of good quality phần mềm measured in terms of person-months of effort spent in
development.
• And productivity is frequently measured in the
industry in terms of LOC (or KLOC) per person-
month.

47 48
Cost Schedule
• Software companies often charge the client for • Schedule is another important factor in many
whom they are developing the software between projects.
$3,000 - $15,000 per person-month [2]. – Business trends are dictating that the time to market
• With a productivity of 1000 LOC per person- of a product should be reduced; that is, the cycle time
from concept to delivery should be small.
month, it means that each line of delivered code
– For software this means that it needs to be developed
costs between $3 and $15!
faster, and within the specified time.
• Assume a software has 50,000 LOC • Unfortunately, the history of software is full of cases where
 Cost $150,000 and $750,000! projects have been substantially late.

49 50

Productivity  Cost, Schedule Quality


• Reducing the cost and the cycle time for software • Besides cost and schedule, the other major factor
development are central goals of software driving software engineering is quality.
engineering. • The international standard on software product
• Productivity in terms of output (KLOC) per quality* suggests that software quality comprises
person-month can adequately capture both cost six main attributes:
and schedule concerns
– Pursuit of higher productivity is a basic driving
force behind software engineering and a major reason
for using the different tools and techniques.

• International Standards Organization. Software engineering — product


51 quality. part 1: Quality model.Technical Report ISO9126-1, 2001. 52

Quality Quality
• Functionality. The capability to provide functions which meet • With multiple dimensions to quality, different projects may
stated and implied needs when the software is used. emphasize different attributes, and a global single number for
quality is not possible.
• Reliability. The capability to provide failure-free service.
• However, reliability is generally accepted to be the main quality
• Usability. The capability to be understood, learned, and used. criterion. As unreliability of software is due to the presence of
• Efficiency. The capability to provide appropriate performance defects in the software, one measure of quality is the
relative to the amount of resources used such as memory and number of defects in the delivered software per unit size
processor cycles. (generally taken to be thousands of lines of code, or KLOC).
• With this as the major quality criterion, the quality objective is to
• Maintainability. The capability to be modified for purposes of
reduce the number of defects per KLOC as much as possible.
making corrections, improvements, or adaptation.
• Current best practices in software engineering have been able
• Portability. The capability to be adapted for different specified to reduce the defect density to less than 1 defect per KLOC.
environments without applying actions or means other than
those provided for this purpose in the product.

53 54
Quality –
What is a software defect? Scale and Change
• A Software DEFECT / BUG is a condition in a • Though cost, schedule, and quality are the main
software product which driving forces for a project in our problem domain
– does not meet a software requirement (as stated in the (of industry strength software), there are some
requirement specifications) or other characteristics of the problem domain that
– does not meet end-user expectation (which may not also influence the solution approaches employed
be specified but is reasonable). – Scale
• In other words, a defect is an error in coding or – Change
logic that causes a program to malfunction or to
produce incorrect/unexpected results.
http://softwaretestingfundamentals.com/defect/
55 56

Scale Scale
• Most industrial-strength software systems tend to • Development of a large system requires a different
be large and complex, requiring tens of set of methods compared to developing a small
system.
thousands of lines of code.
– Consider the problem of counting people in a room
versus taking a census of a country.
• In small projects, informal methods for development
and management can be used. However, for large
projects, both have to be much more rigorous.

57 58

To successfully execute a project, a proper method for


engineering the system has to be employed and the Change
project has to be tightly managed to make sure that
cost, schedule, and quality are under control.

D When and why changes occur in software


development life cycle?

59 60
Change Change
• Change is another characteristic of the problem domain which • Though traditionally changes in software during
the approaches for development must handle.
maintenance have been distinguished from
– as the complete set of requirements for the system is generally not
known (often cannot be known at the start of the project) or stated changes that occur while the development is
– as development proceeds and time passes, additional taking place, these lines are blurring, as
requirements are identified, which need to be incorporated in the
fundamentally the changes in both of these
software being developed.
• This need for changes requires that methods for development
scenarios are similar
embrace change and accommodate it efficiently. – existing source code needs to be changed due to
• Change requests can be quite disruptive to a project, and if not some changes in the requirements or due to some
handled properly, can consume up to 30 to 40% of the defects that need to be removed.
development cost.

61 62

Change Exercises / Discussion


• Overall, as the world changes faster, software has to
change faster, even while under development. 1 What is the most important difference between
generic software product development and
• Changes in requirements are therefore a
custom software development?
characteristic of the problem domain.
• In today’s world, approaches that cannot accept and What might this mean in practice for users of
accommodate change are of little use—they can generic software products?
solve only those few problems that are change
resistant.

63 64

Exercises / Discussion Exercises / Discussion

2 What are the important attributes that all 3 Explain, with examples, why
professional software should have? different application types require
specialized software engineering techniques to
support their design and development?

65 66
W W

Exercises 1 Exercises 1
• The essential difference is that • For users of generic products, this means
– In generic software product development, the specification
is owned by the product developer. – They have no control over the software specification
– For custom product development, the specification is so cannot control the evolution of the product.
owned and controlled by the customer. – The developer may decide to include/exclude features
• The implications of this are significant and change the user interface.
– The developer can quickly decide to change the – This could have implications for the user’s business
specification in response to some external change (e.g. a
competing product) but, processes and add extra training costs when new
– When the customer owns the specification, changes have versions of the system are installed.
to be negotiated between the customer and the developer – It also may limit the customer’s flexibility to change
and may have contractual implications.
their own business processes.

67 68

W W

Exercises 2 Exercises 2
• Functionality. The capability to provide functions which meet
stated and implied needs when the software is used.
• Reliability. The capability to provide failure-free service.
• Usability. The capability to be understood, learned, and used.
• Efficiency. The capability to provide appropriate performance
relative to the amount of resources used such as memory and
processor cycles.
• Maintainability. The capability to be modified for purposes of
making corrections, improvements, or adaptation.
• Portability. The capability to be adapted for different specified
environments without applying actions or means other than
those provided for this purpose in the product.
International Standards Organization. Software engineering — product quality.
part 1: Quality model.Technical Report ISO9126-1, 2001. 69 70

W W

Exercises 3 Exercises 3
• Different application types require the use of • Costs and frequency of change:
different development techniques for a number of – Some systems (such as embedded systems in
reasons: consumer devices) are extremely expensive to
change; others, must change frequently in response to
– Costs and frequency of change. changing requirements (e.g. business systems).
– The software lifetime and delivery schedule. – Systems which are very expensive to change need
– The most important ‘non-functional’ requirements. extensive upfront analysis to ensure that the
requirements are consistent and extensive
validation to ensure that the system meets its
specification. This is not cost-effective for systems that
change very rapidly.

71 72
W W

Exercises 3 Exercises 3
• The software lifetime and delivery schedule: • The most important ‘non-functional’
– Some software systems have a relatively short lifetime requirements:
(many web-based systems), others have a lifetime of – Different systems have different priorities for non-
tens of years (large command and control systems). functional requirements.
Some systems have to be delivered quickly if they are • For example, a real-time control system in an aircraft has
to be useful. safety as its principal priority; an interactive game has
– The techniques used to develop short-lifetime, rapid responsiveness and usability as its priority.
delivery systems (e.g. use of scripting languages, – The techniques used to achieve safety are not
prototyping, etc.) are inappropriate for long-lifetime required for interactive gaming; the extensive UI
systems which require techniques that allow for long- design required for games is not needed in safety-
term support such as design modelling. critical control systems.

73 74

W W

Exercises 3 Exercises 3

Nguồn ảnh: https://www.engadget.com/2013/02/14/uk-thales-passive-radar/ Nguồn ảnh: https://wccftech.com/hardcore-game-dev-bundle/


75 76

You might also like