Download as pdf or txt
Download as pdf or txt
You are on page 1of 34

HANOI UNIVERSITY OF INDUTRY

Faculty of Information Technology

Introduction to Software Engineering

Lecturer: Dr. Nguyen Thi My Binh


Department: Software engineering
Mobile: 0977901599

9/18/2022 1
Overview
 Software Engineering should focus on imparting to students
the knowledge and skills that are needed to successfully
execute a commercial project of a few person-months effort
while employing proper practices and techniques. It is worth
pointing out that a vast majority of the projects executed in the
industry today fall in this scope—executed by a small team
over a few months.
 The goal of this course is to introduce to the students a limited
number of concepts and practices which will achieve the
following two objectives:
 Teach the student the skills needed to execute a smallish commercial
project
 Provide the students necessary conceptual background for undertaking
advanced studies in software engineering, through courses or on their
own 2
GIỚI THIỆU CHUNG
 Mô tả nội dung học phần
Cung cấp các kiến thức cơ bản, các phương pháp, nguyên tắc liên quan tới quá
trình triển khai sản phẩm phần mềm theo quá trình công nghiệp (lập kế hoạch,
phân tích thiết kế, qui trình công nghệ, phương pháp kỹ thuật thực hiện,
phương pháp tổ chức quản lý, công cụ và môi trường triển khai phần mềm,...).
Từ đó sinh viên biết cách tiến hành xây dựng phần mềm một cách có hệ thống
và có phương pháp.
 Mục tiêu của học phần
Mục tiêu chung: Trang bị cho sinh viên các kiến thức về qui trình sản xuất
phần mềm, một số công cụ, thủ tục hỗ trợ trong sán xuất phần mềm.
Kiến thức: Sinh viên nắm được quy trình sản xuất phần mềm với sự trợ giúp
của máy tính một cách hệ thống.
Kỹ năng: Sinh viên sử dụng các kiến thức đã học về quy trình, thủ tục, công
cụ để tiến hành phát triển phần mềm.
Thái độ: Rèn luyện cho sinh viên khả năng tiếp cận với vấn đề mới, có thái
độ học tập nghiêm túc, chủ động. 3
Introduction to software engineering
 Chapter 1: Overview of software engineering
 Chapter 2. Software process
 Chapter 3. Analysis and specification
requirements.
 Chapter 4. Software design
 Chapter 5. Software testing strategies

4
Chapter 1. Overview of software
engineering
1.1. The basic concepts
1.2. The unique nature of Webapps
1.3. Software engineering
1.4. The software process
1.5. The software problem
1.5.1. Cost, Schedule, and Quality
1.5.2. Scale and Change
1.6. Summary

5
The basic concepts
 Software is: (1) instructions (computer programs) that when
executed provide desired features, function, and performance;
(2) data structures that enable the programs to adequately
manipulate information, (3) descriptive information in both
hard copy and virtual forms that describes the operation and
use of the programs.
 A software includes the computer programs, attachments and
configuration information necessary to make these programs
work properly. A software system consists of three parts:
 Individual computer programs
 Data structures
 Related documents

6
7
Software Application Domains
 System software: a collection of programs written to service
other programs. Some system software (e.g., compilers,
editors, and file management utilities) processes complex, but
determinate,4 information structures.
 Application software - stand-alone programs that solve a
specific business need.
 Engineering/scientific software- has been characterized by
“number crunching” algorithms. Applications range from
astronomy to volcanology, from automotive stress analysis to
space shuttle orbital dynamics, and from molecular biology to
automated manufacturing.

8
Software Application Domains
 Embedded software - resides within a product or system and
is used to implement and control features and functions for the
end user and for the system itself.
 Product-line software - designed to provide a specific
capability for use by many different customers. For example:
inventory control products, word processing, spreadsheets,
computer graphics, multimedia, entertainment, database
management, and personal and business financial applications.
 Web applications—called “WebApps,” this network-centric
software category spans a wide array of applications. In their
simplest form, WebApps can be little more than a set of linked
hypertext files that present information using text and limited
graphics.
9
Software Application Domains
 Artificial intelligence software—makes use of nonnumerical
algorithms to solve complex problems that are not amenable to
computation or straightforward analysis. Applications within
this area include robotics, expert systems, pattern recognition
(image and voice), artificial neural networks, theorem proving,
and game playing.

10
The basic concepts
 Computer software is the product that software
professionals build and then support over the long
term.
 It includes of programs that execute within a
computer of any size and architecture, content that is
presented as the computer programs execute, and
descriptive information in both hard copy and virtual
forms that encompass virtually any electronic media.

11
The basic concepts
 Software engineering encompasses a process, a collection of
methods (practice) and an array of tools that allow
professionals to build high quality computer software.
 Who does it? Software engineers build and support software,
and everyone in the industrialized world uses it either directly
or indirectly.
 Why is it important? Software is important because it affects
nearly every aspect of our lives and has become pervasive in
our commerce, our culture, and our everyday activities.
Software engineering is important because it enables us to
build complex systems in a timely manner and with high
quality.

12
The basic concepts
 What are the steps? You build computer software like you
build any successful product, by applying an agile, adaptable
process that leads to a high-quality result that meets the needs
of the people who will use the product. You apply a software
engineering approach.
 What is the work product? From the point of view of a
software engineer, the work product is the set of programs,
content (data), and other work products that are computer
software. But from the user’s viewpoint, the work product is
the resultant information that somehow makes the user’s
world better.

13
Chapter 1. Overview of software
engineering
1.1. The nature of software
1.2. The unique nature of Webapps
1.3. Software engineering
1.4. The software process
1.5. The software problem
1.5.1. Cost, Schedule, and Quality
1.5.2. Scale and Change
1.6. Summary

14
The Software Problem
 Ask any student who has had some programming experience the
following question: You are given a problem for which you
have to build a software system that most students feel will be
approximately 10,000 lines of (say C or Java) code. If you are
working full time on it, how long will it take you to build this
system?

15
The Software Problem
 The answer of students is generally 1 to 3 months. And, given the
programming expertise of the students, there is a good chance that
they will be able to build the software and demo it to the professor
within 2 months. With 2 months as the completion time, the
productivity of the student will be 5000 lines of code (LOC) per
person-month.
 We act as clients and pose the same problem to a company that is in
the business of developing software for clients. Though there is no
standard productivity figure and it varies a lot, it is fair to say a
productivity figure of 1000 LOC per person-month is quite
respectable (though it can be as low as 100 LOC per person-month
for embedded systems). With this productivity, a team of
professionals in a software organization will take 10 person-months to
build this software system.
Why this difference in productivity in the two scenarios? 16
The Software Problem
Is that two different things are being built in the two scenarios
 In the first, a student system is being built which is primarily meant
for demonstration purposes, and is not expected to be used later.
Because it is not to be used, nothing of significance depends on the
software and the presence of bugs and lack of quality is not a major
concern. Neither are the other quality issues like usability,
maintainability, portability etc.
 On the other hand, an industrial-strength software system is built to

solve some problem of a client and is used by the client’s


organization for operating some part of business, and a malfunction of
such a system can have huge impact in terms of financial or business
loss, inconvenience to users, or loss of property and life.
Consequently, the software system needs to be of high quality with
respect to properties like reliability, usability, portability, etc.
17
The Software Problem
 This need for high quality and to satisfy the end users has a
major impact on the way software is developed and its cost.
 The software industry is largely interested in developing
industrial-strength software, and the area of software
engineering focuses on how to build such systems. That is, the
problem domain for software engineering is industrial-strength
software

18
Cost, Schedule, and Quality
 The software should be produced at reasonable cost, in a
reasonable time, and should be of good quality. These three
parameters often drive and define a software project.
 To get an idea of the costs involved, let us consider the
current state of practice in the industry. Lines of code (LOC)
or thousands of lines of code (KLOC) delivered is by far the
most commonly used measure of software size in the industry.
 As the main cost of producing software is the manpower
employed, the cost of developing software is generally
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

19
Cost, Schedule, and Quality
 The productivity in the software industry for writing fresh
code generally ranges from few hundred to about 1000+ LOC
per person-month.
 This productivity is over the entire development cycle, not
just the coding task.
 Software companies often charge the client for whom they are
developing the software between $3000 - $15,000 per person-
month.
 With a productivity of 1000 LOC per person-month, it means
that each line of delivered code costs between $3 and $15!
 And even small projects can easily end up with software of
50,000 LOC. With this productivity, such a software project
will cost between $150,000 and $750,000! 20
Cost, Schedule, and Quality
 Schedule is another important factor in many projects.
Business trends are dictating that the time to market of a
product should be reduced; that is, the cycle time from
concept to delivery should be small.
 Quality is one of the main mantras, and business strategies are
designed around it.
 Unfortunately, a large number of instances have occurred
regarding the unreliability of software—the software often
does not do what it is supposed to do or does something it is
not supposed to do.

21
Cost, Schedule, and Quality
 The international standard on software product quality [55]
suggests that software quality comprises six main attributes,
as shown in Figure 1.1. These attributes can be defined as
follows:

22
Software quality
 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.
 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.

23
Software quality
 With multiple dimensions to quality, different projects may
emphasize different attributes, and a global single number for
quality is not possible.
 As unreliability of software is due to the presence of defects
in the software, one measure of quality is the number of
defects in the delivered software per unit size (generally taken
to be thousands of lines of code, or KLOC)
 The quality objective is to reduce the number of defects per
KLOC as much as possible.
 Current best practices in software engineering have been able
to reduce the defect density to less than 1 defect per KLOC.

24
Software quality
 To determine the quality of a software product, we need to
determine the number of defects in the software that was
delivered. This number is clearly not known at delivery time
and may never be known.
 One approach to measure quality is to log the defects found in
6 months (or 1 year) after delivery and define quality with
respect to these defects. This means that quality of delivered
software can only be determined 6 months after its delivery.
 It should be pointed out that to use this definition of quality,
what a defect is must be clearly defined.

25
Software quality
 Besides reliability, another quality attribute of great interest is
maintainability.
 Once the software is delivered and deployed, it enters the
maintenance phase.
 Why is maintenance needed for software, when software has
no physical components that can degrade with age?
 Software needs to be maintained because of the residual
defects remaining in the system.
 It is commonly believed that the state of the art today is
limited and developing software with zero defect density is
not possible. These defects, once discovered, need to be
removed, leading to what is called corrective maintenance.
26
Software quality
 Maintenance is also needed to change the delivered software
to satisfy the enhanced needs of the users and the
environment, leading to adaptive maintenance.
 Over the life of a software system, maintenance cost can far
exceed the cost of original development.
 The maintenance-to-development-cost ratio has been
variously suggested as 80:20, 70:30, or 60:40.
 Due to this high cost, maintainability attribute of delivered
software is of high interest—it is clearly desirable to have
software systems that are easier to maintain.

27
Chapter 1. Overview of software
engineering
1.1. The nature of software
1.2. The unique nature of Webapps
1.3. Software engineering
1.4. The software process
1.5. The software problem
1.5.1. Cost, Schedule, and Quality
1.5.2. Scale and Change
1.6. Summary

28
Scale and Change
 Most industrial-strength software systems tend to be large and
complex, requiring tens of thousands of lines of code. Sizes of
some of the well-known software products are given in Table
1.1.

29
Scale and Change
 Any software project involves the use of engineering and
project management.
 In small projects, informal methods for development and
management can be used. For large projects, both have to be
much more rigorous (strict).

30
Scale and Change
Overall, as the world changes faster, software has to change faster,
even while under development. Changes in requirements are
therefore a characteristic of the problem domain. In today’s world,
approaches that cannot accept and accommodate change are of
little use—they can solve only those few problems that are change
resistant.

31
Laws and ethics on IT
Refer to the composite system of HaUI

32
Self-Assessment Exercises

33
34

You might also like