ROZLINABINTIMOHAMED
10 views
38 slides
Mar 07, 2025
Slide 1 of 38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
About This Presentation
Software Engineering
Size: 4.32 MB
Language: en
Added: Mar 07, 2025
Slides: 38 pages
Slide Content
Introduction BCS1043 Software Engineering Faculty of Computing, UMPSA
Outlines Nature of software Nature of software engineering Software engineering ethics 2 @Rozlina Mohamed 2024/25(1)
Nature of Software @Rozlina Mohamed 2024/25(1) 3
What is Software? IEEE_Std_610.12-1990 Software is the collection of computer programs, procedure rules and associated documentation and data. Documentation Operating procedures Programs Software = Program + Documentation + Operating procedures 4
Importance of Software Software affects every aspect of our lives Already many systems are connected to the cloud With IR 4.0 and IoT, the number of interconnected devices will only rise The percentage of software as part of system cost is also rising 100% Hardware % computer cost Software 0% Year 5
Categories of Software Based on the Goal 6 BCS1043
Categories of Software Based on Development Approach Generic Designed for a broad customer market. Very common requirements. Sometimes called shrink-wrapped software. Example: Microsoft Office Custom Designed for a single customer. Unique requirements that cannot be satisfied by generic products. Sometimes called bespoke software. Example: Airbus A320 flight control 8
Sources of Software BCS1043 9
Nature of Software Engineering @Rozlina Mohamed 2024/25(1) 10
What is Software Engineering? Layman’s Definition Sofware Engineering Science and art of building significant software that are: on time on budget with acceptable performance Cheap Fast Good Pricey T oo late LOL Bad 11
The Problem with Software Dependence on software is high & rising Need for highly reliable software But much software has low quality in terms of Reliability Cost to produce Time to deliver Levels of satisfaction is far below other products e.g. buildings, cars We are in a perpetual ‘software crisis’ We need to have a way to engineer software to have the same quality as other products. Move from ad hoc, unpredictable software development towards a systematic one. 13
Fact about Software Engineering Most development work is evolution, based on previous work Software Engineering tries to apply well understood techniques in a organized and disciplined way Many well-accepted practices have been formally standardized e.g. by the IEEE or ISO Software engineering techniques are needed because large systems cannot be completely understood by one person Teamwork and co-ordination are required The challenge: to divide the work and ensure the finished products work properly 14
15 Software is designed, not manufactured Costs are concentrated in engineering, not manufacturing Software is flexible This can both good and bad Most software is custom-built Can’t be built using 100% reusable components, like a car Software lasts a long time Unlike other products Software doesn’t wear out But changes in users’ needs and environment require software maintenance Software Engineering is Different Compared to other engineering products
Software Engineering vs Engineering Issue Software Engineering Engineering Foundations Computer scienc e , in f o r mation Scienc e , math, empi r ical kn o wledge scienc e , discrete math Cost Soft w are enginee r ing and consulting In some project s , ma n u f actu r ing costs are costs are often more than the half substantially higher than engineering cost total cost Replication T r ivial Some systems require less d e v elopment eff o r t b ut more attention to ma n u f actu r ing issues Inn o v ation N e w ideas are w elcomed Untested inn o v ations are limited A g e 50 y ears old thousands of y ears Title Self-appointed In ma n y place s , it is illegal to call y ourself an engineer without specific accreditation Management F e w soft w are engineers manage anyone Some engineers manage const r uction, ma n u f actu r ing or maintenance cr e ws 16
Software Engineering vs Computer Science Issue Software Engineering Computer Science Ideal Const r ucting soft w are applications f or real- w o r ld use tod a y Finding ete r nal t r uths about pro b lems and algo r ithms f or poste r ity Results W o r king applications Correctness of algo r ithm s , computational complexity Additional knowledge Domain knowledge Mathematics Budgets/schedules Fixed Open-ended Nota b le pe r sonalities Bar r y Boehm, F red Brook s , Dan B r i c klin Edgar Dijkst ra, Donald K n uth, Alan T u r ing Practitioner s A f e w million Less than 100k worldwide 17
Hardware reliability follows the “bath-tub curve”. Software doesn’t follow this pattern. Failure rate Time Bur n in Useful life Wear out Ha rdwa r e. Failure rate Time Test/Debug Useful life Obsolescence Upgrade Upgrade Upgrade Software. 18 Software Engineering is Different
Small-scale Vs Large-scale software projects Programming-in-the-small Programming is done by one person. Activity is short-lived. Problem is small enough for one person t o maste r . Programming-in-the-Large Real-world software fall in this category. Team consists coders, system engineers, tester & customers. Software may be split into 100’s of modules, each with similar complexity to the one on the left. Modules must interface with other modules. Changes in a module may affect other modules. 19
Problem of Scale Development Methods Formal Project Management Informal Informal Formal Small Projects Large Complex Project Big projects require: Formal methods of development Formal methods of project management. Abstraction skills Communications skills. 20
Measuring the Effort Cost of developing software is generally measured in terms of person-months of effort spent in development. Lines of code (LOC) is commonly used to measure productivity. P r og r ammer P r oductivity = 10 t o 20 lines of code a d a y Numerous studies have found 10:1 differences in productivity and quality among individuals and even among teams 21
Size in LOC of some well-known products 22
The Mythical Man-Month What is the man-month? Cost varies as the product of the number men and the number of months Progress does not Hence the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth It implies that men and months are interchangeable 23
Partitioning of Big Projects Table: IBM productivity in lines of code per programmer per month [ ? ]. Project size (man/months) Productivity (lines of code/month) 1 10 100 1000 439 220 110 55 Table: Productivity plummets as interactions increase [ ? ]. Interations Productivity V e r y few Some Many 10,000 LoC/man-year 5,000 LoC/man-year 1,500 LoC/man- y ear Programmer productivity plummets on big systems, mostly because of interactions required between team members [ ? ]. B r ook ’ s Law Adding people to a late project makes it later [ ? ]. 25
Cost of Software Production Software costs more to maintain than it does to develop. Software engineering is concerned with cost-effective software development. 26
Cost of Software Errors Software errors cost the U.S. economy $60 billion annually in rework, lost productivity, and actual damages. Software costs often dominate computer system costs (this we already know) Software costs more to maintain than to develop. For systems with a long life, maintenance costs may be several times development costs. Much much cheaper to catch bugs early! 27
What are the key challenges facing software engineering? Coping with legacy systems, coping with increasing diversity and coping with demands for reduced delivery times Legacy systems Old, valuable systems must be maintained and updated Heterogeneity Systems are distributed and include a mix of hardware and software Delivery There is increasing pressure for faster delivery of software
What are the attributes of good software? The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable Maintainability Software must evolve to meet changing needs Dependability Software must be trustworthy Efficiency Software should not make wasteful use of system resources Usability Software must be usable by the users for which it was designed
Professional and ethical responsibility 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 Ethical behaviour is more than simply upholding the law.
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 outwith their competence .
Issues of professional responsibility 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).
ACM/IEEE Code of Ethics 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.
Code of ethics - principles 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 .
Code of ethics - principles 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.
Code of ethics - principles 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.
Typical 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 without the authorization of government authorities