Weighted Total Mark. Weighted Exam Mark



Similar documents
IT3205: Fundamentals of Software Engineering (Compulsory)

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

Weighted Total Mark. Weighted Exam Mark

How To Understand Software Engineering

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Software Engineering Tools and Methods

Advancements in the V-Model

Frank Tsui. Orlando Karam. Barbara Bernal. State. University. Polytechnic. Ail of Southern JONES & BARTLETT LEARNING

Weighted Total Mark. Weighted Exam Mark

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Chap 1. Introduction to Software Architecture

Software Engineering

CMSC 435: Software Engineering Course overview. Topics covered today

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Software Development in the Large!

EVALUATING SOFTWARE ENGINEERING PRACTICES IN PALESTINE

Classical Software Life Cycle Models

COURSE CODE : 4072 COURSE CATEGORY : A PERIODS / WEEK : 4 PERIODS / SEMESTER : 72 CREDITS : 4

I219 Software Design Methodology

CS4507 Advanced Software Engineering

To introduce software process models To describe three generic process models and when they may be used

Karunya University Dept. of Information Technology

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

MSE-201 SOFTWARE PROJECT MANAGEMENT

Software Engineering. Introduction. Lecturer: Giuseppe Santucci

Software Engineering for Software-Intensive Systems: III The Development Life Cycle

The Helicoidal Life Cycle as a Tool for Software Development and Enhancement

Outline. III The Development Life Cycle. Characteristics of Software Development Methodologies. The Prototyping Process

Course Computer Science Academic year 2012/2013 Subject Software Engineering II ECTS 6

What is a life cycle model?

Research Topics in Software Engineering

Applying 4+1 View Architecture with UML 2. White Paper

Christina Wallin ABB Corporate Research Department of Industrial IT Västerås +46 (0)

Design Specification for IEEE Std 1471 Recommended Practice for Architectural Description IEEE Architecture Working Group 0 Motivation

Protect Your Organization With the Certification That Maps to a Master s-level Education in Software Assurance

ISSUES OF STRUCTURED VS. OBJECT-ORIENTED METHODOLOGY OF SYSTEMS ANALYSIS AND DESIGN

Introduction to software architecture

Introduction to Software Engineering. Week 1

CMMI STANDARDS IN SOFTWARE DEVELOPING PROCESS

CS4507 Advanced Software Engineering

Software Engineering and Quality Assurance Comparison of Tools and Techniques used by Universities

Application of software product quality international standards through software development life cycle

Introduction to Software Engineering

The Role of the Software Architect

GUJARAT TECHNOLOGICAL UNIVERSITY, AHMEDABAD, GUJARAT. COURSE CURRICULUM COURSE TITLE: FUNDAMENTALS OF SOFTWARE DEVELOPMENT (Code: )

Academic Course Description. SE2003 Software Project Management Second Semester, (Even semester)

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

An integrated life cycle quality model for general public market software products

Engineering. Software. Eric J. Braude. Michael E. Bernstein. Modern Approaches UNIVERSITATSBIBLIOTHEK HANNOVER ' TECHNISCHE INFORM ATIONSBIBLIOTHEK

Change Management: Modeling Software Product Lines Evolution

Overview Component-based Software Engineering State of the Art Report

Software Documentation

Guidelines for Software Engineering Education Version 1.0

BCS Certificate in Requirements Engineering Extended Syllabus

Introduction to software architecture

White Paper IT Methodology Overview & Context

A Quagmire of Terminology: Verification & Validation, Testing, and Evaluation*

A Tool to Support Knowledge Based Software Maintenance: The Software Service Bay

Architecture Definitions

2. Analysis, Design and Implementation

Prescriptions and Schedule of Papers for 2008

A Review of an MVC Framework based Software Development

CHAPTER 7 Software Configuration Management

A Process Model for Software Architecture

THE DEVELOPMENT OF A WEB BASED MULTIMEDIA INFORMATION SYSTEM FOR BUILDING APPRAISAL

The PECOS Software Process

Scenario-based Evaluation of Software Architecture Styles from the Security Viewpoint

BCS Higher Education Qualifications. Software Development Syllabus

2. Analysis, Design and Implementation

Evaluation of Commercial Web Engineering Processes

Title: Topic 3 Software process models (Topic03 Slide 1).

Development/Maintenance/Reuse: Software Evolution in Product Lines

Introduction to Software Engineering (ESE : Einführung in SE)

Software Lifecycles Models

Lecture Overview. Object-Oriented Software Engineering: Using UML, Patterns, Java, and Software Development Processes. Prof. Dr.

Comparison between Traditional Approach and Object-Oriented Approach in Software Engineering Development

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

City University of Hong Kong Course Syllabus. offered by Department of Computer Science with effect from Semester A 2015/16

Reuse and Capitalization of Software Components in the GSN Project

Renaissance: A Method to Support Software System Evolution

How To Model Software Development Life Cycle Models

Software Life Cycles and Configuration Management

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Certified Software Quality Engineer (CSQE) Body of Knowledge

An Introduction to Software Engineering

An Introduction to Software Engineering. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective:

Data Modeling Basics

Chapter 11, Testing, Part 2: Integration and System Testing

Software Engineering. What is SE, Anyway? Based on Software Engineering, 7 th Edition by Ian Sommerville

SOFTWARE ENGINEERING PROGRAM

Plan-Driven Methodologies

Author of the Program: Prof., Dr.Sci. Dmitry Alexandrov

Introduction to Software Engineering. Adopted from Software Engineering, by Ian Sommerville

Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note

Topics. Software development invariants. Stakeholders. The accidents of software development. The essence of software development

Enhanced Funding Requirements: Seven Conditions and Standards

Verification and Validation of Software Components and Component Based Software Systems

UNIVERSITY OF KENT CODE OF PRACTICE FOR QUALITY ASSURANCE

Transcription:

CMP2101 Software Engineering Period per Week Contact Hour per Semester Total Mark Exam Mark Continuous Assessment Mark Credit Units LH PH TH CH WTM WEM WCM CU 45 00 30 60 100 40 100 4 Rationale Software engineering is the discipline concerned with the application of theory, knowledge, and practice to build effectively and efficiently software systems that satisfy the requirements of users and customers. Software engineering is applicable to small, medium, and large-scale systems. It encompasses all phases of the life cycle of a software system. The life cycle includes requirement analysis and specification, design, construction, testing, and operation and maintenance. The development of programs benefits from the concepts and practices derived from software engineering. Software engineering employs engineering methods, processes, techniques, and measurement. It benefits from the use of tools for managing software development; analyzing and modeling software artifacts; assessing and controlling quality; and for ensuring a disciplined, controlled approach to software evolution and reuse. Software development, which can involve an individual developer or a team of developers, requires choosing the tools, methods, and approaches that are most applicable for a given development environment. Objectives To introduce the student to the evolution and scope of Software Engineering as a discipline and as a Profession To expose the student to the practical imperatives underpinning software development requirements analysis, design, implementation, testing, deployment, user training and support, and maintenance Course Content 1. History and Overview Indicate some reasons for studying software engineering Highlight some people that influenced or contributed to the area of software engineering Indicate some important topic areas such as the software process, requirements, specifications, design, testing, validation, evolution, and project management Contrast software engineering with computer engineering Mention some examples that would use the software engineering approach Bachelor of Science in Computer Engineering 1

Indicate the existence of formalized software processes such as the software life cycle Explain that requirements and specifications may change slightly as a software project evolves Indicate the importance of language selection when doing software design Highlight the importance of testing and validation in a software projects Explore some additional resources associated with software engineering Explain the purpose and role of software engineering in computer engineering 2. Software Processes Software life cycle and process models (Waterfalls, Spiral, Extreme programming, Agile, RAD, RUP) Process assessment models Software process metrics 3. Software Requirements and Specifications Requirements elicitation Requirements analysis modeling techniques Functional and nonfunctional requirements Prototyping Basic concepts of formal specification techniques Software Requirements Specification 4. Software Design Fundamental design concepts and principles Software architecture (Software quality attributes Runtime, Business, and Engineering; Architectural views and viewpoints; The technical architecting process; Organisational architecting; Architectural styles) Modeling with UML Structured design Object-oriented analysis and design Domain-driven development Design for reuse 5. Software Verification and Validation Verification (Static and Dynamic) Validation planning Testing fundamentals, including test plan creation and test case generation Black-box and white-box testing techniques Unit, integration, validation, and system testing Object-oriented testing Inspections 6. Software Evolution Software maintenance: the different forms of maintenance; the associated disciples and the role and the nature of configuration management and version control Impact analysis Regression testing Associated software support Characteristics of maintainable software Software re-use in its different forms their strengths and weaknesses Bachelor of Science in Computer Engineering 2

Reengineering Legacy systems Software retirement 7. Software Tools and Environments Programming environments Requirements analysis and design modeling tools Testing tools Configuration management tools Tools based on databases their design and development Additional possibilities including CASE tools Tool integration mechanisms 8. Language Translation The range of tools that support software development for the computer engineer; the role of a formal semantics of a language Different possibilities regarding language translation: comparison of interpreters and compilers for high-level languages, and silicon compilers for hardware description languages, additional possibilities Language translation phases (lexical analysis, parsing, generation phase, optimization); separate compilation or translation - the benefits and the mechanisms; machine-dependent and machine-independent aspects of translation 9. Software Project Management Team management: team processes; team organization and decision-making, roles and responsibilities in a software team; role identification and assignment; project tracking; team problem resolution Project scheduling Software measurement and estimation techniques Risk analysis Software quality assurance Software configuration management Project management tools Software project documentation 10. Software Fault Tolerance Software reliability models Software fault-tolerance methods: N-version programming, recovery blocks, rollback and recovery Fault tolerance in operating systems and data structures Fault tolerance in database and distributed systems Learning Outcomes On completion of this course the student will be able to: Select, with justification, the software development models most appropriate for the development and maintenance of diverse software products; and explain the role of process maturity models. Apply key elements and common methods for elicitation and analysis to produce a set of software requirements for a medium-sized software system; use a common, non-formal method to model and specify (in the form of a requirements specification document) the requirements for a medium-size software system (e.g., structured analysis or object-oriented-analysis); conduct a review of a Bachelor of Science in Computer Engineering 3

software requirements document using best practices to determine the quality of the document; and translate into natural language a software requirements specification written in a commonly used formal specification language. Evaluate the quality of multiple software designs based on key design principles and concepts; using a software requirement specification and a common program design methodology and notation, create and specify the software design for a medium-size software product (e.g., using structured design or object-oriented design); and using appropriate guidelines, conduct the review of a software design. Demonstrate the application of the different types and levels of testing (unit, integration, systems, and acceptance) to software products of medium size; undertake, as part of a team activity, an inspection of a medium-size code segment; and describe the role that tools can play in the validation of software. Identify the principal issues associated with software evolution and explain their impact on the software life cycle; develop a plan for re-engineering a mediumsized product in response to a change request; discuss the advantages and disadvantages of software reuse; and demonstrate the ability to exploit opportunities for software reuse in a variety of contexts. Select, with justification, an appropriate set of tools to support the software development of a range of software products; analyze and evaluate a set of tools in a given area of software development (e.g., management, modeling, or testing); and demonstrate the capability to use a range of software tools in support of the development of a software product of medium size. Compare and contrast compiled and interpreted execution models, outlining the relative merits of each; describe the phases of program translation from source code to executable code and the files produced by these phases; explain the differences between machine-dependent and machine-independent translation; and show the manner in which these differences are evident in the translation process. Demonstrate through involvement in a team project the central elements of team building and team management; prepare a project plan for a software project that includes estimates of size and effort, a schedule, resource allocation, configuration control, change management, and project risk identification and management; and compare and contrast the different methods and techniques used to assure the quality of a software product. Understand the concept of software faults and reliability of software; understand various redundancy methods used to allow software to detect software faults and produce correct results in the presence of software faults; and understand software fault tolerance approaches used in operating systems, database systems, and distributed systems. Recommended and Reference Books [1] Roger S. Pressman. Software Engineering: A Practitioner s Approach, McGraw-Hill, 2004 ISBN 007301933X, 97800783019338 [2] Ian Sommerville. Software Engineering, Pearson/Addison-Wesley, 2004. ISBN 0321210263, 9780321210265 [3] IEEE Std 1471-2000, IEEE Recommended Practice for Architectural Description of Software-Intensive Systems [4] IEEE Std 830-1998, IEEE Recommended Practice for Software Requirements Specifications (Revision of IEEE Std 830-1993) Bachelor of Science in Computer Engineering 4

[5] Len Bass, Paul Clements, Rick Kazman, April 11, 2003. Software Architecture in Practice, Second Edition. Addison Wesley. ISBN: 0-321-15495-9 [6] Jeff Garland &Richard Anthony, Large Scale Software Architecture, John Wiley and Sons, ISBN 0 470 84849 9 [7] Stephen T. Albin, 2003. The Art of Software Architecture: Design Methods and Techniques, John Wiley & Sons, ISBN:0471228869 [8] Bennett, S, 2005. Object-Oriented Systems Analysis and Design Using UML, 3rd Edition, McGraw-Hill, ISBN: 0077110005, ISBN 13: 9780077110000 [9] Donald Yates and Tony Wakefield, 2004. Systems Analysis and Design, Second Edition, Prentice Hall, Pearson Education Limited. ISBN 0273 65536 1 [10] IEEE Std 730 2002. IEEE Standard for Software Assurance Plans [11] IEEE Std 829-1998. IEEE Standard for Software Test Documentation Bachelor of Science in Computer Engineering 5