Anda di halaman 1dari 24

Chapter 1.

Introduction

Some slides are adopted from Kung D., Object-Oriented Software Engineering: An Agile Unified Methodology

Key Takeaway Points


Software engineering aims to significantly improve
software productivity and software quality while
reducing software costs and time to market.
Software engineering consists of three tracks of
interacting life cycle activities:
software development process
software quality assurance, and
software project management

Object-oriented (OO) software engineering is a


specialization of software engineering. It views the
world and systems as consisting of objects that
interact with each other.
1-2

What Is Software Engineering?

Software engineering as a discipline is focused


on
research, education, and application of engineering
processes and methods
to significantly increase software productivity (P)
and software quality (Q) while reducing software
costs (C) and time to market (T) software PQCT.

What is the focus of data base systems?


What is the focus of operating systems?
1-3

Why Software Engineering?


1. Software is expanding into all sectors of our
society:

Companies rely on software to run and expand their


businesses.
Software systems are getting larger and more complex
millions of lines of code.
Software costs are 90 95% of total system costs
(software costs were only 5 10% of total system costs
two decades ago.)
Embedded systems contain application specific
integrated circuits (ASIC), which are costly to replace
software quality is critical.

We need an engineering approach to software


development.
1-4

Why Software Engineering?


2. Large software systems development requires
teamwork and software engineering supports
teamwork.
A typical software engineer produces an average 50100
lines of source code per day.
A small system of 10,000 lines of code requires one
software engineer to work between 100 and 200 days or 5
to 10 months.
A medium-size system of 500,000 lines of code requires a
software engineer to work 5,000 to 10,000 days or 20 to
40 years.

Real-world software systems require many software


engineers to work together to jointly develop a
software system.
1-5

Why Software Engineering?

To work together, the software engineers must


overcome three challenges, among others:

Conceptualization

Communication

Coordination

Solution:
Processes and methodologies for analysis and design
UML for communication and coordination
Tools that automate or support methodology steps.
1-6

Software Life Cycle Activities

Software processes and methodologies consist


of life cycle activities:
Productivity

Software
Development
Process

Quality

Cost

Time to
Market

Software
Software
Quality
Project
Assurance Management

1-7

1. Software Development Process

A software development process transforms


the initial system concept into the operational
system running in the target environment.
It identifies the business needs, conducts a
feasibility study, and formulates the
requirements or capabilities that the system
must deliver.
It also designs, implements, tests, and deploys
the system to the target environment.
1-8

The Waterfall Process


System Engineering

Software Requirements Analysis

Software Design
Coding & Unit Testing
Integration & Integration Testing

Acceptance Testing

Maintenance
1-9

Example System Development A Radio


Communication System (RCS)
The system is similar to a cellular network except that it
has only one high-power base station that serves an area
much larger than a cell in a cellular network. The system
requirements specify the capabilities for the whole
system. 4 of the many system requirements identified:
R1. The RCS shall allow mobile subscribers to initiate calls to
other mobile subscribers and land-line telephones.
R2. The RCS shall allow mobile subscribers to answer calls
from other subscribers.
R3. The RCS shall provide call accounting to capture and
record mobile calls and bill to the subscriber accounts.
R4. The RCS shall allow authorized account administrators to
1-10
manage subscriber accounts.

System design using a block diagram

An architectural design of the RCS using a block


diagram.
3 subsystems: mobile unit, base station, and account
management.
1-11

Decomposition

Requirement R1 involves mobile unit and base


station as well as hardware and software
functions. Sending a call request to the base
station is the function of a mobile unit.
Intercepting the request is a hardware function.
Checking the call request to ensure that it is a
subscriber-to-subscriber call is a software
function. Therefore, the requirement R1 is
decomposed into the following:
1-12

Decomposition
R1.1. Mobile units shall include automatic number
identification (ANI) numbers when sending a call
request.
R1.2. The base station shall verify the caller and
callee using the ANI numbers before setting up a call.
R1.2.1. The software controller shall verify the caller and
callee, and instruct the hardware controller to set up a
connection when the verification is successful.
R1.2.2. The hardware controller shall instruct the highpower transceivers to establish an air-link connection under
the software control.

1-13

Decomposition
After decomposition, R1.1 is assigned to the mobile
unit.
R1.2.1 is assigned to the base station software
controller.
Requirement R1.2.2 is assigned to the base station
hardware controller.
Similarly, R3 may be decomposed and assigned to the
appropriate subsystems.
R4 is assigned to the account management subsystem
because it is a software-only requirement.
1-14

Software Requirements Analysis


Refines the system requirements allocated to the
software system. It also identifies other capabilities
for the software system. These and the refined system
requirements are specified in a software requirements
specification (SRS).
For example, requirement R4 does not specify what
an authorized account administrator can do to manage
the accounts. Thus, the requirement is refined:

1-15

Refined Requirement R4
R4.1. The RCS shall allow an authorized account
administrator to create a sub- scriber account.
R4.2. The RCS shall allow an authorized account
administrator to activate a subscriber account.
R4.3. The RCS shall allow an authorized account
administrator to deactivate a subscriber account.
R4.4. The RCS shall allow an authorized account
administrator to close a sub- scriber account.
R4.5. The RCS shall allow an authorized account
administrator to delete a sub- scriber account that is
already closed.
1-16

Software Design
Determines the software architecture, or the overall
structure, of the software system. It specifies the
subsystems, their relationships, the subsystems'
functions, interfaces, and how the subsystems interact
with each other.
Designs the user interface.
Specifies the information processing algorithms.

1-17

Architectural design for the RCS


N-tier architecture for the account management
system.

1-18

Implementation, Testing, and Maintenance


During the implementation and unit testing phase, programs
are written to implement the design. The programs are tested,
and reviewed by peers to ensure correctness and compliance to
coding standards.
During the integration phase, the program modules are
integrated, and tested to ensure that they work with each other.
During acceptance testing, test cases are designed and run to
check that the software indeed satisfies the software
requirements. The software system is then installed in the
target environment and tested by users. The software enters the
maintenance phase.
During the maintenance phase, corrections, improvements, and
enhancements are made continually until the system is
replaced.
1-19

2. Software Quality Assurance

Software quality assurance (SQA) ensures that


the development activities are performed properly,
and
the software artifacts produced by the development
activities meet the software requirements and
desired quality standards.

1-20

SQA Activities

1-21

3. Software Project Management


Software project management oversees the control
and administration of the development and SQA
activities.
Project management activities include

effort estimation
project planning and scheduling
risk management
project administration, and
others.

These activities ensure that the software system is


delivered on time and within budget.
1-22

Object-Oriented Software Engineering

Object-oriented software engineering (OOSE)


is a specialization of software engineering.
The object-oriented paradigm views the world
and systems as consisting of objects that relate
and interact with each other.
OOSE encompasses:

OO processes
OO methodologies
OO modeling languages
OO tools
1-23

Software Engineering and Computer Science


Computer Science
Pursue optimal solutions
$$$ is not an important
consideration
Programming in the small
Technical issues
Dealing with tame problems
Foundations of software
engineering

Software Engineering
Good enough is enough
$$$ is an important factor
(PQCT Productivity,
Quality, Cost, Time to
market)
Programming in the large
All issues and aspects
Dealing with wicked
problems
Building on top of computer
science and other disciplines
1-24

Anda mungkin juga menyukai