Software Engineering CH1 Slides

Embed Size (px)

Citation preview

  • 8/20/2019 Software Engineering CH1 Slides

    1/24

    Chapter 1. Introduction

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

  • 8/20/2019 Software Engineering CH1 Slides

    2/24

    1-2

    Key Takeaway Points

    • Software engineering aims to significantly improvesoftware productivity and software quality whilereducing software costs and time to market.

    • Software engineering consists of three tracks ofinteracting 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 theworld and systems as consisting of objects thatinteract with each other.

  • 8/20/2019 Software Engineering CH1 Slides

    3/24

    1-3

    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 softwarecosts (C) and time to market (T) – software PQCT.

    • What is the focus of data base systems?

    • What is the focus of operating systems?

  • 8/20/2019 Software Engineering CH1 Slides

    4/24

    1-4

    Why Software Engineering?

    1. Software is expanding into all sectors of oursociety:

    • 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 coststwo decades ago.)

    • Embedded systems contain application specificintegrated circuits (ASIC), which are costly to replace – software quality is critical.

    We need an engineering approach to softwaredevelopment.

  • 8/20/2019 Software Engineering CH1 Slides

    5/24

    1-5

    Why Software Engineering?

    2. Large software systems development requiresteamwork and software engineering supportsteamwork.

    • A typical software engineer produces an average 50–100lines of source code per day.

    • A small system of 10,000 lines of code requires onesoftware engineer to work between 100 and 200 days or 5to 10 months.

    • A medium-size system of 500,000 lines of code requires asoftware engineer to work 5,000 to 10,000 days or 20 to40 years.

    ⇒ Real-world software systems require many softwareengineers to work together to jointly develop asoftware system.

  • 8/20/2019 Software Engineering CH1 Slides

    6/24

    1-6

    Why Software Engineering?

    To work together, the software engineers must

    overcome three challenges, among others:

    Communication CoordinationConceptualization

    Solution:

    • Processes and methodologies for analysis and design• UML for communication and coordination

    • Tools that automate or support methodology steps.

  • 8/20/2019 Software Engineering CH1 Slides

    7/24

    1-7

    Software Life Cycle Activities

    • Software processes and methodologies consist

    of life cycle activities:

    Cost

    Software

     Development

     Process

    Software

    Quality

     Assurance

    Software

     Project

     Management 

    Time toMarketQualityProductivity

  • 8/20/2019 Software Engineering CH1 Slides

    8/24

    1-8

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

    • It also designs, implements, tests, and deploysthe system to the target environment.

  • 8/20/2019 Software Engineering CH1 Slides

    9/24

    1-9

    The Waterfall Process

    System Engineering

    Software Requirements Analysis

    Software Design

    Coding & Unit Testing

    Integration & Integration Testing

    Acceptance Testing

    Maintenance

  • 8/20/2019 Software Engineering CH1 Slides

    10/24

    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 systemrequirements specify the capabilities for the whole

    system. 4 of the many system requirements identified:

     – R1. The RCS shall allow mobile subscribers to initiate calls toother 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

    manage subscriber accounts. 1-10

  • 8/20/2019 Software Engineering CH1 Slides

    11/24

    System design using a block diagram

    1-11

    • An architectural design of the RCS using a block

    diagram.

    • 3 subsystems: mobile unit, base station, and accountmanagement.

  • 8/20/2019 Software Engineering CH1 Slides

    12/24

    Decomposition

    • Requirement R1 involves mobile unit and base

    station as well as hardware and software

    functions. Sending a call request to the basestation is the function of a mobile unit.

    Intercepting the request is a hardware function.

    Checking the call request to ensure that it is asubscriber-to-subscriber call is a software

    function. Therefore, the requirement R1 is

    decomposed into the following:

    1-12

  • 8/20/2019 Software Engineering CH1 Slides

    13/24

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

     power transceivers to establish an air-link connection underthe software control.

    1-13

  • 8/20/2019 Software Engineering CH1 Slides

    14/24

    Decomposition

    • After decomposition, R1.1 is assigned to the mobile

    unit.

    • R1.2.1 is assigned to the base station softwarecontroller.

    • 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 subsystembecause it is a software-only requirement.

    1-14

  • 8/20/2019 Software Engineering CH1 Slides

    15/24

    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

  • 8/20/2019 Software Engineering CH1 Slides

    16/24

    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 accountadministrator to delete a sub- scriber account that is

    already closed.

    1-16

  • 8/20/2019 Software Engineering CH1 Slides

    17/24

    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

  • 8/20/2019 Software Engineering CH1 Slides

    18/24

    Architectural design for the RCS

    • N-tier architecture for the account management

    system.

    1-18

  • 8/20/2019 Software Engineering CH1 Slides

    19/24

  • 8/20/2019 Software Engineering CH1 Slides

    20/24

    1-20

    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.

  • 8/20/2019 Software Engineering CH1 Slides

    21/24

    1-21

    SQA Activities

  • 8/20/2019 Software Engineering CH1 Slides

    22/24

    1-22

    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.

  • 8/20/2019 Software Engineering CH1 Slides

    23/24

    1-23

    Object-Oriented Software Engineering

    • Object-oriented software engineering (OOSE)is a specialization of software engineering.

    • The object-oriented paradigm views the worldand systems as consisting of objects that relateand interact with each other.

    • OOSE encompasses: – OO processes

     – OO methodologies

     – OO modeling languages – OO tools

  • 8/20/2019 Software Engineering CH1 Slides

    24/24

    1-24

    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