You are on page 1of 9

Software Engineering I

Chuka University College

By Fredrick Muthengi

1.0 Introduction to Software Engineering

1.1

Preview

The economies of ALL developed countries depend highly on software products. More and more systems are software-controlled. Software engineering is concerned with theories, methods, and tools for professional software development. In developed countries, expenditure on software represents a significant fraction of GNP. Software costs often dominate computer system costs. The costs of software on a personal computer are more compared to the costs of hardware. Actually, the cost of maintaining software is more compared to the cost of development. For systems with a long life, maintenance costs may be several times the development costs. Software engineering is concerned with cost-effective software development.

1.2

What is Software?

Software1 can be split into two main types - system software and application software or application programs. Software includes both source code written by humans and executable machine code produced by assemblers or compilers. However, it does not usually include the data processed by programs unless this is in a format such as multimedia which depends on the use of computers for its presentation.

Software is more than programs. Software can be defined as computer programs and associated documentation such as requirements, design models and user manuals. This means that, any program is a subset of software and it becomes software only if documentation and operating procedure manuals are prepared. A software product may be developed for a particular client or may be developed for general market. A vast majority of software development is a professional activity where software is developed for specific business purposes. Therefore, software products may be: Generic developed to be sold to a wide range of different customers. For example, PC software such as Excel or Word. Bespoke (Custom) developed for a single customer according to their specification. This distinction between these system product types is becoming increasingly blurred. More and more systems are being developed with a generic product as a base, which is then adapted to suit the requirements of a customer. Eg. Enterprise Resource Planning (ERP) systems. NB: It is good to note that, new software can be created by developing new programs, configuring generic software systems or reusing existing software.

A set of instructions executed by a computer

Page 1 of 9

Software Engineering I

Chuka University College

By Fredrick Muthengi

1.2.1 Components of software

Program

Documentation

Operating Procedures

Software = program +documentation +operating procedures. 1.2.2 Attributes of a good software The software should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable. (i) Maintainability software must evolve to meet 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 must be reliable, secure and trustworthy. Dependable software should not cause physical or economic damage in the event of system failure. Efficiency software should not make wasteful use of system resources such as memory and processor cycles. Acceptability software must be accepted by the users of which it was designed. This means it must be understandable, usable and compatible with other systems that they use.

(ii)

(iii) (iv)

1.3

What is software engineering?

Software has become critical to advancement in almost all areas of human endeavour. The art of programming only is no longer sufficient to construct large programs. There are serious problems in the cost, timeliness, maintenance and quality of many software products. Software engineering has the objective of solving these problems by producing good quality, maintainable software, on time, within budget. To achieve this objective, we have to focus in a disciplined manner on both the quality of the product and on the process used to develop the product. At the first conference on software engineering in 1968, Fritz Bauer defined software engineering as The establishment and use of sound engineering principles in order to obtain economically developed software that is reliable and works efficiently on real machines. Stephen Schach defined the same as A discipline whose aim is the production of quality
Page 2 of 9

Software Engineering I

Chuka University College

By Fredrick Muthengi

software, software that is delivered on time, within budget, and that satisfies its requirements. Both the definitions are popular and acceptable to majority. However, due to increase in cost of maintaining software, objective is now shifting to produce quality software that is maintainable, delivered on time, within budget, and also satisfies its requirements. Then Ian comes with a comprehensive definition: Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use. He argues that, software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to solved, the development constraints and the resources available. Engineering is about getting results of required quality within the schedule and budget. This often involves making compromises engineers cannot be perfectionists. Software engineers adopt a systematic and organized approach to their work, as this is the most effective way to produce high-quality software. Importance of software engineering: More and more, individuals and society rely on advanced software systems. We therefore need to develop reliable and trustworthy systems economically and quickly. It is usually cheaper, in the long run, to use software engineering methods and techniques for software systems rather than just write the programs as if it was a personal programming project. Software Process

1.4

Software process is the set of activities whose goal is the development or evolution of software. Essentially, the software process is the way in which we produce software. This differs from organization to organization. We will discuss more about software process in our next lesson. General activities in all software processes: (i) (ii) (iii) (iv) (v) 1.5 (i) (ii) Specification what the system should do and its development constraints, Development production of the software system, Verification checking that the software meets the requirements, Validation checking that the software is what the customer wants, Evolution changing the software in response to changing demands. Challenges facing software engineering Heterogeneity developing techniques for building software that can cope with heterogeneous platforms and execution environments, Business & Social Change (Delivery) developing techniques that lead to faster delivery of software,
Page 3 of 9

Software Engineering I

Chuka University College

By Fredrick Muthengi

(iii)

Security & Trust developing techniques that demonstrate that software can be trusted by its users.

1.6

Costs of software engineering

Roughly 60% of the costs are development costs, 40% are testing costs. For custom software, evolution costs exceed development costs. Also, the costs vary depending on the type of system being developed and the requirements of the system attributes such as performance and system reliability. The costs can be distributed depending on the development model that is being used.

1.7

What are software engineering methods?

Software engineering methods refer to structured approaches to software development which include system models, notations, rules, design advice and process guidance. It may also refer to model descriptions description of graphical models which should be produced, rules rules applied to system models, recommendations advice on good design practice, and process guidance what activities to follow. 1.9 What is CASE (Computer-Aided Software Engineering)?

CASE refers to software systems that are intended to provide automated support for software activities. CASE systems are often used for method support. CASE can either be Upper or lower CASE. Upper-CASE refers to tools to support the early process activities of requirements and design, and lower-CASE refers to tools to support later activities such as programming, debugging and testing.

1.10

Professional and Ethical responsibility

Software engineering involves wider responsibilities other than application of technical skills. Therefore, software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals. Ethical behaviour is more than upholding the law. Issues of professional responsibility: (i) Confidentiality engineers should normally respect the confidentiality of their employers or clients irrespective of whether formal or not a formal confidentiality agreement has been made. Competence engineers should not misrepresent their level of competence. They should not knowingly accept work which is beyond their competence. Intellectual property rights engineers should be aware of the local laws governing the use of intellectual property such as patents, copyrights etc. They should be careful to ensure that the intellectual property of employers or clients is protected.
Page 4 of 9

(ii) (iii)

Software Engineering I

Chuka University College

By Fredrick Muthengi

(iv)

Computer misuse software engineers should not use their expertise in technical skills to misuse other peoples computers. Computer misuse ranges from relatively trivial (such as playing a game on your employers machine) to extremely serious (dissemination of viruses) ACM/IEEE Code of Ethics

1.11

The professional societies in the US have cooperated to produce a code of ethical practice. Members of these organisations sign up to the code of practice when they join. The Code contains eight principles related to the behaviour of and decisions made by professional software engineers, including practitioners, educators, managers, supervisors and policy makers, as well as trainees and students of the profession. Ethics vs. Law Ethics are personal code of behaviour; Law is the minimum standard imposed by a society. Law represents will of majority (violation punishable by government); Ethics are suggested, not mandated (violation can result in malpractice suit, loss of job ) Code of ethics preamble The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without details, the aspirations can become high sounding but empty; together, the aspirations and the details form a cohesive code. Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles: (i) (ii) (iii) (iv) (v) Public software engineers shall act consistently with the public interest. Client and Employer s/w eng. shall act in a manner that is in the best interests of their client and employer consistent with the public interest. Product s/w eng. shall ensure that their products and related modifications meet the highest professional standards possible. Judgement s/w eng. shall maintain integrity and independence in their professional judgement. Management s/w engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. Profession s/w eng. shall advance the integrity and reputation of the profession consistent with the public interest. Colleagues s/w eng. shall be fair to and supportive of their colleagues.
Page 5 of 9

(vi) (vii)

Software Engineering I

Chuka University College

By Fredrick Muthengi

(viii)

Self s/w eng. shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

Ethical Dilemmas Disagreement in principle with the policies of senior management, Your employer acts in an unethical way and releases a safety-critical system without finishing the testing of the system, Participation in the development of military weapons systems or nuclear systems.

Software Characteristics Software does not wear out: unlike hardware components, software becomes reliable overtime instead of wearing out. It becomes obsolete, if the environment for which it was developed, changes. Hence software may be retired due to environmental changes, new requirements, new expectations, etc.

Software is not manufactured: The life of software is from concept exploration to the retirement of the software product. It is one time development effort and continuous maintenance effort in order to keep it operational. However, making 1000 copies is not an issue and it does not involve any cost. In case of hardware product, every product costs us due to raw material and other processing expenses. We do not have assembly line in software development. Hence it is not manufactured in the classical sense. Reusability of components: In software, every project is a new project. We start from the scratch and design every unit of the software product. Huge effort is required to develop software which further increases the cost of the software product. However, effort has been made to design standard components that may be used in new projects. Software reusability has introduced another area and is known as component based software engineering.

Page 6 of 9

Software Engineering I

Chuka University College

By Fredrick Muthengi

Software is flexible: We all feel that software is flexible. A program can be developed to do almost anything. Sometimes, this characteristic may be the best and may help us to accommodate any kind of change. However, most of the times, this almost anything characteristic has made software development difficult to plan, monitor and control. This unpredictability is the basis of what has been referred to for the past 30 years as the Software Crisis.

1.14

The Changing Nature of Software

Software has become integral part of most of the fields of human life. We name a field and we find the usage of software in that field. Software applications are grouped in to eight areas for convenience namely:

(i)

(ii)

(iii)

(iv)

(v)

(vi)

System software: Infrastructure software comes under this category like compilers, operating systems, editors, drivers, etc. Basically system software is a collection of programs to provide service to other programs. Real time software: These software are used to monitor, control and analyze real world events as they occur. An example may be software required for weather forecasting. Such software will gather and process the status of temperature, humidity and other environmental parameters to forecast the weather. Embedded software: This type of software is placed in Read-Only-Memory (ROM) of the product and control the various functions of the product. The product could be an aircraft, automobile, security system, signalling system, control unit of power plants, etc. The embedded software handles hardware components and is also termed as intelligent software. Business software: This is the largest application area. The software designed to process business applications is called business software. Business software could be payroll, file monitoring system, employee management, account management. It may also be a data warehousing tool which helps us to take decisions based on available data. Management information system, enterprise resource planning (ERP) and such other software are popular examples of business software. Personal computer software: The software used in personal computers are covered in this category. Examples are word processors, computer graphics, multimedia and animating tools, database management, computer games etc. This is a very upcoming area and many big organisations are concentrating their effort here due to large customer base. Artificial intelligence software: Artificial Intelligence software makes use of nonnumerical algorithms to solve complex problems that are not amenable to computation or straight forward analysis [PRESOI]. Examples are expert systems, artificial neural network, signal processing software etc.

Page 7 of 9

Software Engineering I

Chuka University College

By Fredrick Muthengi

(vii) (viii)

Web based software: The software related to web applications come under this category. Examples are CGI, HTML, Java, Perl, DHTML etc. Engineering and scientific software: Scientific and engineering application software are grouped in this category. Huge computing is normally required to process data. Examples are CAD/CAM package, SPSS, MATLAB, Engineering Pro, Circuit analyzers etc. Some Terminologies to note

1.15

The difference of software engineering and computer science Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities and delivering useful software. In essence, computer science theories are still insufficient to act as a complete underpinning for software engineering (unlike, e.g. physics and electrical engineering).

The difference between software engineering and system engineering System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process concerned with developing the software infrastructure, control, applications and databases in the system. System engineers are involved in system specification, architectural design, integration and deployment. Deliverables and Milestones Different deliverables are generated during software development. The examples are source code, user manuals, operating procedure manuals etc. The milestones are the events that are used to ascertain the status of the project. Finalisation of specification is a milestone. Completion of design documentation is another milestone. The milestones are essential for project planning and management. Product and Process Product: What is delivered to the customer is called a product. It may include source code, specification document, manuals, documentation etc. Basically, it is nothing but a set of deliverables only. Process: Process is the way in which we produce software. It is the collection of activities that leads to (a part of) a product. An efficient process is required to produce good quality products. If the process is weak, the end product will undoubtedly suffer, but an obsessive overreliance on process is also dangerous.

Productivity and Effort


Page 8 of 9

Software Engineering I

Chuka University College

By Fredrick Muthengi

Productivity is defined as the rate of output, or production per unit of effort, i.e., the output achieved with regard to the time taken but irrespective of the cost incurred. Hence, there are two issues for deciding the unit of measure: Quantity of output and Period of time In software, one of the measure for quantity of output is lines of code (LOC) produced. Time is measured in days or months. Hence most appropriate unit of effort is Person Months (PMs), meaning thereby number of persons involved for specified months. So, productivity may be measured as LOC/PM (lines of code produced/person month).

Page 9 of 9

You might also like