Вы находитесь на странице: 1из 6

University of Zimbabwe

Computer Science Department


Course Name and Code: HCT 210 Software Engineering
Lecturer : T Rupere
Contacts: Office 116, 263772 416 888, trupere@science.uz.ac.zw
Time: 1800hrs – 2000hrs

LEARNING OUTCOMES
By the end of this course, you should be able to:

1. Work as part of a team to develop and deliver executable artifacts;

2. Describe the process of determining client needs and translating them to software requirements;

3. Explain the current theories, models and techniques that provide a basis for software design,
development, implementation and verification; and

4. Analyse new models, techniques and technologies as they emerge.

Course Rational
The rationale of this course is to overcome problem especially software crisis in the requirement analysis,
specification, design, implementation and maintenance phases of software development project. It
introduces students to theories, principles, techniques methods and tools to improvise the quality of
developing software project. Students require the knowledge of analysis, design and programming before
taking this course. It is expected students are able to relate the knowledge they have gathered such as the
analysis, design and programming and the importance of producing quality software. The course
discusses basic concepts on software engineering, software life cycle, documentation, quality aspects,
project management to help software engineers develop and manage large and complex software
systems.

Course Overview
This course is divided into 12 topics or sections. The synopsis for each topic can be listed as follows:

1
Topic 1 describes the importance and basic terms in software engineering, and also explains briefly some
important components in software engineering.

Topic 2 explains the processes that will be carried on by the project team in order to develop a system.

Topic 3 explains the role of prototyping in different types of development project.

Topic 4 explains the activities involved in project management, including risk management.

Topic 5 explains the concepts of user requirements and systems requirements and why these
requirements may be expressed using different notations.

Topic 6 explains the principal requirements engineering activities and their relationships. It also
introduces several techniques of requirements elicitation and analysis.

Topic 7 explains the general design principles that should be followed by engineers responsible for user
interface design and also introduce the different styles of information presentation for users.

Topic 8 explains the benefits of reusing software components and some of the problems of reuse that can
arise. It also explains the different types of component that may be reused and design processes for reuse.

Topic 9 explains the distinctions between software verification and software validation. It also introduces
program inspections as a method of discovering defects in programs.

Topic 10 explains a number of testing techniques that are used to discover program faults. It also
introduces the guidelines that support the testing of component interfaces.

Topic 11 explains the principles of software process improvement and why process improvement is
worthwhile. It also introduces the SEI’s process Capability Maturity Model (CMM), Six Sigma and ISO
Standards which may be used to assess the quality of the software process in large organisations.

Topic 12 explains the principles of software maintenance and why software is so expensive to maintain.

2
Detailed Course Content

COURSE CONTENTS
Topic 1: Overview
1.1 Software
1.2 Software Engineering
1.3 Software Process
1.4 Software Process Model
1.5 Software Engineering Methods
1.6 Attributes of Good Software

Topic 2: Software Processes


2.1 Software Process Models
2.1.1 The Waterfall Model
2.1.2 Evolutionary Development
2.1.3 Formal Systems Development
2.1.4 Reuse-oriented Development
2.2 Process Iteration
2.2.1 Incremental Development
2.2.2 Spiral Development
2.3 Software Specification
2.4 Software Design and Implementation
2.4.1 Design Methods
2.4.2 Programming and Debugging
2.5 Software Validation
2.6 Software Evolution

Topic 3: Software Prototyping


3.1 Software Prototype
3.2 Prototyping in the Software Process
3.2.1 Evolutionary Prototyping
3.2.2 Throw-away Prototyping
3.3 Rapid Prototyping Techniques
3.3.1 Dynamic High-level Language Development
3.3.2 Database Programming
3.3.3 Component Reuse
3.4 User Interface Prototyping

Topic 4: Software Project Management


4.1 Tracking Progress
4.1.1 Work Breakdown Structure
4.1.2 Estimating Completion
4.1.3 Project Tracking Tools
4.2 Project Personnel
4.2.1 Project Organisation
4.3 Risk Management

3
4.3.1 Identifying Risk
4.3.2 Assessing Risk
4.3.3 Responding to Risk

Topic 5: Software Requirements


5.1 System Requirements
5.2 Functional, Non-functional and Domain Requirements
5.2.1 Functional Requirements
5.2.2 Non-functional Requirements
5.2.3 Domain Requirements
5.3 User Requirements
5.4 System Requirements
5.4.1 Structured Language Specifications
5.4.2 Requirements Specification Using a PDL
5.4.3 Interface Specification
5.5 The Software Requirements Document

Topic 6: Requirements Engineering Processes


6.1 Feasibility Studies
6.2 Requirements Elicitation and Analysis
6.2.1 Scenarios
6.2.2 Ethnography
6.3 Requirements Validation
6.3.1 Requirements Reviews
6.4 Requirements Management
6.4.1 Requirements Change Management
Topic 7: User Interface Design
7.1 Graphical User Interface
7.2 User Interface Design Principles
7.3 User Interaction
7.4 Information Presentation
7.4.1 Colour in Interface Design
7.5 User Support
7.5.1 Error Messages
7.5.2 Help System Design
7.5.3 User Documentation
7.6 Interface Evaluation
Topic 8: Design with Reuse
8.1 Software Reuse
8.2 Component-based Development
8.2.1 Application Frameworks
8.2.2 COTS Product Reuse
8.2.3 Component Development for Reuse
8.3 Design Patterns
Topic 9: Verification and Validation
9.1 Software Verification and Validation
9.2 Verification and Validation Planning
9.3 Software Inspections

4
9.3.1 Programs Inspection
9.4 Automated Static Analysis
9.5 Cleanroom Software Development
Topic 10: Software Testing
10.1 Defect Testing
10.1.1 Black-box Testing
10.1.2 Equivalent Partitioning
10.1.3 Structural Testing
10.1.4 Path Testing
10.2 Integration Testing
10.2.1 Top-down and Bottom-up Testing
10.2.2 Interface Testing
10.2.3 Stress Testing
10.3 Testing Workbenches

Topic 11: Process Improvement and Software Quality Assurance


11.1 Process Improvement
11.2 Process and Product Quality
11.3 Process Analysis and Modelling
11.3.1 Process Exceptions
11.4 Process Measurement
11.5 The SEI Process Capability Maturity Model
11.5.1 Capability Assessment
11.5.2 Six Sigma for Software Engineering
11.5.3 The ISO 9000 Quality Standards
11.6 Process Classification

Topic 12: Software Change


12.1 Strategies for Software Change
12.2 Program Evolution Dynamics
12.3 Software Maintenance
12.3.1 The Maintenance Process
12.3.2 Maintenance Prediction

REFERENCES
Pfleeger, S.L. (2001). Software engineering: Theory and practice. Upper Saddle River: Prentice
Hall.
Pressman, R.S. (2005). Software engineering: A practitioner’s approach. Singapore: McGraw
Hill.

Sommerville, I. (2010). Software engineering (6th ed.). Boston: Addison-Wesley.

Marchewka, J.T. (2003). Information technology project management. United States: John Wiley
and Sons.

5
6

Вам также может понравиться