Fundamentals of Software Engineering Lecture 1 26 Feb 2017
Course Curriculum Course Description This course intended to provide students with theoretical and practical aspects of fundamentals of Software engineering. Topics to be dealt with are: Overview of Software Engineering; Software Engineering challenges; development paradigms; process models ; requirements analysis; requirements modeling; requirements specification , system design ; software architecture ; coding and programming practices; software testing techniques: structural and functional testing; testing process; software metrics: analysis metrics, design metrics, code metrics; software maintenance issues.
Course Content Outline Chapter One: Introduction What is software? Types of software Characteristics of Software Attributes of good software Software engineering and its challenges Chapter Two: Managing Software Projects Project planning Estimating costs Project scheduling Risk management Managing people Test 1
Course Content Outline conn… Chapter Three: Software Development Process Models The generic software lifecycle What is a process model? Types of process models Chapter Four: Software Requirement Analysis and Specification Software requirements Types of software requirements Domain requirements Overview of techniques User requirements Elicitation and analysis of requirements Test 2
Course Content Outline conn… Chapter Five: Software Design Design concepts Abstraction Architecture Function oriented design Patterns Modularity Design notations Chapter Six: Software Testing Verification and validation Techniques of testing Levels of testing Design of test cases Test 3
Course Content Outline conn… Chapter Seven: Software Maintenance Types of maintenance Re-engineering Configuration Management Final exam Evaluation methods Tests (3) -------------10% each Projects (3) ----------10% each Final exam-----------40% References Ian Sommerville (2006), Software Engineering 7th edition, Addison-Wesley. Roger S. Pressman (2005) Software Engineering: A practitioner's approach, 6th edition, McGraw-Hill, International edition. Pankaj Jalote (2005), An Integrated Approach to Software Engineering (3rd ed ) , Springer K.K. Aggarwal, Yogesh Singh (2008) Software Engineering, 3rd edition New age international publishers
Chapter one : Introduction What is software? Software is computer programs and associated documentation. Software products may be developed for a particular customer or general market. We can’t run the modern world without software. National infrastructures and utilities are controlled by computer-based systems and most electrical products include computer are controlled by software . Industrial manufacturing and distribution is completely computerized, Entertainment , including the music industry, computer games, and film and television, is software intensive. Therefore, software engineering is essential for the functioning of national and international societies.
Software products Software engineers are concerned with developing software products There are two kinds of software products: (Generic and Customized) Generic products: These are stand-alone systems that are produced by a development organization sold on the open market to any customer who is able to buy them. Examples software for PCs such as databases, word processors, drawing packages, and project-management tools, CAD System etc. It also includes so-called vertical applications designed for some specific purpose such as library information systems, accounting systems , or systems for maintaining dental records .
Software products conn… Customized (or bespoke) product s: These are systems that are commissioned by a particular customer. A software contractor develops the software especially for that customer. Examples control systems for electronic devices, systems written to support a particular business process, air traffic control systems. embedded control systems, traffic monitoring systems.
Product specification Generic products The specification of what the software should do is owned by the software developer and decisions on software change are made by the developer. Customized products The specification of what the software should do is owned by the customer for the software and they make decisions on software changes that are required.
Frequently asked questions about software engineering
Frequently asked questions about software engineering
Frequently asked questions about software engineering
Frequently asked questions about software engineering
Importance of software engineering More and more, individuals and society rely on advanced software systems. We need to be able to produce reliable and trustworthy systems economically and quickly. It is usually cheaper, in the long run, to use software engineering methods and techniques for software systems rather than just write the programs as if it was a personal programming project. For most types of system, the majority of costs are the costs of changing the software after it has gone into use.
Types of Software
Characteristics of Software When hardware is built, the human creative process ( analysis , design , construction , testing ) is ultimately translated into a physical form . If we build a new computer, our initial sketches , formal design drawings , and bread boarded prototype evolve into a physical product ( chips , circuit boards , power supplies , etc .). However, software product is logical it is not physical. Therefore, characteristics of software against hardware is presented as follow
Characteristics of Software conn… Software is developed or engineered, but not manufactured Hardware is manufactured not software Software can be reused in many different program Although the industry is moving toward component-based assembly, most software continues to be custom built .
Characteristics of Software conn… 3. Software doesn't "wear out.“ Software doesn't wear out. But it does deteriorate or fail! When a hardware component wears out , it is replaced by a spare part . No spare part for software. Every software failure indicates an error in design Therefore, software maintenance involves considerably more complexity than hardware maintenance.
Essential attributes of Software Characteristic Description Maintainability Software should be written in the way that can meet the changing needs of customers. This is a critical attribute because software change is an expected requirement of a changing business environment. Dependability and security Software dependability concerned with reliability , security & safety . Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access the system . Efficiency It is wise use of system resources ( memory and processor) Efficiency includes: responsiveness , processing time, memory utilisation, etc. Acceptability Software must be acceptable to users for which it is designed. It includes characteristics such as understandable, Usable and compatible with other systems that they use.
Thank You for Your Attention!
Software Challenges Major challenges faced into software Scale Quality and Productivity Consistency and Repeatability Change Next Class Topic End Here for today