1 / 122

Introduction to software engineering technology

Software engineering technology and their application

Télécharger la présentation

Introduction to software engineering technology

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Adv. Software Engineering Technologies CSC695(LECTURE 1)

  2. Dr. Munam Ali Shah PhD: University of Bedfordshire MS: University of Surrey M.Sc: University of Peshawar Serving COMSATS since July 2004

  3. Contact Information email: mshah@comsats.edu.pk temporary office: Room G-37, Department of CS, Academic Block II, CIIT.

  4. How this course will be run • No ordinary student-Instructor based Teaching • You have to do most of the things by yourself • Reading • Presentations And most importantly at the end of the course !!!!! Your own Research Publication !!!!! This course will be run as “Research Output Oriented”

  5. My Role • I am here to help you produce/write one research article of your own • This course will be successful if at the end of course you all have at least submitted one research paper in a conference/journal • Do Not worry!! I will show you how • I will teach you how to drive a car, but at the end of the day you have to steer. I am not going to drive the car for you.

  6. And this is possible

  7. How to Write a Research Paper Tips and advises

  8. Research Writing needs some techniques

  9. Outlines What is the difference between search and research What is the difference between research and a product What to research Where to start Google Scholar Find, what is the contribution of the paper Read existing papers and keep reading

  10. What is the difference between search and research

  11. What is the difference between research and a product A Product A Research

  12. What to research You can start with the a research area which you have previously researched in. OR Start with exploring different fields simultaneously

  13. What to research

  14. Google Scholar

  15. Some examples

  16. Find the contribution in the research Paper

  17. Some Research Topics • Architecting Systems of Systems, IoT systems, CPSs, software ecosystems, self-adaptive systems, or autonomous systems • IoT Services and Applications • Cloud Computing Platforms, Applications and Management • Architecture frameworks and architecture description languages for smart and autonomous systems • Big Data Analytics

  18. For more details and help in topic • https://www.journals.elsevier.com/journal-of-systems-and-software/call-for-papers/special-issue-on-architecting-autonomous-and-smart-systems • http://sn.committees.comsoc.org/call-for-papers/ieee-internet-of-things-journal-special-issue-on-emerging-social-internet-of-things-recent-advances-and-applications/

  19. Publication Venue

  20. Finally

  21. Are you ready !!!! Lets Begin

  22. Organization of this Lecture • What is Software Engineering? • Programs vs. Software Products • Evolution of Software Engineering • Notable Changes In Software Development Practices • Introduction to Life Cycle Models • Summary

  23. What is Software Engineering? • Engineering approach to develop software. • Building Construction Analogy. • Systematic collection of past experience: • Techniques, • Methodologies, • Guidelines.

  24. Engineering Practice • Heavy use of past experience: • Past experience is systematically arranged. • Theoretical basis and quantitative techniques provided. • Many are just thumb rules. • Tradeoff between alternatives. • Pragmatic approach to cost-effectiveness.

  25. Technology Development Pattern Engineering Esoteric Past Experience Technology Craft Systematic Use of Past Experience and Scientific Basis Unorganized Use of Past Experience Art Time

  26. Evolution of an Art into an Engineering Discipline • The early programmers used anexploratory (also called build and fix) style. • In the build and fix (exploratory) style, normally a `dirty' program is quickly developed. • The different imperfections that are subsequently noticed are fixed.

  27. What is Wrong with the Exploratory Style? • Can successfully be used for very small programs only. Software Engineering Exploratory Effort, time, cost Machine Program Size

  28. What is Wrong with the Exploratory Style? Cont… • Besides the exponential growth of effort, cost, and time with problem size: • Exploratory style usually results in unmaintainable code. • It becomes very difficult to use the exploratory style in a team development environment.

  29. What is Wrong with the Exploratory Style? Cont… • Why does the effort required to develop a product grow exponentially with product size? • Why does the approach completely breaks down when the product size becomes large?

  30. An Interpretation Based on Human Cognition Mechanism • Human memory can be thought to be made up of two distinct parts [Miller 56]: • Short term memory and • Long term memory. • If you are asked the question: ``If it is 10AM now, how many hours are remaining today?" • First, 10AM would be stored in the short-term memory. • Next, a day is 24 hours long would be fetched from the long term memory into short term memory. • Finally, the mental manipulation unit would compute the difference (24-10).

  31. Human Cognition Mechanism Short Term Memory Processing Center Long Term Memory Brain

  32. Short Term Memory • An item stored in the short term memory can get lost: • Either due to decay with time or • Displacement by newer information. • This restricts the time for which an item is stored in short term memory to few tens of seconds. • However, an item can be retained longer in the short term memory by recycling.

  33. What is an Item? • An item is any set of related information. • A character such as `a' or a digit such as `5' can be items. • A word, a sentence, a story, or even a picture can each be a single item. • Each item normally occupies one place in memory. • When you are able to relate several different items together (chunking): • The information that should normally occupy several places can be stored using only one place in the memory.

  34. Chunking • If you are given the binary number 110010101001 • It may prove very hard for you to understand and remember. • But, the octal form of 6251 (i.e. (110)(010)(101)(001)) would be easier. • You have managed to create chunks of three items each.

  35. Evidence of Short Term Memory • Short term memory is evident: • In many of our day-to-day experiences. • Suppose, you look up a number from the telephone directory and start dialling it. • If you find the number to be busy, you can dial the number again after a few seconds almost effortlessly without having to look up the directory. • But, after several days: • You may not remember the number at all, and would need to consult the directory again.

  36. The Magical Number 7 • If a person deals with seven or less number items: • These would be easily be accommodated in the short term memory. • So, he can easily understand it. • As the number of new information increases beyond seven, • It becomes exceedingly difficult to understand it.

  37. Example 917-4863

  38. Can you remember

  39. Yes, it was 917-4863

  40. Try this 219546923

  41. It becomes difficult to remember • Same is the case with program and program variables.

  42. Implication in Program Development • A small program having just a few variables: • Is within the easy grasp of an individual. • As the number of independent variables in the program increases: • It quickly exceeds the grasping power of an individual: • Requires an unduly large effort to master the problem.

  43. Implication in Program Development • Instead of a human, if a machine could be writing (generating) a program, • The slope of the curve would be linear. • But, why does the effort-size curve become almost linear when software engineering principles are deployed? • Software engineering principles extensively use techniques specifically to overcome the human cognitive limitations.

  44. Principles Deployed by Software Engineering to Overcome Human Cognitive Limitations • Mainly two important principles are deployed: • Abstraction • Decomposition

  45. Abstraction • Simplify a problem by omitting unnecessary details. • Focus attention on only one aspect of the problem and ignore irrelevant details. • Suppose you are asked to develop an overall understanding of some country. • No one in his right mind would meet all the citizens of the country, visit every house, and examine every tree of the country, etc. • You would possibly refer to various types of maps for that country. • A map, in fact, is an abstract representation of a country.

  46. Decomposition • Decompose a problem into many small independent parts. • The small parts are then taken up one by one and solved separately. • The idea is that each small part would be easy to grasp and can be easily solved. • The full problem is solved when all the parts are solved.

  47. Decomposition • A popular way to demonstrate the decomposition principle: • Try to break a bunch of sticks tied together versus breaking them individually. • Example use of decomposition principle: • You understand a book better when the contents are organized into independent chapters • Compared to when everything is mixed up.

  48. Why Study Software Engineering? (1) • To acquire skills to develop large programs. • Exponential growth in complexity and difficulty level with size. • The ad hoc approach breaks down when size of software increases.

  49. Why Study Software Engineering? (2) • Ability to solve complex programming problems: • How to break large projects into smaller and manageable parts? • How to use abstraction? • Also learn techniques of: • Specification, design, user interface development,testing, project management, etc.

  50. Why Study Software Engineering? (3) • To acquire skills to be a better programmer: • Higher Productivity • Better Quality Programs

More Related