Sei sulla pagina 1di 32

Unit – 1

What is software?
Software is set of instruction to acquire inputs and to manipulate them to produce the desired output in
terms of function and performance as determined by the user of the software. Today’s software comprises
the source code, executables, design documents, operations and system manuals and installation and
implementation manuals.
The software is:-
1. Computer programs and associated documentation
2. Software products may be developed for a particular customer or may be developed for a general
market
3. Softwares are software system delivered to customer with the documentation that describes how to
install and use the system.
4. Instruction (computer program) that when executed provide desired function and performance.
5. Data structures that enable the programs to adequately manipulate information.

Importance of software

It affects nearly every aspect of our lives and has become pervasive in our
commerce, our culture, and our everyday activities. Computer software has
become a driving force.
 It is engine that drives business decision –making.
 It serves as the basis for modern scientific investigation and
engineering problem solving.
 It is embedded in all kinds of system like transportation, medical,
telecommunications, military, industrial process , entertainment ,office
product etc.

Software impacts on our society and culture continuous to be profound. As its


importance grows, the software community continually attempt to develop
technologies that will make it easier, faster, and less expensive to build high quality
computer programs. Some of these technologies are targeted at a specific
application domain.
For example:-Web-site design and implementation
Types of software
Computer software is divided into two categories:
1. System Software
2. Application Software

System Software:- This software includes operating system and all utilities that enable
the computer to function.
Application Software:- These consists of programs that do real work for users .
For example:- word processers, spread sheets, and database management
systems fall under the category of application software.
Software

System software Application Software


Operating software File magnitude Image process Word process

Assembler Compilers Data Base Spread sheet

Debugger Utilities Games Communication

The overviews of these different classes of software are following as:-


Operating Software:-It is basically the system which provides interface between the user
and the hardware. It manage hardware like, memory, CPU, input output devices files etc for the
user. Most commonly used operating system includes Microsoft Windows, DOS, XENIX,
MAC OS, OS/2, UNIX MVS etc.
Utilities: - utilities are programs that perform the very specification tasks related
to managing system resources .Operating system in a number of utilities for
managing disk printers, other devices.
Compilers and Interpreters: - Compiler is a program that translates sources
code into object code. The compiler derives its name from the way it works,
looking at the entire pieces of source code and collecting and recognizing the
instruction.
Word processors:-A word processor is a program that enables you to perform
word processing function .Word processors use a computer to create , edit, and
print documents.
Spread sheet:-A spread sheet is a table of values arranged rows and columns.
Spread sheet applications are computer programs that let you create and
manipulate spreadsheets electronically. In a spread sheet application, each value
sits in a cell.
Database Management System: - A DBMS is a collection of programs that
enable you to store, modify, and extract information from a database.
Image Processors: - Image processors or graphics programs enable you to draw
manipulate, add special effects, view, and print and save images.
 Paint Programs
 Draw Program
 Image Editors

Classes of software
Software is classified into the following two classes:
1. Generic Software
2. Customized Software
Generic Software:- Generic software is designed for a broad customer
market whose requirement are very common ,fairly stable and well understood by
the software engineer .These products are sold in the open market , and there could
be several competitive products in the market .
For Example:-the database products, browser, ERP/CRM and CAD/CAM
packages, operating system software.
• Customized software:- Customized products are those that are develop for a customer
where domain , environment and requirements being unique to that customer cannot be
satisfied by generic products. Developed for a single customer according to their
specification

The Nature of Software


 Software is flexible: Software is an executable specification of a
computation.
 Software is expressive: All computable functions may be expressed
in software.
 Software is huge: An operating system may consist of millions of
lines of code.
 Software is complex: software has little regularity or recognizable
components found in other complex systems and there are
exponentially many paths through the code and changes in one part of
the code may have unintended consequences in other equally remote
sections of the code.
 Software is cheap: Manufacturing cost is zero, development cost is
everything.

 Software is communication: Communication with a machine but


also communication between the client, the software architect, the
software engineer, and the coder.
 Software can be modified: it is natural to use an iterative
development process combining requirements elicitation with design
and implementation and use the emerging implementation to uncover
errors in design and in the requirements.
Software components
A software component is a system element offering a predefined service and able to
communicate with other component.
 Multiple-use
 Non context specific
 Composable with other components
 Encapsulation i.e. Non-investigable through its interfaces
 A unit of independent deployment and versioning
A simpler definition can be: A component is an object written to a
specification. It does not matter what the specification is:COM, JAVA
BEANS,etc.
Software component often take the form of objects or collection of objects (from
object oriented programming),in some binary or textual form , adhering to some
interface description language (IDL) so that the component may exist
autonomously from other components in a computer.
It takes significant effort and awareness to write a software component that is
effectively reusable. The component needs:-
 To be fully documented;
 More through testing;
 Robust input validity checking;
 To pass back useful error messages as appropriate ;
 To be built with an awareness that it will be put n to unforeseen uses;
 A mechanism for compensating developers who invest the effort implied
above.
 Coding
 Database
 Module
 Testing
 Documents

The Evolving Role of Software


Software takes on a dual role. It is a product and, at the same time, the vehicle for delivering a product.
 As a product, it delivers the computing potential embodied by computer hardware or, more
broadly, a network of computers that are accessible by local hardware.
 Software is an information transformer – producing, managing, acquiring, modifying,
displaying or transmitting information that can be as simple as a single bit or as complex as a
multimedia presentation.
 Software delivered the most important of our time –information. Software transforms personal
data so that data can be more useful in local contest .It manages business information to enhance
competitiveness .It provides gateway to worldwide information network and provides the
means for acquiring information in all of its forms.
It manages business information to enhance competitiveness; it provides the gateway to world
wide information network.
For example: internet

 The role of computer software , dramatic improvements in hardware performance, profound


change in computing architectures, vast increase in memory and storage capacity, and a wide
variety of exotic input and output options have all precipitated more sophisticated and complex
computer- based system.
 As the twentieth century closed , the focus shifted once more ,this time to the impact of “Y2K”
“time bomb” (e.g., [YOU98b],[DEj98],[KAR99]).
 Although the prediction of Y2K doomsayers were incorrect , their popular writings drove home
the pervasiveness of the software in our lives.
 The lone programmer of an earlier era has been replaced by the team of software specialists ,
each focusing on one part of the technology required to deliver a complex application.
 The same questions asked of the lone programmer are being asked when modern computer-
based system are built:
1. Why does it take so long to get software finished?
2. Why are development costs so high?
3. Why can’t we find all the error before we give the software to customer?
4. Why do we continue to have difficulty in measuring progress as software is being
developed?
 Most software was developed and ultimately used by the same person or
organization. It has four era :
1. Early Era: In this era the software are mainly based on(1950-1970):
 Limited distribution
 Custom software
 Batch orientation
2. Second Era: In this era the software are mainly based on(1960-1972)
 Multiuser
 Database
 Real time
 Product software
 Multiprogramming
3. Third Era: In this era the software are mainly based on(1973-1985)
 Embedded intelligence
 Consumer impact
 Distributed system
 Low cost hardware
4. Forth Era: In this Era the software are mainly based on (1985 to until)
 Powerful desktop system
 Expert system
 Artificial intelligence
 Network computers
 Parallel computing
 Object oriented technology

Software Characteristics

 Software is developed or engineered. It is not manufactured in the classical sense.


Although some similarities exist between software development and hardware manufacture, the
two activities are fundamentally different. In both activities, high quality is achieved through
good design, but the manufacturing phase for hardware can introduce quality problem that can
easily corrected with design.

 Software does not wear out.

Failure Infant wear


Rate Mortality out

Time
Failure curve for hardware
The failure rate as a function of time for hardware as shown in ‘bath tub’ curve but the software is not
suscepectible to the environmental melodies that cause hardware to wear out, so the failure rate curve for
software should take the form of the ‘idealized curve’. Another aspect of wear illustrates the difference
between h/w and s/w when an h/w component is wear out, it is replaced by spare part, and there are no
spare parts in software.
Every software failures indicate an error in design or in the process through which design was translated
into machine executable code. So software maintenance involves considerably more complexity than h/w
maintenance.

 Although the industry is moving toward component-based assembly, most software continues to
be custom built.
 Software is flexible.
We all feel that software is flexible. A program can develop to do almost anything .sometimes
.this characteristics may be the best and may help us to accommodate any kind of change. Reuse
of components from the libraries help in reduction of effort. Now days, we reuse not only
algorithm but also data structures.
 Reliability

 Improvement

 Predictability

 Maintainability
 Effectiveness

Software Application
Software may be applied in any situation for which a pre –specified set of procedural steps has been
defined .It is somewhat difficult to develop meaningful generic catagories for software applications.
The following software areas indicate the breadth of potential applications:
1. System Software
2. Real time software
3. Business software
4. Embedded software
5. Personal computer software
6. Web based software
7. Artificial intelligence software
8. Engineering and scientific software
1) system software:- it is a collection of programs written to service
other programs. Some system software process complex, but
determinate, information structures.
Example: - compilers, editors and file management utilities.
The system software area is characterized by heavy interaction with computer hardware, heavy uses by
multiple users, concurrent operation that requires scheduling, resources sharing and process management.
2) Real time software:- software that monitor analyze and control real
world events as they occur is called real time. Elements of real time
software include a data –gathering components that collects and
formats information from an external environment.
3) Business software:- Business information processing is the largest
ssingle software application area . In addition to conventional data
processing application business software applications also encompass
interactive computing.
4) Embedded software:- It resides in read only memory and is used to
control products and systems for the consumer and industrial markets.
5) Personal computer software:- the personal computer software
market has burgeoned over the past two decades .word processing
,spreadsheets, computer graphics, multimedia and business financial
applications.
6) Web based software:- The web page retrieved by a browser are
software that incorporates instruction(i.e.:- CGI, HTML) and data.
7) Artificial intelligent software:- It makes use of non-numerical
algorithm to solve complex problem that are not amenable or
straightforward analysis.
8) Engineering and scientific software:- It has been characterized by
number crunching algorithm. Computer aided design; system
simulation and other interactive application have begun to take on real
time and even system software characteristics.
Software Problems

The software problems are:


(i) Software is expensive
(ii) Late, Costly and unreliable
(iii) Problem of Change and rework

Software is expensive: - over the past decades, with the advancement and technology,
the cost of hardware has been consistently decreased, but the cost of software is increased
.The main reason for high cost of software is that software development is still labor –
intensive. Delivered lines of code (DLOC) is by far the most commonly used measure of
software size in the industry.

100
hardware
80

60
Percentage
Of Cost
40

Software development
20
Software Maintenance

1955 1970 1985


Year

Late , costly and unreliable:-There are many instances quoted about software
projects that are behind schedule and have heavy cost over runs.The software
industry has gained reputations of not been able to deliver on time and within
budgets.
For example: US Airforce Command and Control Software Projects.
Initial estimate given by the winning contractor was $4lakh subsequently.The
cost was renegotiated as $7lakh to $25lakh and finally $32lakh.The final
completion cost was almost 10 times the original estimate.
Problem of change and rework:-The software is delivered and deployed. it
enters the maintenance phase. Software needs to be maintained not because some
of its components wear out and need to be replaced, but because there need to be
replaced, but because there are often some residual errors remaining in the system
that must be removed as they were discovered.

Software costs

1. Software costs often dominate system costs. The costs of software on a PC are often
greater than the hardware cost
2. Software costs more to maintain than it does to develop. For systems with a long life,
maintenance costs may be several times development costs
3. Software engineering is concerned with cost-effective software development

Software Quality factor

The various factors, which influence the software, are termed as software factors. They can be
broadly divided into two categories. The classification is done on the basis of measurability. The
first category of the factors is of those that can be measured directly such as number of logical
errors and the second category clubs those factors which can be measured only indirectly for
example maintainability but the each of the factors are to be measured to check for the content
and the quality control. Few factors of quality are available and they are mentioned below.
 Correctness - extent to which a program satisfies its specification and fulfills the client's
objective.
 Reliability - extent to which a program is supposed to perform its function with the
required precision.

 Efficiency - amount of computing and code required by a program to perform its


function.

 Integrity - extent to which access to software and data is denied to unauthorized users.

 Usability- labor required to understand, operate, prepare input and interpret output of a
program

 Maintainability- effort required to locate and fix an error in a program.

 Flexibility- effort needed to modify an operational program.

 Testability- effort required to test the programs for their functionality.

 Portability- effort required to run the program from one platform to other or to different
hardware.

 Reusability- extent to which the program or it’s parts can be used as building blocks or
as prototypes for other programs.

 Interoperability- effort required to couple one system to another.

Now as you consider the above-mentioned factors it becomes very obvious that the measurements
of all of them to some discrete value are quite an impossible task. Therefore, another method was
evolved to measure out the quality. A set of matrices is defined and is used to develop expressions
for each of the factors as per the following expression
Fq = C1*M1 + C2*M2 + …………….Cn*Mn
where Fq is the software quality factor, Cn are regression coefficients and Mn is metrics that
influences the quality factor. Metrics used in this arrangement is mentioned below.

 Auditability- ease with which the conformance to standards can be verified.


 Accuracy- precision of computations and control

 Communication commonality- degree to which standard interfaces, protocols and


bandwidth are used.

 Completeness- degree to which full implementation of functionality required has been


achieved.

 Conciseness- program’s compactness in terms of lines of code.

 Consistency- use of uniform design and documentation techniques throughout the


software development.
 Data commonality- use of standard data structures and types throughout the program.

 Error tolerance – damage done when program encounters an error.

 Execution efficiency- run-time performance of a program.

 Expandability- degree to which one can extend architectural, data and procedural
design.

 Hardware independence- degree to which the software is de-coupled from its operating
hardware.

 Instrumentation- degree to which the program monitors its own operation and identifies
errors that do occur.

 Modularity- functional independence of program components.

 Operability- ease of programs operation.

 Security- control and protection of programs and database from the unauthorized users.

 Self-documentation- degree to which the source code provides meaningful


documentation.

 Simplicity- degree to which a program is understandable without much difficulty.

 Software system independence- degree to which program is independent of nonstandard


programming language features, operating system characteristics and other environment
constraints.

 Traceability- ability to trace a design representation or actual program component back


to initial objectives.

 Training- degree to which the software is user-friendly to new users.

There are various ‘checklists’ for software quality. One of them was given by Hewlett-Packard
that has been given the acronym FURPS – for Functionality, Usability, Reliability, Performance
and Supportability.
Functionality is measured via the evaluation of the feature set and the program capabilities, the
generality of the functions that are derived and the overall security of the system.
Considering human factors, overall aesthetics, consistency and documentation assesses usability.
Reliability is figured out by evaluating the frequency and severity of failure, the accuracy of
output results, the mean time between failures (MTBF), the ability to recover from failure and the
predictability of the program.
Performance is measured by measuring processing speed, response time, resource consumption,
throughput and efficiency. Supportability combines the ability to extend the program,
adaptability, serviceability or in other terms maintainability and also testability, compatibility,
configurability and the ease with which a system can be installed.
Software Myths
Software myths propagated myth information and confusion. They had a
number of attributes that made them insidious; for instance they appeared to be
regional facts. There are basically three myths such as:
 Management Myths
 Customer Myths
 Practitioner’s Myths

Management Myths: Managers with software responsibility, like


managers in most disciplines, are often under pressure to maintain
budgets, keep schedule from slipping, and improve quality like a
drowning person grasps at a straw, a software manager often grasps at
believe software myth.
Myth: We already have a book that are full of standard and
procedures for building software, want that provide my people with
everything they need to know?
Reality: The book of standards may very well exist, but is it used?
Are software practitioners are aware of its existence? Does it reflect
modern software engineer practice? Is it complete? Is it streamlined to
deliver? In many cases the answer to all of these questions is “no”.
Myth: My people have state of the art software development tools,
after all, we buy them the newest computers.
Reality: It takes much more than the latest model mainframe,
workstation, PC, to do high quality software development. Computer-
aided software engineering tools are more important than hardware
for achieving good quality and productivity, yet the majority of
software developers still do not use them effectively.
Myth: if I decide to outsource the software project to a third party , I
can just relax and let that firm build it.
Reality: if an organization dose not understand how to manage and
control the software project internally, it will invariably struggle when
it out source projects.
Customer Myths:-A customer who requests computer software
may be a person at next desk, a technical group down the hall, the
marketing /sales department, or an outside company that has
requested software under contract. In many cases the customer
believes myths about software because software managers and
practitioner’s do little to correct information.
Myth: A general statement of objective is sufficient to begin writing
programs –we can fill in the details latter.
Reality: A formal and detail description of the information, domain,
function, behaviour, per formation, interfaces, design constraints and
validation is essential.
Myth: Project requirement continually change, but change can be
easily accommodated because software is flexible.
Reality: it is true that software requirement change but the impact of
change varies with the time at which it is introduced.
Practitioner’s Myths: Myths that are believed by software
practitioners have been fostered by 50 years of programming culture.
Myth: Once we write a program and get it to work are job is done.
Reality: Industry data indicates that between 60 and 80% of all
afford expended on software will be expended after it is delivered to
the customer for the first time.
Myth: The only delivered work product for a successful project is
the working program.
Reality: A working is only one part of a software configuration that
includes many elements. Documentation provides a foundation for
successful engineering and more important, guidance for software
support.
Software crisis

By today’s definition, a "large" software system is a system that contains more than
50,000 lines of high-level language code. It’s those large systems that bring the software
crisis to light. If you’re familiar with large software development projects, you know that
the work is done in teams consisting of project managers, requirements analysts, software
engineers, documentation experts, and programmers. With so many professionals
collaborating in an organized manner on a project, what’s the problem? Why is it that the
team produces fewer than 10 lines of code per day over the average lifetime of the
project? And why are sixty errors found per every thousand lines of code? Why is one of
every three large projects scrapped before ever being completed? And why is only 1 in 8
finished software projects considered "successful?"
But wait–there’s more!
 The cost of owning and maintaining software in the 1980’s was twice as
expensive as developing the software.

 During the 1990’s, the cost of ownership and maintenance increased by 30% over
the 1980’s.

 In 1995, statistics showed that half of surveyed development projects were


operational, but were not considered successful.

 The average software project overshoots its schedule by half.

 Three quarters of all large software products delivered to the customer are failures
that are either not used at all, or do not meet the customer’s requirements.

Software projects are notoriously behind schedule and over budget. Over the last twenty
years many different paradigms have been created in attempt to make software
development more predictable and controllable. While there is no single solution to the
crisis, much has been learned that can directly benefit today's software projects. It
appears that the Software Crisis can be boiled down to two basic sources:
 Software development is seen as a craft, rather than an engineering discipline.

 The approach to education taken by most higher education institutions encourages


that "craft" mentality.

Some reasons for software crisis are as follows:-

1. Fail to meet user requirements


2. Frequently crash
3. Far over the budget(expensive)
4. Difficult to alter, debug and enhance
5. Often delivered late
6. Use resources non-optimally
Solution to software crisis

1. Development of quality software products


2. Delivering projects in time
3. Software products within the cost limits
4. Increased productivity
5. Better job satisfaction of software engineers

Software engineering

1. Software engineering is an engineering discipline which is concerned with all aspects of software
production
2. Software engineers should adopt a systematic and organised approach to their work and use
appropriate tools and techniques depending on the problem to be solved, the development
constraints and the resources available.
3. Software engineering is the practical application of scientific knowledge in the
design and construction of computer programs and the associated
documentation required to develop, operate and maintain them.
4. Software engineering is the branch of computer science that creates practical,
cost-effective solutions to computing and information processing problems,
preferentially by applying scientific knowledge, developing software systems in
the service of mankind.
5. Software Engineering is a discipline concerned with the practical problems of
developing large-scale software systems. Software engineers are the architects of
the software components of a computer-based system, providing several levels of
representations or blueprints leading to specifications through which programmers
build the subsystems and modules of the systems. Software development
methodologies and management techniques combine with theories from
mathematics and computer science in a cost-effective manner to solve real-world
system development problems.
6. Software is everywhere and affects every facet of our life. Unfortunately, there is
a gap between the “state of the art” and the “state of the practice” of Software
engineering. Consequently, the software design, development and integration are
often plagued by schedule delays, cost overruns, defects and performance
problems.
7. Software engineering is the application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of software and the
study of these approaches; that is, the application of engineering to software.
8. Software Engineering is an approach to developing software that attempts to treat
it as a formal process more like traditional engineering than the craft that many
programmers believe it is. We talk of crafting an application, refining and
polishing it, as if it were a wooden sculpture, not a series of logic instructions.
The problem here is that you cannot engineer art. Programming falls somewhere
between an art and a science.
9. Software engineering (SE) is concerned with developing and maintaining
software systems that behave reliably and efficiently, are affordable to develop
and maintain, and satisfy all the requirements that customers have defined for
them. It is important because of the impact of large, expensive software systems
and the role of software in safety-critical applications. It integrates significant
mathematics, computer science and practices whose origins are in engineering.
10. The term Software Engineering encompasses a set of methods, techniques and
tools used in the production of an application beyond the primary activity of
programming.
Goals of software engineering
1. Maintainability
2. Dependability
3. Efficiency
4. Usability
5. Integrity
6. Portability
7. Reusability
8. Testability
9. Interoperability
10. Availability
1>Maintainability:-
However good the programmer, things will still go wrong with the software.
Requirements often change between versions. In any case, we may want to reuse
elements of the software in other products. None of this is made any easier if, when a
problem is discovered, everybody stands around scratching their heads saying "Oh dear,
the person that wrote this left the company last week" or worse, "Does anybody know
who wrote this code?" One of the goals of a good process is to expose the designers' and
programmers' thought processes in such a way that their intention is clear. Then we can
quickly and easily find and remedy faults or work out where to make changes.
2> Dependability:-
Software dependability has a range of characteristics, including reliability, security, and
safety. Dependability software should not cause physical and economic damage in the
event of system damage.
3> Efficiency:-
Software should not make wasteful use of system resources such as memory and
processor cycles. Efficiency includes responsiveness, processing time, memory
utilization, etc.
4> Usability:-
The ease of use and of training the end users of the system .Sub qualities: learn ability
.efficiency, affect, helpfulness, control. labor required to understand, operate, prepare
input and interpret output of a program.
5>Integrity:-Extent to which access to software and data is denied to unauthorized users.
6>Portability: - Effort required running the program from one platform to other or to
different hardware.
7>Reusability: - Extent to which the program or it’s parts can be used as building blocks
or as prototypes for other programs.
8>Testability- Effort required to test the programs for their functionality.
9>Interoperability- Effort required to couple one system to another.
10>Availability:-The measure of time that the system is up and running correctly; the
length of time between failures and the length of time needed to resume operation after a
failure.

Principles of software engineering


1. Separation of concern
2. Modularity
3. Abstraction
4. Anticipation of change
5. Generality
6. Incremental development
7. Consistency

Separation of concerns: Separation of concerns is recognition of the need for human


beings to work within a limited context.
“In view of this, it makes sense to separate handling of different values. This can
be done either by dealing with different values at different times in the software
development process, or by structuring the design so that responsibility for
achieving different values is assigned to different components.”
For Example: run- time efficiency is one value that frequently conflicts with other
software values. For this reasons, most software engineering recommend dealing with
efficiency as a separate concern.
Modularity:-The principle of modularity implies separating software into components according to
functionality and responsibility.
Abstraction: - The principle of abstraction implies separating the behavior of software of components
from their implementation.
For example: - Recursive Algorithm
Anticipation of change: - computer software is an automated solution to a problem. The problem arises
in some context, or domain that is familiar to the users of the software. The domain defines the types of
data that the users need to work with and relationships between the types of data software developer, on
the other hand, are familiar with technology that deals with data in an abstract way. A software developer
can think in terms of graphs and graph algorithms without attaching concrete meaning to vertices and
edges. Software developers are learning the domain that the clients work in. They are also learning the
values of the client: What form of data presentation is most useful to the client, what kinds of data are
crucial and require special protective measures. The principal of anticipation of change recognize the
complexity of the learning process for both software developers and their clients.
Generality: - The principle of generality is closely related to the principle of anticipation of change. It is
important in designing software that is free from unnatural restrictions and limitations.
For Example: unnatural restriction or limitation is the use of two digit year numbers, which has led to the
“year 2000” problem: Software that will garble record keeping at the turn of the century .Although the
two –digit limitation appeared reasonable at the time, good software frequently survives beyond its
expected lifetime.
Incremental development:-In this process, we can build the software in small increments.
For example: Adding one use case at a time. An incremental software development
process simplifies verification .if you develop software by adding small
increments of functionality then, for verification, you only need to deal with the
added portion. If there are any errors are detected then they are already partly
isolated. So they are much easier to correct.
Consistency: The principle of consistency is recognition of the fact that it is easier
to do things in a familiar context.
For example: coding style is a consistent manner of laying out code text. This serves two
thing: First, it makes reading the code easier . Second, it allows programmers to automate
part of the skills required in code entry, freeing the programmer’s mind to deal with more
important issues. Consistency serves two purposes in designing graphical user interfaces.
First, a consistent look and feel makes it easier for users to learn to use software. Second,
a consistent user interface promotes reuse of the interact components.

Software Engineering focuses on

 Improving the productivity of the program/development process


 Controlling and predicting the cost of software development
 Producing what the customer wants
 Producing software that have features like reliability, clarity, extensibility
Software Engineering methods
 Structure approaches to software development which include system models,
notations, rules, design advice and process guidance
 Model descriptions: Descriptions of graphical models which should be produced
 Rules constraints applied to system models
 Recommendations
 Advice on good design practice
 Process guidance ; what activities to follow

Key challenge of software engineering


 Heterogeneity , delivery and trust
 Heterogeneity
 Developing technique for building software that can cope with heterogeneous
platforms and execution environment.
 Delivery developing techniques that lead to faster delivery of software
 Trust
 Developing techniques that demonstrate that software can be trusted by its
users.

Software Engineering problem

Few fundamental problems that software engineering faces are:


 Problem of scale
 Cost schedule and quality
 Problem of consistency
Problem of Scale:
A fundamental problem of software engineering is the problem of scale,
development of very large system requires a very different set of method compared to
developing a small system.
Consider the problem of counting people in a room versus taking a census of a
country. Both are essentially counting problems. But the methods used for counting
people in a room will not just work when taking a census. Different set of method will
have to be used for counting a census and the census problem will require considerably
more management, organization and validation in addition to counting.
Formal project Large complex project
Management

Small
project
Informal Formal
Informal development methods
Cost Schedule and quality:
Engineering discipline almost by definition is driven by practical
parameter of cost, Schedule and quality. The cost of developing for the system, which, in
the case of software, are the manpower, hardware, software, and other support resources.
Schedule is an important factor in many projects. One of the major factors driving any
production discipline is quality. The quality of a software product having three
dimensions:
 Product Operation
 Product Transition
 Product revision
Maintainability portability
Flexibility reusability

Testability Interoperability

Product Revision Product transition

Product operation

Correctness
Reliability
Efficiency
Integrity
Usability

Product operation deals with quality factors such as correctness, reliability and efficiency.
Product transition deals with quality factors like portability and inters operability.
Product revision is concerned with those aspects related to modification of program,
including factors such as maintainability and testability.

Problem of consistency:
Though high quality, low cost and small cycle time are the primary
objectives of any projects, for an organization there is another goal: consistency i.e. a
software development organization would like to produce consistent quality with
consistent productivity. It allows an organization to predict the outcome of a project with
reasonable accuracy and to improve its processes to produce higher quality products and
to improve its productivity.

What is a software process?

1. A set of activities whose goal is the development or evolution of software


2. Generic activities in all software processes are:
• Specification - what the system should do and its development constraints
• Development - production of the software system
• Validation - checking that the software is what the customer wants
• Evolution - changing the software in response to changing demands

What is a software process model?

1. A simplified representation of a software process, presented from a specific perspective


2. Examples of process perspectives are
• Workflow perspective - sequence of activities
• Data-flow perspective - information flow
• Role/action perspective - who does what
3. Generic process models
• Waterfall
• Evolutionary development
• Formal transformation
• Integration from reusable components

Software Development Life Cycle Models


The General Model
Software life cycle models describe phases of the software cycle and the order in which
those phases are executed. There are tons of models, and many companies adopt their
own, but all have very similar patterns. The general, basic model is shown below:
General Life Cycle Model

Each phase produces deliverables required by the next phase in the life cycle.
Requirements are translated into design. Code is produced during implementation that is
driven by the design. Testing verifies the deliverable of the implementation phase against
requirements.
Requirements
Business requirements are gathered in this phase. This phase is the main focus of the
project managers and stake holders. Meetings with managers, stake holders and users are
held in order to determine the requirements. Who is going to use the system? How will
they use the system? What data should be input into the system? What data should be
output by the system? These are general questions that get answered during a
requirements gathering phase. This produces a nice big list of functionality that the
system should provide, which describes functions the system should perform, business
logic that processes data, what data is stored and used by the system, and how the user
interface should work. The overall result is the system as a whole and how it performs,
not how it is actually going to do it.

Design
The software system design is produced from the results of the requirements phase.
Architects have the ball in their court during this phase and this is the phase in which
their focus lies. This is where the details on how the system will work is produced.
Architecture, including hardware and software, communication, software design (UML is
produced here) are all part of the deliverables of a design phase.

Implementation
Code is produced from the deliverables of the design phase during implementation, and
this is the longest phase of the software development life cycle. For a developer, this is
the main focus of the life cycle because this is where the code is produced.
Implementation my overlap with both the design and testing phases. Many tools exists
(CASE tools) to actually automate the production of code using information gathered and
produced during the design phase.

Testing
During testing, the implementation is tested against the requirements to make sure that
the product is actually solving the needs addressed and gathered during the requirements
phase. Unit tests and system/acceptance tests are done during this phase. Unit tests act
on a specific component of the system, while system tests act on the system as a whole.
So in a nutshell, that is a very basic overview of the general software development life
cycle model.
Attributes of good software?
1>The software should deliver the required functionality and performance to the user and
should be maintainable, dependable and usable

2>Maintainability

 Software must evolve to meet changing needs

3>Dependability

• Software must be trustworthy

4>Efficiency

• Software should not make wasteful use of system resources

5>Usability

• Software must be usable by the users for which it was designed

Software lifecycle
The term software lifecycle describes the development of an application,
from the concept phase right up to the retirement phase. The purpose of
such a plan is to define the various intermediate phases required to
validate the development of the application, i.e. to ensure the software
conforms to the requirements for the application and verification of
development procedures, i.e. to make sure the methods employed are
appropriate.
Such plans originate from the fact that errors detected late in the
implementation phase can end up being costly to rectify. The lifecycle
allows for errors to be detected at as early a stage as possible and therefore
enable developers to concentrate on the quality of the software,
implementation time frames and associated costs.
The basic software lifecycle involves the following procedures:
 Defining goals defining the outcome of the project, and its role in a
global strategy.
 Analysis of requirements and feasibility, i.e. gathering, examining
and formulating the customer's requirements and examining any
restrictions that may apply.
 General design General architectural requirements of the application.
 Detailed design, precise definition of each application sub-set.
 Programming (programming and implementation) is the implementation of a
programming language to create the functions defined during the design stages.
 Unit testing, individual testing of each application sub-set to ensure they are
implemented according to specifications.
 Integration, to ensure that the different modules integrate with the application. This
is the purpose of the integration testing which is carefully documented.
 Beta Testing (or debugging), to ensure that the software conforms to original
specifications.
 Documentation serves to document necessary information for software users and for
future development.
 Implementation,
 Maintenance, all corrective procedures (corrective maintenance) and minor software
updates (ongoing maintenance).

The order and presence of each of these procedures in the lifecycle of an


application depends on the type of lifecycle model agreed between the
client and the development team.

Lifecycle models
To facilitate a common methodology for both the client and the software
company, lifecycle models have been updated to reflect the development
stages involved and the documentation required, so that each stage is
validated before moving on to the next stage.

The software process model maybe defined as a simplified description of a software


process, presented from a particular perspective. In essence, each stage of the software
process is identified and a model is then employed to represent the inherent activities
associated within that stage. Consequently, a collection of ‘local’ models may be utilised
in generating the global picture representative of the software process. Examples of
models include the workflow model, the data-flow model, and the role model.

 The workflow model shows the sequence of activities in the process along
with their inputs, outputs and dependencies. The activities in the model represent
human actions.
 The dataflow model represents the process as a set of activities each of which
carries out some data transformation. It shows how the input to the process such
as specification is transformed to an output such as design. The activities here
maybe lower than in a workflow model. They may represent transformations
carries out by people or computers.
 The role model represents the roles of people involved in the software process
and the activities for which they are responsible.
Questions asked in UPTU Exams:-

2006-2007

1. What is the principal aim of software engineering discipline? What


does the discipline of software engineering discuss?
2. What are the symptoms of the present software crisis? What
factors have contributed to making of the present software crisis?
What are possible solutions to the present software crisis?
3. What are major advantages of first constructing a working
prototype before developing actual product?
4. How are the risks associated with a project handled in the spiral
model of software development?
5. List the 5 desirable characteristics of good software requirement
specification document?

2007-2008

1. State the difference between program and software? Why have


documents and documentation become very important?
2. What is software process? Why is it difficult to improve it?
3. Distinguish between generic and customized software products.
Which one has larger share of market and why?
4. Define the term “Software Engineering”. Explain the major
differences between software engineering and other traditional
engineering disciplines.
5. Discuss software process and product metrics with the help of
examples.

2008-2009
1. What do you mean by a software process model? What is
the difference between a software process model and a
software process?
2. Describe any software process model which is helpful in
identifying possible process improvements.
3. Explain the term software crisis.
4. Write short notes on the following:
(i) The evolving role of software
(ii) Software characteristics

Potrebbero piacerti anche