0% found this document useful (0 votes)
25 views49 pages

SE Ch1 - Overview of Software Engineering

The document provides an overview of software engineering, covering basic concepts, software development processes, career positions, and ethics in the field. It emphasizes the importance of software engineering in producing reliable systems and outlines various software development models such as Waterfall and Incremental. Additionally, it discusses the ethical responsibilities of software engineers, including adherence to intellectual property rights and professional conduct.

Uploaded by

dailt2169
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)
25 views49 pages

SE Ch1 - Overview of Software Engineering

The document provides an overview of software engineering, covering basic concepts, software development processes, career positions, and ethics in the field. It emphasizes the importance of software engineering in producing reliable systems and outlines various software development models such as Waterfall and Incremental. Additionally, it discusses the ethical responsibilities of software engineers, including adherence to intellectual property rights and professional conduct.

Uploaded by

dailt2169
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/ 49

SOFTWARE ENGINEERING

CONG NGHE PHAN MEM

Chapter 1
Overview of software engineering
Content
I. Basic concepts
II. Software development processes
III.Career positions in software
development
IV.Ethics in software engineering
Basic concepts about
Software Engineering
Software PHAN MEM LA TAP HOP CAC CHUONG TRINH VA TAP HOP CAC TAI LIEU

CHUONG TRINH LA TAP HOP CAC CAU LENH CHI THI,....

• Software = Program + Document TAI LIEU (CAC SAN PHAM TRUNG GIAN)

• Software product = Program + Document + Support HO TRO


SAN PHAM PHAN MEM

• Type of software products cac loai sppm

san pham dung chung

o Generic Product: Stand-alone systems that are marketed


and sold to any customer who wishes to buy them.
san pham danh rieng cho mot khach hang doi tuong cu the - dat hang

o Bespoke Product: Software that is commissioned by a


specific customer to meet their own needs (Customized
Product).
Cac thuoc tinh cua mot phan mem tot

Essential attributes of good software


kha nang bao tri bao tri phan mem la di fix cac loi cua phan mem, nang cap, bo sung, xoa bo

• Maintainability : Software should be written in such a way that it


- xay dung theo quy trinh ro rang
can evolve to meet changing customer needs. -- sudatdung
ten
comment/ chu thich

do tin cay - tai lieu san co

• Dependability : Includes the reliability, security and safety of the


ti le loi MTBF, MTTR bao mat an toan
software.
tinh hieu qua

• Efficiency : Software should not make wasteful use of system


resources such as memory and processor cycles. Efficiency
therefore includes responsiveness, processing time, memory
utilization, etc. thoi gian thuc thi, hieu nang cua phan mem, bo nho su dung (memory), kha nang dap ung
(responsiveness)
kha nang su dung
• Acceptability: Software must be acceptable to the type of users for
which it is designed. This means that it must be understandable, de hieu
usable and compatible with other systems that they use.
de su dung tuong thich
The role of software

• The economies of All developed countries are


strongly dependent on software.
• More and more systems are controlled by software.
• Software spending take a significant portion of GNP
(Gross National Product) in all developed countries.
=> How about in Vietnam?

6
We have enough software?
• Software has been written since the first programmable computers.

• Softwares are interested and developed very early

• A lot of softwares have been written

→ There are so many softwares

• In fact, the software product does not meet the requirements of users:

▪ Not enough in quantity

▪ Lack of quality

▪ Not on time

→ The software is not enough for users


Objective reasons li do khach quan

• Unlimited user needs nhu cau cua nguoi dung khong bao gio la du

o All fields, industries, organizations and individuals


have the need to use software.
o User requirements are getting higher and more
complex. Systems are required to have new
features that were previously thought to be
impossible.
o The fast changing of hardwares. su thay doi qua nhanh cua phan cung
Subjective reasons nguyen do chu quan

phat trien phan mem khong chuyen nghiep, khong ap dung quy trinh, cong cu chuan hoa ,...

• Software development is not highly professional. It is


like an art (impromptu), not yet seen as a science.
• The software development process has not been
unified
• No unified standard for software measurement.
Solution

→ It is necessary to have one/more professional


process in software development to enhance the
effectiveness of this special industry
Cn phi có mt / nhiu quy trình chuyên nghip trong phát trin phn mm nâng cao hiu qu ca ngành công nghip c bit này
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.
11
Importance of SE
❑ More and more, individuals and society rely on advanced
software systems. We need to be able to produce reliable
and trustworthy systems economically and quickly.
❑ It is usually cheaper, in the long run, to use software
engineering methods and techniques for software
systems rather than just write the programs as if it was a
personal programming project. For most types of system,
the majority of costs are the costs of changing the
software after it has gone into use.

12
Software engineering
• Being an engineering major involves three
elements:
o Procedure/process
o Method
o Tool
→ To develop efficient software with given
requirements
SE – Process/Procedure

• Identify the stages and the order of execution of the


stages
• Determine the documents, products to be delivered
and how to do it
• Set milestones (milestones) and deliverables
Software engineering – Method
• Specific ways to complete the stages
• Each stage of software making has its own methods:
Method specification, design, programming, testing,
operation, maintenance, etc.
Software engineering – Tool
• Computer Aided Software Engineering (CASE) tools
provide automatic/semi-automatic help for each method
in each stages of the software development process
• Eg. IDE (editor, compiler, debugger, testing,
version/source control,..,)
Software engineering – principles
nguyen tac co ban

Some basic principles apply to all types of software


systems, regardless of the development techniques used:
• Must understand and manage the process when building
software. Different processes are used for different types
of software.
• Reliability and performance are important for all types of
systems.
• Understanding and managing software specifications and
requirements (what the software should do) is important.
• Should reuse already developed software rather than
write new software.
Web-based software engineering
• The Web is a platform for running applications, and
organizations are increasingly developing web-based systems
rather than local systems.
• Web services allow application functionality to be accessed
over the web.
dien toan dam may

• Cloud computing is an approach to providing computing


services where applications run remotely in the 'cloud'.
o Users do not buy software but buy a service and pay for
what had been used (SaaS)
Web-based software engineering
Web-based software engineering
• Software reuse
o Software reuse is the predominant approach to building web-
based systems. When building these systems, it is possible to
assemble them from existing software systems and
components.
• Incremental and agile development
o Web-based systems should be developed and distributed
incrementally. People now generally recognized that it is
impractical to define all the requirements for such systems in
advance.
Software development
process
Software development process
quy trinh phat trien phan mem

Software development process (SDP) is a


set of stages that must be performed in the
process of building a software system.
Main stages/phases of SDP
yeu cau
dac ta/ phan tich

• Specification/Analysis : Determine the requirements and


rang buoc constraints of the system (Know the problem fully and
exactly)
thiet ke

• Design : Define solutions to solve the problem


cai dat

• Implementation/Programming : Using programming


languages ​to turn designs into programs
kiem thu

• Testing : Evaluating checking that it does what the customer


wants.
bao trì, cai tien

• Maintenance, improvement : Bug fixes, changing the system


in response to changing customer needs, improvement,..
Specification/Analysis
rut trich, phan tich yeu cau

dac ta: mo ta quy trinh

tham
dinh yeu
cau

tai lieu yêu


câu
Design
Implementation/Programming
• Transform designs into executable programs.
• Programming is a personal activity with no standard
procedure.
• Debugging is the activity of finding program errors
and fixing these errors.
Testing

kiem thu thanh phan/ don vi kiem thu he thong

kiem thu chap nhan nguoi dung


Maintenance/Evolution
Some software process models
mo hinh ptpm

• Waterfall model
• Incremental/Iterative development model
• Intergration and reuse model
Software process models
• Waterfall model

o Plan driven model. Separate and distinct phases of specification and


development.

• Incremental model

o Specification, design, programming, testing is done round by round.


Can be scheduled or flexible.

• Integration and reuse model

o The system is assembled from existing components. Can be scheduled


or flexible.

• In practice, most large systems are developed using a process that combines
all these models.
Waterfall model
Waterfall model
• There are distinctly defined stages in the waterfall model:

o Requirements definition (analysis and specification)

o Design

o Implementation/Program

o Testing

o Operation and maintenance

• The main limitation of the waterfall model is the difficulty of making


changes after the process is in progress. In principle, a phase (stage) must
be completed before moving on to the next phase.
Waterfall model
• Pros:
o Simple, natural and easy to manage.
• Cons:
o Customers have to provide requirements clearly and
completely from the outset. It is difficult to meet the
changes later.
o In fact, very few systems have stable business and
requirements.
o Customers often must wait a long time to see the first
version of the product
Incremental development model
Incremental development model
Incremental development model
• This model is proposed based on the idea that instead
of having to build and transfer the system once, it will
be divided into many rounds, increasing. Each round
is a partial result of a set of requirements.
• User requirements are prioritized. The higher the
priority requirement, the earlier it is in the
development rounds.
Agile/Scrum

37
Intergration and reuse model
Intergration and reuse model
• This model is based on systematic reuse
techniques; where the system is integrated from
multiple existing or commercial COTS (Commercial-
off-the-shelf) components.
• Components can be customized according to user
requirements
• Reuse is now the standard method for building many
types of business systems
Career positions in
software development
Type of work

Nguồn: topdev
Income

Source: topdev
dao duc nghe nghiep

Ethics in
software engineering
Software engineering ethics
• Software engineering involves wider responsibilities
than simply the application of technical skills.
• Software engineers must behave in an honest and
ethically responsible way if they are to be respected
as professionals.
• Ethical behaviour is more than simply upholding the
law but involves following a set of principles that are
morally correct.
- quyen so huu
- truy cap may tinh
-
Issues of professional responsibility
❑ Intellectual property rights
❑ Engineers should be aware of local laws governing the
use of intellectual property such as patents, copyright, etc.
They should be careful to ensure that the intellectual
property of employers and clients is protected.

❑ Computer misuse
❑ Software engineers should not use their technical skills to
misuse other people’s computers. Computer misuse
ranges from relatively trivial (game playing on an
employer’s machine, say) to extremely serious
(dissemination of viruses).
ACM/IEEE Code of Ethics

• The professional societies in the US have cooperated to


produce a code of ethical practice.
• Members of these organisations sign up to the code of
practice when they join.
• The Code contains eight Principles related to the
behaviour of and decisions made by professional
software engineers, including practitioners, educators,
managers, supervisors and policy makers, as well as
trainees and students of the profession.
The ACM/IEEE Code of Ethics
Software Engineering Code of Ethics and Professional Practice

ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices

PREAMBLE
The short version of the code summarizes aspirations at a high level of the abstraction; the
clauses that are included in the full version give examples and details of how these
aspirations change the way we act as software engineering professionals. Without the
aspirations, the details can become legalistic and tedious; without the details, the
aspirations can become high sounding but empty; together, the aspirations and the details
form a cohesive code.
Software engineers shall commit themselves to making the analysis, specification, design,
development, testing and maintenance of software a beneficial and respected profession. In
accordance with their commitment to the health, safety and welfare of the public, software
engineers shall adhere to the following Eight Principles:
Ethical principles
1. PUBLIC - Software engineers shall act consistently with the public interest.
2. 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.
3. PRODUCT - Software engineers shall ensure that their products and related
modifications meet the highest professional standards possible.
4. JUDGMENT - Software engineers shall maintain integrity and independence in their
professional judgment.
5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and
promote an ethical approach to the management of software development and
maintenance.
6. PROFESSION - Software engineers shall advance the integrity and reputation of the
profession consistent with the public interest.
7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
8. 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.
Review
• Definition of software and software products
• Types, features and roles of software
• Software engineering definition, three elements of software
engineering
• Features and Pros/Cons of some Software Process Model:
waterfall model, Incremental development model, Intergration
and reuse model.
• Some career positions in software developments and demands
of current market
• Some principles of ethics in software engineering

You might also like