Top Banner

of 17

SWE مودر2ن

Apr 08, 2018

Download

Documents

Hala Ehab
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/6/2019 SWE 2

    1/17

    Chapter 1. Introduction to Software Engineering

    Define Software.

    The term Software Engineering was first used at a NATO conference in 1968

    The term software refers to the set of computer programs, procedures, and associated

    documents (flowcharts, manuals, etc.) that describe the programs and how they are to be

    used

    What are the components of Software?

    Software is not just the programs but also all associated documentation and configuration

    data which is needed to make these programs operate correctly

    A software system usually consists of:

    A number of separate programs

    Configuration files which are used to set up these programs

    System documentation which describes the structure of the system

    User documentation which explains how to use the system

    For software products, web sites for users to download recent product information

    Define Software Engineering.

    Software engineering is an engineering discipline which 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 (Software Life Cycle)

    Define Software Life-Cycle Model.

    A software life cycle model depicts the significant phases of a software project fromconception until the product is retired

    It addresses the phases of a software project: requirements phase, design phase,

    implementation, integration, testing, operation and maintenance phases

    Discuss the importance of software.

    It is the engine that drives business decision-making

    It serves as the basis for modern scientific investigation and engineering problem-solving

    1

  • 8/6/2019 SWE 2

    2/17

    It is embedded in all kinds of systems, such as transportation, medical,

    telecommunications, military, industrial processes, entertainment, etc

    Software is important as it affects nearly every aspect of our lives and has become

    pervasive in our commerce, our culture, and our everyday activities

    As software importance grows, the software community continually attempts to developtechnologies that will make it easier, faster, and less expensive to build high-quality

    computer programs

    What are the types of software?

    System Software:

    Operating Software Utilities Compilers Debuggers Assemblers.

    Application Software:

    Word processors Spreadsheets - database management systems.

    What are the classes of software?

    I. Generic Software

    Generic software is designed for a broad customer market whose requirements are very common,

    fairly stable, and well-understood by the software engineer

    Generic software products are sold in the open market, and there could be several

    competitive products on the market

    Database products, browsers, and system software are examples of generic software

    II. Customized Software

    Customized products are those that are developed for a customer where domain,

    environment, and requirements are unique to that customer and cannot be satisfied by generic

    products

    Legacy systems, software written for specific business processes that are typical of thespecific industry, are used when a customized software product is needed

    Process-control systems and hospital-management systems require customized software

    The developer manages a generic product and the customer manages a customized

    product

    In other words, requirements and specifications of a generic product are controlled by the

    developer, whereas in the case of a customized product, these are controlled by the

    customer and influenced by the practices of that industry

    Explain the characteristics of software.

    2

  • 8/6/2019 SWE 2

    3/17

    1. Most software is custom-built, rather than assembled from existing components

    2. Software is developed or engineered; it is not manufactured in the classical sense

    3. Software is flexible

    4. Software doesnt wear out

    Discuss the software crisis.

    Problems:

    Schedule and cost estimates are often grossly inaccurate

    The productivity of software people hasnt kept pace with the demand for their services

    The quality of software is sometimes less than adequate

    With no solid indication of productivity, we cant accurately evaluate the efficiency of

    new tools, methods, or standards

    Communication between the customer and software developer is often poor

    Software maintenance tasks devour the majority of all software funds

    State some applications of software.

    3

  • 8/6/2019 SWE 2

    4/17

    Chapter 2. Software-Development Life-Cycle Models

    What is the software engineering process?

    A software process is a set of activities whose goal is the development or evolution of

    software

    These activities are:

    Software specifications - Software development - Software validation - Software

    evolution

    Explain the reasons for using a software life-cycle model.

    Helps to understand the entire process

    Enforces a structured approach to development

    Enables planning of resources in advance

    Enables subsequent controls of them

    Aids management to track progress of the system

    What is feasibility study?

    A feasibility study is a preliminary study which investigates the needs of prospective

    users and determines the resource requirements, costs, benefits, and feasibility of a

    proposed project

    The goal of feasibility studies is to evaluate alternative systems and to propose the most

    feasible and desirable systems for development

    What are the categories of feasibility study?

    Organizational Feasibility:

    Organizational feasibility is how well a proposed information system supports the

    objectives of the organization

    For example, projects that do not directly contribute to meeting an organizations strategic

    objectives are typically not funded

    Economic Feasibility:

    4

  • 8/6/2019 SWE 2

    5/17

    Economic feasibility is concerned with whether expected cost savings, increased revenue,

    reductions in required investments, and other types of benefits will exceed the costs of

    developing and operating a proposed system

    Technical Feasibility:

    Technical feasibility can be demonstrated if reliable hardware and software capable ofmeeting the needs of a proposed system can be acquired or developed by the business in

    the required time

    Operational Feasibility:

    Operational feasibility is the willingness and ability of management, employees,

    customers, suppliers, and others to operate, use, and support a proposed system

    If the software for a new system is too difficult to use, employees may make too many

    errors and avoid using it

    What is software maintenance?

    Maintenance is an important part of the SDLC

    Many times maintenance may consume more time than the time consumed in the

    development

    The cost of maintenance varies from 50% to 80% of the total development cost

    What are the types of software maintenance.

    1. Corrective Maintenance:

    Corrective maintenance means repairing processing or performance failures or making

    changes because of previously uncorrected problems

    2. Adaptive Maintenance:

    Adaptive maintenance means changing the program function. This is done to adapt to the

    external environment change

    3. Perfective Maintenance:

    Perfective maintenance means enhancing the performance or modifying the programs to

    respond to the users additional or changing needs

    4. Preventive Maintenance:

    Preventive maintenance is the process by which we prevent our system from being

    obsolete

    It involves the concept of re-engineering and reverse engineering in which an old system

    with an old technology is re-engineered using new technology

    5

  • 8/6/2019 SWE 2

    6/17

    State the set of documents produced in a software project.

    Requirements document

    Project plan

    Design documents (architecture, detailed)

    Test plan and test reports

    Final code

    Software manuals (e.g., user, installation, etc.)

    Explain the waterfall process model.

    Phase 1: Feasibility Study:

    Its result is a document that should contain at least the following items:

    A definition of the problem

    Determination of technical and economic viability

    Alternative solutions and their expected benefits

    Required resources, costs, and delivery dates in each proposed alternative solution

    Phase 2: Requirement Analysis and Specification:

    An SRS (Software Requirements Specification) document must contain the following:

    6

  • 8/6/2019 SWE 2

    7/17

    Detailed statement of problem

    Possible alternative solution to problem

    Functional requirements of the software system

    Constraints on the software system

    Phase 3: Design and Specification:

    Traditional Design Approach:

    Architectural design (also called high-level design

    Detailed design (also called low-level design)

    Object-Oriented Design Approach:

    Lower development time and effort

    Better maintainability

    Phase 4: Coding and Module Testing:

    Output of this phase is an implemented and tested collection of modules

    Phase 5: Integration and System Testing:

    Integration is normally carried out incrementally over a number of steps

    The system testing is done in three phases:

    Alpha Testing

    Beta Testing

    Acceptance Testing

    Phase 6: Delivery and Maintenance:

    The delivery of software is often done in two stages

    The cost of maintenance is often more than 60% of the total cost of software

    Over 50% of maintenance costs attributed to perfective maintenance

    Evolution is probably a better term than maintenance

    State the advantages and disadvantages of Waterfall model.

    7

  • 8/6/2019 SWE 2

    8/17

    The main advantage of the waterfall model is its simplicity. It is straightforward and

    divides the large task of building a software system into a series of cleanly divided phases,

    each phase dealing with a separate logical concern

    Waterfall model is also easy to administer in a contractual setup. As each phase is

    completed and its work product produced, some amount of money is given by the

    customer to the developing organization

    The disadvantages of Waterfall Model

    It assumes that the requirements of a system can be frozen before the design begins

    Freezing the requirements usually requires choosing the hardware

    It follows the big bang approach. The entire software is delivered in one shot at the end

    It encourages requirements bloating

    It is a document-driven process that requires formal documents at the end of each phase

    Despite these limitations, the waterfall model has been the most widely used process

    model

    If the developing organization is quite familiar with the problem domain and the

    requirements for the software are quite clear, the waterfall model works well, and may be

    the most efficient process

    Explain the Time-Boxing process model.

    In the time boxing model, the basic unit of development is a time box, which is of fixed

    duration

    8

  • 8/6/2019 SWE 2

    9/17

    Since the duration is fixed, a key factor in selecting the requirements to be built in a time

    box is what can be fit into the time box

    Each time box is divided into a sequence of stages

    The model requires that the duration of each stage is approximately the same

    Having time-boxed iterations with stages of equal duration and having dedicated teams

    renders itself to pipelining of different iterations

    To illustrate the use of this model, consider a time box consisting of three stages:

    requirement specification, build, and deployment.

    The requirement stage is executed by its team of analysts and ends with a prioritized list

    of requirements to be built in this iteration along with a high-level design

    The build team develops the code for implementing the requirements, and performs the

    testing

    The tested code is then handed over to the deployment team, which performs

    predeployment tests, and then installs the system for use

    These three stages can be done in approximately equal time in an iteration

    What are the common principles for agile approaches?

    Working software is the key measure of progress in a project

    For progress in a project, software should be developed and delivered rapidly in smallincrements

    Even late changes in the requirements should be entertained

    Face-to-face communication is preferred over documentation

    Continuous feedback and involvement of customer is necessary for developing good-

    quality software

    Simple design which evolves and improves with time is a better approach than doing an

    elaborate design up front for handling all possible scenarios

    The delivery dates are decided by empowered teams of talented individuals

    Explain the extreme programming process.

    9

  • 8/6/2019 SWE 2

    10/17

    Many detailed agile methodologies have been proposed, some of which are widely used

    now

    Extreme programming (XP) is one of the most popular and well-known approaches in the

    family of agile methods

    XP UNIQUE PRACTICES

    The XP approach used in an development iteration has some unique practices:

    Development is done by pairs of programmers (called pair programming), instead of

    individual programmers

    Automated unit tests are written first before the actual code is written, and then the code

    should be written to pass the tests (test-driven development)

    It suggests that refactoring be done to improve the design. During refactoring, no new

    functionality is added, only the design of the existing programs is improved

    It encourages frequent integration of different units. Only one pair at a time can release

    their changes and integrate into the common code base

    Design your own development process for the following software project: The client

    is willing to spend some time only three times to help develop the requirements

    (divide the requirements phase into three equal parts) - The system is designed to

    automate an existing manual system - The client wanted to reduce the delivery time

    as much as possible - The developing organization is quite familiar with the problem

    domain - The project requires a large number of features.

    We divide the project into three subprojects. For each one, we use waterfall model for

    requirements phase, and time boxing model for the remaining phases of each subproject.

    Design your own development process for the following software project: The client

    is willing to spend some time at the start to help develop the requirements - The

    client wanted to reduce the delivery time as much as possible - The developing

    organization is not familiar with the problem domain - The project requires a large

    number of features.

    We use prototyping model for requirements phase, and time boxing model for the remaining

    phases of each subproject.

    10

  • 8/6/2019 SWE 2

    11/17

    Design your own development process for the following software project: The client

    is willing to spend some time at the start to help develop the requirements - The

    client wanted to improve cash flow and get benefits as soon as possible - The

    developing organization is not familiar with the problem domain.

    We use waterfall model for requirements phase, and iterative delivery model for the remaining

    phases of each subproject.

    Design your own development process for the following software project: The pace

    of requirements change is high - The customer is willing to be heavily involved

    during the entire development.

    We use extreme programming model for this project

    Chapter 3. Introduction to Software Requirements Specification

    What are the types of requirements?

    On the basis of their functionality, the requirements are classified into the following two

    types:

    Functional requirements: They define factors, such as I/O formats, storage structure,computational capabilities, timing, and synchronization

    Non-functional requirements: They define the properties or qualities of a product

    including usability, efficiency, performance, reliability, portability, etc

    Explain the process of requirements engineering.

    .

    11

  • 8/6/2019 SWE 2

    12/17

    State the types of requirements review.

    Informal Review

    Formal Review

    Verifiability

    Comprehensibility

    Traceability

    Adaptability

    What are the classes of requirements?

    Enduring requirements : These are relatively stable requirements which derive from thecore activity of the organization and which relate directly to the domain of the system

    Volatile requirements : These are requirements which are likely to change during the

    system development or after the system has been put into operation

    Construct a DFD that describes the arithmetic expression (a + b) * (c + a * d). Assume that

    the data a, b, c, and d are read from a terminal and the result is printed

    Construct a DFD that describes a simplified information system for a public library. The

    data and functions shown are not necessarily computer data and computer functions. TheDFD describes physical objects, such as books and shelves, together with data stores that

    are likely to be, but are not necessarily, realized as computer files

    12

  • 8/6/2019 SWE 2

    13/17

    Construct a decision table for the following: The Head of the Department (HOD) in a

    faculty recommends books to be bought by the Library. If funds are available, then the

    books are bought. In case funds dont permit, a textbook is kept waitlisted for purchase

    during the next year, whereas the Library returns the requisitions for all other books to the

    Head of the Department

    13

  • 8/6/2019 SWE 2

    14/17

    Draw a Basic Use Case Diagram for an ATM System.

    Write three textual use-cases for an on-line auction system

    On-line auction system is to be built for a university community, called the University

    Auction System (UAS), through which different members of the university can sell and

    buy goods

    We will assume that there is a separate financial subsystem through which the payments

    are made and that each buyer and seller has an account in it

    14

  • 8/6/2019 SWE 2

    15/17

    Let us first consider the main use cases of this systemput an item for auction, make

    a bid, and complete an auction. These use cases are given below

    Textual Use Cases UC1

    Textual Use Cases UC2

    Textual Use Cases UC3

    15

  • 8/6/2019 SWE 2

    16/17

    Draw a sequence diagram for a restaurant.

    16

  • 8/6/2019 SWE 2

    17/17

    17