Se Unit-1 Notes
Se Unit-1 Notes
Ans:
“Software is a set of instruction whenever it executed it provide desired result and performance. “
OR
Software is a collection of
1).Instructions (Computer programs) that when executed provide desir ed function
and performance.
2).Data structure that enable the programs to adequately manipulate information.
And
3).Documents that describe the operation and use of the programs.
Software is a logical entity rather than a physical system element
Unlike hardware, software is logical rather than physical. It has to be designed well before
producing it.
Although some similarities exist between software development and hardware
manufacture, few activities are different. In both activities high quality is achieved through
good design, but the manufacturing phase for hardware and introduces quality problems
that are nonexistent (or easily corrected) for software.
Both activities require the construction of “product” but the approaches are different.
Software costs are concentrated in engineering. This means that software project cannot be
managed as if they were manufacturing projects.
Figure 1
Figure (1 ) depicts failure rate as a function of time for hardware. The
relationship often called the “bathtub curve” indicates that hardware exhibits
relatively high failure rate early in its life.
defects are corrected and the failure rate drops to a steady state level
(hopefully quite low) for some period of time.
As time passes, however, the failure rate rises again as hardware components
suffer from the cumulative effects of dust, vibrations, abuse, temperature
extremes, etc. Stated simply, hardwa re begins to wear out.
Figure 2 Ide al ized and ac tual fai l ure c urve s for software
As shown in figure (2), the failur e rate curve for software shows that,
undiscovered defects will cause high failure rates early in the life of a program.
These are corrected (without introducing other errors) and the curve flattens
as shown in figure (2).
Software doesn’t wear out, but i t does deteriorate. During the software life, it
will undergo change (maintenance). As changes are made, it is likely that some
new defects will introduced, causing the failure rate cure to spike.
Before the curve can return to the original steady-state f ailure rate, another
change is requested, causing the curve to spike again. Slowly, the minimum
failure rate level begins to rise the software is deteriorating due to change.
Software is a said to be efficient if it uses the available resources in the most efficient
manner.
The software should be able to offer a quick response in the least processing time using the
resources at minimum level. The software should efficient perform what the user
demanded and give appropriate response in each case.
[5].Maintainability
The Characteristics of the software is important for both the software engineer and the
user. If the change is to be required in the software then change leads to the change in the
software so that it performs in accordance with the user requirement.
The software engineer has to respond very fast if there is any change in the user
requirements. Changes should be performed like this that it will not affect the overall
integrity of the software.
[6].On-time
The software should be developed on-time. If the software is developed late then it is of no
use. A good engineer always develops the software on-time.
[7].Within budget
Some of the software gets overrun. Overrun doesn’t mean that the cost of the software
exceeds the limit given by user. But, it mean that the software cost is out of control. So, the
software should be developed in such a manner that it will not overrun and the software
being developed is within budget.
[8].Functionality
The software system is developed in a manner that it performs the entire task perfectly
for which it is developed. The software should respond correctly as the user wants.
[9].Adaptability
The software should be Adaptable. Software is desired to be Adaptable all the changes
efficiently. The software should easily adopt all the changes in the software with no
change in the efficiency of the software.
[10]. Dependability
It is the ability of the software that should not cause any physical or economic damage in
the event of system failure. It includes a range of characteristics like: reusability, security,
and safety.
[11].Usability
Software become usable if it doesn’t call for extra efforts to be learned. Usability increases
with good documentation provided along with the software.
If software satisfies all the above characteristics then it is said to be good software or the
software is well engineered.
o System software is a collection of programs written to service the other program. Some
system software process complex but determinate information structure,
o for example, compiler, editors, and file management utilities, etc. other systems
applications process largely indeterminate data, for example, operating system
components, drivers, etc.
o The system software area is characterized by heavy interaction with computer hardware,
heavy usage by multiple users, parallel operation that requires scheduling, resource
sharing, complex data structures, and multiple external interfaces.
[2].Application Software
o Application software consists of stand –alone program that solve a specific business
need. Application in this area process business or technical data in a way that facilitates
business operations or management/technical decision making.
[3].Embedded software
o The web pages retrieved by a browser, are software that incorporates executable
instructions
o (for example, CGI, HTML, or JAVA), and data (for example, hypertext and a variety of
visual and audio formats).‘web-apps’ spreads wide array of application. ‘web-apps’ can
be little more than a set of link hypertext file, that presents information using text and
limited graphics.
o ‘web-apps’ are evolving into sophisticated computing environment that not only provide
stand alone features, computing function and content to the end user but also are
integrated with corporate databases and business applications.
o Software that monitors and controls real-world events as they occur is called real-time
software.
o Element of real-time software:
data gathering component that collects and formats information from an external
environment.
analysis component that transforms information as required by the application.
control/output component that responds to the external environment.
Monitoring components that coordinates all other components so that real-time
response can be maintained.
Reality: It is true that source code files are easy to edit, but that is quite different than
saying that software is easy to change this is unreliable because source code is so easy to alter. But
making changes without introducing errors is extremely difficult, particularly in organizations with poor
process maturity. Every change requires that the complete system be re-verified. If we do not take
proper care, this will be an extremely tedious and expensive process.
Reality: It is true that software does not fail in the traditional sense. There are no limits to
how many times a given piece of code can be executed before it “wears out”. In any event, the simple
expression of this myth is that our general ledgers are still not perfectly accurate, even though they
have been computerized. Back in the days of manual accounting systems, human error was a fact of
life. Now, we have software error as well.
Reality: Testing can only show the presence of errors. It cannot show the absence of errors.
Our aim is to design effective test cases in order to find maximum possible errors. The more we test,
the more we are confident about our design.
Reality: This myth is particularly troubling because of the false sense of security that code re-
use can create. Code re-use is a very powerful tool that can yield dramatic improvement in
development efficiency, but it still requires analysis to determine its suitability and testing to
determine if it works.
Reality: If we go to an aeronautical engineer, and ask him to build a jet fighter craft, he will
give a quotation to us. If we demand that it is to be put in production without building a prototype, he
will laugh and may refuse the job. Yet, software engineers are often asked to do exactly this type of
work, and they often accept the job.
Myth: Software can be designed carefully enough to avoid most integration
problems:
Reality: There is an old saying among software designers:”Too bad, there is no complier for
specifications”. This point out the fundamental difficulty with detailed specifications. They always have
inconsistencies, and there is no computer tool to perform consistency checks on these. Therefore,
special care is required to understand the specifications, and if there is an ambiguity, that should be
resolved before proceeding for design.
Reality: The aim has been shifted from developing working programs to good quality,
maintainable programs. Maintaining software has become a very critical and crucial area for software
engineering community.
This list is endless. These myths, poor quality of software, increasing cost and delay in
the delivery of the software engineering as a discipline.
In addition, following are the contributing factors:
Change in ratio of hardware to software costs
Increasing importance of maintenance
Advances in software techniques
Increased demand for software
Demand for larger and more complex software system.
- Process
- Methods
- Tools
- Quality Focus
Quality focus:
Process:
Process defines a framework for a set of key process areas that must be established for
effective delivery of software engineering technology.
The key process area forms the basis for management control of software projects and
establish the context in which technical methods are applied, work products (models,
documents, data, reports, forms, etc. ) are produced, milestones are established, quality
is ensured, and change is properly managed.
SE methods provide the technical “how to’s” for building software. Methods
encompass a broad array of tasks that include requirements analysis, design, program
construction, testing and maintenance.
Tools:
SE tools provide automated or semi -automated support for the process and the
methods.
When tools are integrated so that information created by one tool can be used by
another, a system for th e support of software development, called Computer Aided
Software Engineering (CASE) is established.
1. Definition phase
2. Development phase
3. Maintenance phase
Definition Phase:
Definition phase answers “what” questions that is during the definition the
software developers attempts to identify.
What information is to be processed?
What function and performance are desired?
What validation conditions are required?
What types of interfaces are to be established?
What design constraints exists?
Maintenance Phase:
The maintenance phases focus on change that is associated with:
Error correction
Adaptation required
Enhancement
Prevention
Error Correction
It is likely that the customer will uncover defects in the software. Corrective
maintenance changes the software to correct defects.
Adaptation
Over time, the original environment (e.g. CPU, OS, Business Rules etc.) for which
the software was developed is likely to change. Adaptive maintenance results in
modification to the software to accommodate c hanges to its external environment.
Enhancement
As software is used, the customer/user will recognize additional functions that will
provide benefit. Perfective maintenance extends the software beyond its original
functional requirements.
Prevention
The phases and related steps describ ed in generic view of SE are complemented by a
number of Umbrella Activities as under:
Software project tracking and control
Formal technical reviews
Software quality assurance
Software Configuration management
Document preparation and production
Reusability management
Measurement
Risk management
[2]. Design
Software design is actually a multi-step process that focuses on data structure,
software architecture, procedural detail and interface characterization.
The design process translates requirements into a representation of the software
that can be assessed for quality before code generation begins.
The design documents must e prepared and stored as a part of software
configuration.
[4]. Testing
Once code has been generated, program testing begins. The testing process
focuses on the logical internals of the software, assuring that all statements have been
tested, and on the functional externals – that is, conducting test to uncover errors and
ensure that defined input will pr oduce actual results that agree with required results.
[5]. Maintenance
Software will undergo change after it is delivered to the customer. Change will
occur because, errors have been encountered or to accommodate changes in its external
environment (e.g . change in device) or customer requires functional or peripheral
enhancement.
Advantages
Simple goal.
Simple to understand and use.
Clearly defined stages.
Well understood milestones.
Easy to arrange tasks.
Process and results are Well documented.
Easy to manage. Each phase has specific deliverable and a review.
Works well for projects where requirements are well understood.
Works well when quality is more important then cost/schedule.
Customers/End users already know about it.
Disadvantages
[2].Spiral model
The spiral model is similar to the incremental model, with more emphasis placed on risk analysis. The
spiral model has four phases:
Planning,
Risk Analysis,
Engineering
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 is gathered and risk is assessed. Each
subsequent spiral builds on the baseline spiral.
Planning:
Requirements are gathered during the planning phase.
Risk analysis:
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.
Engineering:
Software is produced in the engineering phase, along with testing at the end of the phase.
Evolution phase:
The evaluation phase allows the customer to evaluate the output of the project to date before the
project continues to the next spiral.
Advantages
[3].Incremental model:
In incremental model the whole requirement is divided into various builds. Multiple
development cycles take place here, making the life cycle a “multi-waterfall” cycle.
Cycles are divided up into smaller, more easily managed modules.
Each module passes through the requirements, design, implementation and testing phases.
A working version of software is produced during the first module, so you have working
software early on during the software life cycle.
Each subsequent release of the module adds function to the previous release. The process
continues till the complete system is achieved.
For example:
In the diagram above when we work incrementally we are adding piece by piece but expect that each
piece is fully finished. Thus keep on adding the pieces until it’s complete.
[2]. Design
Software design is actually a multi-step process that focuses on data structure,
software architecture, procedural detail and interface characterization.
The design process translates requirements into a representation of t he software
that can be assessed for quality before code generation begins.
The design documents must e prepared and stored as a part of software
configuration.
[4]. Testing
Once code has been generated, program testing begins. The testing process
focuses on the logical internals of the software, assuri ng that all statements have been
tested, and on the functional externals – that is, conducting test to uncover errors and
ensure that defined input will produce actual results that agree with required results.
[5]. Maintenance
Software will undergo chang e after it is delivered to the customer. Change will
occur because, errors have been encountered or to accommodate changes in its external
environment (e.g. change in device) or customer requires functional or peripheral
enhancement.
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
Or
[2].Questionnaire
[3].Record View
[4].Observations
are the different fact finding techniques used by the analyst. The analyst may use more than one
technique for investigation.
[1].Interview:
Interview is a fact finding technique where two parties work together, One person acts as an
interviewer and other as interviewee. The person who collect information is known as system
analyst who play the role of as interviewer.
This method is used to collect the information from groups or individuals. Analyst selects the
people who are related with the system for the interview. In this method the analyst sits face to
face with the people and records their responses.
The interviewer must plan in advance the type of questions he/ she is going to ask and should
be ready to answer any type of question. He should also choose a suitable place and time which
will be comfortable for the respondent.
The information collected is quite accurate and reliable as the interviewer can clear and cross
check the doubts there itself.
This method also helps gap the areas of misunderstandings and help to discuss about the future
problems. Structured and unstructured are the two sub categories of Interview.
Structured interview:
Structured interview is more formal interview where fixed questions are asked and
specific information is collected.
Unstructured interview:
Unstructured interview is more or less like a casual conversation where in-depth areas
topics are covered and other information apart from the topic may also be obtained.
Advantages:
[1].It is effective technique when client can not communicate effectively in writing.
[2].It permit client to reply freely and openly to any type of question.
Disadvantages:
[2].if suitable environment is not provide for conducting interview then this technique is failed.