Enterprise Software Engineering
PM (Project Manager) Theory
- PM-1 ⇨ predictive theory
- sometime called a soft-wave factory
- PM-2 ⇨ describes higher evolved practices
- originally called a skunkworks
- PM-3 ⇨ for complex and chaotic systems
- defines the external environment for the organisation
- PM-4 ⇨ for systems automatically optimised by artificial intelligent agents
Agile
- uses a preconfigured subset of traditional practices from PM-1
- practitioners have incorporated 'soft-skills' into software development practices
- cultural,
- psychological,
- and sociological aspects of people
- agilists = agile practitioners
Modern Software Development (last 20 years)
- a successful project is divided into three regions:
- technical - product is constructed
- organisational - project context
- business - where the project context is defined
- dependency on social, political and psychological forces of the team and stakeholders
- certain technical aspects have emerged to increase the probability of a project being successful (social, cultural, psychological)
“Those who cannot remember the past are condemned to repeat it.” — George Santayana
Ancient Project Management
- First Case of Written Project Management: (Roman Era, 97 AD); Frontinus built Rome's viaducts and irrigation systems
- Frontinus considered:
- political patronage
- stakeholder management
- project policies
- technical specification
- Forntinus was protecting himself since he was assigned to a failing project and had no experience
- Forntinus was the first to record operational procedures (to be used after the project completed)
- Frontinus recognised that the operations of a product and the development of a product follow different sets of rules
- Prior to this no matter how large or small the project, information was not being recorded; the only focus of a project was it's completion and not the process of development
- Frontinus considered:
- Eventually the "how?" took centre stage as
- commercial project replaced government projects
- project goals changed from building public infrastructure to delivering commercial products with least coast and minimal risk
- Many early practices were based off of the work of experienced engineers and project leaders and was heavily industry-specific. At this time Project management was still a craft and not yet a science.
- Eventually through academic findings and research project management as recognised as a science
Formal Project Development
- The US DoD (Department of Defence) formalised project management in the 1960s to manage risk and keep costs under control. This effort was monitored by SEI (Software Engineering Institute) of Carnegie Mellon University
- PMI (Project Management Institution) - community of practice; offered professional certification
- PM-1 was used
- first evolutionary level of project management
- predictive life cycle
- focus of forward planning
- object-oriented system: product > participants
- Used waterfall model/method.
- Traditional model is based on a systematic view of inputs/possesses/outputs
- People do not adjust well to unpredictable items in the model; Unpredictability is caused by nonlinear outputs that exist because they are used in future inputs.
- The farther in the project the heavier the cost that is incurred changing things.
- Costs runs exponential with time in a nonlinear system
- One of the main driving forces that developed one of the first agile methodologies: Extreme Programming
- Assembly Line Example:
- input = raw materials
- process = product is built along an assembly line
- output = product is sold to the consumer
- This process of development used in manufacturing products was used likewise in producing software.
PM-2
- highly reactive and adaptive
- controllable planning
Better plan roughly and control quickly (frequently) than plan in detail and control slowly (sparingly). Whoever plans too much detail loses time and chances.
Concurrent Engineering
- popular in Japan (known as 改善・カイゼン)
Lean / Just-In-Time Manufacturing
- later provided a popular task tracking technique for agile projects
- Kanban Board (かんばん方式・カンバンホ\ーシキ)
- 必要なものを必要な時に必要な量だけ生産し, できるだけ在庫を持たないようにする生産管理方式
Incremental Development
- shorter and faster feedback cycles
- evolved to very short feedback cycles (mini-waterfalls, incremental-iterative)
- having shorter feedback cycles decreased the products development costs and time to delivery
Failed Projects
- Manufacturing processes are hard to apply to software development as:
- Only one product is being developed (there is no sense of repairability)
- Humans are not assembly lines (they are not made equal and are not always running 100%)
- Formal project mangers did not recognise 'people as a factor during this time'