Faculty of Information Technology HANOI UNIVERSITY OF INDUTRY Lecturer Dr Nguyen Thi My Binh Department Software engineering Mobile 0977901599 9/18/2022 Introduction to Software Engineering first Mach[.]
Trang 1Faculty of Information Technology
Lecturer: Dr Nguyen Thi My Binh Department: Software engineering Mobile: 0977901599
Introduction to Software Engineering
Trang 2ÿ 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
ÿ Teach the student the skills needed to execute a smallish commercial
ÿ Provide the students necessary conceptual background for undertaking advanced studies in software engineering, through courses or on their
own
ÿ 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:
project
2
Trang 3ÿ Description of course
content Provides basic knowledge, methods and principles related to the process
of software product deployment according to industrial processes (planning,
design analysis, engineering processes, etc.) technology, implementation
techniques, methods of organization and management, tools and software deployment environment, ).
Knowledge: Students systematically understand the process of software production
with the help of computers.
Attitude: Train students to approach new problems, have a serious and proactive
From there, students know how to build software in a systematic and methodical way
ÿ Objectives of the
module General objective:
Equip students with knowledge about the software production process, some tools and
procedures to support in software production.
Skills: Students use the knowledge they have learned about processes, procedures,
and tools to conduct software development.
GENERAL INTRODUCTION
Trang 4Introduction 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
Trang 51.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
Trang 6ÿ 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
The basic concepts
Trang 8Software Application Domains
ÿ Engineering/scientific software- has been used 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
ÿ System software: a collection of programs written to service
other programs Some system software (eg, compilers, editors, and file management utilities) processes complex, but determinate,4 information structures
ÿ Application software - stand-alone programs that solve a
specific business need.
8
Trang 9Software 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.
Trang 10Software 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
Trang 11The 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 embrace virtually any electronic media.
Trang 12The basic concepts
ÿ Software engineering professionals a process, a
collection of methods (practice) and an array of tools that allow to build high quality 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
Trang 13ÿ 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
The basic concepts
Trang 14engineering
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
Trang 15The Software Problem
ÿ Ask any student who has 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?
Trang 16ÿ 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 Although there
is no standard productivity figure and it various 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.
16
Why this difference in productivity in the two scenarios?
The Software Problem
Trang 17The Software Problem
Consequently, the software system needs to be of high quality with respect to properties like reliability, usability, portability, etc.
Is that two different things are being built in the two scenarios
ÿ In the first, a student system is being built which is preeminent 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.
Trang 18The 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 greatly 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
Trang 19Cost, 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
Trang 20ÿ 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
Trang 21Cost, Schedule, and Quality
ÿ Schedule is another important factor in many projects
ÿ Quality is one of the main mantras, and business strategies are designed
around it ÿ Unfortunately, a large number of instances has
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
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
Trang 22Cost, Schedule, and Quality
ÿ The international standard on software product quality [55] suggests that software quality consists of six main attributes,
as shown in Figure 1.1 These attributes can be defined as follows:
Trang 23Software 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
Trang 24ÿ 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)
24
ÿ 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
Software quality
Trang 25Software 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