Starting from:

$30

Assignment    04    -    Software    Design    and    Design    Pattern C#

CS264    -    Software    Design
Assignment    4
This    Assignment    is    worth    10%    of    the    Software    Design    CA    Component.    
This    is    an    open-book,    graded    assignment.    You    may    use    online    resources    for    reference    purposes    only    
to    help    with    the    assignment.    Please    cite    all    references    as    comments    in    your    submissions.    You    cannot    
directly    reuse    C#    solution    code    from    online    sources.    You    must    not    engage    with    another    student,    in    
person     or     electronically     (phone,     social    media,     etc.)     to     secure     assistance     with     this     assignment.     If    
you    do    so    you    will     receive    an    automatic     fail     (0%).    We    will    perform    similarity    checks    on    submitted    
assignments    to    check    for    collaborative    efforts.    A    reasonable    attempt    at    this    assignment    will    gain    you    
10%    of    your    continual    assignment    marks.    It    is    possible    to    gain    extra    credit    (up    to    a    maximum    of    5%)    
for    this    assignment.
Assignment    04    -    Software    Design    and    Design    Pattern    Implementation    with    C#
You    are    required    to    re-design    and    re-develop    the    console    application    that    you    developed    in    Assignment    03.    The    existing    user    interface    should    be    retained,    i.e.    providing    simple    keyboard    functionality    
to    (i)    generate    different    random    shapes    that    are    added    to    the    canvas,    (ii)    display    the    current    canvas    
to    the    console,    (iii)    save    the    canvas    to    a    file,    (iv)    implement    Undo-Redo    functionality    in    your    interactive    session.    
Note    that    you    do    not    need    to    implement    a    graphical    user    interface    for    this    assignment,    i.e.    you    are    
not     building     a     graphics     app.     This     assignment     is     about     designing     and     developing     the     classes     and    
methods    associated    with    a     typical    drawing    app    data    model    and    implementing    a    Software    Design    
Pattern.
Assignment    04    -    Requirements
You    are    required    to    implement    the    following    core    functionality    for    this    assignment:
1. You    must     re-implement     the    Undo-Redo     functionality     for    shape    commands    using    a     formal    design    
pattern     (using     resources     described     in     lectures).     You    may     have     used     a     pattern     already     in     Assignment     03,     or    you    may     have    implemented    your     own     solution    which    may     or    may     not     have     been    a    
pattern.    For    this    assignment,    you    may    implement        either    the    Memento    Software    Design    Pattern    
or     the     Command     Software     Design     Pattern.     You     must     clearly     describe     in     your     application     comments    which    pattern    you    are    using    and    how    it    is    implemented.    Failure    to    specify    the    pattern    deAssignment    Release    Date: 22-11-2021
Submission    Due    Date: 03-12-2021
Feedback    Due    Date    (estimated): 17-12-2021    (for    assignments    that    make    Due    Date)
Support    Laboratories Labs    08-09    (Two    Weeks)
Total    Mark: 10%
sign    details    using    appropriate    comments,    or    not    using        a    design    pattern    will    reduce    marks    allocated.
2. You    must    include    a    class    diagram     (PDF     format)     for    your    application.    This    should    be    derived     from    
the    codebase    using,    for    example,    the    automated    PUML    extensions    for    VS    Code.    We    will    use    these    
diagrams     to     compare     the     class     structure     to     the     software     design     pattern     chosen     to     implement    
Undo-Redo.    
3. You    must    supply    a    short    description    (between    200    and    500    words)    comparing    and    contrasting    your    
core    Undo-Redo     designs     for     Assignments     03     and     04.     In     particular,     you     should     reflect,     and     comment,     on     which     design     pattern     worked     better     for     your     solution,     and     why     this     is     the     case.     You    
should    provide     some    notes    on    how    you    believe    your    different    implementations    would     scale,     for    
example,    if    you    were    to    add    more    commands,    or    the    canvas    gets    larger.    Please    note        that        this    reflection        must        relate    to    your    solutions,    and    should    not    be    a    general    re-presentation    of        theoretical    
observations     on     the     software     design     patterns.    If     you     provide     “pros     and     cons”     for          the     different    
designs,    then    they    must        refer        to        your    solutions    (i.e    your    context),    and    not    to    the    patterns    in    general.    Finally,    you    should    provide    short        notes    on    personal    challenges    associated        with    implementing    the    different    design    patterns.
Assignment    04    -    Extra    CA    Credit
There    is    no    extra    credit    option    available    for    this    assignment.
IMPORTANT    SUBMISSION    DETAILS    
Please    indicate    the    Operating    System    (Linux/Windows/MacOS/Online)    and    IDE    (e.g.    VS    Code)    version    used    for    testing    (as    a    comment    in    your    submitted    code).    If    you    use    an    online    IDE    please    clearly    
specify    the    IDE    (http://repl.it)    and    provide    a    link    where    possible.
All    work    must    be    submitted    via    Moodle    (see    "Assignments"    section    for    submission).    Work    submitted    
via    other    means    will    not    be    accepted    unless    you    have    prior    arrangements    with    the    Head    Demonstrator     (Behnam    Faghih).    All    work    MUST    be    submitted    by     the    due-date    deadline.    Late    submissions    will    
not    be    accepted.    
The    assignment    submission    is    a    zip    file    named    “assignment-04-xxxxxxxxx.zip”    (where    “xxxxxxxxx”    is    
your    student    id)    containing    solution    files,    e.g.    named    “svgundoredo.cs”,    “Program.cs”,    etc.    together    
with    any    other    resources    used    in    the    assignment    solution.    Please    ensure    that    all    external    files    use    relative    directory    referencing,    rather    than    hard-coding    the    files’    location.

More products