Introduction to Software Engineering FALL-2009 SEN-360 : Software Engineering Tazeen Muzammil
Course Title: Software Engineering Course Code: SEN-261 Prerequisites: NONE Degree(s): BCS,BSE Laboratories: none
2
Course Description Introduction to Software Engineering Software Process Models Project Management Concepts System Engineering Requirements Engineering Analysis Concepts and Principles Design Concepts and Principles Architecture and detailed design User-interface design Verification and Validation Software Quality Assurance Software Testing Techniques and Strategies Clean Room Software Engineering Maintenance Configuration Management Reengineering and Web Engineering 3
Books TEXT: Software Engineering: A Practitioner's Approach Author: Roger S. Pressman Publication Information: 6th Edition, McGraw-Hill, 2005 4
Books Reference: Software Engineering Author: Ian Sommerville Publication Information: 7th Edition Pearson Education The Mythical Man-Month: Essays on Software Engineering Author: Frederick P. Brooks Publication Information: 20th Anniversary Edition, AddisonWesley, 1995
5
Marks Distribution Quizzes
10
Mid–Term Examination
20
Final Examination
50
Project
20
Total
100
6
Group Project PROJECT GOAL: As a team, develop a software application (of your own choice) through the entire development life cycle. This means performing requirements analysis, design, implementing a functioning prototype, testing and documenting the system TEAM ORGANIZATION: Each team will consist of four (4-5) students. You may choose your own teams, although teams may be adjusted to accommodate all the students in the class. One team member should be chosen as project lead for organizational and contact purposes, but all team members are expected to contribute to all components of the project. IMPLEMENTATION: The prototype can be developed in any environment using any development or prototyping language.
7
DELIVERABLES DELIVERABLE Project Definition & Team Organization Software Requirements Specification
DUE DATE 21st September 14th October
Design Document
4nd November
Prototype
30th November
User Documentation
16th December
8
What is Software Computer software, or just software is a general term used to describe the role that computer programs, procedures and documentation play in a computer system. Software is computer programs and associated documentation such as requirements, design models and user manuals.
9
What is Software Engineering Software engineering is an engineering discipline whose focus is the cost effective development of high-quality software system. Software engineering covers not only the technical aspects of building software systems, but also management issues, such as directing programming teams, scheduling, and budgeting.
10
Software Engineering Classic Definition (1969) “The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.”
IEEE Definition (1993) “Software Engineering: (1) The application of a systematic, disciplines, quantifiable approach to the development, operation, and maintenance of software; that is the application of engineering to software. (2) The study of approaches as in (1).”
11
What is the difference between software engineering and computer science? Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.
12
What is the difference between software engineering and system engineering? System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process concerned with developing the software infrastructure, control, applications and databases in the system. 13
What are the Attributes of good Software Maintainability Dependability Efficiency Usability
14
What is CASE The acronym CASE stands for ComputerAided Software Engineering. Software system which are intended to provide automated support for software process activities.
Software Engineering & Process Models
15
Product & Process Product : What is delivered to the customer
Process : Collection of activities that lead to a product 16
Evolving Role of Software Early Years Batch orientation Custom software
Second Era Multi-user, Real-time Database Product software
Third Era Distributed systems Low cost hardware
Fourth Era Desktop systems Object Oriented Technologies Expert Systems AI, neural networks Parallel computing Network computers0,
17
S/W Characteristics S/W is developed or engineered, it is not developed in the classical sense S/W doesn’t wear out Although industry is moving towards component based assembly, most S/W continue to be custom built
18
S/W Applications System Software Real-Time Software Business Software Engineering & Scientific Software Embedded Software Personal Computer Software Web Based Software AI Software
19
Software Myths − Managers We have standards and procedures for building software, so developers have everything they need to know. We have state-of-the-art software development tools; after all, we buy the latest computers. If we’re behind schedule, we can add more programmers to catch up. A good manger can manage any project.
20
Software Myths − Client A general statement of objectives is sufficient to begin writing programs − we can fill in the details later. Requirement changes are easy to accommodate because software is flexible. I know what my problem is, therefore I know how to solve it.
21
Software Myths − Practitioner If I miss something now, I can fix it later. Once the program is written and running, my job is done. Until a program is running, there’s no way of assessing its quality. The only deliverable for a software project is a working program.
22
Software Engineering Layered Technology Key Process Areas Tools Methods Process Quality [Pressman 97]
23
Generic View of S/W Engg. Definition Phase(WHAT) System/Information Engineering Software Project planning Requirement Analysis
Development Phase(HOW) Software design Code Generation Software testing
Support Phase Correction Adaptation Enhancement Prevention 24
Capability Maturity Model Developed by SEI Five Process Maturity Levels Level Level Level Level Level Level
0: 1: 2: 3: 4: 5:
Chaos Initial Repeatable Defined Managed Optimizing 25
S/W process – Activity Model In a S/W development process context, Process is defined as an ordered set of activities that, after completed, result in a S/W product Input Entry Conditions
Activity Implementation Conditions
Output Exit Conditions 26
Process Principles Prescribes all major activities Uses resources, within a set of constraints, to produce intermediate and final products May be composed of sub-processes Each activity has entry and exit criteria Activities are organized in a sequence Has a set of guiding principles to explain goals Constraints may apply to activity, resource or product
27
Steps : S/W Dev.Process Identify the S/W model Identify the activities Identify the relationship among activities Document other useful information on each activity Document how to tailor the process Document how to improve the process Obtain the buy-in of the process Continually use & improve the process Software Engineering & Process Models
28
S/W Process Model Problem Definition Status Quo
Technical Development Solution Integration
Software Engineering & Process Models
29