Software Engineering - Introduction - Fernando Brito e Abreu (fba@di.fct.unl.pt) Universidade Nova de Lisboa (http://www.unl.pt) QUASAR Research Group (http://ctp.di.fct.unl.pt/QUASAR) Summary � Motivation Motivation � � Course structure � Theory classes � Lab classes � Evaluation � Bibliography Software Engineering / Fernando Brito e Abreu 7-Jun-05 2 1
Summary � Motivation Motivation � Course structure � Course structure Course structure � � Theory classes � Theory classes Theory classes � � Lab classes � Lab classes Lab classes � � Evaluation � Evaluation Evaluation � � Bibliography � Bibliography Bibliography � � 7-Jun-05 Software Engineering / Fernando Brito e Abreu 3 Crisis? What Crisis? � After 5 decades the software community is still unable to consistently produce reliable software on time and within budget that completely satisfies customers Robert L. Glass: Software Runaways: Monumental Software Disasters , Prentice Hall PTR, 1998, ISBN: 0-13-673443-X Robert L. Glass : Computing Calamities - Lessons Learned From Products, Projects and Companies That Failed, Prentice Hall PTR, 1988, ISBN: 0-13-0828629 Software Engineering / Fernando Brito e Abreu 7-Jun-05 4 2
Are Professors to Blame? � “Real world” - Programming in the large � large teams, large overheads, deliverables often late, over budget � no assessment by peers ⇒ quality doesn’t pay! � Universities - Programming in the small � small teams, small overheads, schedules are met, budget is not a constraint � assessment by “graduate peers” ⇒ quality pays! � We have a paradigm mismatch! 7-Jun-05 Software Engineering / Fernando Brito e Abreu 5 Crisis? What Crisis? � $250 billion; 175,000 projects � 31% of projects are cancelled = $81 billion � 52.7% with 187% cost overrun = $59 billion � 16 % on time in 1994 � 34 % on time in 2003, a big improvement! Source : Standish Group International, 1994 and 2003 Surveys Software Engineering / Fernando Brito e Abreu 7-Jun-05 6 3
Crisis? What Crisis? � Software bugs cost the U.S. economy an estimated $59.5 billion annually, or about 0.6% of the gross domestic product (GDP) � Users shoulder more than half of the costs � Developers and vendors bear the remainder Source: The Economic Impacts of Inadequate Infrastructure for Software Testing , Technical Report, National Institute of Standards and Technology, USA, May 2002 http://www.nist.gov/director/prog-ofc/report02-3.pdf 7-Jun-05 Software Engineering / Fernando Brito e Abreu 7 Crisis? What Crisis? The user viewpoint … Delivered but never used with success (3200 KUSD) Paid but never delivered (1950 KUSD) 2% Used but extensively modified (1300 KUSD) Used with some modifications (198 KUSD) 3% Used without modifications (119 KUSD) 19% 47% 29% Software Engineering / Fernando Brito e Abreu 7-Jun-05 8 4
Failure Scenario � Ill-defined requirements � Quickly evolving requirements � No process defined � Unrealistic planning � Inappropriate tools � Lack of user involvement � Unable to detect problems in an initial phase � Turnover in development teams � Unqualified people � Lack of quantitative based control mechanisms � Reduced coverage of test battery 7-Jun-05 Software Engineering / Fernando Brito e Abreu 9 Success Scenario � Well defined responsibilities � Correct estimation of schedule and costs � More effective control of the development process � Strong motivation of team members � Strong involvement of users in req. specification � Defined / repetitively adopted development process � Less corrective and evolutive maintenance efforts � Increased reliability of developed products � Profit for all parties (win-win relationships): satisfied users, clients and technical team members Software Engineering / Fernando Brito e Abreu 7-Jun-05 10 5
Is Software Different? � Is software development so much distinct from that of other products? � Does that prevent us from adopting solutions from other more mature engineering fields? 7-Jun-05 Software Engineering / Fernando Brito e Abreu 11 Essential Differences in Software According to Fred Brooks [Brooks87] : � Complexity � Alterability � Invisibility Source: Brooks, Frederick P. Jr. : ”No Silver Bullet: Essence and Accidents of Software Engineering", IEEE Computer, 20(4), April 1987. Software Engineering / Fernando Brito e Abreu 7-Jun-05 12 6
Essential Differences in Software � Complexity � Lack of reuse � Many pieces with fuzzy interfaces � No laws of physics � Human mind complexity 7-Jun-05 Software Engineering / Fernando Brito e Abreu 13 Essential Differences in Software � Alterability � “Curse” of flexibility � User pressure on programmers � Support for hardware evolution Moore´s Law: semiconductor gate density will double every 18 months Software Engineering / Fernando Brito e Abreu 7-Jun-05 14 ( Gordon Moore, INTEL co-founder, 1965) 7
Essential Differences in Software � Invisibility � No single model with all details � Multi-level graph structures with fuzzy interconnection � Coupling produces undesirable side-effects 7-Jun-05 Software Engineering / Fernando Brito e Abreu 15 Software Engineering !!! Software Engineering / Fernando Brito e Abreu 7-Jun-05 16 8
Software Engineering is … “The application of a systematic , disciplined , quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software” Source: IEEE Standard Glossary of Software Engineering Terminology,” IEEE, std 610.12-1990, 1990. 7-Jun-05 Software Engineering / Fernando Brito e Abreu 17 Some pre-historical roots � 1958 : John Tukey, the world-renowned statistician, coined the term software � 1968 : The term software engineering was used in the title of a NATO conference held in Germany � "Software Engineering: Report on a conference by the NATO Science Committee," Peter Naur and Brian Randell (eds), January 1969 � 1972 : The IEEE Computer Society first published its Transactions on Software Engineering Software Engineering / Fernando Brito e Abreu 7-Jun-05 18 9
Some pre-historical roots � 1976 : Creation of the IEEE committee for developing software engineering standards � 1979 : Published the first software engineering standard (IEEE Std 730 for software quality assurance plans). This standard was influential in many following standards: � configuration management � software testing � software requirements � software design � software verification and validation. 7-Jun-05 Software Engineering / Fernando Brito e Abreu 19 FAQs about Software Engineering (SE) � Is SE a branch of Computer Science? � What is the ≠ between Science and Engineering? � Which other disciplines is SE related to? � If SE is Engineering, then it designates a profession? � How can I recognize a profession when I see one? Software Engineering / Fernando Brito e Abreu 7-Jun-05 20 10
Software Engineering is for Engineers! � Scientists extend our knowledge of the laws of nature � Just as electrical engineering is based upon the science of Physics, software engineering should be based, among others, upon Computer Science. � Engineers apply those laws of nature to build useful artifacts, under a number of constraints � An engineer must be equipped with the essential knowledge that supports the selection of the appropriate technology at the appropriate time in the appropriate circumstance 7-Jun-05 Software Engineering / Fernando Brito e Abreu 21 Other disciplines related to SE Engineering and Management disciplines Science disciplines � Computer science � Computer engineering � Mathematics � Systems engineering � Ergonomics � Project management � Biology � Quality management Software Engineering / Fernando Brito e Abreu 7-Jun-05 22 11
Software Engineering � SE does not aim producing laws (it is not a science) � A Law is a theory or group of theories that has been widely confirmed by intensive “in vivo” evidence (although being open to rebuttal) � However, several theories have been raised in SE � A theory is a conceptual framework that explains existing facts or predicts new facts (by explaining cause-effect relationships in the product development life-cycle) Q1: Which theories have been raised in SE? Q2: Are there cause-effect relationships in the software development life-cycle? 7-Jun-05 Software Engineering / Fernando Brito e Abreu 23 Some Software Engineering “theories” … � Object-oriented systems are more extensible than procedural systems � Software inspections are more efficient than testing � Cohesion should be maximized and coupling should be minimized in order to increment maintainability � Accurate effort estimates can be produced without a detailed design (e.g. Function Points analysis) � The complexity of a software system increases non linearly with its age (“Lehman’s “Law” of Sw Evolution) � Aspect-oriented languages improve modularity Software Engineering / Fernando Brito e Abreu 7-Jun-05 24 12
Recommend
More recommend