0% found this document useful (0 votes)
56 views15 pages

INTRODUCTION To Software Eng

INTRODUCTION to software eng

Uploaded by

Mercy Kitur
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
56 views15 pages

INTRODUCTION To Software Eng

INTRODUCTION to software eng

Uploaded by

Mercy Kitur
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 15

INTRODUCTION

Introduction
The term software engineering first appeared in the 1968 NATO Software Engineering Conference
and was meant to provoke thought regarding the current "software crisis" at the time. Since then, it
has continued as a profession and field of study dedicated to creating software that is of higher
quality, more affordable, maintainable, and quicker to build. Since the field is still relatively young
compared to its sister fields of engineering, there is still much work and debate around what
software engineering actually is, and if it deserves the title engineering. It has grown organically
out of the limitations of viewing software as just programming. Software development is a term
sometimes preferred by practitioners in the industry who view software engineering as too heavy-
handed and constrictive to the malleable process of creating software. Yet, in spite of its youth as a
profession, the field's future looks bright as Money Magazine and Salary.com rated software
engineering as the best job in America in 2006.
DEFINITIONS
•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.
• What is the difference between software engineering and computer science? 
Essentially, computer science is concerned with the theories and methods which
underlie computers and software systems whereas software engineering is
concerned with the practical problems of producing software..

System Engineering: System Engineering or more precisely computer based system


engineering is concerned with all aspects of the development and evolution of
complex systems where software plays a major role. System engineering is
therefore concerned with hardware development policy and process design and
system development as well as software engineering.
SOFTWARE PROCESS
•A software process is a set of activities and associated results which produce a
software product. These activities are mostly carried out by software engineers.

These activities are:-


 
i) Software specifications – the functionality of the software and constrains on its
operation must be defined.
ii) Software development – The software to meet the specification must be produced.
iii)Software validation – the software must be validated to ensure that it does what
the customer wants.
iv)Software evolution – the software must evolve to meet changing customer needs.
 
Attributes of good software:
 Software Product Characteristics

 
• Maintainability
Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a changing business environment

• Dependability and security  


Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not
cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the
system.
 
• Efficiency
Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.

• Acceptability
Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and
compatible with other systems that they use.
 
 
 
KEY CHALLENGES IN FACING
SOFTWARE ENGINEERING
•Software Engineering in 21st century faces key challenges:-
i) The legacy challenge – the majority of large software systems which are in use today were developed many
years ago yet they perform critical business functions. The legacy challenge is the challenge of maintaining
and updating this software in such a way that excessive costs are avoided and essential business services
continue to be delivered.
ii) The heterogeneity challenge – increasingly systems are required to operate as distributed systems across
networks that include different types of computers and with different kind of support systems. The
heterogeneity challenge is the challenge of developing techniques to build dependable software which is
flexible enough to cope with this heterogeneity.
iii) The delivery challenge - the delivery challenge is the challenge of shortening delivery times for large and
complex systems without compromising system quality.

iv) Trust challenge


PROFESSIONAL AND ETHICAL
RESPONSIBILITY
•Like other engineers, software engineers must accept that their job involves under
responsibilities than simply the application of technical skills.

•Their work is carried out within a legal and social framework. It goes without
saying that engineers should uphold normal standards of honesty and integrity.

•They should not use their skills and abilities to behave in a dishonest way or in a
way that will bring disrepute to the software engineering profession.

•However there are areas where standards of acceptable behavior are not bounded
notion of professional responsibility. Some of these are:-
Issues of professional responsibility
• Confidentiality
Engineers should normally respect the confidentiality of their employers or clients irrespective of
whether or not a formal confidentiality agreement has been signed.
• Competence
Engineers should not misrepresent their level of competence. They should not knowingly accept work
which is outside their competence.
• Intellectual property rights
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).
Software engineers shall adhere to the
following eight principles:-
PUBLIC – software engineers shall act consistently with public interest.

CLIENT AND EMPLOYER – software engineers shall act in a manner that is in the best interests of their client and employer consistent
with the public interest.
 
PRODUCT – software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
 
JUDGEMENT – software engineers shall maintain integrity and independence in their profession at judgment.
 
MANAGEMENT – software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of
software development and maintenance.
 
PROFESSION – software engineers shall advance the integrity and reputation of the profession consistent with the public interest.

COLLEGUES – software engineers shall be fair to and supportive to their colleagues.


 
SELF – software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical
approach to the practice of the profession.
Problem

Requirement Engineering

Requirement

Specification
Design

Specification

Implementation

Program

Testing

Working
Program

Maintenance
Phases of software developement
•Requirements Engineering
• 
•The goal of the requirements engineering phase is to get a complete description of the problem to be solved and
the requirements posed by and on the environment in which the system is going to function. Requirements
posed by the environment may include hardware and supporting software or the number of prospective users of
the system to be developed.
• 
•Alternatively, analysis of the requirements may lead to certain constraints imposed on hardware yet to be
acquired or to the organization in which the system is to function. A description of the problem to be solved
includes such things as:-
- The functions of the software to be developed.
- Possible future extensions to the system
- The amount, and kind of documentation required
- Response time and other performance requirements of the system.
Requirements Eng…Contd….
•Part of the requirements engineering is a feasibility study. The purpose of the feasibility study is to assess
whether there is a solution to the problem which is both economically and technically feasible.
• 
•The more careful we are during the requirements engineering phase, the larger the chance that the ultimate
system will meet expectations. To this end, the various people (among others, the customer, prospective users,
designers and programmers) involved have to collaborate intensively.
• 
•The document in which the result of this activity is laid down is called the requirements specification.
DESIGN

•During the design phase, a model of the system is developed which, when encoded in some programming
language, solves the problem for the user.
•To this end, the problem is decomposed into manageable pieces called modules or components; the functions
of these modules and the interfaces between them are specified in very precise way.
•The design phase is crucial.
• During the design phase we try to separate the what from the how.
•We concentrate on the problem and should not let ourselves be distracted by implementation concerns.
•The result of this design phase is the (technical) specification, serves as a starting point for the implementation
phase.
IMPLEMENTATION

•During the implementation, we concentrate on the individual modules.

•Our starting point is the modules specification.


•It is important to note that the first goal of a programmer should be the
development of a well documented, reliable easy to read, flexible,
correct program.
• The result of the implementation phase is an executable program.
TESTING

•It is wrong to say that testing is a phase following implementation. This suggests that you need
not bother testing until implementation is finished.

•Attention has to be paid to testing even during the requirements engineering phase.
•During the subsequent phases, testing is continued and refined.
•The earlier that error’s are detected the cheaper it is to correct them.
•Testing at phase boundaries comes in two flavors.
•We have to test that the transition between subsequent phases is correct (this is known as
verification).
• We also have to check that we are still on the right track as regards fulfilling user
requirements (validation).
• The result of adding verification and validation activities to the linear model of figure 1 yields
the so-called waterfall model of software development.
• 
MAINTENANCE
•After delivery of the software, there are often errors that have still gone undetected. These errors must be
repaired. In addition, the actual use of the system can lead to requests for changes and enhancements.
• 
•Maintenance thus concerns all activities needed to keep the system operational after it has been delivered to the
user.
•An activity spanning all phases is project management. Like other projects, software development projects
must be managed properly in order to ensure that the produce is delivered on time and within budget.
• 
•An important activity not identified. Separately is documentation. Key components of system documentation
include the project plan, quality plan, requirements specification, architecture description, design documentation
and test plan.

You might also like