Sei sulla pagina 1di 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 from
conception 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
 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 develop


technologies 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 the
specific 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
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 doesn’t wear out

Discuss the software crisis.

 Problems:

 Schedule and cost estimates are often grossly inaccurate

 The “productivity” of software people hasn’t kept pace with the demand for their services

 The quality of software is sometimes less than adequate

 With no solid indication of productivity, we can’t 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
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 organization’s strategic
objectives are typically not funded

 Economic Feasibility:

4
 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 of
meeting 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 user’s 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
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
 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
 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
 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 small
increments

 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
 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
 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
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 the
core 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. The
DFD 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
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 don’t 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
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
 Let us first consider the main use cases of this system—“put 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
Draw a sequence diagram for a restaurant.

16
17

Potrebbero piacerti anche