What is Software Engineering?

advertisement
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
What is Software Engineering?
Software Engineering is the systematic approach to the development, operation and maintenance of
software. Software Engineering is concerned with development and maintenance of software products.
The primary goal of software engineering is to provide the quality of software with low cost. Software
Engineering involves project planning, project management, systematic analysis, design, validations and
maintenance activities.
Analysis, design, and development systems, products, or services requires answering several
fundamental questions:





WHAT is a system?
What is included within a system’s boundaries?
WHAT role does a system perform within the User’s organization?
What mission applications does the system perform?
WHAT results-oriented outcomes does the system produce?
These fundamental questions are often difficult to answer. If you are unable to clearly and concisely
delineate WHAT the system is, you have a major challenge. Now add the element of complexity in
bringing groups of people working on same problem to convergence and consensus on the answers. This
is a common problem shared by Users, Acquirers, and System Developers, even within their own
organizations.
Computer software can then be defined as the product that software engineers design and
build. It includes the executable programs, documentation (both electronic and hard copy). In
addition, it may also include data in the form of numbers and text, or even pictorial and
multimedia formats.
“Engineering is the analysis, design, construction, verification and management of technical (or
social) entities.”
System
The term “system” originates from the Greek term syst¯ema, which means to “place together.” Multiple
business and engineering domains have definitions of a system. This text defines a system as:
System An integrated set of interoperable elements, each with explicitly specified and bounded
capabilities, working synergistically to perform value-added processing to enable a User to satisfy
mission-oriented operational needs in a prescribed operating environment with a specified outcome and
probability of success.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
System Components and Characteristics
A big system may be seen as a set of interacting smaller systems known as subsystems or functional
units each of which has its defined tasks. All these work in coordination to achieve the overall objective of
the system. System engineering requires development of a strong foundation in understanding how to
characterize a system, product, or service in terms of its attributes, properties, and performance.
As discussed above, a system is a set of components working together to achieve some goal. The basic
elements of the system may be listed as:





Resources
Procedures
Data/Information
Intermediate Data
Processes
Resources
Every system requires certain resources for the system to exist. Resources can be hardware, software or
liveware. Hardware resources may include the computer, its peripherals, stationery etc. Software
resources would include the programs running on these computers and the liveware would include the
human beings required to operate the system and make it functional.
Thus these resources make an important component of any system. For instance, a Banking system
cannot function without the required stationery like cheque books, pass books etc. such systems also
need computers to maintain their data and trained staff to operate these computers and cater to the
customer requirements.
Procedures
Every system functions under a set of rules that govern the system to accomplish the defined goal of the
system. This set of rules defines the procedures for the system to Chapter 1 - Introduction to Systems
operate. For instance, the Banking systems have their predefined rules for providing interest at different
rates for different types of accounts.
Data/Information
Every system has some predefined goal. For achieving the goal the system requires certain inputs, which
are converted into the required output. The main objective of the System is to produce some useful
output. Output is the outcome of processing. Output can be of any nature e.g. goods, services or
information.
However, the Output must conform to the customer's expectations. Inputs are the elements that enter the
system and produce Output. Input can be of various kinds, like material, information, etc.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Intermediate Data
Various processes process system's Inputs. Before it is transformed into Output, it goes through many
intermediary transformations. Therefore, it is very important to identify the Intermediate Data. For
example, in a college when students register for a new semester, the initial form submitted by student
goes through many departments. Each department adds their validity checks on it.
Finally the form gets transformed and the student gets a slip that states whether the student has been
registered for the requested subjects or not. It helps in building the System in a better way. Intermediate
forms of data occur when there is a lot of processing on the input data. So, intermediate data should be
handled as carefully as other data since the output depends upon it.
Processes
The systems have some processes that make use of the resources to achieve the set goal under the
defined procedures. These processes are the operational element of the system.
For instance in a Banking system there are several processes that are carried out. Consider for example
the processing of a cheque as a process. A cheque passes through several stages before it actually gets
processed and converted. These are some of the processes of the Banking system. All these
components together make a complete functional system.
Systems also exhibit certain features and characteristics, some of which are:





Objective
Standards
Environment
Feedback
Boundaries and interfaces
Objective
Every system has a predefined goal or objective towards which it works. A system cannot exist without a
defined objective. For example an organization would have an objective of earning maximum possible
revenues, for which each department and each individual has to work in coordination.
Standards
It is the acceptable level of performance for any system. Systems should be designed to meet standards.
Standards can be business specific or organization specific.
For example take a sorting problem. There are various sorting algorithms. But each has its own
complexity. So such algorithm should be used that gives most optimum efficiency. So there should be a
standard or rule to use a particular algorithm. It should be seen whether that algorithm is implemented in
the system.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Environment
Every system whether it is natural or man made co-exists with an environment. It is very important for a
system to adapt itself to its environment. Also, for a system to exist it should change according to the
changing environment. For example, we humans live in a particular environment. As we move to other
places, there are changes in the surroundings but our body gradually adapts to the new environment. If it
were not the case, then it would have been very difficult for human to survive for so many thousand
years.
Another example can be Y2K problem for computer systems. Those systems, which are not Y2K
compliant, will not be able to work properly after year 2000. For computer systems to survive it is
important these systems are made Y2K compliant or Y2K ready.
Feed Back
Feedback is an important element of systems. The output of a system needs to be observed and
feedback from the output taken so as to improve the system and make it achieve the laid standards. In fig
1.1, it is shown that a system takes input. It then transforms it into output. Also some feedback can come
from customer (regarding quality) or it can be some intermediate data (the output of one process and
input for the other) that is required to produce final output.
Boundaries and Interfaces
Every system has defined boundaries within which it operates. Beyond these limits the system has to
interact with the other systems. For instance, Personnel system in an organization has its work domain
with defined procedures. If the financial details of an employee are required, the system has to interact
with the Accounting system to get the required details.
Interfaces are another important element through which the system interacts with the outside world.
System interacts with other systems through its interfaces. Users of the systems also interact with it
through interfaces. Therefore, these should be customized to the user needs. These should be as user
friendly as possible.
Classifications of System
From previous section we have a firm knowledge of various system components and its characteristics.
There are various types of system. To have a good understanding of these systems, these can be
categorized in many ways. Some of the categories are open or closed, physical or abstract and natural or
man made information systems, which are explained next.
Classification of systems can be done in many ways.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Physical or Abstract System
Physical systems are tangible entities that we can feel and touch. These may be static or dynamic in
nature. For example, take a computer center. Desks and chairs are the static parts, which assist in the
working of the center. Static parts don't change. The dynamic systems are constantly changing.
Computer systems are dynamic system. Programs, data, and applications can change according to the
user's needs.
Abstract systems are conceptual. These are not physical entities. They may be formulas, representation
or model of a real system.
Open Closed System
Systems interact with their environment to achieve their targets. Things that are not part of the system are
environmental elements for the system. Depending upon the interaction with the environment, systems
can be divided into two categories, open and closed.
Open systems: Systems that interact with their environment. Practically most of the systems are open
systems. An open system has many interfaces with its environment. It can also adapt to changing
environmental conditions. It can receive inputs from, and delivers output to the outside of system. An
information system is an example of this category.
Closed systems:Systems that don't interact with their environment. Closed systems exist in concept only.
Man made Information System
The main purpose of information systems is to manage data for a particular organization. Maintaining
files, producing information and reports are few functions. An information system produces customized
information depending upon the needs of the organization. These are usually formal, informal, and
computer based.
Formal Information Systems: It deals with the flow of information from top management to lower
management. Information flows in the form of memos, instructions, etc. But feedback can be given from
lower authorities to top management.
Informal Information systems: Informal systems are employee based. These are made to solve the day to
day work related problems. Computer-Based Information Systems: This class of systems depends on the
use of computer for managing business applications. These systems are discussed in detail in the next
section.
What is System Analysis and Design?
System development can generally be thought of having two major components: systems analysis and
systems design.In System Analysis more emphasis is given to understanding the details of an existing
system or a proposed one and then deciding whether the proposed system is desirable or not and
whether the existing system needs improvements. Thus, system analysis is the process of investigating a
system, identifying problems, and using the information to recommend improvements to the system.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Stages in building an improved system
The above figuer shows the various stages involved in building an improved system.
System design is the process of planning a new business system or one to replace or complement an
existing system.
Analysis specifies what the system should do. Design states how to accomplish the objective.
After the proposed system is analyzed and designed, the actual implementation of the system occurs.
After implementation, working system is available and it requires timely maintenance.
Role of System Analyst
The system analyst is the person (or persons) who guides through the development of an information
system. In performing these tasks the analyst must always match the information system objectives with
the goals of the organization.
Role of System Analyst differs from organization to organization. Most common responsibilities of System
Analyst are following
1) System analysis
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
It includes system's study in order to get facts about business activity. It is about getting information and
determining requirements. Here the responsibility includes only requirement determination, not the design
of the system.
2) System analysis and design:
Here apart from the analysis work, Analyst is also responsible for the designing of the new
system/application.
3) Systems analysis, design, and programming:
Here Analyst is also required to perform as a programmer, where he actually writes the code to
implement the design of the proposed application.
Due to the various responsibilities that a system analyst requires to handle, he has to be multifaceted
person with varied skills required at various stages of the life cycle. In addition to the technical know-how
of the information system development a system analyst should also have the following knowledge.

Business knowledge: As the analyst might have to develop any kind of a business system, he
should be familiar with the general functioning of all kind of businesses.

Interpersonal skills: Such skills are required at various stages of development process for
interacting with the users and extracting the requirements out of them

Problem solving skills: A system analyst should have enough problem solving skills for defining
the alternate solutions to the system and also for the problems occurring at the various stages of the
development process.
Data Collection Techniques
When conducting field studies it is important to obtain accurate and reliable information
about the phenomenon under study. Interviews and questionnaires are the most
straightforward instruments, but the data they produce typically present an incomplete
picture. For example, assume your goal is to assess which programming language
features are most error-prone. A developer can give you general opinions and anecdotal
evidence about this; however you would obtain far more accurate information by
recording and analyzing the developer_s work practicesVtheir efforts at repeatedly
editing and compiling code. Methods such as think-aloud protocols and work diaries are
used for this type of research.
First Degree Techniques:
Direct Involvement of Software Engineers
The first five techniques listed in Table 1 are what we call inquisitive techniques, while
the remaining ones are primarily observational. Each type is appropriate for gathering
different types of information from software engineers.
Inquisitive first-degree techniques allow the experimenter to obtain a general
understanding of the software engineering process. Such techniques are probably the
only way to gauge how enjoyable or motivating certain tools are to use or certain
activities to perform. However, they are often subjective, and additionally do not allow
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
for accurate time measurements.
Interviews and Questionnaires
Both interviews and questionnaires are centered on asking a series of questions.
Questions can be closed-ended, i.e., multiple-choice, or they can be open-ended, i.e.,
conversational responses; it is best to always have at least some open-ended questions
to gain information that cannot be relayed by more specific information seeking
questions. To implement interviews and questionnaires effectively, questions and forms
must be crafted carefully to ensure that the data collected is meaningful (DeVaus,
1996; Foddy, 1994). A poorly worded question results in ambiguous responses that
cannot be interpreted or analyzed. It is highly advisable to pilot test the questions or
forms and then re-design them as you learn which questions unambiguously attack the
pertinent issues.
In order to generate good statistical results from interviews or a questionnaire, a sample
must be chosen that is representative of the population of interest. This requirement is
particularly difficult in software engineering because we lack good demographic information
about the population of developers and maintainers. However, this drawback
should not prevent us from using interviews and questionnaires to conduct field studies,
if we do not intend to perform statistical tests on the data or when the problem or
population is small and well-defined.
Interviews and questionnaires are often conducted in the same series of studies, with
the interviews providing additional information to the answers from the questionnaires.
Advantages. People are familiar with answering questions, either verbally or on paper,
and as a result they tend to be comfortable and familiar with this data collection method.
Participants also enjoy the opportunity to answer questions about their work.
Disadvantages. Interviews and questionnaires rely on respondents_ self-reports of their
behaviors or attitudes. This dependency can bias the results in a number of ways. People
are not perfect recorders of events around them; in particular, they preferentially remember
events that are meaningful to them. For instance in one of our questionnaires,
participants reported that reading documentation was a time-consuming aspect of their
job, but in 40 hours of observation, we hardly saw anyone doing so. 2
If the objective of interviews and questionnaires is to obtain statistics based on the
answers to fixed questions, then issues of sampling arise. Most studies in software
engineering have to use what is called convenience sampling, meaning that we involve
whoever is available and volunteers. This will result in various types of bias, such as
self-selection bias (those most interested in our work may have different characteristics
from the population as a whole). Results must always therefore be reported with an
acknowledgement of potential biases, and other threats to validity. And results should be
used keeping the biases in mind. In most cases, slightly biased data is still much more
useful than a complete lack of data.
Interviews
Face-to-face interviews involve at least one researcher talking, in person, to at least one
respondent at a time. Normally, a fixed list of carefully worded questions forms the basis
of the interview. Depending on the goal of the study, respondents may be encouraged to
elaborate on areas and deviate slightly from the script.
Telephone interviews are the middle ground between face-to-face interviews and
questionnaires. You have the interactivity of an interview at the cost and convenience of
a phone call. Telephone interviews are not as personal as face-to-face interviews, yet
they still provide researchers with opportunities to clarify questions and further probe
interesting responses. Although this technique is popular in opinion polling and market
research, it is little used in empirical software engineering.
Advantages. Interviews are highly interactive. Researchers can clarify questions for
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
respondents and probe unexpected responses. Interviewers can also build rapport with a
respondent to improve the quality of responses.
Disadvantages. Interviews are time and cost inefficient. Contact with the respondent
needs to be scheduled and at least one person, usually the researcher, needs to travel to
the meeting (unless it is conducted by phoneVbut this lessens the rapport that can be
achieved). If the data from interviews consists of audio or video tapes, this needs to be
transcribed and/or coded; careful note-taking may, however, often be an adequate
substitute for audio or video recording.
Examples. Interviews have been used in many studies because they fit well with many
types of inquiries. We have used interviews in longitudinal studies as an aid in
understanding how newcomers adapt to a development team and software system (Sim
and Holt, 1998). We interviewed newcomers once every three weeks over a number of
months to track their progress as maintenance team members. Since this was an
exploratory study, the questions were open-ended.
Questionnaires
Questionnaires are sets of questions administered in a written format. These are the most
common field method because they can be administered quickly and easily. However,
very careful attention needs to be paid to the wording of the questions, the layout of the
forms, and the ordering of the questions in order to ensure valid results. Pfleeger and
Kitchenham have published a six-part series on principles of survey research starting
with (Pfleeger and Kitchenham, 2001). This series gives detailed information about how
to design and implement questionnaires. Punter et al. (2003) further provides information
on conducting web-based surveys in software engineering research.
Advantages. Questionnaires are time and cost effective. Researchers do not need to
schedule sessions with the software engineers to administer them. They can be filled out
when a software engineer has time between tasks, for example, waiting for information
or during compilation. Paper form-based questionnaires can be transported to the respondent
for little more than the cost of postage. Web-based questionnaires cost even
less since the paper forms are eliminated and the data are received in electronic form.
Questionnaires can also easily collect data from a large number of respondents in geographically
diverse locations.
Disadvantages. Since there is no interviewer, ambiguous and poorly-worded questions
are problematic. Even though it is relatively easy for software engineers to fill out questionnaires,
they still must do so on their own and may not find the time. Thus, return rates
Analysis Phase
1. Gather information
2. Define system requirements
a. Functional and nonfunctional
3. Prioritize requirements
4. Prototype for feasibility and discovery
5. Generate and evaluate alternatives
6. Review recommendations with management
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Activities of the Analysis Phase and Their Key Questions
System Requirements
 New system capabilities and constraints
 Functional requirements
o Activities system must perform (use cases)
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
o Based on procedures and business functions
o Documented in analysis models
 Nonfunctional requirements
o Technical environment or performance objectives
o Usability, reliability, and security requirements
Stakeholders—The Source of System Requirements





People with interest in successful system implementation
Three primary groups of stakeholders
o Users (use system)
o Clients (pay for and own system)
o Technical staff (ensure system operation)
Every type of stakeholder is identified by analyst
Horizontal user roles – information flow across departments
Vertical user roles – information needs of clerical staff, middle management, and senior
executives
o Business users perform day-to-day operations
o Information users need current information
o Management users need summary information
o Executive users need strategic information
o External users may have access to system
Techniques for Information Gathering

Analysis phase done to understand business functions and develop system requirements

Original structured approach

o
Create model of existing system
o
Derive requirements from existing system model
Current approach
o

Identify logical requirements for new system
Balance the review of current business functions with new system requirements
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Relationship Between Information Gathering and Model Building
Themes for Information-Gathering Questions
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Characteristics for Successful Requirements Determination





Question everything
Be impartial
Assume anything is possible
Pay attention to details
Reframe
Sampling
Sampling is the process of systematically selecting representative
elements of a population. We use sampling to make assumptions
of the population as a whole.
We sample to:




Contain costs
Speed up data gathering
Improve effectiveness
Reduce bias
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Sampling Design
To design a good sample, analysts need to:




Determine the data to be collected
Determine the population to be sampled
Choose the type of sample
Decide on the sample size (not covered)
Fact-Finding Methods







Review existing reports, forms, and procedure descriptions
Interview and discuss processes with users
Observe and document business processes
Build prototypes
Distribute and collect questionnaires
Conduct joint application design (JAD) sessions
Research vendor solutions
Review Existing Reports, Forms, and Procedure Descriptions
 Source: External industry-wide professional organizations and
trade publications
 Source: Existing business documents and procedure
descriptions within organization
o Identify business rules, discrepancies, and redundancies
o Be cautious of outdated material
o Obtain preliminary understanding of processes
o Use as guidelines/visual cues to guide interviews
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Conduct Interviews and Discussions with Users
o Effective way to understand business functions and rules
o Time consuming and resource expensive
o May require multiple sessions to
o Meet all users
o Understand all processing requirements
o Can meet with individuals or groups of users
o List of detailed questions prepared
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Interviewing
o
o
o
o
Planning the Interview
Conducting the Interview
Writing the Interview Report
Join Application Design (JAD)
Question Types – Open-Ended Questions
Benefits
o
o
o
o
o
o
o
o
Interviewee at ease
Use interviewee vocabulary
Detail
Generate new questions
More interesting for interviewee
More spontaneity
Phrasing is easier for interviewee
Could use them when not prepared
Drawbacks
o
o
o
o
o
May result in too much detail
Possibly lose control of interview
Response may take too much time
Appear unprepared
Appear that objectives are lacking
Question Types – Closed-Ended Questions Benefits
o Save time
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
o
o
o
o
o
Easy to compare interviews
Getting to the point
Control over interview
Cover lots of ground
Getting only relevant data
Drawbacks
o
o
o
o
Boring to interviewee
Lack of detail
Miss main ideas
Fail to build rapport with interviewee
Conducting the Interview
o
o
o
o
o
o
o
o
o
Arrive early
Shake hands
Inform interviewee how you will work (note taking, recorder)
Check equipment
Start with open-ended questions to warm-up interview and
get a feeling of attitudes
Cover all questions in 45 min to 1 hour interview
Reflect back to the interview
Ask if something was not covered
Summarize and give feedback
Writing the Interview Report
o Write a report as soon as possibly after the interview
o Note the main points of the interview and your own opinions
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
o Review the report with the respondent at a follow-up
meeting
Systems development life-cycle
A Software Process is a set of related activities that leads to the production of a software product.
There are many different software processors, but all must include 5 activities that are
fundamental to software engineering. 1. Software specification (Requirement Analysis – RA) 2.
Software Design 3. Software Implementation (Coding) 4. Software Validation (Testing) 5.
Software Evolution (Maintenance and further Development)
The phases that are necessary to develop and maintain a software system is called “DATA
STRUCTURE”.

Preliminary Analysis: The objective of phase1 is to conduct a preliminary analysis,
propose alternative solutions, describe costs and benefits and submit a preliminary plan
with recommendations.
Conduct the preliminary analysis: in this step, you need to find out the organization's
objectives and the nature and scope of the problem under study. Even if a problem refers
only to a small segment of the organization itself then you need to find out what the
objectives of the organization itself are. Then you need to see how the problem being
studied fits in with them.
Propose alternative solutions: In digging into the organization's objectives and specific
problems, you may have already covered some solutions. Alternate proposals may come
from interviewing employees, clients , suppliers, and/or consultants. You can also study
what competitors are doing. With this data, you will have three choices: leave the system
as is, improve it, or develop a new system.
Describe the costs and benefits.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615

Systems analysis, requirements definition: Defines project goals into defined functions
and operation of the intended application. Analyzes end-user information needs.

Systems design: Describes desired features and operations in detail, including screen
layouts, business rules, process diagrams, pseudocode and other documentation.

Development: The real code is written here.

Integration and testing: Brings all the pieces together into a special testing environment,
then checks for errors, bugs and interoperability.

Acceptance, installation, deployment: The final stage of initial development, where the
software is put into production and runs actual business.

Maintenance: What happens during the rest of the software's life: changes, correction,
additions, moves to a different computing platform and more. This is often the longest of
the stages.
Not every project will require that the phases be sequentially executed. However, the phases are
interdependent. Depending upon the size and complexity of the project, phases may be combined
or may overlap
Investigation
The 1st stage of SDLC is the investigation phase. During this stage, business opportunities and problems
are identified, and information technology solutions are discussed. Multiple alternative projects may be
suggested and their feasibility analyzed. Operational feasibility is assessed, and it is determined whether
or not the project fits with the current business environment, and to what degree it addresses business
objects. In addition, an economic feasibility investigation is conducted to judge the costs and benefits of
the project. Technical feasibility must also be analyzed to determine if the available hardware and
software resources are sufficient to meet expected specifications. A legal feasibility study is important to
discover any potential legal ramification. The results of the feasibility study can then be compiled into a
report, along with preliminary specifications. When the investigation stage ends, a decision whether or not
to move forward with the project should be made. If it is decided to move ahead, a proposal should have
been produced that outlines the general specifications of the project
System analysis
The goal of system analysis is to determine where the problem is in an attempt to fix the system. This
step involves breaking down the system in different pieces to analyze the situation, analyzing project
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
goals, breaking down what needs to be created and attempting to engage users so that definite
requirements can be defined
Design
In systems design the design functions and operations are described in detail, including screen layouts,
business rules, process diagrams and other documentation. The output of this stage will describe the new
system as a collection of modules or subsystems.
The design stage takes as its initial input the requirements identified in the approved requirements
document. For each requirement, a set of one or more design elements will be produced as a result of
interviews, workshops, and/or prototype efforts.
Design elements describe the desired software features in detail, and generally include functional
hierarchy diagrams, screen layout diagrams, tables of business rules, business process diagrams,
pseudo-code, and a complete entity-relationship diagram with a full data dictionary. These design
elements are intended to describe the software in sufficient detail that skilled programmers may develop
the software with minimal additional input design.
Testing
The code is tested at various levels in software testing. Unit, system and user acceptance testings are
often performed. This is a grey area as many different opinions exist as to what the stages of testing are
and how much, if any iteration occurs. Iteration is not generally part of the waterfall model, but usually
some occur at this stage. In the testing the whole system is test one by one
Following are the types of testing:












Defect testing the failed scenarios, including defect tracking
Path testing
Data set testing
Unit testing
System testing
Integration testing
Black-box testing
White-box testing
Regression testing
Automation testing
User acceptance testing
Software performance testing
Operations and maintenance
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
The deployment of the system includes changes and enhancements before the decommissioning or
sunset of the system. Maintaining the system is an important aspect of SDLC. As key personnel change
positions in the organization, new changes will be implemented, which will require system.
Systems analysis and design
The Systems Analysis and Design (SAD) is the process of developing Information Systems (IS) that
effectively use hardware, software, data, processes, and people to support the company’s business
objectives.
Object-oriented analysis
Object-oriented analysis (OOA) is the process of analyzing a task (also known as a problem domain), to
develop a conceptual model that can then be used to complete the task. A typical OOA model would
describe computer software that could be used to satisfy a set of customer-defined requirements. During
the analysis phase of problem-solving, a programmer might consider a written requirements statement, a
formal vision document, or interviews with stakeholders or other interested parties. The task to be
addressed might be divided into several subtasks (or domains), each representing a different business,
technological, or other areas of interest. Each subtask would be analyzed separately. Implementation
constraints, (e.g., concurrency, distribution, persistence, or how the system is to be built) are not
considered during the analysis phase; rather, they are addressed during object-oriented design (OOD).
The conceptual model that results from OOA will typically consist of a set of use cases, one or more UML
class diagrams, and a number of interaction diagrams. It may also include some kind of user interface
mock-up.
Input (sources) for object-oriented design
The input for object-oriented design is provided by the output of object-oriented analysis. Realize that an
output artifact does not need to be completely developed to serve as input of object-oriented design;
analysis and design may occur in parallel, and in practice the results of one activity can feed the other in
a short feedback cycle through an iterative process. Both analysis and design can be performed
incrementally, and the artifacts can be continuously grown instead of completely developed in one shot.
sZDfas Some typical input artifacts for object-oriented design are:

Conceptual model: Conceptual model is the result of object-oriented analysis, it captures
concepts in the problem domain. The conceptual model is explicitly chosen to be independent
of implementation details, such as concurrency or data storage.

Use case: Use case is a description of sequences of events that, taken together, lead to a system
doing something useful. Each use case provides one or more scenarios that convey how the
system should interact with the users called actors to achieve a specific business goal or
function. Use case actors may be end users or other systems. In many circumstances use cases
are further elaborated into use case diagrams. Use case diagrams are used to identify the actor
(users or other systems) and the processes they perform.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615

System Sequence Diagram: System Sequence diagram (SSD) is a picture that shows, for a
particular scenario of a use case, the events that external actors generate, their order, and
possible inter-system events.

User interface documentations (if applicable): Document that shows and describes the look and
feel of the end product's user interface. It is not mandatory to have this, but it helps to visualize
the end-product and therefore helps the designer.

Relational data model (if applicable): A data model is an abstract model that describes how data
is represented and used. If an object database is not used, the relational data model should
usually be created before the design, since the strategy chosen for object-relational mapping is
an output of the OO design process. However, it is possible to develop the relational data model
and the object-oriented design artifacts in parallel, and the growth of an artifact can stimulate
the refinement of other artifacts.
Systems development life cycle
Management and control
SPIU phases related to management controls.
The SDLC phases serve as a programmatic guide to project activity and provide a flexible but consistent
way to conduct projects to a depth matching the scope of the project. Each of the SDLC phase objectives
are described in this section with key deliverables, a description of recommended tasks, and a summary
of related control objectives for effective management. It is critical for the project manager to establish
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
and monitor control objectives during each SDLC phase while executing projects. Control objectives help
to provide a clear statement of the desired result or purpose and should be used throughout the entire
SDLC process. Control objectives can be grouped into major categories (domains), and relate to the
SDLC phases as shown in the figure
To manage and control any SDLC initiative, each project will be required to establish some degree of a
Work Breakdown Structure (WBS) to capture and schedule the work necessary to complete the project.
The WBS and all programmatic material should be kept in the “project description” section of the project
notebook. The WBS format is mostly left to the project manager to establish in a way that best describes
the project work there are many steps to find the java and c++ ways of drama languages
Work breakdown structured organization
Work breakdown structure.[9]
The upper section of the work breakdown structure (WBS) should identify the major phases and
milestones of the project in a summary fashion. In addition, the upper section should provide an overview
of the full scope and timeline of the project and will be part of the initial project description effort leading to
project approval. The middle section of the WBS is based on the seven systems development life cycle
(SDLC) phases as a guide for WBS task development. The WBS elements should consist of milestones
and “tasks” as opposed to “activities” and have a definitive period (usually two weeks or more). Each task
must have a measurable output (e.x. document, decision, or analysis). A WBS task may rely on one or
more activities (e.g. software engineering, systems engineering) and may require close coordination with
other tasks, either internal or external to the project. Any part of the project needing support from
contractors should have a statement of work (SOW) written to include the appropriate tasks from the
SDLC phases. The development of a SOW does not occur during a specific phase of SDLC but is
developed to include the work from the SDLC process that may be conducted by external resources such
as contractors and struct.
Baselines in the SDLC
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Baselines are an important part of the systems development life cycle (SDLC). These baselines are
established after four of the five phases of the SDLC and are critical to the iterative nature of the model
.[10] Each baseline is considered as a milestone in the SDLC.




functional baseline: established after the conceptual design phase.
allocated baseline: established after the preliminary design phase.
product baseline: established after the detail design and development phase.
updated product baseline: established after the production construction phase.
Complementary to SDLC
Complementary software development methods to systems development life cycle (SDLC) are:







Software prototyping
Joint applications development (JAD)
Rapid application development (RAD)
Extreme programming (XP); extension of earlier work in Prototyping and RAD.
Open-source development
End-user development
Object-oriented programming
Comparison of Methodology Approaches (Post, & Anderson 2006)[11]
SDLC
RAD
Open
source
Objects
JAD
Prototyping End User
Control
Formal
MIS
Weak
Standards
Joint
User
Time frame
Long
Short
Medium
Any
Medium
Short
User
Short
–
Users
Many
Few
Few
Varies
Few
One or two One
MIS staff
Many
Few
Hundreds
Split
Few
One or two None
Transaction/DSS Transaction Both
Both
Both
DSS
DSS
DSS
Interface
Minimal
Weak
Windows
Crucial
Crucial
Crucial
Limited
Internal
In Objects
Limited
Weak
None
Minimal
Documentation
Vital
and training
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Integrity and
security
Vital
Vital
Unknown
In Objects
Limited
Weak
Weak
Reusability
Limited
Some
Maybe
Vital
Limited
Weak
None

–
–
–
–
–
–
–
Approaches to developing software:
–
System Software – Controls operating system behavior
–
Real-time Software – Nuclear reactor temperature control
–
Business Software – All applications like Billing, Payroll
–

Engineering and Scientific software – Simulations and statistical packages (uses input
historical data)
Embedded software – Cruise Controls in car


Personal Computer software – MS Office
Artificial Intelligence software – Robot to develop photographic images
–
System software: is a collection of programs written to service other programs (eg :
Compilers,editors, and file management utilities)
Real-time: Software that monitors /analyzes/controls real-world events as they occur is called
real-time . Elements of real time software include a data gathering component that collects and
formats information form as required by the applications
Business software : managing software that access one or more large database containing
business information.
Engineering and scientific software : software which have number crunching algorithms .
Embedded software : Embedded software resides only in the read-only memory and is used for
control products and systems for the consumer and industrial market .
Personal computer Software : word processing ,Spreadsheets , computer graphics ,
entertainment .
Artificial Intelligence software : Software makes use of nonnumerical algorithms to solve
complex problems.that are not amendable to computation or straightforward analysis .
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Software Development Life Cycles
Various software development life cycle models are suitable for specific project related
conditions which include organization, requirements stability, risks, budget, duration of
project. One life cycle model theoretical may suite particular conditions and at the same
time other model may also looks fitting into the requirements but one should consider
trade-off while deciding which model to choose.
A)prescriptive Model
Every Software Engineering organization should describe a unique set of framework activities for
software processes it adopts.
Regardless of the process model that is selected, software engineers have traditionally chosen a generic
process framework with following activities.
Communication
Planning
Modeling
Construction
Deployment
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
1)Waterfall Model or Classic life cycle
Waterfall Model
This is the most common and classic of life cycle models, also
referred to as a linear-sequential life cycle model. It is very
simple to understand and use. In a waterfall model, each phase
must be completed in its entirety before the next phase can
begin. At the end of each phase, a review takes place to
determine if the project is on the right path and whether or not to
continue or discard the project. Unlike what I mentioned in the
general model, phases do not overlap in a waterfall model.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
System/information engineering and modeling - Because software is always part of a larger system (or
business), work begins by establishing requirements for all system elements and then allocating some
subset of these requirements to software. System engineering and analysis encompasses requirements
gathering at the system level with a small amount of top-level analysis and design. Information
engineering encompasses requirements gathering at the strategic business level and at the business
area level.
Software requirements analysis - The requirements gathering process is intensified and focused
specifically on software. To understand the nature of the program(s) to be built, the software
engineering (“analyst”) must understand the information domain for the software as well as the
required function, behavior, performance, and interfacing. Requirements for both the system and the
software are documented and reviewed with the customer.
Design - Software design is actually a multi-step process that focuses on four distinct attributes of a
program: data structure, software architecture, interface representations, and procedural (algorithmic)
detail. The design process translates requirements into a representation of the software that can be
assessed for quality before code generation begins.
Testing - Once code has been generated, program testing begins. The testing process focuses on the
logical internals of software, assuring that all statements have been tested, and on the functional
externals-that is, conducting tests to uncover errors and ensure that defined input will produce actual
results that agree with required results.
Maintenance - Change will occur because errors have been encountered, because the software must be
adapted to accommodate changes in its external environment (e.g., a change required because of a new
operating system or peripheral device), or because the customer requires functional or performance
enhancements. Software maintenance reapplies each of the preceding phases to an existing program
rather than a new one.
V-Shaped Model
Just like the waterfall model, the V-Shaped life cycle is a
sequential path of execution of processes. Each phase must be
completed before the next phase begins. Testing is emphasized in
this model more so than the waterfall model though. The testing
procedures are developed early in the life cycle before any coding is
done, during each of the phases preceding implementation.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Requirements begin the life cycle model just like the waterfall
model. Before development is started, a system test plan is
created. The test plan focuses on meeting the functionality
specified in the requirements gathering.
The high-level design phase focuses on system architecture and
design. An integration test plan is created in this phase as well
in order to test the pieces of the software systems ability to work
together.
The low-level design phase is where the actual software components
are designed, and unit tests are created in this phase as well.
The implementation phase is, again, where all coding takes
place. Once coding is complete, the path of execution continues
up the right side of the V where the test plans developed earlier are
now put to use.
Advantages




Simple and easy to use.
Each phase has specific deliverables.
Higher chance of success over the waterfall model due to the development of test plans
early on during the life cycle.
Works well for small projects where requirements are easily understood.
Disadvantages




Very rigid, like the waterfall model.
Little flexibility and adjusting scope is difficult and expensive.
Software is developed during the implementation phase, so no early prototypes of the
software are produced.
Model doesn’t provide a clear path for problems found during testing phases.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
B)Incremental Process Model
Provide limited s/w functionality to user quickly and then refine and expand on that function
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
System/information
engineering
increment 1
design
analysis
increment 2
code
design
analysis
increment 3
code
design
analysis
increment 4
delivery of
1st increment
test
analysis
delivery of
2nd increment
test
code
design
test
code
delivery of
3rd increment
test
delivery of
4th increment
Incremental Model
The incremental model is an intuitive approach to the waterfall
model. Multiple development cycles take place here, making the
life cycle a “multi-waterfall” cycle. Cycles are divided up into
smaller, more easily managed iterations. Each iteration passes
through the requirements, design, implementation and testing phases.
A working version of software is produced during the first
iteration, so you have working software early on during the software
life cycle. Subsequent iterations build on the initial software
produced during the first iteration.
Advantages





Generates working software quickly and early during the software life cycle.
More flexible – less costly to change scope and requirements.
Easier to test and debug during a smaller iteration.
Easier to manage risk because risky pieces are identified and handled during its iteration.
Each iteration is an easily managed milestone.
Disadvantages
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Each phase of an iteration is rigid and do not overlap each other.
Problems may arise pertaining to system architecture because not
all requirements are gathered up front for the entire software life
cycle.


1) Incremental Process Model
This combines elements of waterfall model applied in an iterative fashion
e.g word processing s/w developed using the incremental might deliver basic file management editing
and document production function in first increment
More sophisticated editing and document production capabilities in second increment
Spelling and gramer checking in third increment
And advanced page layout capability in fourth increment
PROCESS flow for any increment may use prototyping model.
Incremental
Advantages










Some working functionality can be developed quickly and early in the life cycle.
Results are obtained early and periodically.
Parallel development can be planned.
Progress can be measured.
Less costly to change the scope/requirements.
Testing and debugging during smaller iteration is easy.
Risks are identified and resolved during an iteration; and each iteration is an
easily managed milestone.
Easier to manage risk - High risk part is done first.
With every increment operational product is delivered.
Issues, challenges & risks identified from each increment can be utilized/applied
to the next increment.
Disadvantages

More resources may be required.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615






Although cost of change is lesser but it is not very suitable for changing
requirements.
More management attention is required.
Each phase of an iteration is rigid with no overlaps.
System architecture or design issues may arise because not all requirements are
gathered. up front for the entire life cycle.
Does not allow iterations within an increment.
Defining increments may require definition of the complete system.
2)RAD Model
High speed adoption of waterfall model
Achived using component based construction approach.
Develop fully functional system within shorttime period(e.g. 60 to 90 days)
RAD (Rapid Application Development)
Advantages






Time to deliver is less.
Changing requirements can be accommodated.
Progress can be measured.
Cycle time can be short with use of powerful RAD tools.
Productivity with fewer people in short time.
Use of tools and frameworks.
Disadvantages






Management complexity is more.
Resource requirements may be more.
Suitable for systems that are component based and scalable.
Suitable only when requirements are well known.
Requires user involvement throughout the life cycle.
Suitable for project requiring shorter development times.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
C)Evolutionary Process Model
Software like complex systems evolves over a period of time.
Business and product requirements often change as development proceeds.
1)Prototyping
Customer defines a set of general objectives for software.but does not identify detailed input,processing
or output requirements
Inother case developer is not sure of the efficiency of an algorithm,humen machine
interaction,adaptability of operating system.
2)Spril Model
Spiral Model

The spiral model is similar to the incremental model, with more
emphases placed on risk analysis. The spiral model has four
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615



phases: Planning, Risk Analysis, Engineering and Evaluation. A
software project repeatedly passes through these phases in iterations
(called Spirals in this model). The baseline spiral, starting in
the planning phase, requirements are gathered and risk is
assessed. Each subsequent spirals builds on the baseline spiral.
Requirements are gathered during the planning phase. In the
risk analysis phase, a process is undertaken to identify risk and
alternate solutions. A prototype is produced at the end of the
risk analysis phase.
Software is produced in the engineering phase, along with testing at
the end of the phase. The evaluation phase allows the customer to
evaluate the output of the project to date before the project continues
to the next spiral.
In the spiral model, the angular component represents progress, and the radius of the
spiral represents cost.
Advantages





Changing requirements can be accommodated.
Allows for extensive use of prototypes
Requirements can be captured more accurately.
Users see the system early.
Development can be divided in to smaller parts and more risky parts can be
developed earlier which helps better risk management.
Disadvantages




Management is more complex.
End of project may not be known early.
Not suitable for small or low risk projects (expensive for small projects).
Process is complex

Project’s success is highly dependent on the risk analysis phase.
Can be a costly model to use.


Large number of intermediate stages require excessive documentation.
It provides the potential for RAD of incresingly more complete versions of the s/w.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Software is developed in a series of evolutionary releases.The first circuit around the spiral might beused
to development of a product specification
;subsequent passes around the spiral might be used to develop a prototype and then progressively more
sophisticated versions of the s/w.
WinWin Spiral Model
The Win-Win spiral approach is an extension of the spiral approach. The phase in this approach is same
as the phase in the spiral approach. The only difference is that at the time of the identifying the
requirements, the development team and the customer hold discussion and negotiate on the
requirements that need to be included in the current iteration of the software.
(Additions to the spiral model shown in bold.)
Typical Cycle of the WinWin Spiral

Identify the system or subsystem's key stakeholders.

Identify the stakeholders' win conditions for the system or subsystem.

Negotiate win-win reconciliations of the stakeholders' win conditions.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615

Elaborate the system or subsystem's product and process objectives,
constraints, and alternatives.

Evaluate the alternatives with respect to the objectives and constraints.
Identify an dresolve major sources of product and process risk.

Elaborate the definition of the product and process.

Plan the next cycle, and update the life-cycle plan, including partition of the
system into subsystems to be addressed in parallel cycles. This can include a
plan to terminate the project if it is too risky or infeasible. Secure the
management's commitment to proceed as planned.
D)Specialized Process Model
It takes characteristics of one or more of the conventional model
1)Component-Based Development
Components developed by vendors who offer them as products can be used when software is to be
built.
These components provide targeted functionality with well-defined interfaces that enable the
componebt to be integrated into the software.
This incorporates many of the characteristics of the spiral model.
Evolutionary
Advantages





Risk analysis is better.
It supports changing requirements.
Initial Operating time is less.
Better suited for large and mission-critical projects.
During life cycle software is produced early which facilitates customer evaluation
and feedback.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Disadvantages






Not suitable for smaller projects.
Management complexity is more.
End of project may not be know which is a risk.
Can be costly to use.
Highly skilled resources are required for risk analysis.
Project’s progress is highly dependent upon the risk analysis phase.
Extreme/Agile Development
Advantages








Promotes teamwork and cross training.
Functionality can be developed rapidly and demonstrated.
Resource requirements are minimum.
Suitable for fixed or changing requirements
Delivers early partial working solutions.
Good model for environments that change steadily.
Minimal rules, documentation easily employed.
Enables concurrent development and delivery within an overall planned context.
Disadvantages




Not suitable for handling complex dependencies.
More risk of sustainability, maintainability and extensibility.
An overall plan, an agile leader and agile PM practice is a must without which it
will not work.
Strict delivery management dictates the scope, functionality to be delivered, and
adjustments to meet the deadlines.
Joint Application Development (JAD)
The JAD process is based on four ideas:
1.People who actually work at a job have the best understanding of that job.
2.People who are trained in software development have the best understanding of the
possibilities of that technology.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
3. Software-based information systems and business processes rarely exist in isolation --they
transcend the confines of any single system or office and effect work in related departments.
People working in these related areas have valuable insight on the role of a system within a
larger community.
4.The best information systems are designed when all of these groups work together on a project
as equal partners.
The JAD is usually a 3 to 6 month well-defined project, when systems can be constructed
from commercially available software products that do not require extensive coding or
complex systems integration. For large-scale projects, it is recommended that the project be
organized as an incremental development effort, and that separate JAD's be used for each
increment (Wood and Silver 1995)
Object Oriented Methodology Life Cycle Model
Object-Oriented development requires that object-oriented techniques be used during the analysis,
and implementation of the system. This methodology asks the analyst to determine what the objects
of the system are, how they behave over time or in response to events, and what responsibilities and
relationships an object has to other objects. Object-oriented analysis has the analyst look at all the
objects in a system, their commonalties, difference, and how the system needs to manipulate the
objects
Object Oriented Process
System Analysis
System Design
Object Design
Implementation
The methodology supports and uses three basic Models
Object Model - This model describes the objects in a system and their interrelationships. This
model observes all the objects as static and does not pay any attention to their dynamic nature.
Dynamic Model - This model depicts the dynamic aspects of the system. It portrays the changes
occurring in the states of various objects with the events that might occur in the system.
Functional Model - This model basically describes the data transformations of the system. This
describes the flow of data and the changes that occur to the data throughout the system.
Advantages of Object Oriented Methodology
Object Oriented Methodology closely represents the problem domain. Because of this, it is easier
to produce and understand designs.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
The objects in the system are immune to requirement changes. Therefore, allows changes more
easily.
Object Oriented Methodology designs encourage more re-use. New applications can use the
existing modules, thereby reduces the development cost and cycle time.
Object Oriented Methodology approach is more natural. It provides nice structures for thinking
and abstracting and leads to modular design.
RUP Rational Unified Process
RUP is a iterative development process
RUP is built on the "Six Best Practices"
RUP has four phases:
1.
2.
3.
4.
Inception
Elaboration
Construction
Transition
In each phase nine different workflows are active
RUP structure
The picture shows the workload of each workflow during the project's phases
Why RUP
Risks
Early and continous documentation of the most urgent and the most
probable risks.
Planning
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Follow up
UML
(If used) A common modelling language
Use cases
May be used as test cases, end-user documentation and design description
Glossary
A clearly defined terminology makes everybody in a project aware of the
exact meaning of a term. At every time.
Iteractive development
By doing a piece of work at the time, review it and test its functionality.
Actually saves time because early mistakes can be reveal
Test
Verify the requirements
Best Practices
1.
2.
3.
4.
5.
6.
Develop Iteratively
Manage Requirements
Use Component Architecture
Model Visually
Verify Quality
Control Changes
Causes of failure
1.
2.
3.
4.
5.
Ad hoc Requirement management
Inprecise and non comprehensive communication
Instable architecture
Too complex
Inconsistensis in requirement, design and implementation
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
6.
7.
8.
9.
10.
Insufficient tests
Subjective status judgement
Inablility to manage risks
Uncontrolled changes
Insufficient development automation
Phases and iterations
The software lifecycle is broken into cycles, each cycle working on a new
generation of the product. RUP divides one development cycle in four
consecutive phases:
Inception phase
Elaboration phase
Construction phase
Transition phase
Each phase is concluded with a well-defined milestone - a point in time at
which a certain critical decisions must be made, and therefore key goals must
have been achived.
Iteration
Each phase in RUP can be futher broken down into iterations. An iteration is a
complete development loop resulting in release (internal or external) of an
executable product, a subset of the final product under development, which
grows incrementally from iteration to become the final system.
Manage requirements
The secret of requirement management is to accept that the requirements
change.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
It is a continous process to identify requirements together with the end-user
Requirement management is to:
Elict, organize, and document required functionality and constraints,
Evaluate impact of changes ,
Track and document tradeoffs and decisions.
Requirement management makes it possible to prioritise and track
requirement.
Use Component Architecture
The process focuses on early development and baselining of a robust
executable architecture, prior to committing resources for full-scale
development.
RUP supports component-based software development
Stable, independent modules with clear interfaces isolates software
dependensis.
Model visually
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Visual abstractions help you to
Communicate different aspects of your software;
See how the elements of the system fit together
Make sure the building blocks are consistent with your code
Maintain consistency between a design and its implementation
Promote unambiguous comminucation.
Use cases makes minimal risk for
Hiding of details
No spagetti stuctures
Good design gives quality
Verify Quality
Earliy tests pays off thuosandfold
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
The software from each release (every iteration) is tested and verified
Test cases are created from each use case and each use scenario.
Decisions are made on real test results
High risk areas are tested more thoroughly
Control changes
All change control should go through CM, who should be able to foresee effects
of changes and could be able to plan for them, and manage all artifacts
CM is convener for the CCB (Change Control Board).
CCB is the formal instance for decisions in change requests.
Members of the CCB can be represetatives from the different workflows for
example:
architect ,
test designer,
project manager,
system analyst,
stakeholders
user representant.
Formal change requests makes communication easier in the project.
Everybody must have access to all artifacts
Use Cases
Use cases are a kind of contract between the stakeholder and the developer
Its important to use notions consistent, create a glossary for the whole
project
Use cases are important (if well written) in the test process.
Development process
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Control the order of the activities
Define what artifacts that shall be creates
Specify tasks at individual as well as group level
Establish criterium to monitor and measure progress of the project
Phases
A phase is concluded with a well defined milestone
The Inception and the Elaboration phases are the two most creative parts.
Function and design established all requirements are elicted.
The Construction and the Transition phases are the building parts. Most of
the programming and testing is done. The deployment and delivery.
Inception phase
Inception means start.
The project are proposed.
The business case is established
The scope of the project is delimited.
To accomplish this you must identify all external entities with which the
system will interact (actors) and define the nature of the interaction on a
high-level. This involves identifying all use cases and describing a few
significant ones. The business case includes success criteria, risk assesments,
and estimate of the resources needed, and a phase plan showing dates of major
milestones.
Inception outcome
Vision document
Initial use-case study (10%-20% complete)
Initial project glossary
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Initial business case
Initial risk assessment
Project plan
Business model (if necessary)
One or several prototypes.
Stakeholders decide if or if not commence a full scale project.
Elaboration phase
Elaborate means refinement (careful development)
The purpose of the elaboration phase is to
Analyze the problem domain,
Establish a sound architectural foundation
Develop the project plan
Eliminate the highest risk elements of the project.
You should have a "mile wide and inch deep" view of the system.
Elaboration outcome
Use-case model 80% complete
Supplementary requirements capturing the non functional requirements
and requirements that are not associated with a specific use-case
A Software Architecture Description
An executable architectual prototype.
A revised risk list and revised business case.
A development plan for the whole project, including the coarse-grained
project plan, showing iterations and evaluation criteria for each iteration.
An updated development case specifying the process to be used.
Preliminary user manual (optional).
Construction phase
Construction means to build
During the construction phase all remaining components and application
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
features are developed and integrated into the product, and all features are
thoroughly tested.
Construction outcome
The outcome of the construction phase is a product ready to put in the hands
of the end users.
At minimum, it consists of:
The software product integrated on the adequate platform
The user manual
A description of the current release
This is considered as a "beta"-release
Transition phase
Transition means delivery
The purpose of the transition phase is to transition the software product to the
user community.
Issuse that usually arise:
New releases
Correct some problems
Finish the features that were postpone
"beta-testing" to validate new system against user expectations
The system might run in parallel with a legacy system that it is replacing
conversion of operational databases
training of user maintainers
roll-out the product to markiting, distribution, and sales team
Transition achivements
The primary objectives of the transition phase include:
Achiving user self -supportability
Achiveing stakeholders concurrence that deployment baselines are complete
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
and consistent with the evaluation criteria of the vision
Achieving final produce baseline as rapidly and cost effective as practical
Business modelling
Business modelling are conducted during the inception and the elaboration
phases.
Active workers:
Business process analyst,
Business Designer
Business model reviewer
In business modelling we document business processes using so called usiness
use cases. This assures a common understanding among all stakeholders of
what business process needs to be supported in the organization.
Requirements
The goal of the requirement workflow is to describe what the system should
do and allows the developers and the customer to agree on that description.
To achive this we elict organize and document required functionality and
constraints; tracks and document tradeoffs and decisions.
The system analyst:
Capture a common vocabulary
Develop Requirements Management Plan
Find Actors and Use-Cases
Develop Vision
Elict Stakeholders Requests
The software architect:
Prioritize Use-Cases
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
The requirement reviewer:
Review Requirements
Analysis and Design
The goal of the Analysis and Design workflow is to show how the system will be
realized in the implementation phase.
Architect:
Architectual analysis
Designer
Use-case analysis
Use-case design
Subsystem design
Class design
Implementation
The purposes of the implementation are to code and test the system
Implementor
Implement a component
Fix a defect
perform unit test
Integrator:
Plan system integration
Plan subsystem integration
Integrate subsystem
Integrate system
Code reviewer
Review code
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Test
In the test workflow test cases procedures and other verification methods are
created and described.
Test designer:
Plan test
Design test
Implement test
Evaluate test
Tester
Execute test
Designer
Design test classes and packages
Deployment
To deploy is to pack distribute and install the software at the end-user
Deployment manager:
Develop deployment plan
Manage acceptance test
Define bill of materials
Write release notes
Technical writer
Develop support materials
CM
Configuration and Change Management (CM), monitors and administrates
changes in the projects artifacts so that they are consistent with the
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
requirement.
CM is responsible for release and version control and are convener for the CCB
(Change Control Board)
Configuration Manager:
Set up CM environment
Establish CM policies
Write CM plan
Change Manager:
Establish Change Control Process
Review change request
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Software requirements specification
A software requirements Specification (SRS) – a requirements specification for a software system – is
a complete description of the behavior of a system to be developed and may include a set of use cases
that describe interactions the users will have with the software. In addition it also contains non-functional
requirements. Non-functional requirements impose constraints on the design or implementation (such as
performance engineering requirements, quality standards, or design constraints), and are sometimes
referred to as "ilities".
Software requirements is a sub-field of software engineering that deals with the elicitation, analysis,
specification, and validation of requirements for software.[1]
The software requirement specification document enlists all necessary requirements for project
development. To derive the requirements we need to have clear and thorough understanding of the
products to be developed. This is prepared after detailed communications with project team and the
customer. A general organization of an SRS is as follows



Introduction
o Purpose
o Definitions
o System overview
o References
Overall description
o Product perspective
 System Interfaces
 User Interfaces
 Hardware interfaces
 Software interfaces
 Communication Interfaces
 Memory Constraints
 Operations
 Site Adaption Requirements
o Product functions
o User characteristics
o Constraints, assumptions and dependencies
Specific requirements
o External interface requirements
o Functional requirements
o Performance requirements
o Design constraints
 Standards Compliance
o Logical database requirement
o Software System attributes
 Reliability
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615




o
Availability
Security
Maintainability
Portability
Other requirements
Functional specification
A functional specification (also, functional spec, specs, functional specifications document (FSD),
functional requirements specification, or Program specification, or Product Requirement Document
"PRD") in systems engineering and software development is the documentation that describes the
requested behavior of an engineering system. The documentation typically describes what is needed
by the system user as well as requested properties of inputs and outputs (e.g. of the software
system).
Overview
In systems engineering a specification is a document that clearly and accurately describes the essential
technical requirements for items, materials, or services including the procedures by which it can be
determined that the requirements have been met. Specifications help avoid duplication and
inconsistencies, allow for accurate estimates of necessary work and resources, act as a negotiation and
reference document for engineering changes, provide documentation of configuration, and allow for
consistent communication among those responsible for the eight primary functions of Systems
Engineering. They provide a precise idea of the problem to be solved so that they can efficiently design
the system and estimate the cost of design alternatives. They provide guidance to testers for verification
(qualification) of each technical requirement.[1]
A functional specification does not define the inner workings of the proposed system; it does not include
the specification of how the system function will be implemented. Instead, it focuses on what various
outside agents (people using the program, computer peripherals, or other computers, for example) might
"observe" when interacting with the system. A typical functional specification might state the following:
When the user clicks the OK button, the dialog is closed and the focus is returned to the main
window in the state it was in before this dialog was displayed.
Such a requirement describes an interaction between an external agent (the user) and the software
system. When the user provides input to the system by clicking the OK button, the program responds (or
should respond) by closing the dialog window containing the OK button.
It can be informal, in which case it can be considered as a blueprint or user manual from a developer
point of view, or formal, in which case it has a definite meaning defined in mathematical or programmatic
terms. In practice, most successful specifications are written to understand and fine-tune applications that
were already well-developed, although safety-critical software systems are often carefully specified prior
to application development. Specifications are most important for external interfaces that must remain
stable
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Functional and Non-Functional Specifications
In any software developments, the technical team is mainly focusing on the business requirement
document from Customer on how these required functions to be behaved/specify as in system
and requirement engineering so that development team is able to developed, tested and
configured for them as final deliverables to Customers. The term we often used to define these
development scopes is known as “Functional Requirement/Specifications”. However much of
these requirements do not cover on ‘non-functional’ requirements. Non-functional requirement is
to describe/judge the operations of a system and it is important to cover as it will determine the
minimum, possible criteria to sign-off for the deployment. A solution cannot operate successfully
if the infrastructure/configurations are done incorrectly, even though it may meet the functional
requirements.
Some Areas that define as Non-Functional Requirements/Specification:











Accessibility
Performance/Response Time
Usability
Scalability
Compatibility
Reliability
Maintainability
Robustness
Documentation
Effectiveness
Efficiency
The splitting of functional and non-functional modules enable different organization/team
based on their specialization to conduct thorough, detailed setups, configurations and
testings. For example, the system team or may known as Infrastructure team will take care on
the standard setups for the equipment, network design, database/repositories for the usage of
that solution. Configuration team works with the Development team to understand the
configuration parameters required to setup to run the solution. Application testing team takes
charge of the testings of the functions that are designed to perform expected behaviors.
The scopes for functional and non-functional requirements are also to be captured in the
Master Project Plan so that the stakeholders are aware these modules must be reviewed,
covered and achieved at each milestone of the project phase.
Prof. Rajesh Gawali
Email: rajesh_r_gawali@yahoo.com
RAJESH Cell :9422321615
Download