[go: up one dir, main page]

0% found this document useful (0 votes)
49 views50 pages

SE Ch1 - Overview

The document provides an overview of software engineering, including basic concepts, development processes, and career positions. It discusses software engineering as an engineering discipline that applies appropriate theories and methods to solve problems throughout the software development lifecycle. The main stages of the software development process are presented as specification/analysis, design, implementation/programming, testing, and maintenance. Common process models like waterfall, incremental, and integration/reuse are also summarized.

Uploaded by

22h1120017
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)
49 views50 pages

SE Ch1 - Overview

The document provides an overview of software engineering, including basic concepts, development processes, and career positions. It discusses software engineering as an engineering discipline that applies appropriate theories and methods to solve problems throughout the software development lifecycle. The main stages of the software development process are presented as specification/analysis, design, implementation/programming, testing, and maintenance. Common process models like waterfall, incremental, and integration/reuse are also summarized.

Uploaded by

22h1120017
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/ 50

SOFTWARE ENGINEERING

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
• Software = Program + Document
• Software product = Program + Document + Support
• Type of software products
o Generic Product: Stand-alone systems that are marketed
and sold to any customer who wishes to buy them.
o Bespoke Product: Software that is commissioned by a
specific customer to meet their own needs (Customized
Product).
Essential attributes of good software
• Maintainability : Software should be written in such a way that
it can evolve to meet changing customer needs.
• Dependability : Includes the reliability, security and safety of the
software.
• 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.
• Acceptability: Software must be acceptable to the type of users
for which it is designed. This means that it must be
understandable, usable and compatible with other systems that
they use.
The role of software

• The economies of All developed coutries 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
• Unlimited user needs
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.
Subjective reasons
• 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
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
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.
• 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
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
• Specification/Analysis : Determine the requirements and
constraints of the system (Know the problem fully and
exactly)
• Design : Define solutions to solve the problem
• Implementation/Programming : Using programming
languages ​to turn designs into programs
• Testing : Evaluating checking that it does what the customer
wants.
• Maintenance, improvement : Bug fixes, changing the system
in response to changing customer needs, improvement,..
Specification/Analysis
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
Maintenance/Evolution
Some software process models
• 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

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 (2020)


Income

Nguồn: topdev (2020)


Demands of Market

Nguồn: topdev (2020)


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