Chapter 1- Introduction
Chapter 1 Introduction
1
Topics covered
Chapter 1 Introduction
2
Software engineering
Chapter 1 Introduction
3
Software costs
Chapter 1 Introduction
4
Software project failure
Chapter 1 Introduction
5
Professional software development
Chapter 1 Introduction
6
Frequently asked questions about software engineering�
Chapter 1 Introduction
7
Question | Answer |
What is software? | Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market. |
What are the attributes of good software? | Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable. |
What is software engineering? | Software engineering is an engineering discipline that is concerned with all aspects of software production. |
What are the fundamental software engineering activities? | Software specification, software development, software validation and software evolution. |
What is the difference between software engineering and computer science? | Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software. |
What is 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 more general process. |
Frequently asked questions about software engineering
Chapter 1 Introduction
8
Question | Answer |
What are the key challenges facing software engineering? | Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software. |
What are the costs of software engineering? | Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. |
What are the best software engineering techniques and methods? | While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. You can’t, therefore, say that one method is better than another. |
What differences has the web made to software engineering? | The web has led to the availability of software services and the possibility of developing highly distributed service-based systems. Web-based systems development has led to important advances in programming languages and software reuse. |
Software products
Chapter 1 Introduction
9
Product specification
Chapter 1 Introduction
10
Essential attributes of good software
Chapter 1 Introduction
11
Product characteristic | Description |
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. |
Software engineering
Chapter 1 Introduction
12
Importance of software engineering
Chapter 1 Introduction
13
Software process activities
Chapter 1 Introduction
14
General issues that affect software
Chapter 1 Introduction
15
General issues that affect software
Chapter 1 Introduction
16
Software engineering diversity
Chapter 1 Introduction
17
Application types
Chapter 1 Introduction
18
Application types
Chapter 1 Introduction
19
Application types
Chapter 1 Introduction
20
Software engineering fundamentals
Chapter 1 Introduction
21
Internet software engineering
Chapter 1 Introduction
22
Web-based software engineering
Chapter 1 Introduction
23
Web software engineering
Chapter 1 Introduction
24
Web software engineering
Chapter 1 Introduction
25
Software engineering ethics
Chapter 1 Introduction
26
Software engineering ethics
Chapter 1 Introduction
27
Issues of professional responsibility
Chapter 1 Introduction
28
Issues of professional responsibility
Chapter 1 Introduction
29
ACM/IEEE Code of Ethics
Chapter 1 Introduction
30
Rationale for the code of ethics
Chapter 1 Introduction
31
The ACM/IEEE Code of Ethics
Chapter 1 Introduction
32
Software Engineering Code of Ethics and Professional Practice
ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices
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 the 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:
Ethical principles
Chapter 1 Introduction
33
1. PUBLIC - Software engineers shall act consistently with the public interest.
2. 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.
3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment.
5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
6. PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
8. 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.
Case studies
Chapter 1 Introduction
34
Ethical dilemmas
Chapter 1 Introduction
35
Case studies
Chapter 1 Introduction
36
Insulin pump control system
Chapter 1 Introduction
37
Insulin pump hardware architecture
Chapter 1 Introduction
38
Activity model of the insulin pump
Chapter 1 Introduction
39
Essential high-level requirements
Chapter 1 Introduction
40
Mentcare: A patient information system for mental health care
Chapter 1 Introduction
41
Mentcare
Chapter 1 Introduction
42
Mentcare goals
Chapter 1 Introduction
43
The organization of the Mentcare system
Chapter 1 Introduction
44
Key features of the Mentcare system
Chapter 1 Introduction
45
Mentcare system concerns
Chapter 1 Introduction
46
Wilderness weather station
Chapter 1 Introduction
47
The weather station’s environment
Chapter 1 Introduction
48
Weather information system
Chapter 1 Introduction
49
Additional software functionality
Chapter 1 Introduction
50
iLearn: A digital learning environment
Chapter 1 Introduction
51
Service-oriented systems
Chapter 1 Introduction
52
iLearn services
Chapter 1 Introduction
53
iLearn architecture
Chapter 1 Introduction
54
iLearn service integration
Chapter 1 Introduction
55
Key points
Chapter 1 Introduction
56
Key points
Chapter 1 Introduction
57