CSCI 630 - Software Engineering
Overview of Software Engineering Practices
- review...
- software engineering process framework activities
- Communication - developer stakeholder collaboration
- Planning
- Modeling - requirements and design
- Construction - code generation and testing
- Deployment - customer provides feedback on delivered products
- software engineering process umbrella activities
- Software project tracking and control
- Risk Management
- Software quality assurance
- Formal technical reviews
- Measurement
- Software configuration management
- Reusability management
- Work product preparation and production
- software engineering practices consist of the concepts,
principles, methods, and tools necessary to accomplish the framework activities
- essence of practice (Polya, 1945)

- Understand the Problem
- Who are the stakeholders?
- What functions and features are required to solve the problem?
- Is it possible to create smaller problems that are easier to understand?
- Can a graphic analysis model be created?
- Plan the Solution
- Have you seen similar problems before?
- Has a similar problem been solved?
- Can readily solvable subproblems be defined?
- Can a design model be created?
- Carry Out the Plan
- Does solution conform to the plan?
- Is each solution component provably correct?
- Examine the Result
- Is it possible to test each component part of the solution?
- Does the solution produce results that conform to the data, functions,
and features required?
- software engineering practice core principles

Communication

- goals for communication
- Identify the customer and other stakeholders
- Establish an effective mode of communication between developers and
stakeholders
- Develop usage scenarios
- Identify constraints
- Establish priorities
- Possible Task Set for Communication
- Identify primary customer and other stakeholders
- Meet with customer to define business needs and values, end-user characteristics
and needs, required outputs, and business constraints
- Develop one page written statement of project scope
- Review statement of scope with stakeholder and revise as needed
- Collaborate with customer/end-users to define usage scenarios, input,
outputs, software features and functions, customer business risks
- Develop written descriptions of user scenarios, inputs, outputs, features,
functions, and risks
- Iterate with customer to define priorities for user scenarios, features,
functions, and risks
- Assign customer defined priorities to each user scenario, feature, and
function
- Review all information gathered with customers and other stakeholders
- Prepare for planning activity
Planning

- Goals for Planning
- Develop an overall project strategy
- Identify the functionality to be delivered by each software increment
- Develop a detailed plan for the current iteration
- Track progress of a regular basis
- Possible Task Set for Planning
- Re-evaluate project scope
- Assess risks
- Develop/refine user scenarios
- Extract functions and features from scenarios
- Define technical functions and features needed for software infrastructure
- Group functions and features according to customer priorities
- Create a low granularity project plan
- Create high granularity plan for current iteration
- Track progress regularly
Analysis
- we create models to gain a better understanding of the actual entity to
be built

- Possible Task Set for Analysis Modeling
- Review requirements and constraints
- Expand and refine user scenarios
- Model information domain
- Define analysis classes using information objects as a guide
- Represent responsibilities and collaborations of each analysis class
- Group related classes into packages
- Model functional domain
- Model behavioral domain
- Analyze and model the user interface
Design

- Possible Task Set for Design
- Using the analysis model select and architectural style appropriate
to the software
- Partition analysis model into subsystems and allocate subsystems within
the architecture
- Examine the information domain model and design appropriate data structures
for data objects and their attributes
- Create a set of design classes
- Design User interface
- Conduct component-level design
- Develop deployment model
Construction

- Possible Task Set for Construction
- Build the architectural infrastructure
- Build a software component
- Unit test the component
- Integrate completed component into architectural infrastructure
Deployment

- Possible Task Set for Deployment
- Create delivery media
- Establish the human support person(s)
- Establish user feedback mechanisms
- Disseminate delivery media to all users
- Conduct on-going support functions
- Collect user feedback
Notes and figures from:
- Software Engineering: A Practitioner's Approach, 6th Edition, by Roger S
Pressman, R.S. Pressman & Associates, McGraw-Hill, 2005