Sie sind auf Seite 1von 27

Introduction to Software Engineering

Atul Gupta

What is Software Engineering?


Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. [IEEE90] Software Engineering is an act of applying a collection of techniques, methodologies and tools that help with the production of a high quality software system, with a given budget, before a given deadline, while change occurs. [Textbook] Software Engineering is intended to mean the best-practice processes used to create and/or maintain software, whether for groups or individuals. [SEYP]

What is Software Engineering?


A problem solving activity A modeling activity A knowledge-acquisition activity A rationale-driven activity

SE: A Problem Solving Activity


Analysis: Understand the nature of the problem and break the problem into pieces Synthesis: Solve them and put the solutions together to solve the original problem For problem solving we use Techniques (methods):
Formal procedures for producing results using some well-defined notation

Methodologies:
Collection of techniques applied across software development and unified by a philosophical approach

Tools:
Instrument or automated systems to accomplish a technique

Difference from Other Engineering Disciplines


The end product is abstract, not a concrete object like a bridge Costs are almost all human Easy to fix bugs, but hard to test and validate Software typically never wears out...but the hardware/OS platforms it runs on do Variations in application domain are open-ended, may require extensive new non-software, non-engineering knowledge for each project Changes occur in application and solution domains while the problem is being solved (Software Evolution)
10/21/2010 5

What is high quality software?


It must be useful (to the original customer) It must be portable (work at all of the customers sites) It must be maintainable It must be secure It must have high integrity (produces correct results, with a high degree of accuracy). It must be efficient It must have consistency of function (it does what the user would, reasonably expect it to do) It must have good human engineering (easy to learn and easy to use) It must be error-free
6

10/21/2010

Software Engineering Concepts


Requirements Project * * Activity Methodology * Technique consumes *

Functional

Non-Functional

Tool

is produced by * WorkProduct * Task

Resources

roles
System * * Model Document Participant Time Equipment

Notation

Software Engineering Concepts


An Example TicketDistributor
TicketDistributor is a machine that issues tickets for trains. Travelers have the option of selecting a ticket for a single trip or for multiple trips, or selecting a time card for a day or a week. The machine computes the price of the requested ticket based on the area in which the trip will take place and whether the traveler is a child or an adult. The TicketDistributor must be able to handle several exceptions, such as traveler who do not complete the transaction, travelers who attempt to pay large bills, and resource outages such as running out of tickets, change, or power.

ROLES Client User Project Manager Human Factor Specialist Developer

RESPONSIBILITIES Requirements, Scope, Constraints like budget, schedule Domain Knowledge, use of the system Managing the project, estimation, planning, scheduling and tracking, hiring people, reporting Ensure usability Various roles in software development

EXAMPLE Train company Traveler Alice (Boss)

Zoe (HCI Specialist) John (Analyst), Marc (Programmer), Zoe (Tester) John

Technical Writer

Documentation delivered to the client that include SRS, User manual,

Example of roles in software development for TicketDistributor project

WORK PRODUCT

TYPE

DISCRIPTION Contractual document between client and development organization Installation and configuration instructions Reports about tasks that are completed or in progress for the people in the hierarchy Test plans, test procedure, test cases and results Delivered functionality, resolved and unresolved issues

Specification (SRS) Deliverable Operation Manual Deliverable Status Report Internal work product Internal work product Deliverable

Test Report Release notes

Example of work products in software development for TicketDistributor project

Software Development Engineering Activities


A phased development (Process-oriented)
Requirements Specification
Functional and Non-Functional Req. (Testable) Additional Constraints Interfaces to other systems including UI Use cases Interaction Models Object Model (Problem Domain) System Design Object Design

RUP

Analysis Modeling

XP

Design

Construction (Coding) Testing


At Different levels Unit, Integration, System, User Regression Testing Specialized Testing like performance, security, load, Stress testing Deployment Change Management

SCRUM

Operation and Maintenance

Analysis Modeling
Use case diagram and documentation System models
Dynamic models (ex. Sequence diagram and Statechart) Structural models (ex. Object model)

A Usecase for the TicketDistributor

Passenger

PurchaseOneWayTicket

A dynamic model for the TicketDistributor.


:TicketDistributor :Traveler selectZone() amountDue insertChange() amountDue insertChange() updateBalance() acknowledgement printedTicket create :Ticket getPrice() :Zone :Balance

updateBalance()

An object model for the TicketDistributor.

Transaction results into

Ticket valid for

Zone

Coin amount paid Balance Bill

Design
System Design (Architecture)
Platforms Persistence data management strategy Global control flow Boundary conditions Subsystem decomposition and deployment diagram

Object Design (Implementation)


Solution domain objects Subsystem interfaces Selecting COTS Design patters Detailed Object model

Traveler Interface

Updater

Local Tariff

Central Tariff

A subsystem decomposition for the TicketDistributor.

Implementation
Conversion of object model into code Code Reuse Coding Standard and Practices Testable Code TDD

Testing
At Different levels Unit, Integration, System, User Regression Testing Specialized Testing like performance, security, load, Stress testing

Software Development Managing Activities


Communication Process Management
Development Configuration and Change Quality Management

Process

Project Management
Estimation Planning Scheduling and Tracking
Project

Product Management

Product

SE Dimensions

Process

Project

Product

People

S/W Characteristics (Boehm's Top 10)


1. Finding and fixing a software problem after delivery of the product is 100 times more expensive than defect removal during requirements and early design phases. 2. Nominal software development schedules can be compressed up to 25% (by adding people, money, etc.) but no more. 3. Maintenance costs twice what development costs. 4. Development and maintenance costs are primarily a function of size, e.g. the number of source lines of code, in the product. 5. Variations in humans account for the greatest variations in productivity.

10/21/2010

24

S/W Characteristics (Boehm's Top 10)


6) The ratio of software to hardware costs went from 15:85 in 1955 to 85:15 in 1985 and continues to grow in favor of software as the dominant cost. 7) Only about 15% of the development effort is in coding. 8) Application products cost three times as much per instruction as individual programs; systems software products costs nine times as much. 9) Walk-throughs catch 60% of the errors 10) Many software processes obey a Pareto distribution:

10/21/2010

20% of the modules contribute 80% of the cost 20% of the modules contain 80% of the errors! 20% of the errors consume 80% of the repair budget 20% of the modules take 80% of the execution time 20% of the tools are used 80% of the time
25

Summary
Software Engineering is the application of an engineering approach in the development and maintenance of quality software SE is a multi-disciplinary field Solving problems
Complex Change

Successful software development


Engineering Management

Questions!
1. What are the main differences between a student software and industrial-strength software? 2. If developing a program for solving a problem requires effort E, it is estimated that an industrial-strength software for solving that problem will require 10E effort. Where do you think this extra effort cost is spent? 3. What measurements will you take in a project to measure the productivity, and how will you determine the productivity from these measures? 4. What are the different attributes of software quality? If for an accounting software we are most interested in ensuring that the software does not make any computation mistakes, then which of the quality attributes should we be most concerned about? 5. What are some of the project management tasks that you will do differently for a large project as compared to a small project? How will your execution of these tasks change? 6. Suppose changes are to be made to a software system that is in operation. Why will changes to such a system cost a lot more than just making changes to the source code files?

Das könnte Ihnen auch gefallen