You are on page 1of 34

BN209_MN507

Overview of Software Engineering


Week 1: Software Engineering Overview

This Weeks Lecture


General Housekeeping
Teaching team Teaching Resources Assessment MIT rules and regulations Some advice about passing BN209_MN507

Software and software engineering Software process Software engineering practice Professional and ethical responsibility Key challenges for software engineering Components of Software Engineering Software engineering jobs

Teaching Team
Lecturer, Tutor & Unit Co-ordinator:
Dr Belal Chowdhury
Level 8, MIT Email: bchowdhury@academic.mit.edu.au Consultation time: Only by appointment

In week 11 of our course, we intend to have an actual practitioner as a guest speaker to share his/her experiences in software engineering with us

Contact Hours
6 contact hours per week
1 three-hour lecture per week
Mondays, start 2:00 pm 5:00 pm in L202

1 three-hour labs/workshops, covering lab work and group discussion per week of the course time.
Mondays, 5:00 pm 8:00 pm in L602 Sign-up in a group of maximum of 3. You should be working in a group through the semester 2.

Our Expectation
Students will attend and actively participate in all activities and lectures You should be spending over 3 hours extra per week in independent study for this Project Management unit.

Resources
The prescribed text is:
Pressman, Roger S. (2010). Software Engineering A Practitioners Approach. McGraw-Hill Inc. , New York, USA, 7th Edition.

Further reading are available from unit description in Moodle. Moodle:


Go to http://moodle.mit.edu.au/login/index.php Use your MIT username and password to login Here you will find announcements, unit description, lecture slides, quizzes, lab materials, assignments, and other resources.

Moodle will be updated regularly during semester 2

Assessment
Lab participation, contribution, & attendance 10% Online Quiz (week 3 in lab) 5% Group Assignment 1 10% Mid Term Test (week 8 in lec.) 5% Group Assignment 2 20% Group Presentation - 10% Final examination 40%

Lectures/Workshops
Lectures are facilitating learning it is important to attend this unit Therefore, please do not:
Talk during the lecture Answer your mobile or send SMS Sleep Pass notes.

Students are expected to take notes during the lecture and actively participate in discussions. Evaluations are emphasized in this unit for improvements and support to your learning

What is Software?
Definition and Organization of a set of tasks and functionality encapsulated into a form that is executable on a computer. Not just the programs but also all associated documentation and configuration data needed to make these programs operate correctly.

What is Software?

Types of Software
Commercial-Off-the-Shelf - ERP, PeopleSoft, Oracle Applications Government-Off-the-Shelf - Developes exclusively with government funds Legacy: Written in an Old programming language, such as Cobol, Fortran, C, C++ etc. Customised (Bespoke) Software Traffic Control Systems Generic/Application/Product line Software Standalone systems, e.g., DBMS/Applications, word processor, Project Management tools, etc

Types of Software
System Software Operating system components, drivers, networking software, etc. Engineering software Automatic Train Protection Embedded Software Dashboard displays, breaking systems Web Application OLAP systems, online business applications Client vs. Server Software Web browser and web server Artificial Intelligent Software Games, robotics, expert systems, etc.

Software Engineering
Engineering: Application of Science to the solution of practical problems Software Engineering:
application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software (IEEE 1990) Multi-person construction of multi-version Software (Parnas 1978) covers not only the technical aspects of building software systems, but also management issues, such as directing programming teams, scheduling, and budgeting

Software Engineer Responsibilities


Problem solving Design methodology Communication and collaboration Planning and Management

Why Software Engineering?


Program complexity transcends individual Programmer Software Engineering Targeted for constructing large software applications defining Problem Clear and Completely tools and Techniques to Support Process team-oriented Experience Software engineering must evolve to be an engineering discipline Software engineering Must promote and support multi-person construction of multi-version software

Influences on Software Engineering


Cost of Software Continues to Increase, Requiring More Efficient Software Production
Software Acquisition vs. Outsourcing Software Reuse vs. Build-from-Scratch

Influences on Software Engineering


Complexity of large software altered the view from development perspective
Conception Integration Maintenance Design Development Distribution Documentation Evolution Extension

Software Engineering/Computer Science Growth


350,000 Information Technology Jobs Open 100,000 New Jobs per Year for 10 Years

Programmer VS Software Engineer


Individual with good skills Programming-in-the-small Knowledge on data Structures algorithms Fluent in several programming languages May lack formal training Minimal exposure to Computer Science
Part of a team Programming-in-the-Large Design approaches OO, Modules, etc. Top-down/Bottm-up Translates requirements into specifications Familiarity in multiple application areas Converses with users Sees Big Picture Can model application Good communication and interpersonal Skills

Software Process
Defines who is doing what, when and how to reach a certain goal. A set of activities and associated results which produce a software products or services

Software Process Contd


Activities involve:
Software specification: functionality of software and constraints Software development: must meet software specification Software validation: must be validated to meet customer requirements Software evaluation: must evolve to changing customer needs

Software Engineering Practice


Polya suggests: Understand the problem (communication and
analysis). Plan a solution (modeling and software design). Carry out the plan (code generation). Examine the result for accuracy (testing and quality assurance

Understand the Problem


Who has a stake in the solution to the problem? That is, who are the stakeholders? What are the unknowns? What data, functions, and features are required to properly solve the problem? Can the problem be compartmentalized? Is it possible to represent smaller problems that may be easier to understand? Can the problem be represented graphically? Can an analysis model be created?

Plan the Solution


Have you seen similar problems before? Are there patterns that are recognizable in a potential solution? Is there existing software that implements the data, functions, and features that are required? Has a similar problem been solved? If so, are elements of the solution reusable? Can sub-problems be defined? If so, are solutions readily apparent for the sub-problems? Can you represent a solution in a manner that leads to effective implementation? Can a design model be created?

Carry Out the Plan


Does the solution conform to the plan? Is source code traceable to the design model? Is each component part of the solution provably correct? Has the design and code been reviewed, or better, have correctness proofs been applied to algorithm?

Examine the Result


Is it possible to test each component part of the solution? Has a reasonable testing strategy been implemented? Does the solution produce results that conform to the data, functions, and features that are required? Has the software been validated against all stakeholder requirements?

Professional and Ethical Responsibility


Confidentiality Competence Intellectual property rights Computer misuse

Key challenges for Software Engineering


Heterogeneity challenge Legacy Challenge Delivery Challenge Trust Challenge

Components of Software Engineering


Process: A framework for the tasks required to build high quality software, e.g., RUP, XP. Notation: An agreed, common language used to communicate all aspects of the system, from requirements to final design, e.g., UML Tools: Tools to make working through the process less difficult for all involved. e.g., Eclipse. Product: The actual software product or system built and put into operation, e.g., program

A Layered Technology
tools methods process model a quality focus
Software Engineering

Software Engineering Careers


Chief technology officer Computer programmer Computer security professional Games programmer Interactive web developer Multimedia specialist Project manager/engineer Software architect Software developer Software engineer Systems analyst and designer

Software Engineering Jobs

This Weeks Summary


Software and software engineering Software process Software engineering practice Professional and ethical responsibility Key challenges for software engineering Components of Software Engineering Software engineering jobs

Next Week: The Software Process

References
Schwalbe, K. (2010). Information technology project management (6th ed.). Course Technology. Fuller, Mark A., Valacich, Joseph S., and George, Joey F. (2008), Information Systems Project Management: A Process and Team Approach, Pearson Education Inc. Upper Saddle River, New Jersey, 07458. Krigsman, M. (2011), CIO analysis: Why 37 percent of projects fail, Zdnet.com

Questions ???

You might also like