1 / 19

An Introduction to Software Engineering by Prof. Mark Ramsey

An Introduction to Software Engineering by Prof. Mark Ramsey. Introductions Introduction to Software Engineering Software Specification Software Design Software Validation Software Management. An Introduction to Software Engineering Introduction. How Did We Get Here?

sandra_john
Download Presentation

An Introduction to Software Engineering by Prof. Mark Ramsey

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. An Introduction to Software Engineeringby Prof. Mark Ramsey • Introductions • Introduction to Software Engineering • Software Specification • Software Design • Software Validation • Software Management

  2. An Introduction to Software EngineeringIntroduction • How Did We Get Here? • Well-Engineered Software • The Software Process • Management Process Models

  3. An Introduction to Software EngineeringHow Did We Get Here? • Computer Hardware $ is decreasing while computer systems are being incorporated in more & more products. • Boehm states that in 1985 software costs – $140 Billion • Growing at a rate of 12% per year - $763 Billion in 2000 • What is Software Engineering: • Software Systems built by teams rather than individuals. • Includes Engineering Principles in development of these systems. • Technical as well as Non-Technical Aspects

  4. An Introduction to Software EngineeringHow Did We Get Here? • Term “Software Engineering” first introduced in the late 1960’s at a conference. • Industry was trying to address the “software crisis” as a result of the introduction of 3rd Generation computer hardware. • This new hardware made large software systems possible(needed). • New techniques were needed to control the complexity inherent in large software systems • Industry well ahead of Academia: • Computer Science vs Mathematics • Information Systems vs Computer Science • Software Engineering vs Computer Engineering

  5. An Introduction to Software EngineeringWell-Engineered Software • Like all engineering, Software Engineering is not just about producing products, but producing products is a cost-effective way. • Four key attributes which a well-engineered software system should possess: • Should be maintainable • Should be reliable • Should be efficient • Should offer an appropriate User interface

  6. An Introduction to Software EngineeringThe Software Process • In 1970 the notion that software development is like other engineering processes resulted in Royce developing a model for Software Development. The first being the Waterfall Model (Software Life Cycle): Requirements analyst and definition System and Software Design Implementation and Unit Testing Integration and System Testing

  7. An Introduction to Software EngineeringThe Software Process • Detailed software process models are still the subject of research. But there are a number of different models or paradigms of software development: • The Waterfall Approach: number of stages • Exploratory Programming: develop a working system as quickly as possible and modify as needed • Prototyping: Establish system requirements • Formal transformation: developing a formal specification of the software system and transforming into a program • System assembly from reusable components: assembling already existing software components • The first 3 are used currently for all practical systems development

  8. An Introduction to Software EngineeringThe Software Process • Software Development Life Cycle • Requirements Analysis and Definitions • System and Software Design • Implementation and Unit Testing • Integration and System Testing • Operations and Maintenance

  9. An Introduction to Software EngineeringThe Software Process • An aim of software engineering is to reduce overall software costs so the cost distribution across the software process must be known. • System Type Req/Design Impl Testing • Control Systems 46 % 20 % 34 % • Spaceborne Systems 34 % 20 % 46 % • Operating Systems 33 % 17 % 50 % • Scientific Systems 44 % 26 % 30 % • Business Systems 44 % 28 % 28 %

  10. An Introduction to Software EngineeringManagement Process Models • Project Management is one thing which distinguishes professional software engineering and no process model can be acceptable if it results in an unmanageable process. • Activity Output documents • Requirements Analysis Feasibility Study/ Outline Requirements • Requirements Definition Requirements Specification • System Specification Functional Specs/Acceptance Test Specs/Draft User Manual • Architectural Design Design Architecture Specs/System Test Specs • Interface Design Interface Specs/Integration Test Specs • Detailed Design Design Specs/Unit Test Specs • Coding Program Code • Unit Testing Unit Test Result Report • Module Testing Module Test Result Report • Integration Testing Integration Test Report/Final User Manual • System Testing System Test Report • Acceptance Testing Final System

  11. An Introduction to Software EngineeringReview Point • Software engineering involves technical & non-technical issues. As well as knowledge of specification, design, and implementation techniques, software engineers must know something about human factors and software management. • Well-Engineered software is software which provides the services required by its users. It should be maintained, reliable and efficient, and should provide an appropriate user interface. • The waterfall model of software development suffers from inadequacies but will continue to be widely used because it simplifies management of the software process. • Exploratory programming is not suited to the development of most large, long-lifetime software systems because it is likely to result in systems which are expensive to maintain. • Document-driven management process models suffer from the disadvantage that they inhibit process iteration because documents are “frozen” and then become very expensive to change.

  12. An Introduction to Software EngineeringExercise 1 • A university intends to procure an integrated student management system holding all details of registered students including personal information, courses taken, and examination marks achieved. The alternative approaches to be adopted are: • Buy a database management system and develop an in-house system based on this database. • Buy a comparable system from another university and modify it to local requirements • Join a consortium of other universities, establish a common set of requirements and contract a software house to develop a single system for all the universities in the consortium • Identify two possible risks in each of these strategies and suggest techniques for risk resolution which would help in deciding which approach to adopt.

  13. An Introduction to Software EngineeringExercise 2 • Write a plausible requirements definition for the following functions: • An unattended petrol (gas) pump system which includes a credit card reader. The customer swipes the card through the reader then specifies the amount of fuel required. The fuel is delivered and the customer’s account is debited. • The cash dispensing function in a bank auto-teller machine. • The spell checking and correcting function in a word processor.

  14. An Introduction to Software EngineeringSoftware Design • Design is a creative process. Although methods & guidelines are helpful, judgement & flair on the part of the software engineer are still required to design a software system. • The main design activities in the software process are architectural design, system specification, interface design, component design, data structure design and algorithm design. • Functional decomposition involves considering a system as a set of interacting functional units. • Object-oriented decomposition considers the system as a set of objects where an object is an entity with state and functions to inspect and modify that state. • A decision on whether a system should be implemented as a single sequential process or as a number of parallel processes is a detailed design decision. The design process should partition the system into logical, interacting units which may be realized as either sequential or parallel components. • The most important design quality attribute is maintainability. Maximizing cohesion in a component & minimizing the coupling between components is likely to lead to maintainable design. • The use of inheritance in object-oriented systems can improve the quality of a design but may make the design more difficult to understand.

  15. An Introduction to Software EngineeringExercise 3 • Explain why sequential software designs are easier to validate than designs which involve parallel processes

  16. An Introduction to Software EngineeringVerification & Validation • Verification & Validation are not the same thing. Verification is intended to show that a program meets its specification. Validation is intended to show that the program does what the user wants it to do. • Testing has a dual function; it is used to establish the presence of defects in a program and it is used to estimate whether or not the program is operationally usable. • Testing can only be demonstrated the presence of errors. It cannot prove their absence. • The testing process involves unit testing, module testing, sub-system testing, integration testing and acceptance testing. • Testing should be scheduled as part of the project planning process. Adequate resources must be made available for testing. • Testing strategies which may be adopted include top-down testing, bottom-up testing, thread testing of real-time systems and stress testing.

  17. An Introduction to Software EngineeringExercise 4 • Describe four classes of systems encountered in everyday life which might be subject to stress testing.

  18. An Introduction to Software EngineeringSoftware Management • Good software project management is essential if software engineering projects are to be developed on schedule and within budget. • Software management is different from other engineering management because software is intangible, because we don’t understand the software process and because many projects are novel and innovative. • A software manager has diverse roles but the most significant activities are project planning, estimating, and scheduling. • Various development team organizations have been adopted. Democratic teams work well with experienced and competent staff. Chief programmer teams try to make best use a scarce resource, namely, programming skills. • The dominant factor in programming productivity is the aptitude of the individual programmer. • Existing measures of programming productivity do not take the quality of the finished product into account.

  19. An Introduction to Software EngineeringExercise 5 • Explain why the productivity of programmers working on embedded systems is usually very much lower than that of programmers developing business information systems.

More Related