Software may be generic or custom:
Generic:These are stand-alone systems that are produced by a development organization and sold on the open market to any customer who is able to buy them.(i.e. developed to be sold to a range of different customers).e.g. Databases, Office packages, Drawing Packages etc.
Custom(Bespoke):These are the systems which are commissioned by a particular customer. A software contractor develops the software especially for that customer. (i.e. .developed for a single customer according to their specification).e.g.: Control system for electronic device, software to support particular business process.
Here, customers and engineers define the software to be produced and the constraints on its operation.( i.e. what the system should do and its development constraints).
Where the software is designed and programmed.(i.e. production of the software system)
where the software is checked to ensure that it is what the customer requires.(i.e. checking that the software is what the customer wants)
Where the software is modified to adapt it to changing customer and market requirements.(i.e. changing the software in response to changing demands)
Software Process Model
Software process model is a simplified representation of a software process, presented from a specific perspective. Software process model may include activities that are part of the software process, software products and the role of people involved in software engineering. It includes 3 types of model:
This model shows the sequence of activities in the process along with their inputs, outputs and dependencies.The activities in this model represent human actions.
b)Data flow or Activity Model:
This 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 a specification, is transformed to an output, such as a design. The activities here may represent transformations carried out by people /computer.
c)Role or Action Model:
This model represents the roles of people involved in the process and the activities for which they are responsible.
The distribution of costs across the different activities in the software process depends on the process used and the type of software that is being developed.
Software Engineering Method
It is a structured approach to software development which includes system models, notations, rules, design advice and process guidance whose aim to facilitate the production of high-quality software in cost-effective way. The software engineering methods are as follows:
In this method, descriptions of graphical models which should be developed and the notation used to define these models.eg. Object model, Data Flow Model.
It explains constraints applied to system models e.g. Every entity in a system model must be unique name.
Heuristic which characterise good design practice in this method. Following these recommendations should lead to a well-organized system model (i.e. Advice on good design practice).e.g. No object should have more than seven sub-objects associated with it.
It is descriptions of the activities which may be followed to develop the system models and the organization of these activities. e.g. Object attributes should be documented before designing the operations associated with an object.
a) Heterogeneity Challenge:
Every organization is required to operate as a distributed system across the network that includes different types of computer and with different types of supporting system. The heterogeneity challenge is the challenge of developing software that is flexible enough to cope with heterogeneous system.
Traditional software engineering techniques are time consuming. The time they take is required to achieve software quality. However, business organization today must be responsive and change very rapidly. Their supporting software must change equally. The delivery challenge is the challenge to provide the software within short time without compromising software quality.
Trust challenge is to develop a technique that demonstrates that software can be trusted by its user.
Old, valuable systems must be maintained and updated.
System software is a collection of programs written to service other programs. Some system software process complex, but determinate, information structures. e.g., compilers, editors, and file management utilities. Other systems applications process largely indeterminate data.e.g., operating system components, drivers, telecommunications processors.
Real Time Software
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 from an external environment, an analysis component that transforms information as required by the application, a control/output component that responds to the external environment, and a monitoring component that coordinates all other components so that real-time response (typically ranging from 1 millisecond to 1 second) can be maintained.
Business information processing is the largest single software application area. Discrete "systems" (e.g., payroll, accounts receivable/payable, inventory) have evolved into management information system (MIS) software that accesses one or more large databases containing business information. Applications in this area restructure existing data in a way that facilitates business operations or management decision making.e.g.point of- sale transaction processing.
Engineering and Scientific Software
Engineering and scientific software have been characterized by "number crunching" algorithms. Applications range from astronomy to volcanology, from automotive stress analysis to space shuttle orbital dynamics, and from molecular biology to automated manufacturing.
Embedded software resides in read-only memory and is used to control products and systems for the consumer and industrial markets.Embedded software can perform very limited and esoteric functions (e.g., keypad control for a microwave oven) or provide significant function and control capability (e.g., digital functions in an automobile such as fuel control, dashboard displays, and braking systems).
Personal Computer Software
The personal computer software market has burgeoned over the past two decades. Word processing, spreadsheets, computer graphics, multimedia, entertainment, database management, personal and business financial applications, external network, and database access are only a few of hundreds of applications.
Web Based Software
The Web pages retrieved by a browser are software that incorporates executable instructions (e.g., CGI, HTML, Perl, or Java), and data hypertext and a variety of visual and audio formats). In essence, the network becomes a massive computer providing an almost unlimited software resource that can be accessed by anyone with a modem.
Artificial Intelligence Software
Artificial intelligence (AI) software makes use of nonnumeric algorithms to solve complex problems that are not amenable to computation or straightforward analysis. Expert systems, also called knowledge- based systems, pattern recognition (image and voice), artificial neural networks, theorem proving, and game playing are representative of applications within this category.