• Software crisis leads to the term "Software
Engineering." Software engineering is the branch of
software that deals with development of well
developed software that satisfies all the users'
requirements and ensures that the software is
provided on time and within budget. The software is
provided along with documentation that gives
description to the user on how to use the software.
Software engineering can be defined as:
• "Software engineering is the branch of engineering in
which the software is developed in a manner that it
will have all the properties like maintenance,
extensibility and is within time and budget and also
satisfies all the requirements given by user."
• Producing software does not mean producing just
software but it means to develop the software in a
cost effective manner
Characteristics of
well engineered
software
Software is 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.
Resources refer to the memory and processor utilization.
The software should efficiently perform what the user
demanded and give appropriate response in each case
i.e. the output given is accurate or not.
Maintainability
This characteristic of the software is important for both
the software engineer and the user. If the change is to be
required in the software then the 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
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
Some of the software gets
overrun. Overrun doesn't
mean that the cost of the
software exceeds the limit
given by user. But, it means
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.
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.
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
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.
TYPES OF
SOFTWARE
APPLICATION
Different kinds of software applications that
would be suitable for different tasks:
Word Processing software - Use this kind of
tool to create worksheets, type letters, type
papers, etc.
MS Word, WordPerfect.
Desktop Publishing software - Use this
software to make signs, banners, greeting cards,
illustrative worksheets, newsletters, etc.
Adobe PageMaker, MS Word.
Spreadsheet software - Use this kind of
tool to compute number-intensive
problems such as budgeting, forecasting,
etc. A spreadsheet will plot nice graphs
very easily.
MS Excel.
Database software - Use this software to
store data such as address, membership
and other text information. A database
can be used to easily sort and organize
records.
MS Access.
Presentation software - Use this software to
create multimedia stacks of cards/screens that
can effectively present a lesson or a sales pitch.
The user often clicks on buttons to advance to the
next screen in a sequence.
MS PowerPoint, AppleWorks (slideshows),
HyperStudio, Flash, Director, HyperCard, Digital
Chisel, SuperCard, Corel Envoy,...
Internet Browsers - This software allows one to
surf the Web. Often they can read email and
create Web pages too.
Netscape Navigator (or Netscape Communicator),
MS Internet Explorer, AOL Browser....
Email programs - These programs send and receive
email.
Netscape Messenger (part of Netscape
Communicator), MS Outlook Express, MS Outlook,
Eudora, AOL browser (has email built in)....
Graphics Programs (pixel-based) - This software
allows one to touch up photographs and create
graphics from scratch.
Adobe Photoshop, Paint Shop Pro, AppleWorks, MS
Works, MS Paint (comes free on Windows PC's),
Painter, ....
Graphics Programs (vector-based) - This software
creates graphics that are similar to illustrations or
cartoon drawings.
Adobe Illustrator, Corel Draw.
Communications software - This software allows two
computers with modems to communicate through
audio, video, and/or chat-based means.
MS NetMeeting, AOL Instant Messenger.
Software
components
• The word component denotes a part of something . This is very general
and may be the reason for the still vague and diverse descriptions of
software components in many publications.
• For example, in the Dictionary of Object Technology a component is
described very generally as a "reusable entity". Nierstrasz and
Sametinger also provide general definitions of components that
include macros, functions, templates, modules, etc. as valid examples
of software components.
• Following the example of "component-based" environments like
VisualBasic, central characteristics of components that are often
mentioned are properties, an event mechanism, scripting and the use
of a visual builder tool for component composition. An example of this
point of view is the JavaBeans specification, where a bean (which is a
component in this model) is defined as a "reusable software
component that can be manipulated visually in a builder tool" . As we
argue below, some of these features are an indication of the
requirements on components, but they do not sufficiently describe
what a component is and are no prerequisite for a component-based
environment.
Components, classes, objects and
modules
• Components are sometimes related to objects or classes in the
literature . From the above discussion follows that components are
not objects ( Like classes, components are program parts that may
be used for creating objects and for defining an object's interfaces
and implementation.
• The main difference between a class and a component is that a
class is a (language-specific) source-code entity, whereas a
component is a binary program part. However, a component may
be implemented with (usually multiple) classes.
• Both components and modules require clear specification of
external dependencies. However, a component is not a module as
used in languages like Modula-2, where a module is also a
compilation unit. Components may be large and complex, and
developing components thus requires division of labor and the
ability to split up its source code into separately compliable units.
This means that a component may be made up of several
modules.
THANK YOU

ITFT - Software

  • 2.
    • Software crisisleads to the term "Software Engineering." Software engineering is the branch of software that deals with development of well developed software that satisfies all the users' requirements and ensures that the software is provided on time and within budget. The software is provided along with documentation that gives description to the user on how to use the software. Software engineering can be defined as: • "Software engineering is the branch of engineering in which the software is developed in a manner that it will have all the properties like maintenance, extensibility and is within time and budget and also satisfies all the requirements given by user." • Producing software does not mean producing just software but it means to develop the software in a cost effective manner
  • 3.
  • 4.
    Software is saidto 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. Resources refer to the memory and processor utilization. The software should efficiently perform what the user demanded and give appropriate response in each case i.e. the output given is accurate or not.
  • 5.
    Maintainability This characteristic ofthe software is important for both the software engineer and the user. If the change is to be required in the software then the 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.
    The software shouldbe 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.
    Some of thesoftware gets overrun. Overrun doesn't mean that the cost of the software exceeds the limit given by user. But, it means 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 systemis 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.
    The software shouldbe 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.
    It is theability 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.
  • 12.
    Different kinds ofsoftware applications that would be suitable for different tasks: Word Processing software - Use this kind of tool to create worksheets, type letters, type papers, etc. MS Word, WordPerfect. Desktop Publishing software - Use this software to make signs, banners, greeting cards, illustrative worksheets, newsletters, etc. Adobe PageMaker, MS Word.
  • 13.
    Spreadsheet software -Use this kind of tool to compute number-intensive problems such as budgeting, forecasting, etc. A spreadsheet will plot nice graphs very easily. MS Excel. Database software - Use this software to store data such as address, membership and other text information. A database can be used to easily sort and organize records. MS Access.
  • 14.
    Presentation software -Use this software to create multimedia stacks of cards/screens that can effectively present a lesson or a sales pitch. The user often clicks on buttons to advance to the next screen in a sequence. MS PowerPoint, AppleWorks (slideshows), HyperStudio, Flash, Director, HyperCard, Digital Chisel, SuperCard, Corel Envoy,... Internet Browsers - This software allows one to surf the Web. Often they can read email and create Web pages too. Netscape Navigator (or Netscape Communicator), MS Internet Explorer, AOL Browser....
  • 15.
    Email programs -These programs send and receive email. Netscape Messenger (part of Netscape Communicator), MS Outlook Express, MS Outlook, Eudora, AOL browser (has email built in).... Graphics Programs (pixel-based) - This software allows one to touch up photographs and create graphics from scratch. Adobe Photoshop, Paint Shop Pro, AppleWorks, MS Works, MS Paint (comes free on Windows PC's), Painter, ....
  • 16.
    Graphics Programs (vector-based)- This software creates graphics that are similar to illustrations or cartoon drawings. Adobe Illustrator, Corel Draw. Communications software - This software allows two computers with modems to communicate through audio, video, and/or chat-based means. MS NetMeeting, AOL Instant Messenger.
  • 17.
    Software components • The wordcomponent denotes a part of something . This is very general and may be the reason for the still vague and diverse descriptions of software components in many publications. • For example, in the Dictionary of Object Technology a component is described very generally as a "reusable entity". Nierstrasz and Sametinger also provide general definitions of components that include macros, functions, templates, modules, etc. as valid examples of software components. • Following the example of "component-based" environments like VisualBasic, central characteristics of components that are often mentioned are properties, an event mechanism, scripting and the use of a visual builder tool for component composition. An example of this point of view is the JavaBeans specification, where a bean (which is a component in this model) is defined as a "reusable software component that can be manipulated visually in a builder tool" . As we argue below, some of these features are an indication of the requirements on components, but they do not sufficiently describe what a component is and are no prerequisite for a component-based environment.
  • 18.
    Components, classes, objectsand modules • Components are sometimes related to objects or classes in the literature . From the above discussion follows that components are not objects ( Like classes, components are program parts that may be used for creating objects and for defining an object's interfaces and implementation. • The main difference between a class and a component is that a class is a (language-specific) source-code entity, whereas a component is a binary program part. However, a component may be implemented with (usually multiple) classes. • Both components and modules require clear specification of external dependencies. However, a component is not a module as used in languages like Modula-2, where a module is also a compilation unit. Components may be large and complex, and developing components thus requires division of labor and the ability to split up its source code into separately compliable units. This means that a component may be made up of several modules.
  • 19.