Software Engineering & Design

Software Engineering & Design

| Alan Blackwell
The chapter outlines the course "Software Engineering & Design" from the CST IB / IIG / CS Diploma program, authored by Alan Blackwell. The course emphasizes practical aspects over theoretical ones, focusing on the challenges and complexities of software development. - **Introduction**: Discusses the Software Crisis, exemplified by the London Ambulance Service (LAS) project, which aimed to automate manual operations in the 1980s but faced significant failures. - **The Software Crisis**: Explains why software development has lagged behind hardware advancements, emphasizing the need for perfection and the joy of creating useful tools. - **Decomposition and Modularity**: Focuses on top-down decomposition and stepwise refinement, as well as bottom-up design issues. - **Modularity**: Discusses the importance of routines and separate source files in C. - **Comments and Coding Style**: Emphasizes the use of comments to explain code and the importance of consistent coding style. - **Type Safety and Defensive Programming**: Highlights the need for type refinement and defensive programming techniques. - **Efficiency**: Stresses the importance of choosing the right algorithms to avoid common mistakes. - **Formal Methods**: Briefly mentions the historical use of mathematics to prove program correctness. - **Configuration Management**: Covers version control, change control, variants, and releases. - **Testing**: Emphasizes the importance of testing and regression testing. - **Tools**: Discusses the use of tools for tasks that exceed human capabilities. - **Introduction**: Explains why structured design is necessary and why object-oriented design is preferred. - **Elements of OO Design**: Describes the components of object-oriented design, including encapsulation, loose coupling, and client-server contracts. - **Design Exemplars**: Provides examples of complete designs from project experiences. - **UML/OOD Resources**: Lists additional resources for further study. - **Control Panels**: Discusses the evolution of user interfaces from early computers to modern designs. - **Heuristic Evaluation**: Introduces a usability evaluation technique based on general interaction principles. - **User-Centred Design**: Emphasizes the importance of user needs and tasks in design. - **Cognitive Models**: Explains models of user cognition and the black box view of users. - **Keystroke Level Model (KLM)**: Provides a framework for measuring user performance. - **GOMS**: Extends KLM to provide quantitative performance estimates. - **User Models**: Discusses the need to understand why users behave the way they do. - **Empirical Studies**: Highlights the importance of empirical research in usability. - **Prototyping**: Focuses on the use of prototypes in design. - **Participatory Design**: Encourages user involvement in the design process. - **New Trends**: Discusses emerging trends in user interfaces, such as information appliances and ubiquitous computing. - **Human Error Probabilities**: Discusses the likelihood of human errors and the reliability of skills over knowledgeThe chapter outlines the course "Software Engineering & Design" from the CST IB / IIG / CS Diploma program, authored by Alan Blackwell. The course emphasizes practical aspects over theoretical ones, focusing on the challenges and complexities of software development. - **Introduction**: Discusses the Software Crisis, exemplified by the London Ambulance Service (LAS) project, which aimed to automate manual operations in the 1980s but faced significant failures. - **The Software Crisis**: Explains why software development has lagged behind hardware advancements, emphasizing the need for perfection and the joy of creating useful tools. - **Decomposition and Modularity**: Focuses on top-down decomposition and stepwise refinement, as well as bottom-up design issues. - **Modularity**: Discusses the importance of routines and separate source files in C. - **Comments and Coding Style**: Emphasizes the use of comments to explain code and the importance of consistent coding style. - **Type Safety and Defensive Programming**: Highlights the need for type refinement and defensive programming techniques. - **Efficiency**: Stresses the importance of choosing the right algorithms to avoid common mistakes. - **Formal Methods**: Briefly mentions the historical use of mathematics to prove program correctness. - **Configuration Management**: Covers version control, change control, variants, and releases. - **Testing**: Emphasizes the importance of testing and regression testing. - **Tools**: Discusses the use of tools for tasks that exceed human capabilities. - **Introduction**: Explains why structured design is necessary and why object-oriented design is preferred. - **Elements of OO Design**: Describes the components of object-oriented design, including encapsulation, loose coupling, and client-server contracts. - **Design Exemplars**: Provides examples of complete designs from project experiences. - **UML/OOD Resources**: Lists additional resources for further study. - **Control Panels**: Discusses the evolution of user interfaces from early computers to modern designs. - **Heuristic Evaluation**: Introduces a usability evaluation technique based on general interaction principles. - **User-Centred Design**: Emphasizes the importance of user needs and tasks in design. - **Cognitive Models**: Explains models of user cognition and the black box view of users. - **Keystroke Level Model (KLM)**: Provides a framework for measuring user performance. - **GOMS**: Extends KLM to provide quantitative performance estimates. - **User Models**: Discusses the need to understand why users behave the way they do. - **Empirical Studies**: Highlights the importance of empirical research in usability. - **Prototyping**: Focuses on the use of prototypes in design. - **Participatory Design**: Encourages user involvement in the design process. - **New Trends**: Discusses emerging trends in user interfaces, such as information appliances and ubiquitous computing. - **Human Error Probabilities**: Discusses the likelihood of human errors and the reliability of skills over knowledge
Reach us at info@study.space