Download - SWE مودر2ن
-
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