Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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 life cycle model depicts the significant phases of a software project from
conception until the product is retired
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
System Software:
Operating Software – Utilities – Compilers – Debuggers – Assemblers.
Application Software:
Word processors – Spreadsheets - database management systems.
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
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
Problems:
The “productivity” of software people hasn’t kept pace with the demand for their services
3
Chapter 2. Software-Development Life-Cycle Models
Organizational Feasibility:
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:
If the software for a new system is too difficult to use, employees may make too many
errors and avoid using it
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
Adaptive maintenance means changing the program function. This is done to adapt to the
external environment change
3. Perfective 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
Final code
Its result is a document that should contain at least the following items:
Required resources, costs, and delivery dates in each proposed alternative solution
6
Detailed statement of problem
Better maintainability
Alpha Testing
Beta Testing
Acceptance Testing
The cost of maintenance is often more than 60% of the total cost of software
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
It assumes that the requirements of a system can be frozen before the design begins
It follows the “big bang” approach. The entire software is delivered in one shot at the end
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
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
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
For progress in a project, software should be developed and delivered rapidly in small
increments
Simple design which evolves and improves with time is a better approach than doing an
elaborate design up front for handling all possible scenarios
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
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
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
11
State the types of requirements review.
Informal Review
Formal Review
Verifiability
Comprehensibility
Traceability
Adaptability
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.
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
15
Draw a sequence diagram for a restaurant.
16
17