Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Unit 1-overview of software engineering

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 67 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Publicité

Plus récents (20)

Publicité

Unit 1-overview of software engineering

  1. 1. “The beginning is the most important part of the work.” — Plato NHCE-MCA Software Engineering Concepts 1
  2. 2. UnitUnit--11 OverviewOverview NHCE-MCA Software Engineering Concepts 2
  3. 3. Unit Content 1. FAQs about software engineering 2 Professional and ethical responsibility2. Professional and ethical responsibility 3. Socio-technical Systems NHCE-MCA Software Engineering Concepts 3
  4. 4. 1 FAQs about software engineering1. FAQs about software engineering NHCE-MCA Software Engineering Concepts 4
  5. 5. FAQs about software engineering What is software? What is software engineering?What is software engineering? What is the difference between software engineering and computer science? What is the difference between software engineering and system engineering? What is a software process?What is a software process? What is a software process model? NHCE-MCA Software Engineering Concepts 5
  6. 6. FAQs about software engineering What are the costs of software engineering? Wh t ft i i th d ?What are software engineering methods? What is CASE (Computer-Aided Software Engineering) What are the attributes of good software? What are the key challenges facing softwareWhat are the key challenges facing software engineering? NHCE-MCA Software Engineering Concepts 6
  7. 7. What is software? Software is a (computing) written programs, procedures or rules and associated documentation pertaining to the operation of a computer system and that are stored in read/ write memory. NHCE-MCA Software Engineering Concepts 7
  8. 8. What is software engineering? The IEEE Computer Society defines software engineering as The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of ft th t i th li ti f i i t ftsoftware; that is, the application of engineering to software. NHCE-MCA Software Engineering Concepts 8
  9. 9. Difference of Software engineering and Computer science SoftwareSoftware engineeringengineering is concerned with the practicalitiespracticalities of developing and delivering useful software. ComputerComputer sciencescience is concerned with theorytheory and fundamentalsfundamentals;;fundamentalsfundamentals;; NHCE-MCA Software Engineering Concepts 9
  10. 10. Difference of Software engineering and System engineering SoftwareSoftware engineeringengineering is part of this process concerned with developing the software infrastructure controlwith developing the software infrastructure, control, applications and databases in the system. SystemSystem engineeringengineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. NHCE-MCA Software Engineering Concepts 10
  11. 11. What is a software process? A set of activities whose goal is the development or evolution of software. Generic activities in all software processes are: •• SpecificationSpecification - what the system should do and its•• SpecificationSpecification - what the system should do and its development constraints •• DevelopmentDevelopment - production of the software system •• ValidationValidation -- checking that the software is what the customer wants • Evolution changing the software in response to NHCE-MCA Software Engineering Concepts 11 • Evolution - changing the software in response to changing demands.
  12. 12. What is a software process model? A simplified representation of a software process, presented from a specific perspective. Examples of process perspectives are • Workflow perspective - sequence of activities; • Data-flow perspective - information flow; • Role/action perspective - who does what. Generic process models • Waterfall; • Iterative development; • Component-based software engineering. NHCE-MCA Software Engineering Concepts 12 p g g
  13. 13. What are the costs of software engineering? Costs vary depending on the type of system being developed and the requirements of system attributesdeveloped and the requirements of system attributes such as performanceperformance and systemsystem reliabilityreliability. Distribution of costs depends on the developmentdevelopment modelmodel that is used. For custom software, evolutionevolution costscosts often exceed developmentdevelopment costscostsdevelopmentdevelopment costscosts.. OtherOther costcost cancan bebe operationaloperational costcost ,maintenance,maintenance cost,cost, NHCE-MCA Software Engineering Concepts 13 tangibletangible cost,cost, intangibleintangible costcost
  14. 14. What are software engineering methods? St t d h t ft d l t hi h i l d tStructured approaches to software development which include system models, notations, rules, design advice and process guidance. M d l d i tiModel descriptions • Descriptions of graphical models which should be produced; Rules • Constraints applied to system models; Recommendations • Advice on good design practice; Process guidance • What activities to follow. NHCE-MCA Software Engineering Concepts 14
  15. 15. CASE (Computer-Aided Software Engineering) Software systems that are intended to provide automated support for software process activities. CASE systems are often used for method support. UpperUpper--CASECASE • Tools to support the early process activities of requirementsrequirements and design;design; LowerLower--CASECASE • Tools to support later activities such as programming,programming, debuggingdebugging and testing.testing. NHCE-MCA Software Engineering Concepts 15
  16. 16. What are the attributes of good software? M i t i bilitMaintainability • Software must evolve to meet changing needs; Dependability • Software must be trustworthy; Efficiency • Software should not make wasteful use of system resources; Acceptability • Software must accepted by the users for which it was designed. This means it must be understandable, usable and compatible with other systems. NHCE-MCA Software Engineering Concepts 16
  17. 17. What are the key challenges facing software engineering? Heterogeneity, delivery and trust. Heterogeneity • Developing techniques for building software that can cope with heterogeneous platforms and execution environments; Delivery • Developing techniques that lead to faster delivery of software; TrustTrust • Developing techniques that demonstrate that software can be trusted by its users NHCE-MCA Software Engineering Concepts 17 trusted by its users.
  18. 18. 2 Professional2. Professional and Ethical responsibility NHCE-MCA Software Engineering Concepts 18
  19. 19. Professional and ethical responsibility Software engineering involves wider responsibilities than simply the application ofresponsibilities than simply the application of technical skills. Software engineers must behave in an honesthonest and ethicallethically responsible way if they are to beand ethicallethically responsible way if they are to be respected as professionals. Ethical behaviour is more than simply upholding the law NHCE-MCA Software Engineering Concepts 19 the law.
  20. 20. Issues of Professional Responsibility Confidentiality • Engineers should normally respect the confidentialityg y p y of their employers or clients irrespective of whether or not a formal confidentiality agreement has beenor not a formal confidentiality agreement has been signed. Competence • Engineers should not misrepresent their level ofEngineers should not misrepresent their level of competence. They should not knowingly accept work which is out with their competence NHCE-MCA Software Engineering Concepts 20 which is out with their competence.
  21. 21. Issues of professional responsibility Intellectual property rights • Engineers should be aware of local laws governing the use ofEngineers 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 ofp p y employers and clients is protected. Computer misuseComputer misuse • Software engineers should not use their technical skills to misuse other people’s computers Computer misuse rangesmisuse other people s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses). NHCE-MCA Software Engineering Concepts 21 y) y ( )
  22. 22. ACM/IEEE Code of Ethics The professional societies in the US have cooperated to produce a code of ethical practiceproduce a code of ethical practice. The Code contains EightEight PrinciplesPrinciples 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. NHCE-MCA Software Engineering Concepts 22
  23. 23. Code of ethics - principles software engineers shall adhere to the following Eight Principles:software engineers shall adhere to the following Eight Principles: Public • Software engineers shall act consistently with the publicpublic interestinterest.. Client And Employer • Software engineers shall act in a manner that is in the best interestsinterests ofof theirtheir clientclient andand employeremployer consistent with the public interest. Product • Software engineers shall ensure that their products and related NHCE-MCA Software Engineering Concepts 23 g p modifications meet the highesthighest professionalprofessional standardsstandards possible.
  24. 24. Code of ethics - principles Judgment • Software engineers shall maintain integrityintegrity and independenceindependence• Software engineers shall maintain integrityintegrity and independenceindependence in their professional judgment. M tManagement • Software engineering managersmanagers and leadersleaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. Profession • Software engineers shall advance the integrityintegrity and reputationreputation of NHCE-MCA Software Engineering Concepts 24 the profession consistent with the public interest.
  25. 25. Code of ethics - principles Colleagues • Software engineers shall be fairfair to and supportivesupportive of• Software engineers shall be fairfair to and supportivesupportive of their colleagues. Self • Software engineers shall participate in lifelonglifelongSoftware engineers shall participate in lifelonglifelong learninglearning regardingregarding thethe practicepractice of their profession d h ll t thi l h t th tiand shall promote an ethical approach to the practice of the profession. NHCE-MCA Software Engineering Concepts 25
  26. 26. 3 Socio technical Systems3. Socio-technical Systems NHCE-MCA Software Engineering Concepts 26
  27. 27. Topics covered To explain what a sociosocio--technicaltechnical systemsystem is and the distinction between this and a computer-based systembetween this and a computer based system To introduce the concept of emergentemergent systemsystem propertiesproperties such as reliability and securityreliability and security To explain systemsystem engineeringengineering and system procurement processes To explain why the organisationalorganisational contextcontext ofof aa systemsystem affects itsTo explain why the organisationalorganisational contextcontext ofof aa systemsystem affects its design and use To discuss legacylegacy systemssystems and why these are critical to manyTo discuss legacylegacy systemssystems and why these are critical to many businesses NHCE-MCA Software Engineering Concepts 27
  28. 28. What is a system? A purposeful collection of interinter--relatedrelated components working together to achieveachieve some common objectiveworking together to achieveachieve some common objective. A system may include software, mechanical, electrical and electronic hardware and be operated by people. NHCE-MCA Software Engineering Concepts 28
  29. 29. Components of ( an Information)System NHCE-MCA Software Engineering Concepts 29
  30. 30. System categories Technical computer-based systems • Systems that include hardware and software but where the• Systems that include hardware and software but where the operatorsoperators and operationaloperational processesprocesses are not normally considered to be part of the system The system is not self-considered to be part of the system. The system is not self aware. Socio technical systemsSocio-technical systems • Systems that include technical systems but also operationaloperational d ll h d i t t ith th t h i lt h i lprocessesprocesses and peoplepeople who use and interact with the technicaltechnical systemsystem.. Socio-technical systems are governed by organisational policies and rules NHCE-MCA Software Engineering Concepts 30 organisational policies and rules.
  31. 31. Socio-technical system characteristics EmergentEmergent propertiesproperties • Properties of the systemsystem ofof aa wholewhole that depend on the system components and their relationships. NonNon--deterministicdeterministic • They do not always produce the same output when presented with the same input because the systems' behaviour is partially dependent on human operators. ComplexComplex relationshipsrelationships withwith organisationalorganisational objectivesobjectives • The extent to which the system supports organisational objectives does not just depend on the system itself. NHCE-MCA Software Engineering Concepts 31
  32. 32. Emergent properties Properties of the systemsystem asas aa wholewhole rather than properties that can be derived from the properties ofproperties that can be derived from the properties of components of a system Emergent properties are a consequence of the relationships between system components They can therefore only be assessed and measured once the components have been integrated into a systemp g y NHCE-MCA Software Engineering Concepts 32
  33. 33. Examples of emergent properties Property Description V l Th l f t (th t t l i d) i d di h thVolume The volume of a system (the total space occupied) varies depending on how the component assemblies are arranged and connected. Reliability System reliability depends on component reliability but unexpected interactions can cause new types of failure and therefore affect the reliability of the system. Security The security of the system (its ability to resist attack) is a complex property that cannot be easily measured. Attacks may be devised that were not anticipated byy y p y the system designers and so may defeat built-in safeguards. Repairability This property reflects how easy it is to fix a problem with the system once it has been discovered It depends on being able to diagnose the problem access thebeen discovered. It depends on being able to diagnose the problem, access the components that are faulty and modify or replace these components. Usability This property reflects how easy it is to use the system. It depends on the NHCE-MCA Software Engineering Concepts 33 technical system components, its operators and its operating environment.
  34. 34. Types of emergent property FunctionalFunctional propertiesproperties • These appear when all the parts of a systemsystem workwork togethertogether to achieve some objective. NonNon--functionalfunctional emergentemergent propertiespropertiesgg p pp p • These relate to the behaviourbehaviour ofof thethe systemsystem in its operational environment. They are often critical for computer-basedy systems as failure to achieve some minimal defined level in these properties may make the system unusable. • Examples are reliability, performance, safety, and security. NHCE-MCA Software Engineering Concepts 34
  35. 35. Systems engineering Specifying, designing, implementing, validating, deploying and maintaining socio-technical systems. Concerned with the services provided by the system, constraints on its construction and operation and the ways in which it is used.ways in which it is used. NHCE-MCA Software Engineering Concepts 35
  36. 36. The system engineering process Software may have to compensate for hardware problems.p Inevitably involves engineers from different disciplines who must work togetherwho must work together • Much scope for misunderstanding here. • Different disciplines use a different vocabulary and much negotiation is required. NHCE-MCA Software Engineering Concepts 36
  37. 37. The systems engineering process Requirements definition System decommissioning System design definition System evolution decommissioning Sub-system design System evolution System Sub-system development System installation System integration NHCE-MCA Software Engineering Concepts 37
  38. 38. Inter-disciplinary involvement Electronic engineering Mechanical engineering Software engineering ATC systems engineering User interface engineering Structural engineering ATC systems engineering User interface design Structural engineering Electrical engineering Architecture Civil engineering engineeringengineering NHCE-MCA Software Engineering Concepts 38
  39. 39. 1.System requirements definition Three types of requirement defined at this stage • Abstract functional requirements. Systemq y functions are defined in an abstract way. System properties Non functional requirements for• System properties. Non-functional requirements for the system in general are defined. • Undesirable characteristics. Unacceptable system behaviour is specified. Should also define overall organisational objectives for the system NHCE-MCA Software Engineering Concepts 39 the system.
  40. 40. System requirements problems Complex systems are usually developed to address wicked problems • Problems that are not fully understood; Must anticipate hardware/communicationsMust anticipate hardware/communications developments over the lifetime of the system. Hard to define non-functional requirements (particularly) without knowing the component structure of the system. NHCE-MCA Software Engineering Concepts 40
  41. 41. 2.System design process Partition Define sub-systemPartition requirements Define sub-system interfaces Identify sub-systems Specify sub-system functionality Assign requirements to sub-systems NHCE-MCA Software Engineering Concepts 41
  42. 42. System design process Partition requirements • Organise requirements into related groupsOrganise requirements into related groups. Identify sub-systems • Identify a set of sub-systems which collectively can meet the system requirements. Assign requirements to sub-systems Specify sub system functionalitySpecify sub-system functionality. Define sub-system interfaces NHCE-MCA Software Engineering Concepts 42 • Critical activity for parallel sub-system development.
  43. 43. System design problems Requirements partitioning to hardware, software and human components may involve a lot ofsoftware and human components may involve a lot of negotiation. Difficult design problems are often assumed to be readily solved using software. Hardware platforms may be inappropriate for software requirements so softwaresoftware mustmust compensatecompensateq pp forfor thisthis.. NHCE-MCA Software Engineering Concepts 43
  44. 44. Requirements and design Requirements engineering and system design are inextricably linked. Constraints posed by the system’s environment and other systems limit design choices so the actual design toother systems limit design choices so the actual design to be used may be a requirement. I iti l d i b t t t thInitial design may be necessary to structure the requirements. NHCE-MCA Software Engineering Concepts 44
  45. 45. Spiral model of requirements/design NHCE-MCA Software Engineering Concepts 45
  46. 46. System modelling An architectural model presents an abstractabstract viewview of the sub-systems making up a systemy g p y May include major informationinformation flowsflows between sub- systemssystems Usually presented as a blockblock diagramdiagram May identify different types of functionalfunctional componentcomponent in the model NHCE-MCA Software Engineering Concepts 46
  47. 47. Alarm system Movement sensors Door sensorssensors sensors Alarm controller Voice synthesiser Siren Telephone caller External control centre synthesiser caller NHCE-MCA Software Engineering Concepts 47
  48. 48. Sub-system description Sub-system Description Movement sensors Detects movement in the rooms monitored by the system Door sensors Detects door opening in the external doors of the building Alarm controller Controls the operation of the systemAlarm controller Controls the operation of the system Siren Emits an audible warning when an intruder is suspected Voice synthesizer Synthesizes a voice message giving the location of the suspected intruder Telephone caller Makes external calls to notify security, the police, etc. NHCE-MCA Software Engineering Concepts 48
  49. 49. ATC system architecture NHCE-MCA Software Engineering Concepts 49
  50. 50. 3.Sub-system development Typically parallel projects developing the hardware, software and communications.hardware, software and communications. May involve some COTS (Commercial Off-the-Shelf) systems procurement.procurement. Lack of communication across implementation teams.teams. Bureaucratic and slow mechanism for proposing system changes means that the development scheduleproposing system changes means that the development schedule may be extended because of the need for rework. NHCE-MCA Software Engineering Concepts 50
  51. 51. 4.System integration The process of putting hardware,hardware, softwasoftware and peoplepeople together to make a systempeoplepeople together to make a system. Should be tackled incrementallyincrementally so that sub-systems are integrated one at a time. InterfaceInterface problemsproblems between sub-systems are usually found at this stage. May be problems with uncoordinated deliveriesMay be problems with uncoordinated deliveries of system components. NHCE-MCA Software Engineering Concepts 51
  52. 52. 5.System installation After completion, the system has to be installed in the t ’ i tcustomer’s environment • Environmental assumptions may be incorrect; • May be human resistance to the introduction of a new system; • System may have to coexist with alternative systems for some time; • May be physical installation problems (e.g. cabling problems); NHCE-MCA Software Engineering Concepts 52 • Operator training has to be identified.
  53. 53. 6.System evolution Large systems have a long lifetime. They must evolve to meet changing requirements. Evolution is inherently costlyy y • Changes must be analysed from a technical and business perspective;perspective; • Sub-systems interact so unanticipated problems can arise; • There is rarely a rationale for original design decisions;• There is rarely a rationale for original design decisions; • System structure is corrupted as changes are made to it. NHCE-MCA Software Engineering Concepts 53
  54. 54. 7.System decommissioning Taking the system out of service after its useful lifetime. May require removal of materials (e g dangerousMay require removal of materials (e.g. dangerous chemicals) which pollute the environment • Should be planned for in the system design by encapsulation. May require data to be restructured and converted to be used in some other system.y NHCE-MCA Software Engineering Concepts 54
  55. 55. Organizations/people/systemsOrganizations/people/systems Socio-technical systems are organisational systems intended to help deliver some organisationalorganisational or businessbusiness goalgoal. If you do not understand the organisational environment where a system is used, the system is less likely to meetwhere a system is used, the system is less likely to meet the real needs of the business and its users. NHCE-MCA Software Engineering Concepts 55
  56. 56. Human and organisational factors Process changes • Does the system require changes to the worky q g processes in the environment? Job changes • Does the system de-skill the users in an environment or cause them to change the way they work? O i ti l hOrganisational changes • Does the system change the political power structure in an organisation?an organisation? NHCE-MCA Software Engineering Concepts 56
  57. 57. Organisational processes The processes of systems engineering overlap and interact with organisational procurementprocurement processesprocesses.. Operational processes are the processes involved in using the system for its intended purpose For newusing the system for its intended purpose. For new systems, these have to be defined as part of the system d idesign. Operational processes should be designed to be flexible and should notnot forceforce operationsoperations toto bebe donedone in a particular way. It is important that human operators can NHCE-MCA Software Engineering Concepts 57 p y p p use their initiative if problems arise.
  58. 58. Procurement/development processes NHCE-MCA Software Engineering Concepts 58
  59. 59. System procurement Acquiring a system for an organization to meet some need Some system specification and architectural design is usuallySome system specification and architectural design is usually necessary before procurement • You need a specification to let a contract for systemYou need a specification to let a contract for system development • The specification may allow you to buy a commercial off-the-The specification may allow you to buy a commercial off the shelf (COTS) system. Almost always cheaper than developing a system from scratch Large complex systems usually consist of a mix of off the shelf and specially designed components. The procurement processes for NHCE-MCA Software Engineering Concepts 59 these different types of component are usually different.
  60. 60. The system procurement process ChooseIssue requestChooseAdapt Off-the-shelf system available Choose supplier Issue request for bids Choose system Adapt requirements Survey market forSurvey market for existing systems Let contract forNegotiateSelectIssue request Let contract for development Negotiate contract Select tender Issue request to tender Custom system required NHCE-MCA Software Engineering Concepts 60
  61. 61. Procurement issues Requirements may have to be modified to match the capabilities of off-the-shelf components. The requirements specification may be part of theq p y p contract for the development of the system. Th i ll t t ti ti i d tThere is usually a contract negotiation period to agree changes after the contractor to build a system has been selected. NHCE-MCA Software Engineering Concepts 61
  62. 62. Contractors and sub-contractors The procurement of large hardware/software systems is usually based around some principal contractor. Sub-contracts are issued to other suppliers to supplypp pp y parts of the system. C t li ith th i i l t t d dCustomer liases with the principal contractor and does not deal directly with sub-contractors. NHCE-MCA Software Engineering Concepts 62
  63. 63. Contractor/Sub-contractor model NHCE-MCA Software Engineering Concepts 63
  64. 64. Legacy systemsLegacy systems Socio-technical systems that have been developed using old or obsolete technology. Crucial to the operation of a business and it is often too risky to discard these systems • Bank customer accounting system; • Aircraft maintenance system. Legacy systems constrain new business processes and consume a high proportion of company budgets. NHCE-MCA Software Engineering Concepts 64
  65. 65. Legacy system components Hardware - may be obsolete mainframe hardware. Support software - may rely on support software from suppliers who are no longer in business. Application software - may be written in obsolete programming languages. Application data - often incomplete and inconsistent. Business processes - may be constrained by software structure and functionality. Business policies and rules - may be implicit and embedded in the system software. NHCE-MCA Software Engineering Concepts 65
  66. 66. Chapter Review Questions 1. What are the difference between generic software product development and custom software development? 2 Describe important attribute which all software product should have2. Describe important attribute which all software product should have. 3. What is the difference between a software process model and a software process? 4.4. SuggestSuggest in which way a Software process model might be helpful in identifying possible process improvement. 5 Di th i i i ft i i f i l thi /5. Discuss the various issues in software engineering professional ethics/ responsibility. 6. Explain ACM/IEEE code of ethics and suggest an appropriate example that6 p a C / code o et cs a d suggest a app op ate e a p e t at illustrates that clause. 7. Discuss in detail systemsystem engineeringengineering processprocess with example. NHCE-MCA Software Engineering Concepts 66 8. Explain system procurement process. 9. Explain why legacy systems may be critical to the operation of a business.
  67. 67. First Class Test Questions 1. Explain ACM/IEEE code of ethics and suggest an appropriate example that illustrates that clause. 2. Discuss in detail system engineering process with example. 3. Explain system procurement process. 4. Explain why legacy systems may be critical to the operation of a business. 5 Suggest in which way a Software process model might be5. Suggest in which way a Software process model might be helpful in identifying possible process improvement. Test Date: 26-02-2010 Time: 3.00-3.45pm NHCE-MCA Software Engineering Concepts 67 e 3 00 3 5p Note: Out of five questions any three questions will be asked to write the test but students should study all the questions

×