1 / 23

INTRODUCTION TO SOFTWARE ENGINEERING

INTRODUCTION TO SOFTWARE ENGINEERING. Today, Computer Software is the single most important Technology on the world stage, and Software is also a prime example of the “ LAW OF UNINTENDED CONSEQUENCES ”.

maik
Télécharger la présentation

INTRODUCTION TO SOFTWARE ENGINEERING

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. INTRODUCTION TO SOFTWARE ENGINEERING • Today, Computer Software is the single most important Technology on the world stage, and Software is also a prime example of the “LAW OF UNINTENDED CONSEQUENCES”. • Law of Unintended Consequences: The profound and unexpected affects of the invention of one technology on other seemingly unrelated technologies, on commercial enterprises, on people and even on culture as a whole. • No one could have foreseen that over the past 50 years, Software become embedded in Systems of all kinds, (Banking, Medical, Transport, Education, entertainment and so on. And if we believe in the Law of Unintended Consequences, there are many more effects that we can not yet predict!

  2. INTRODUCTION TO SOFTWARE ENGINEERING WHAT IS COMPUTER SOFTWARE? • Software is the product that Software Professionals build and then maintain over a long term. - Software encompasses programs that execute within a Computer of any size and any architecture, - Compute Program executes and documents in both hardcopy and virtual forms that encompasses all forms of electronic media. • The intent of Software Engineering is to provide a “Framework” for building higher Quality of Software. • The Framework encompasses a Process, a set of Methods, and an array of Tools that we call Software Engineering.

  3. INTRODUCTION TO SOFTWARE ENGINEERING WHY SOFTWARE IS IMPORTANT? Software affects nearly every aspect of our lives and has become pervasive in our commerce, our culture and our everyday activities. As Software importance has grown, the Software community has continually attempted to develop Software Technologies that will make it easier, faster and less expensive to build and maintain high quality Computer Programs. • Some Software Technologies are targeted at a Specific Application Domain (e.g. Web Site design and implementation). • Some technologies focus on a Technology Domain (e.g. Object-oriented Systems or Aspect-oriented Programming) • Some technologies are Broad-based Software Applications domain ( e.g. Operating Systems such as Linux). Software community has yet to develop a Software Technology that does it all, and the likelihood of a all-rounded Technology arising in the future is small.

  4. INTRODUCTION TO SOFTWARE ENGINEERING THE EVOLVING ROLE OF SOFTWARE • The role of Software has undergone significant change over a span of 50 years. • Dramatic improvements in Hardware performance, profound changes in Computing Architectures, vast increases in Memory and Storage capacity and a wide variety of electronic Input and Output devices have all precipitated more sophisticated and complex Computer Software. • Sophistication and complexity can produce dazzling results when a System succeeds, but they can also pose huge problems for those who must build complex Systems. • Today Software takes on a dual role. It is both a Product and a Vehicle for Delivering a Product. • As a Product, it delivers the computing potential embodied by Computer Hardware or, more broadly , by a Network of Computers that arte accessible by local Hardware. • As a vehicle for delivering the a Product, Software acts as the basis for the control of the Computer Operating Systems), the Communication of information (Networks) , and the creation and Control of other programs (Software Tools and Environments). • Software Delivers the most important Product of our time . “Information”.

  5. INTRODUCTION TO SOFTWARE ENGINEERING THE EVOLVING ROLE OF SOFTWARE • Today, a huge Software industry has become a dominant factor in the economies of the industrialized world. • The earlier era of “Lone Programmer” has been replaced by teams of Software Specialists, each focusing on one part of the Technology required to deliver a Complex Application. • The questions that were asked during the Lone Programmer era are still asked when modern Computer-based Systems are built: • Why does it take so long to get software finished? • Why are development costs so high? • Why can’t we find all errors before we give the software to our customers? • Why do we spend so much time and effort maintaining existing programs? • Why do we still have difficulties in measuring progress as software is being developed and maintained? • These questions and many others demonstrate the Software Industry’s concern and the manner in which it is developed. • This concern has lead to the adoption of Software Engineering practice.

  6. INTRODUCTION TO SOFTWARE ENGINEERING SOFTWARE CHARACTERISTICS • To gain an understanding of Software and Software Engineering , it is important to examine the Characteristics of Software that makes it different from other things than human beings build. • Software is a Logical element rather than a Physical System element. Therefore, Software has Characteristics that are considerable different than those of Hardware. 1. Software is Developed or Engineered; It is not manufactured in the lassical sense 2. Software Does not “Wear Out”, but it does Deteriorate 3. Most So0ftware are still Custom Built, despite the fact that industry is moving toward component-based construction.

  7. INTRODUCTION TO SOFTWARE ENGINEERING SOFTWARE CHARACTERISTICS 1. Software is Developed or Engineered. It is not manufactured in the classical sense. Although some similarities exist between Software Development and Hardware Manufacturing, yet the two activities are fundamentally different. 2. Software does not Wear Out but deteriorates due to changes. - Software is not susceptible to the environment maladies that cause Hardware to wear out. - Software undergoes changes during its life. As changes are made, it is likely that errors will be introduced; causing the failure and thus increased failure rate indicates the deterioration of software as a result of changes. - Another aspect of Software and Hardware differences caused by Wear-out is that:- When a Hardware component wears out, It is replaced by a spare part. There are no Software spare parts. - Every Software failure indicates an error in Design or Program Coding. Therefore , Software Maintenance involves considerably more complexity than Hardware Maintenance.

  8. INTRODUCTION TO SOFTWARE ENGINEERING SOFTWARE CHARACTERISTICS 3. Most Software continues to be Custom built. • Although the industry is moving towards Component-based construction, most software continues to be custom built. • In Hardware industry the components parts are designed to be reusable and can be ordered “Off the shelf”. These are called Standard Design Components. Component use is a natural part of the Hardware engineering process. • However, in the Software world, Software Components building has only begun in a broad scale. • A Software Component should be designed and implemented so that it can be “Reused” in many different Programs. • ”Reusable Objects” or ‘’Reusable Software Components’’ enable the Software Engineers to create new Applications from reusable parts. • Reusable components are kept in a Reusable Components Library. • Modern Reusable Components encapsulates both data and the Processing logic that is applied data, enabling the Software Engineers to create new Applications from Reusable Software components. • For example : The User Interfaces are built with reusable components that enable the creation of GUI (Graphic Windows, Pull-down Menu and other interactive mechanisms)

  9. INTRODUCTION TO SOFTWARE ENGINEERING SEVEN BROAD SOFTWARE CATAGORIES • System Software • Application Software • Engineering/Scientific Software • Embedded Software • Product-line Software • Web Application (WebApps) • Artificial Intelligence Software (AI Software) • Each Software Category presents continuing challenges for Software Engineers. It is undoubtedly that each challenge obey the ‘’Law of Unintended Consequences’’ and have effects that can not be predicted today. • However Software Engineers can prepare a Process that is agile and adoptable enough to deal with any dramatic changes in Technology and Business Rules that are sure to come in the next decade.

  10. INTRODUCTION TO SOFTWARE ENGINEERING SEVEN BROAD SOFTWARE CATAGORIES • System Software System Software is a collection of Programs written to service other Programs.( e.g Compilers, Editors, File Management, Utilities, etc) These Software are process complex but determinate Information Structure. Other System Software, like Operating Systems, Drivers, Networking Software, Telecommunications processors,) These Software processes largely intermediate Data. Characteristics of System Software System Software is characterized by: - Heavy interaction with Computer Hardware, - Heavy usage by multiple Users, - Concurrent Operation that regain scheduling, - Resource Sharing and Sophisticated Process Management, - Complex Data Structure - Multiple External Interface.

  11. INTRODUCTION TO SOFTWARE ENGINEERING SEVEN BROAD SOFTWARE CATAGORIES 2. APPLICATION SOFTWARE Application Software consists of “Standalone Programs” that solve specific business need. Application Software processes business data in a way to facilitate Business Operation or Management decision making. (e.g of Application Software: Hotel Management System, Decision Support Systems etc) 3. ENGINEERING / SCIENTIFIC SOFTWARE Formerly, characterized by “Number crunching” algorithms. Engineering and Scientific Applications range from Astronomy to Volcano logy, from Automotive stress analysis to Space shuttle orbital dynamics and from Molecular Biology to Automated manufacturing. 4. EMBEDDED SOFTWARE Embedded software resides within a product or system and is used to implement and control features and functions for the end-uses and for the system itself.(e.g: Keypad control for a microwave oven, digital function in an Automobile such as fuel control, Anti-braking system (ABS) etc.

  12. INTRODUCTION TO SOFTWARE ENGINEERING SEVEN BROAD SOFTWARE CATAGORIES 5. PRODUCT-LINE SOFTWARE(SOFTWARE PACKAGE PROGRAMS) Designed to provide a specific capability for use by many different customers. It can focus on a limited and esoteric marketplace. (e.g: Inventory control products, Database Management System, Personal and Business Functional Applications, Word processing, Computer graphics etc) 6. WEB APPLICATIONS (WEB APPS) • WebApps in their simplest form can be little more than a set of linked hypertext files that present information using text and limited graphics. • However as e-commerce and B2B (business to business) applications grow in importance, webApps are evolving into sophisticated Computing environment. WebApps not only provide standalone features, computing functions and content to end-users, but also are integrated with Corporate Databases and Business Applications.

  13. INTRODUCTION TO SOFTWARE ENGINEERING SEVEN BROAD SOFTWARE CATAGORIES 7. ARTIFICIAL INTELLIGENCE SOFTWARE (AI SOFTWARE) (AI) Software makes use of “NON-NUMERICAL ALGORITHMS” to solve complex problems that are not amenable to computation or straight forward analysis. (e.g Robotics, Expert systems, Pattern recognition, Image or Voice recognition) , Artificial Neural networks, Theorem proving and Game playing.) ----------------------------------------------------------------------------------------------- • Millions of Software Engineers worldwide are hard at work on Project in one or more of the above mentioned 7 software categories. In some cases new Computer System are being built, but in others, Existing Software Application are being corrected, adapted and enhanced. It is common for a young Software Engineer to work on a program that is older than he/she is!Past generation of Software Engineers have left behind a “Legacy” in each of the Seven Software categories. Hopefully the Legacy left behind by the Present (Current t) Software Engineers will ease the burden of Future Software Engineers.

  14. INTRODUCTION TO SOFTWARE ENGINEERING THE NEW SOFTWARE CHALLENGES ON THE HORIZON The following new Software challenges have appeared on the horizon: - Ubiquitous computing - Net sourcing - Open source - The New Economy (Dot.com) • UBIQUITOUS COMPUTING The rapid growth of ‘’Wireless Networking’’ may soon lead to true Distributed Computing. The challenge to current Software Engineers is to develop System and Applications software that will allow “Small Device”, Personal Computers and Enterprise System to communicate across vast networks. • NET SOURCING World Wide Web (WWW) is rapidly becoming a Computing Engine as well as a Content Provider. The challenge for current Software Engineers is to architect simple and sophisticated application that provide benefit to targeted end-user markets world wide. (e.g. personal financial planning applications)

  15. INTRODUCTION TO SOFTWARE ENGINEERING THE NEW SOFTWARE CHALLENGES ON THE HORIZONOPEN SOURCE A growing trend that results in “Distribution of Source Code) for Software Applications. e.g. Operating systems, Database and Development environments) so that customers can make Local modification. The challenges for current generation Software Engineers is to build Source code that is “Self- descriptive”, but more importantly, to develop techniques that will enable both customers and developers to know what changes have been made and how those changes manifest themselves within the software. THE NEW ECONOMY (DOT COM) The DOT COM) gripped Financial markets during late 1990’s and the bust that followed have lead many Business people to believe that the New Economy is dead. The New Economy is alive and well but it will evolve slowly. The New Economy will be characterized by mass Communication and Distribution. The challenge for current Software Engineers is to built Application and Mass Product Distribution using concepts that are only forming now.

  16. INTRODUCTION TO SOFTWARE ENGINEERING LEGACY SOFTWARE • Legacy Software have been developed decades ago and continually modified to meet changes in business requirements and Computing platforms. • The proliferation of such system is causing headaches for large organizations who find them costly to maintain and risky to evolve. Still many Legacy Systems remain supportive to core business functions and are indispensable to the business. • Hence, Legacy Software is characterized by: - Longevity and Business Critically; - Poor Quality • Legacy Software System in many cases have:- - Inextensible design code - Poor or nonexistent Document, - Test Cases and results that were never archived, - Poorly managed Change history and so on so forth.. Yet Legacy Systems are expected to support “Core Business Functions and are indispensable to the business.

  17. INTRODUCTION TO SOFTWARE ENGINEERING WHAT CAN BE DONE ABOUT LEGACY SYSTEMS? The reasonable answer may be to do nothing!!! - As long as it meets the needs of its Users - Run reliable - It is not broken and does not need to be fixed. • However, as time passes Legacy System often evolve for one or more of the following reasons and needs to undergo some significant changes:- - The Software must be adapted to meet the needs of new Computing environments or Technology. - The Software must be enhanced to implement new business requirement. - The Software must be extended to make it Inter- operational with more modern Systems and Databases. - The Software must be re-architectured to make it viable within a Network environment. When these type of evolutions occur, a Legacy System must be Reengineered.

  18. INTRODUCTION TO SOFTWARE ENGINEERING SOFTWARE EVOLUTION • Regardless of its Application domain, Size or Complexity, Compute Software will evolve over time. • Changes (often referred to as Software Maintenance) drives this process and occurs when:- - Errors are corrected. - Software is adopted to a new environment, - Customer requests new feature on functions - Application is reengineered to provide benefit in a modern context.

  19. INTRODUCTION TO SOFTWARE ENGINEERING SOFTWARE MYTHS Software Myths are beliefs about software and the process used to build it, can be traced to the earliest days of computing. • Myths have a number of attributes that have made them insidious. For instance, - Myths appear to be reasonable statements of fact (sometimes containing an element of truth); - Have an intuitive feel and are often promulgated by experienced Software Professional who “know the score”. • Today most knowledgeable Software Engineering Professionals recognize Myths for being “Misleading attitudes’’ that have caused serious problems for both managers and technical people alike. Nevertheless, old attitudes and habits are difficult to modify and remnants of Software Myths are still believed.

  20. INTRODUCTION TO SOFTWARE ENGINEERING MANAGEMENTS MYTHS Managers with Software responsibilities are often under pressures to maintain Budgets, keep Project Schedules from slipping and improve quality. Like a drawing person who grasps at a straw, a Software Manager often grasps at belief in a Software myth, even if that belief will lesson the pressure even temporarily. Management Myths Examples:- Myth 1:- If we get behind the Project schedules, we can catch up by adding more programmers to the Project team. Reality: This is called the “Mongolian Horde Concept”. Software development is not a mechanistic process like manufacturing. Adding programmers to a late Software Project makes it later! At first this statement seems counterintuitive. However, as new people are added, people who were working must spend time to educate the new comers, there by reducing the amount of time spend on productive development effort. . People can be added to a Project but only in a planned and well-coordinated manner. Myth 2: If I decide to Outsource the Software Project to a third party, I can just relax and let that firm build it! Reality If an organization does not understand how to manage and control Software Projects internally, it will be invariable struggle when it outsource Software Project.

  21. INTRODUCTION TO SOFTWARE ENGINEERING CUSTOMER MYTHS A Customer who requests Computer Software may be a person within one of the department within the company (i.e Marketing department, Sales department etc) or from an outside company, requesting the software under a contract. In many cases Customer believes myths about Software become Software Managers and Software Professionals do little to correct misinformation. Myths lead to false expectations (by the Customer) and ultimately cause Customer dissatisfaction with Software Developers. Customer Myths Examples: Myth 1: Project requirements continually change, but change can be easily accommodated because software is flexible. Reality: It is true that Software Requirements change, but the impact of change varies with the time at which it is introduced. When Requirement changes are requested early (before Design or Coding has been started) cost impact is relatively small. However as time passes, cost impact grows rapidly – resources have been committed, as Design Framework has been established, and change can cause upheaval that requires additional resources and major Design modifications.

  22. INTRODUCTION TO SOFTWARE ENGINEERING CUSTOMER MYTHS Myth 2 A general Statement of Objectives is sufficient to begin writing Programs- We can fill in the details later Reality Although a comprehensive and stable Statement of Requirements is not always possible, an ambiguous statement of objectives is a recipe for disaster. Unambiguous requirements (usually derived iteratively) are developed only through effective and continuous communication between Customer and Developer.

  23. INTRODUCTION TO SOFTWARE ENGINEERING SOFTWARE PROFESSIONALS MYTHS Myths are still believed by Software Practitioners have been fostered by over 50 years of programming culture. During the early days of Software, programming was viewed as an art form. Many Software Professionals recognize the fallacy of Software Myths. Regrettable, habitual attitudes and methods foster poor management and poor technical practices, even when reality dictates a better approach.. Recognition of software realities is the first step toward formulation of practical solutions for Software Engineering.Myth 1: Once we write the Computer Program and get it to work, our job is done! Reality Someone once said that sooner you begin to writing Program Codes, the longer it will take you to get finish it! Industry data indicates that between 60 – 80 % of all effort expended on Software will be expended after it is ‘’Delivered’’ to customer for first time.Myth 2 The only deliverable product for a successful Project is the working program Reality A working Program is only one part of a Software configuration that includes many elements. Documentation provides a foundation for successful engineering and more importantly, guidance for Software Support..

More Related