UNIT 1-INTRODUCTION TO SOFTWARE ENGINEERING
What is Software Engineering Solving Problems
• Software products are large and complex
• Development requires analysis and synthesis
– Analysis: decompose a large problem into smaller, understandable pieces
• abstraction is the key
– Synthesis: build (compose) a software from smaller building blocks
composition is challenging
• Method: refers to a formal procedure; a formal “recipe” for accomplishing a goal that is typically independent of the tools used
• Tool: an instrument or automated system for accomplishing something in a better way
• Procedure: a combination of tools and techniques to produce a product
• Paradigm: philosophy or approach for building a product (e.g., OO vs structured approaches)
• Computer science: focusing on computer hardware, compilers, operating systems, and programming languages
• Software engineering: a discipline that uses computer and software technologies as a problem-solving tools
How Successful Have We Been? Terminology for Describing Bugs
• A fault: occurs when a human makes a mistake, called an error, in performing some software activities
• A failure: is a departure from the system’s required behaviour
What Is Good Software
• Good software engineering must always include a strategy for producing quality software
• Three ways of considering quality
– The quality of the product
– The quality of the process
– The quality of the product in the context of the business environment
• The transcendental view: quality is something we can recognize but not define
• The user view: quality is fitness for purpose
• The manufacturing view: quality is conformance to specification
• The product view: quality tied to inherent product characteristics
• The value-based view: depends on the amount the customers is willing to pay for it
Who Does Software Engineering
• Customer: the company, organization, or person who pays for the software system
• Developer: the company, organization, or person who is building the software system
• User: the person or people who will actually use the system
System Approach
• Hardware, software, interaction with people
• Identify activities and objects
• Define the system boundary
• Consider nested systems, systems interrelationship
The Element of a System
• Activities and objects
– An activity is an event initiated by a trigger
– Objects or entities are the elements involved in the activities
• Relationships and the system boundaries
– A relationship defines the interaction among entities and activities
– System boundaries determine the origin of input and destinations of the output
Building a System
• Requirement analysis and definition
• System design
• Program design
• Writing the programs
• Unit testing
• Integration testing
• System testing
• System delivery
• Maintenance
Members of the Development Team
• Requirement analysts: work with the customers to identify and document the requirements
• Designers: generate a system-level description of what the system us supposed to do
• Programmers: write lines of code to implement the design
• Testers: catch faults
• Trainers: show users how to use the system
• Maintenance team: fix faults that show up later
• Librarians: prepare and store documents such as software requirements
• Configuration management team: maintain correspondence among various artifacts
How Has Software Engineering Changed
The Nature of the Change
• Before 1970s
– Single processors: mainframes
– Designed in one of two ways
• as a transformation: input was converted to output
• as a transaction: input determined which function should be performed
• After 1970s
– Run on multiple systems
– Perform multi-functions
How Has SE Changed
Wasserman's Seven Key Factors
- Critically of time-to-market
- Shifts in the economics of computing
- Availability of powerful desktop computing
- Extensive local- and wide-area networking
- Availability and adoption of object-oriented technology
- Graphical user interfaces
- Unpredictability of the waterfall model of software development
Wasserman's Discipline of Software Engineering
• Abstractions
• Analysis and design methods and notations
• User interface prototyping
• Software architecture
• Software process
• Reuse
• Measurement
• Tools and integrated environments
Information Systems Example Piccadilly System
• Piccadilly Television: regional British TV franchise
• Advertising scheme has many constraints:
– alcohol adverts only after 9 pm
– if actor in show, no same actor in advert within 45 minutes
– if advert in a class of products, no other advert in same class during same break
– rates dependent on amount of time bought
• Software to determine, track advertising time
Real Time Example
• Ariane-5 rocket, from the European Space Agency
• June 4, 1996: functioned well for 40 seconds, then veered off course and was destroyed
• Contained four satellites: cost was $500 million
• Reused code from Ariane-4 rocket
Modeling the Process and Life Cycle
The Meaning of Process
• A process: a series of steps involving activities, constrains, and resources that produce an intended ouput of some kind
• A process involves a set of tools and techniques
Process Characteristics
• Prescribes all major process activities
• Uses resources, subject to set of constraints (such as schedule)
• Produces intermediate and final products
• May be composed of subprocesses with hierarchy or links
• Each process activity has entry and exit criteria
• Activities are organized in sequence, so timing is clear
• Each process guiding principles, including goals of each activity
• Constraints may apply to an activity, resource or product
The Importance of Processes
• Impose consistency and structure on a set of activities
• Guide us to understand, control, examine, and improve the activities
• Enable us to capture our experiences and pass them along
Reasons for Modeling a Process
• To form a common understanding
• To find inconsistencies, redundancies, omissions
• To find and evaluate appropriate activities for reaching process goals
• To tailor a general process for a particular situation in which it will be used
Software Life Cycle
• When a process involves building a software, the process may be referred to as software life cycle
– Requirements analysis and definition
– System (architecture) design
– Program (detailed/procedural) design
– Writing programs (coding/implementation)
– Testing: unit, integration, system
– System delivery (deployment)
- Maintenance
Software Development Process Models
• Waterfall model
• V model
• Prototyping model
• Operational specification
• Transformational model
• Phased development: increments and iteration
• Spiral model , Agile methods
Tools and Techniques for Process Modeling
• Notation depends on what we want to capture in the model
• The two major notation categories
– Static model: depicts the process
– Dynamic model: enacts the process
Tools and Techniques for Process Modeling Static Modeling: Lai Notation
• Element of a process are viewed in terms of seven types
– Activity
– Sequence
– Process model
– Resource
– Control
– Policy
– Organization
• Several templates, such as an Artifact Definition Template
Process Programming
• A program to describe and enact the process
– Eliminate uncertainty
– Basis of an automated environment to produce software
• Does not capture inherent variability of underlying development process
– Implementation environment, skill, experience, understanding the customer needs
• Provides only sequence of tasks
• Gives no warning of impending problems
Practical Process Modeling
Marvel Case Studies
• Uses Marvel process language (MPL)
• Three constructs: classes, rules, tool envelopes
• Three-part process description
– rule-based specification of process behavior
– pbject-oriented definition of model’s information process
– set of envelopes to interface between Marvel and external software tools
• Involved two AT&T networks
– network carried phone calls
– signaling network responsible for routing calls and balancing the network load
• Marvel was used to describe the signaling fault resolution
Desirable Properties of Process Modeling Tools and Techniques
• Facilitates human understanding and communication
• Supports process improvement
• Supports process management
• Provides automated guidance in performing the process
• Supports automated process execution
Information System Example
Piccadilly Television Advertising System
• Needs a system that is easily maintained and changed
• Requirements may change
– Waterfall model is not applicable
• User interface prototyping is an advantage
• There is uncertainty in regulation and business constraints
– Need to manage risks
• Spiral model is the most appropriate
• Risk can be viewed in terms of two facets
– Probability: the likelyhood a particular problem may occur
– Severity: the impact it will have on the system
• To manage risk, it needs to include characterization of risks in the process model
– Risk is an artifact that needs to be described
Real Time Example
Ariane-5 Software
• Reuse process model presentation