01 SE en Introduction Updated 2020
01 SE en Introduction Updated 2020
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
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
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
15 16
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
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
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
33 Gennymotion 34
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
39 40
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
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
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
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
63 64
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