Introduction
CS 620 Software System Design
Professor Nardi
What is Software?…What is a System?…
How Important Is It to Design a Good System?…
• Consider How Important Software Is Today…
• In Any Given Day, How Often Do You Use the Internet?…Use Your Cell
Phone?…Don’t You Take for Granted That All of This Stuff Is Just Going to
Work?…How Annoyed Do You Get When It Does Not?…
• The Economies of ALL Developed Nations Are Dependent on Software…
• More and More Systems Are Software Controlled…When Was the Last Time
You Called Customer Service and Spoke Directly to a “Real” Person?…
• Expenditure on Software Represents a Significant Part of the GNP in All
Developed Countries…
General Issues That Impact Software – Part 1…
• Heterogeneity:
▪ Increasingly, Systems Are Required to Operate as Distributed Systems Across
Networks That Include Different Types Of Computer and Mobile Devices…
• Business and Social Change:
▪ Business and Society Are Changing Incredibly Quickly as New Technologies
Become Available…
▪ As a Result, We Need to Be Able to Rapidly CHANGE Existing Software and
DEVELOP NEW Software to Meet These Needs…
General Issues That Impact Software – Part 2…
• Security And Trust:
▪ As Software Has Become Intertwined With All Aspects of Our Lives, It Is Essential
That We Can Trust That Software…
• Scale:
▪ Software Has to be Developed Across a Very Wide Range of Scales, From Very
Small Embedded Systems in Portable or Wearable Devices to Internet-Scale,
Cloud-Based Systems That Serve a Global Community…
What Type of Applications Are There? – Part 1…
• Stand-Alone Applications…
▪ Application Systems That Run on a Local Computer (i.e., PC)…
▪ They Include All Necessary Functionality…
▪ They Do NOT Need To Be Connected to a Network…
• Interactive Transaction-Based Applications…
▪ Execute On a Remote Computer…
▪ Accessed By Users From Their Own PCs or Terminals…
▪ These Include Web Applications Such As E-commerce Applications…
• Embedded Control Systems…
▪ Software Control Systems That Control and Manage Hardware Devices…
▪ There Are Probably More Embedded Systems Than Any Other Type of System…
What Type of Applications Are There? – Part 2…
• Batch Processing Systems…
▪ Business Systems Designed to Process Data in Large Batches…
▪ Process Large Numbers of Individual Inputs to Create Corresponding Outputs…
• Entertainment Systems…
▪ Primarily For Personal Use and Are Intended to Entertain the User…
• Systems For Modelling and Simulation…
▪ Developed By Scientists and Engineers to Model Physical Processes or Situations,
That Include Many, Separate, Interacting Objects…
What Type of Applications Are There? – Part 3…
• Data Collection Systems…
▪ Systems That Collect Data From Their Environment Using a Set of Sensors…
▪ Send the Data to Other Systems For Processing…
• “Systems of Systems”…
▪ Systems Composed of a Number of Other Software Systems…
• Customized Products…
▪ Software That Is Commissioned By a
SPECIFIC Customer To Meet Their
SPECIFIC Needs…
✓Examples: Air Traffic Control
Software…Traffic Monitoring Systems…
▪ Specifications of What the Software
Should Do is Owned By the
Customer…
▪ Decisions On Software Change Are
Made By the Customer…
• Generic Products…
▪ Stand-Alone Systems That Are
Marketed and Sold to Any Customer
Who Wishes to Buy Them…
✓Examples: Project Management
Tools…Turbo Tax…Microsoft Office…
▪ Specifications of What the Software
Should Do is Owned By the
Software Developer…
▪ Decisions On Software Change Are
Made By the Developer…
Generic vs. Customized Products…
• Customized Products…
▪ Software That Is Commissioned By a
SPECIFIC Customer To Meet Their
SPECIFIC Needs…
✓Examples: Air Traffic Control
Software…Traffic Monitoring Systems…
▪ Specifications of What the Software
Should Do is Owned By the
Customer…
▪ Decisions On Software Change Are
Made By the Customer…
• Generic Products…
▪ Stand-Alone Systems That Are
Marketed and Sold to Any Customer
Who Wishes to Buy Them…
✓Examples: Project Management
Tools…Turbo Tax…Microsoft Office…
▪ Specifications of What the Software
Should Do is Owned By the
Software Developer…
▪ Decisions On Software Change Are
Made By the Developer…
Generic vs. Customized Products…
• Customized Products…
▪ Software That Is Commissioned By a
SPECIFIC Customer To Meet Their
SPECIFIC Needs…
✓Examples: Air Traffic Control
Software…Traffic Monitoring Systems…
▪ Specifications of What the Software
Should Do is Owned By the
Customer…
▪ Decisions On Software Change Are
Made By the Customer…
• Generic Products…
▪ Stand-Alone Systems That Are
Marketed and Sold to Any Customer
Who Wishes to Buy Them…
✓Examples: Project Management
Tools…Turbo Tax…Microsoft Office…
▪ Specifications of What the Software
Should Do is Owned By the
Software Developer…
▪ Decisions On Software Change Are
Made By the Developer…
Generic vs. Customized Products…
• Customized Products…
▪ Software That Is Commissioned By a
SPECIFIC Customer To Meet Their
SPECIFIC Needs…
✓Examples: Air Traffic Control
Software…Traffic Monitoring Systems…
▪ Specifications of What the Software
Should Do is Owned By the
Customer…
▪ Decisions On Software Change Are
Made By the Customer…
• Generic Products…
▪ Stand-Alone Systems That Are
Marketed and Sold to Any Customer
Who Wishes to Buy Them…
✓Examples: Project Management
Tools…Turbo Tax…Microsoft Office…
▪ Specifications of What the Software
Should Do is Owned By the
Software Developer…
▪ Decisions On Software Change Are
Made By the Developer…
Generic vs. Customized Products…
So What IS Software Engineering?…
• Some Definitions of Software Engineering (SE) Include:
▪ “An Engineering Discipline That is Concerned With All Aspects of Software
Production“ — Ian Sommerville, Author and Professor at St. Andrews in Scotland…
▪ “The Application of a Systematic, Disciplined, Quantifiable Approach to the
Development, Operation, and Maintenance of Software; That Is, the Application
of Engineering to Software” — ISO/IEC/IEEE Systems and Software Engineering
Vocabulary…
▪ “The Establishment and Use of Sound Engineering Principles in Order to
Economically Obtain Software That is Reliable and Works Efficiently on Real
Machines“ — Fritz L. Bauer, Computer Scientist and Professor at Technical
University of Munich…
Ok, So What REALLY Is Software Engineering?…
• Too Often, IT Professionals Look at Building and Designing Systems From Their Own
Point of View…
• For Example:
▪ Business Analysts Look at the Business Needs and NOT the Technical Aspects of a System…
▪ Computer Architects Look at the Technical Aspects of a System and NOT the Business Aspects of a
System…
• REAL Software Engineering Needs to Consider ALL Aspects of Designing, Building and
Implementing a System as a WHOLE…
• Considering ONE Aspect of a System Without Considering ALL Aspects of a System is a
Formula for Poorly Developed Systems and Failure…
Software Engineering Is…
• Software Engineering is Concerned With Theories, Methods and Tools For
Professional Software Development…
• An ENGINEERING Discipline That is Concerned With ALL Aspects and Stages of
Software Production From the Early Stages of System Specification to Development
and Through Implementation and Maintenance…
• This Includes Not Just Technical Process of Development…But Also Project
Management and the Development of Tools and Methods to Support Software
Production…
• It Tries to Be “Realistic” in Its Approach by Using Various Theories and Methods to
Solve Problems While Keeping in Mind Organizational and Financial Constraints…
“Pay Me Now or Pay Me Later”…
• It May Seem Like You Are Saving Time and Costs by Not Using Software Engineering
Methods…and That May Be True in the SHORT Term…
• But as Problems Arise, It is MUCH More Expensive to Fix an Issue After
Implementation, Than It Is to Fix During Design…
• Consider…
▪ You Are Building a House…
▪ You See From the Plan That the Wiring in the House May Not Be Sufficient for Your Needs…
▪ Which Is More Expensive?…Changing the Plan and Then Building the House?…Or Building the
House, and THEN Ripping Out the Walls and Wiring, Replacing the Wiring and Rebuilding the
Walls?…
• The Same Is True When Building a System…
Software Project Failure…
• Systems Are Increasing Complex…
• Demand to Quickly Development and Implement Software Systems Has
Increased…
• Demand to Quickly Produce RELIABLE and TRUSTWORTHY Systems
Economically Has Also Increased…
• Software Engineering Methods Help Put Discipline Around This Development
and Help to Insure That Systems Are Designed More Efficiently…
• Failure to Use Software Engineering Methods Can Lead to Poorly Designed
Software…
Software Costs…
• Software Costs Often Dominate Computer System Costs…
• Costs of Software on a PC Are Often Greater Than the Hardware Cost…
• Software Costs More to Maintain Than It Does to Develop…
• For Systems With a Long Life, Maintenance Costs May Be Several Times Development
Costs…
• In the US in 2020, Companies Spent :
▪ $7.25 TRILLION Dollars on Designing and Building Software…
▪ $2.08 TRILLION Dollars on Software FAILURES…
• Software Engineering is Concerned With Cost-Effective Software Development…
Stages of Software Engineering…
• Software Specification: Customers and Engineers Define the Software
That is to Be Produced and the Constraints On Its Operation…
• Software Development: Where Software is Designed and Programmed…
• Software Validation: Software is Tested to Ensure That It is What the
Customer Requires…
• Software Evolution: Software is Modified to Reflect Changing Customer
and Market Requirements…
FAQs About Software Engineering – Part 1…
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
General Process…
FAQs About Software Engineering – Part 2…
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 Customer
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 Systems…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 Cannot Say 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…
Essential Attributes of Good Software…
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 Includes Responsiveness, Processing Time, Memory Utilization…
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 Diversity…
• There Are Many Different Types of Software Systems…
• There Is NO Universal Set of Software Techniques That is Applicable to
ALL of These System Types…
• Software Engineering Methods and Tools Used Depend on the Type of
Application Being Developed, the Requirements of the Customer, and the
Background of the Development Team…
Software Engineering Fundamentals…
• Some Fundamental Principles Apply to All Types of Software System, Regardless of
the Development Techniques Used:
▪ Develop Systems Using a Managed and Understood Development Process…
▪ Different Processes Are Better Suited to Different Types of Software…“Mix And Match” Processes
as the Scenario Dictates…
▪ There is NO “One Size Fits All” Development Strategy…Anyone Who Tells You Otherwise Has
Probably Never Built a System!…
▪ Dependability and Performance Are Important to ALL Types of Systems…
▪ Understanding and Managing BOTH the Software Specification AND Requirements (What The
Software Should Do) Are Important…
▪ LEARN FROM Experience…Reuse Software or Components WHERE Appropriate…But Keep in Mind
That Sometimes You Spend More Time Trying to Fit Existing Code to a System Than You Would If
You Just Built the Code From Scratch!…
Internet Software Engineering…
• The Web is Now a Platform For Running Application…
• Organizations Are Increasingly Developing Web-Based Systems Rather
Than Local Systems…
• Web Services Allow Application Functionality To Be Accessed Over the
Web…
• Cloud Computing is the Provisioning of Computer Services Where
Applications Run Remotely On the ‘Cloud’…
• Users of Cloud Computing Do Not Buy Software, But Instead Pay
According to Usage…
Web-Based Software Engineering…
• Web-Based Systems Are Complex Distributed System…
• The Fundamental Ideas of Software Engineering Apply to Web-Based
Software the Same Way They Apply to Other Types of Software Systems…
Web Software Engineering…
• Software Reuse…
▪ Dominant Approach For Constructing Web-Based Systems…
▪ When Building, You Determine if Existing Components Can Be Used…
• Incremental and Agile Development…
▪ Web-Based Systems Are Often Developed and Delivered Incrementally…
▪ It Depends on Whether All Requirements Can Be Specified in Advance…
• Service-Oriented Systems…
▪ Software Components Are Stand-Alone Web Services…
• Rich Interfaces…
▪ Utilize New Technologies Such As AJAX and HTML5 to Create More Dynamic Interfaces…
Issues of SE Ethics and Responsibilities…
• Ethical Behavior Is More Than Simply Upholding The Law…
• It Involves Following A Set Of Principles That Are Morally Correct…
▪ Confidentiality : Respect the Confidentiality of Your Employers or Clients Whether or Not
a Formal Confidentiality Agreement Has Been Signed…
▪ Competence : Do Not Misrepresent Your Level of Competence and Do Not Accept Work
Out of Your Competence…
▪ Intellectual Property Rights : Be Aware of Local Laws Governing the Use of Intellectual
Property and Ensure the Intellectual Property of Employers and Clients is Protected…
▪ Computer Misuse : Do Not Use Your Technical Skills to Misuse Other People’s
Computers…Misuse Ranges From the Relatively Trivial (i.e., Game Playing On an
Employer’s Machine, Say) to Extremely Serious (i.e., Dissemination of Viruses)…
Rationale for a Code of Ethics…
• Computers Have a Central and Growing Role in Commerce, Industry,
Government, Medicine, Education, Entertainment and Society At Large…
• Software Engineers, Through Participation or Teaching, Contribute to the
Analysis, Specification, Design, Development, Certification, Maintenance and
Testing of Software Systems…
• Software Engineers Have Significant Opportunities to Do Good or Cause Harm
Themselves, and to Enable Others to Do Good or Cause Harm…
• The Goal is to Help Ensure That Software Engineers Use Their Efforts For
Good…
ACM/IEEE Code of Ethics…
• Association for Computing Machinery / Institute of Electrical and Electronic
Engineers…
• Professional Societies Have Cooperated to Produce a Code of Ethical Practice…
• Members 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…
Ethical Principles – Part 1…
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…
Ethical Principles – Part 2…
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…
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 Systems You Disagree With…
Case Studies…
Case Studies…
• Personal Insulin Pump…
▪ Embedded System in an Insulin Pump Used By Diabetics to Maintain Blood Glucose
Control…
• Mentcare – Mental Health Case Patient Management System…
▪ System Used to Maintain Records of People Receiving Care For Mental Health Problems…
• Wilderness Weather Station…
▪ Data Collection System That Collects Data About Weather Conditions in Remote Areas…
• iLearn…
▪ Digital Learning Environment System to Support Learning in Schools…
Insulin Pump Control System…
• Collects Data From a Blood Sugar Sensor and Calculates the Amount of
Insulin Required To Be Injected…
• Calculation Based On the Rate of Change of Blood Sugar Levels…
• Sends Signals to a Micro-Pump to Deliver the Correct Dose of Insulin…
• Safety-Critical System As Low Blood Sugars Can Lead to Brain
Malfunctioning, Coma and Death…
• High-Blood Sugar Levels Have Long-Term Consequences Such As Eye and
Kidney Damage…
Insulin Pump Hardware Architecture…
Insulin Pump Activity Model…
Essential High-Level Requirements…
• System Shall Be Available to Deliver Insulin When Required…
• System Shall Perform Reliably and Deliver the Correct Amount
of Insulin to Counteract the Current Level of Blood Sugar…
• System Must Be Designed and Implemented to Ensure That the
System Always Meets These Requirements…
Mentcare – Part 1…
• Patient Information System to Support Mental Health Care…
• Is a Medical Information System That Maintains Information About
Patients Suffering From Mental Health Problems and the Treatments
They Have Received…
• Most Mental Health Patients Do Not Require Dedicated Hospital
Treatment But Need to Attend Specialist Clinics Regularly Where They
Can Meet a Doctor Who Has Detailed Knowledge of Their Problems…
• To Make It Easier For Patients To Attend, These Clinics Are Run In Both
Hospitals and Local Medical Practices and Community Centres…
Mentcare- Part 2…
• Mentcare is an Information System Intended For Use In Clinics…
• It Makes Use of a Centralized Database of Patient Information…
• It Has Also Been Designed to Run On a Stand-Alone PC, So That It May Be
Accessed and Used From Sites That Do Not Have Secure Network
Connectivity…
• When the Local Systems Have Secure Network Access, They Use Patient
Information in the Database, But Can Also Download and Use Local
Copies of Patient Records When They Are Disconnected…
Mentcare Goals…
• Generate Management Information That Allows Health Service
Managers to Assess Performance Against Local and
Government Targets…
• Provide Medical Staff With Timely Information to Support the
Treatment of Patients…
Mentcare Organization…
Mentcare Key Features…
• Individual Care Management….
▪ Clinicians Can Create, Edit and View Patient Information in the System…
▪ Supports Data Summaries So That Doctors Can Quickly Learn About Key Problems and
Treatments That Have Been Prescribed…
• Patient Monitoring…
▪ Monitors Patient Records That Are Involved in Treatment, and Issues Warnings If Possible
Problems Are Detected…
• Administrative Reporting…
▪ Generates Monthly Management Reports Showing the Number of Patients Treated At
Each Clinic, the Number of Patients Who Have Entered and Left the Care System, the
Drugs Prescribed and Their Costs, Etc….
Mentcare System Concerns…
• Privacy…
▪ Patient Information is Confidential and is NEVER Disclosed to Anyone
Except Authorized Medical Staff and the Patient…
• Safety…
▪ Should Warn Medical Staff About Potentially Suicidal or Dangerous
Patients…
▪ Must Be Available When Needed So That Safety is Not Compromised
By Not Being Able to Prescribe the Correct Medication to Patients…
Wilderness Weather Station…
• Government of a Country With Large Areas of Wilderness Decides to
Deploy Several Hundred Weather Stations in Remote Areas…
• Weather Stations Collect Data From a Set of Instruments That Measure
Weather Parameters Such As Wind Speed and Direction, Ground and Air
Temperatures, Barometric Pressure, and Rainfall Over a 24-Hour Period…
• Each of These Instruments is Controlled By a Software System That Takes
Parameter Readings Periodically and Manages the Data Collected From
the Instruments…
Wilderness Weather Station Environment…
Wilderness Weather Station Information System…
• Responsible For Collecting Weather Data, Carrying Out Some Initial Data
Processing, and Transmitting the Data to the Data Management System…
• Data Management and Archiving Systems Collect Data From All of the
Wilderness Weather Stations, Carries Out Data Processing and Analysis,
and Archives the Data…
• Station Maintenance Systems Communicate By Satellite With All
Wilderness Weather Stations to Monitor the Health of These Systems
and Provide Reports of Problems…
Wilderness Weather Station Other Functionality…
• Monitors Instruments, Power and Communication Hardware, and
Reports Faults…
• Manages System Power, Ensuring That Batteries Are Charged Whenever
the Environmental Conditions Permits, and That Generators Are Shut
Down in Potentially Damaging Weather Conditions…
• Support Dynamic Reconfiguration Where Parts of the Software Are
Replaced With New Versions and Where Backup Instruments Are
Switched Into the System in the Event Of System Failure…
iLearn…
• Digital Learning Environment…
• Framework in Which Both a Set of Applications and a Set of General-Purpose
and Specially Designed Tools For Learning Are Embedded Into the System…
• Tools Included in Each Version of the Environment Are Chosen By Teachers and
Learners to Suit Their Specific Needs…
• Tools Can Be General Applications Such as Spreadsheets, Learning
Management Applications Such as a Virtual Learning Environment (VLE) to
Manage Homework Submission and Assessments, Games and Simulations..
iLearn Service Oriented Systems…
• Service-Oriented System With All System Components Considered To Be
a Replaceable Service…
• This Allows the System to Be Updated Incrementally As New Services
Become Available…
• Makes It Possible to Rapidly Configure the System to Create Versions of
the Environment For Different Groups Such As Very Young Children Who
Cannot Read, Senior Students, Etc….
iLearn Services…
• Utility Services : Provide Basic Application-Independent Functionality,
and Which May Be Used By Other Services in the System…
• Application Services : Provide Specific Applications Such As Email,
Conferencing, Photo Sharing, and Access Specific Educational Content
Such As Scientific Films or Historical Resources…
• Configuration Services : Used to Adapt the Environment With a Specific
Set of Application Services…Define How Services Are Shared Between
Students, Teachers and Their Parents…
iLearn Service Integration…
• Integrated Services :
▪ Services Which Offer an API (Application Programming Interface)…
▪ Can Be Accessed By Other Services Through That API…
▪ Direct Service-to-Service Communication is Possible…
• Independent Services :
▪ Services Which Are Simply Accessed Through a Browser Interface…
▪ Operate Independently of Other Services…
▪ Information Can Only Be Shared With Other Services Through Explicit User
Actions Such As Copy and Paste…
▪ Re-Authentication May Be Required For Each Independent Service…
iLearn Architecture…
Key Points – Part 1…
• Software engineering is an engineering discipline that is concerned with
all aspects of software production.
• Essential software product attributes are maintainability, dependability
and security, efficiency and acceptability.
• The high-level activities of specification, development, validation and
evolution are part of all software processes.
• The fundamental notions of software engineering are universally
applicable to all types of system development
Key Points – Part 2…
• There are many different types of system and each requires appropriate
software engineering tools and techniques for their development.
• The fundamental ideas of software engineering are applicable to all types
of software system.
• Software engineers have responsibilities to the engineering profession
and society. They should not simply be concerned with technical issues.
• Professional societies publish codes of conduct which set out the
standards of behaviour expected of their members
Questions…