1.1introduction To Software Engineering
1.1introduction To Software Engineering
Software is computer programs and associated documentation. This definition clearly states that,
the software is not a collection of programs, but includes all associated documentation.
Software system usually consists of a number of separate programs, configuration files: which are
used to set up these programs, System documentation: which describes the structure of the system,
and user documentation: which explains how to use the system and web sites for users to download
recent product information.
Software products may be developed for a particular customer or may be developed for a general
market
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.
Bespoke (custom) – 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.
It is the establishment and use of sound engineering principles in order to obtain economically
software is reliable and works efficiently on real machines.
Software engineering is an engineering discipline which is concerned with all aspects of software
production
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
o Improved quality
o Improved reliability
o Improved productivity
Software engineering is concerned with theories, methods and tools for professional software
development
Computer science is concerned with theories and methods that underline computer software
system.; software engineering is concerned with the practicalities of developing and delivering
useful software
Computer science theories are currently insufficient to act as a complete underpinning for
software engineering
• Specification –where 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)
• Validation – 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)
• Evolution – Where the software is modified to adapt it to changing customer and market
requirements. (i.e. changing the software in response to changing demands)
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.
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
This model represents the roles of people involved in the process and the activities for which
they are responsible.
• Waterfall
• Evolutionary development
• Formal transformation
Software costs
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 costs often dominate system costs. The costs of software on a PC are often greater
than the hardware cost
Roughly 60% of costs are development costs, 40% are testing costs. For custom software,
evolution costs often exceed development costs
Costs vary depending on the type of system being developed and the requirements of system
attributes such as performance and system reliability
Model descriptions
• Descriptions of graphical models which should be developed and the notation used to define
these models.eg. Object model, Data Flow Model
Rules
• Constraints applied to system models e.g. Every entity in a system model must be unique name
Recommendations-
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.
Process guidance
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.
It covers a wide range of different types of programs that are used to support software process activities
such as requirement analysis, system modelling, debugging and testing
Computer-Aided Software Engineering (CASE) tools are software programs that automate or support
the drawing and analysis of system models and provide for the translation of system models into
application programs. Some CASE tools also provide prototyping and code generation capabilities.
Coping with legacy systems, coping with increasing diversity and coping with demands for
reduced delivery times are challenges of software engineering.
Legacy systems
Heterogeneity
Delivery
Like all engineering, software engineering is not just about producing product but involves
producing products in a cost effective way. Given unlimited resources, the majority of software
problems can probably be solved. The challenged for the software engineers is to produce high
quality software with a finite amount of resources and to a predicted schedule.
The software should deliver the required functionality and performance to the user and should be
maintainable, dependable and usable
Software should be written in such a way that it may evolve to meet the changing needs of customers.
This is a critical attribute because software change is an inevitable consequence of a changing
environment.
Software dependability has a range of characteristics, including reliability, security and safety.
Dependable software should not cause physical or economic damage in the event of system failure.
System should not make wasteful use of system resources such as memory and processor cycles.
Efficiency therefore includes responsiveness, processing time, and memory utilization.
Usability: (Software must be usable by the users for which it was designed)
Software must be usable, without undue effort, by the type of user for whom it is designed. This means
that it should have an appropriate user interface and adequate documentation.
Software engineering involves wider responsibilities than simply the application of technical
skills
Software engineers must behave in an honest and ethically responsible way if they are to be
respected as professionals
Confidentiality
Competence
• Engineers should not misrepresent their level of competence. They should not
knowingly accept work which is out with their competence.
• Engineers should be aware of local laws governing the use of intellectual property such
as patents, copyright, etc. They should be careful to ensure that the intellectual
property of employers and clients is protected.
Computer misuse
• Software engineers should not use their technical skills to misuse other people’s
computers. Computer misuse ranges from relatively trivial (game playing on an
employer’s machine, say) to extremely serious (dissemination of viruses).